1var __defProp = Object.defineProperty; 2var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; 3var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); 4(function() { 5 "use strict"; 6 class Accordion { 7 constructor($el) { 8 this.activeClass = "is-active"; 9 this.$accordions = document.querySelectorAll(".js-accordion"); 10 this.$accordions.forEach(($accordion) => { 11 const $sections = $accordion.querySelectorAll(".js-accordion-section"); 12 const $auxiliaryContent = $accordion.querySelectorAll(".js-accordion-auxiliary-content"); 13 $sections.forEach(($section, index) => { 14 const $button = $section.querySelector(".js-accordion-button"); 15 const $content = $section.querySelector(".js-accordion-content"); 16 $button.addEventListener("click", () => { 17 $section.classList.toggle(this.activeClass); 18 $content.setAttribute("aria-expanded", $section.classList.contains(this.activeClass)); 19 $sections.forEach(($aSection) => { 20 if ($aSection !== $section) { 21 $aSection.classList.remove(this.activeClass); 22 } 23 }); 24 $auxiliaryContent.forEach(($auxiliary) => { 25 $auxiliary.classList.remove(this.activeClass); 26 }); 27 if ($auxiliaryContent[index]) { 28 $auxiliaryContent[index].classList.add(this.activeClass); 29 } 30 }); 31 }); 32 }); 33 } 34 } 35 class Analytics { 36 constructor() { 37 this.$elements = document.querySelectorAll("[data-ga]"); 38 this.$elements.forEach((element) => this.setup(element)); 39 } 40 /** 41 * @function setup 42 * @param {HTMLElement} el 43 */ 44 setup(el) { 45 el.addEventListener("click", () => { 46 const parts = el.dataset.ga.split("|"); 47 const category = parts[0]; 48 const action = parts[1]; 49 const label = parts[2]; 50 this.constructor.send(category, action, label); 51 }); 52 } 53 /** 54 * @funtion send 55 * @param {String} category 56 * @param {String} action 57 * @param {String} label 58 */ 59 static send(category, action, label) { 60 if (!window.ga) return; 61 window.ga("send", "event", category, action, label); 62 } 63 } 64 class OkendoIntercom { 65 constructor() { 66 if (!window.Intercom) return; 67 const $els = document.querySelectorAll(".js-invoke-intercom, [href='#js-invoke-intercom']"); 68 $els.forEach(($el) => { 69 $el.addEventListener("click", (e) => { 70 e.preventDefault(); 71 Intercom("showNewMessage"); 72 }); 73 }); 74 } 75 } 76 class Steps { 77 constructor() { 78 document.querySelectorAll(".js-steps").forEach(($el) => new StepsElement$1($el)); 79 } 80 } 81 let StepsElement$1 = class StepsElement { 82 constructor($el) { 83 __publicField(this, "MIN_DESKTOP_WIDTH", 1440); 84 this.$el = $el; 85 this.$bar = this.$el.querySelector(".js-steps-bar"); 86 this.$progressBar = this.$el.querySelector(".js-steps-progress-bar"); 87 this.$steps = document.querySelectorAll(".js-steps-bar-step"); 88 this.$container = this.$el.querySelector(".js-steps-progress-container"); 89 if (this.$container) { 90 this.buildLeftPoints(); 91 window.addEventListener("scroll", this.scroll.bind(this)); 92 window.addEventListener("resize", this.resize.bind(this)); 93 } 94 } 95 buildLeftPoints() { 96 this.leftPoints = []; 97 const { width } = this.$container.getBoundingClientRect(); 98 const { offsetWidth } = document.body; 99 this.$steps.forEach(($step) => { 100 const { left } = $step.getBoundingClientRect(); 101 let percentage = Math.round(left / offsetWidth * 100); 102 if (window.innerWidth < this.MIN_DESKTOP_WIDTH) { 103 percentage = Math.round(left / (width + offsetWidth) * 100); 104 } 105 this.leftPoints.push(percentage); 106 }); 107 } 108 scroll() { 109 const viewportTop = document.body.scrollTop + document.documentElement.scrollTop; 110 const componentRect = this.$el.getBoundingClientRect(); 111 const componentPageOffsetY = componentRect.top + viewportTop;
112 const viewportHeight = window.innerHeight; 113 const wpAdminBar = document.getElementById("wpadminbar"); 114 const siteHeader = document.querySelector(".js-header"); 115 const siteHeaderHight = wpAdminBar ? wpAdminBar.offsetHeight + siteHeader.offsetHeight : siteHeader.offsetHeight; 116 const componentViewportScroll = Math.min(1, Math.max(0, (viewportTop - componentPageOffsetY + siteHeaderHight + viewportHeight / 3) / componentRect.height)); 117 this.leftPoints.forEach((point, index) => { 118 this.$steps[index].classList.toggle("has-passed", componentViewportScroll * 100 >= point); 119 }); 120 const percentage = componentViewportScroll * 100; 121 this.$progressBar.style.width = `${percentage}%`; 122 if (window.innerWidth < 1440) { 123 this.$container.style.transform = `translateX(-${percentage}%)`; 124 } 125 } 126 resize() { 127 this.$container.style.transform = `translateX(0)`; 128 this.buildLeftPoints(); 129 } 130 }; 131 class VanillaTilt { 132 constructor(element, settings = {}) { 133 if (!(element instanceof Node)) { 134 throw "Can't initialize VanillaTilt because " + element + " is not a Node."; 135 } 136 this.width = null; 137 this.height = null; 138 this.clientWidth = null; 139 this.clientHeight = null; 140 this.left = null; 141 this.top = null; 142 this.gammazero = null; 143 this.betazero = null; 144 this.lastgammazero = null; 145 this.lastbetazero = null; 146 this.transitionTimeout = null; 147 this.updateCall = null; 148 this.event = null; 149 this.updateBind = this.update.bind(this); 150 this.resetBind = this.reset.bind(this); 151 this.element = element; 152 this.settings = this.extendSettings(settings); 153 this.reverse = this.settings.reverse ? -1 : 1; 154 this.resetToStart = VanillaTilt.isSettingTrue(this.settings["reset-to-start"]); 155 this.glare = VanillaTilt.isSettingTrue(this.settings.glare); 156 this.glarePrerender = VanillaTilt.isSettingTrue(this.settings["glare-prerender"]); 157 this.fullPageListening = VanillaTilt.isSettingTrue(this.settings["full-page-listening"]); 158 this.gyroscope = VanillaTilt.isSettingTrue(this.settings.gyroscope); 159 this.gyroscopeSamples = this.settings.gyroscopeSamples; 160 this.elementListener = this.getElementListener(); 161 if (this.glare) { 162 this.prepareGlare(); 163 } 164 if (this.fullPageListening) { 165 this.updateClientSize(); 166 } 167 this.addEventListeners(); 168 this.reset(); 169 if (this.resetToStart === false) { 170 this.settings.startX = 0; 171 this.settings.startY = 0; 172 } 173 } 174 static isSettingTrue(setting) { 175 return setting === "" || setting === true || setting === 1; 176 } 177 /** 178 * Method returns element what will be listen mouse events 179 * @return {Node} 180 */ 181 getElementListener() { 182 if (this.fullPageListening) { 183 return window.document; 184 } 185 if (typeof this.settings["mouse-event-element"] === "string") { 186 const mouseEventElement = document.querySelector(this.settings["mouse-event-element"]); 187 if (mouseEventElement) { 188 return mouseEventElement; 189 } 190 } 191 if (this.settings["mouse-event-element"] instanceof Node) { 192 return this.settings["mouse-event-element"]; 193 } 194 return this.element; 195 } 196 /** 197 * Method set listen methods for this.elementListener 198 * @return {Node} 199 */ 200 addEventListeners() { 201 this.onMouseEnterBind = this.onMouseEnter.bind(this); 202 this.onMouseMoveBind = this.onMouseMove.bind(this); 203 this.onMouseLeaveBind = this.onMouseLeave.bind(this); 204 this.onWindowResizeBind = this.onWindowResize.bind(this); 205 this.onDeviceOrientationBind = this.onDeviceOrientation.bind(this); 206 this.elementListener.addEventListener("mouseenter", this.onMouseEnterBind); 207 this.elementListener.addEventListener("mouseleave", this.onMouseLeaveBind); 208 this.elementListener.addEventListener("mousemove", this.onMouseMoveBind); 209 if (this.glare || this.fullPageListening) { 210 window.addEventListener("resize", this.onWindowResizeBind); 211 } 212 if (this.gyroscope) { 213 window.addEventListener("deviceorientation", this.onDeviceOrientationBind); 214 } 215 } 216 /** 217 * Method remove event listeners from current this.elementListener 218 */ 219 removeEventListeners() { 220 this.elementListener.removeEventListener("mouseenter", this.onMouseEnterBind); 221 this.elementListener.removeEventListener("mouseleave", this.onMouseLeaveBind); 222 this.elementListener.removeEventListener("mousemove", this.onMouseMoveBind); 223 if (this.gyroscope) { 224 window.removeEventListener("deviceorientation", this.onDeviceOrientationBind); 225 } 226 if (this.glare || this.fullPageListening) { 227 window.removeEventListener("resize", this.onWindowResizeBind); 228 } 229 } 230 destroy() { 231 clearTimeout(this.transitionTimeout); 232 if (this.updateCall !== null) { 233 cancelAnimationFrame(this.updateCall); 234 } 235 this.element.style.willChange = ""; 236 this.element.style.transition = ""; 237 this.element.style.transform = ""; 238 this.resetGlare(); 239 this.removeEventListeners(); 240 this.element.vanillaTilt = null; 241 delete this.element.vanillaTilt; 242 this.element = null; 243 } 244 onDeviceOrientation(event) { 245 if (event.gamma === null || event.beta === null) { 246 return; 247 } 248 this.updateElementPosition(); 249 if (this.gyroscopeSamples > 0) {
250 this.lastgammazero = this.gammazero; 251 this.lastbetazero = this.betazero; 252 if (this.gammazero === null) { 253 this.gammazero = event.gamma; 254 this.betazero = event.beta; 255 } else { 256 this.gammazero = (event.gamma + this.lastgammazero) / 2; 257 this.betazero = (event.beta + this.lastbetazero) / 2; 258 } 259 this.gyroscopeSamples -= 1; 260 } 261 const totalAngleX = this.settings.gyroscopeMaxAngleX - this.settings.gyroscopeMinAngleX; 262 const totalAngleY = this.settings.gyroscopeMaxAngleY - this.settings.gyroscopeMinAngleY; 263 const degreesPerPixelX = totalAngleX / this.width; 264 const degreesPerPixelY = totalAngleY / this.height; 265 const angleX = event.gamma - (this.settings.gyroscopeMinAngleX + this.gammazero); 266 const angleY = event.beta - (this.settings.gyroscopeMinAngleY + this.betazero); 267 const posX = angleX / degreesPerPixelX; 268 const posY = angleY / degreesPerPixelY; 269 if (this.updateCall !== null) { 270 cancelAnimationFrame(this.updateCall); 271 } 272 this.event = { 273 clientX: posX + this.left, 274 clientY: posY + this.top 275 }; 276 this.updateCall = requestAnimationFrame(this.updateBind); 277 } 278 onMouseEnter() { 279 this.updateElementPosition(); 280 this.element.style.willChange = "transform"; 281 this.setTransition(); 282 } 283 onMouseMove(event) { 284 if (this.updateCall !== null) { 285 cancelAnimationFrame(this.updateCall); 286 } 287 this.event = event; 288 this.updateCall = requestAnimationFrame(this.updateBind); 289 } 290 onMouseLeave() { 291 this.setTransition(); 292 if (this.settings.reset) { 293 requestAnimationFrame(this.resetBind); 294 } 295 } 296 reset() { 297 this.onMouseEnter(); 298 if (this.fullPageListening) { 299 this.event = { 300 clientX: (this.settings.startX + this.settings.max) / (2 * this.settings.max) * this.clientWidth, 301 clientY: (this.settings.startY + this.settings.max) / (2 * this.settings.max) * this.clientHeight 302 }; 303 } else { 304 this.event = { 305 clientX: this.left + (this.settings.startX + this.settings.max) / (2 * this.settings.max) * this.width, 306 clientY: this.top + (this.settings.startY + this.settings.max) / (2 * this.settings.max) * this.height 307 }; 308 } 309 let backupScale = this.settings.scale; 310 this.settings.scale = 1; 311 this.update(); 312 this.settings.scale = backupScale; 313 this.resetGlare(); 314 } 315 resetGlare() { 316 if (this.glare) { 317 this.glareElement.style.transform = "rotate(180deg) translate(-50%, -50%)"; 318 this.glareElement.style.opacity = "0"; 319 } 320 } 321 getValues() { 322 let x, y; 323 if (this.fullPageListening) { 324 x = this.event.clientX / this.clientWidth; 325 y = this.event.clientY / this.clientHeight; 326 } else { 327 x = (this.event.clientX - this.left) / this.width; 328 y = (this.event.clientY - this.top) / this.height; 329 } 330 x = Math.min(Math.max(x, 0), 1); 331 y = Math.min(Math.max(y, 0), 1); 332 let tiltX = (this.reverse * (this.settings.max - x * this.settings.max * 2)).toFixed(2); 333 let tiltY = (this.reverse * (y * this.settings.max * 2 - this.settings.max)).toFixed(2); 334 let angle = Math.atan2(this.event.clientX - (this.left + this.width / 2), -(this.event.clientY - (this.top + this.height / 2))) * (180 / Math.PI); 335 return { 336 tiltX, 337 tiltY, 338 percentageX: x * 100, 339 percentageY: y * 100, 340 angle 341 }; 342 } 343 updateElementPosition() { 344 let rect = this.element.getBoundingClientRect(); 345 this.width = this.element.offsetWidth; 346 this.height = this.element.offsetHeight; 347 this.left = rect.left; 348 this.top = rect.top; 349 } 350 update() { 351 let values = this.getValues(); 352 this.element.style.transform = "perspective(" + this.settings.perspective + "px) rotateX(" + (this.settings.axis === "x" ? 0 : values.tiltY) + "deg) rotateY(" + (this.settings.axis === "y" ? 0 : values.tiltX) + "deg) scale3d(" + this.settings.scale + ", " + this.settings.scale + ", " + this.settings.scale + ")"; 353 if (this.glare) { 354 this.glareElement.style.transform = `rotate(${values.angle}deg) translate(-50%, -50%)`; 355 this.glareElement.style.opacity = `${values.percentageY * this.settings["max-glare"] / 100}`; 356 } 357 this.element.dispatchEvent(new CustomEvent("tiltChange", { 358 "detail": values 359 })); 360 this.updateCall = null; 361 } 362 /** 363 * Appends the glare element (if glarePrerender equals false) 364 * and sets the default style 365 */ 366 prepareGlare() { 367 if (!this.glarePrerender) { 368 const jsTiltGlare = document.createElement("div"); 369 jsTiltGlare.classList.add("js-tilt-glare"); 370 const jsTiltGlareInner = document.createElement("div"); 371 jsTiltGlareInner.classList.add("js-tilt-glare-inner"); 372 jsTiltGlare.appendChild(jsTiltGlareInner); 373 this.element.appendChild(jsTiltGlare); 374 } 375 this.glareElementWrapper = this.element.querySelector(".js-tilt-glare"); 376 this.glareElement = this.element.querySelector(".js-tilt-glare-inner"); 377 if (this.glarePrerender) { 378 return; 379 } 380 Object.assign(this.glareElementWrapper.style, { 381 "position": "absolute", 382 "top": "0", 383 "left": "0", 384 "width": "100%", 385 "height": "100%", 386 "overflow": "hidden", 387 "pointer-events": "none", 388 "border-radius": "inherit" 389 }); 390 Object.assign(this.glareElement.style, { 391 "position": "absolute", 392 "top": "50%", 393 "left": "50%", 394 "pointer-events": "none", 395 "background-image": `linear-gradient(0deg, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 100%)`, 396 "transform": "rotate(180deg) translate(-50%, -50%)", 397 "transform-origin": "0% 0%", 398 "opacity": "0" 399 }); 400 this.updateGlareSize(); 401 } 402 updateGlareSize() { 403 if (this.glare) { 404 const glareSize = (this.element.offsetWidth > this.element.offsetHeight ? this.element.offsetWidth : this.element.offsetHeight) * 2; 405 Object.assign(this.glareElement.style, { 406 "width": `${glareSize}px`, 407 "height": `${glareSize}px` 408 }); 409 } 410 } 411 updateClientSize() { 412 this.clientWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; 413 this.clientHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; 414 } 415 onWindowResize() { 416 this.updateGlareSize(); 417 this.updateClientSize(); 418 } 419 setTransition() { 420 clearTimeout(this.transitionTimeout); 421 this.element.style.transition = this.settings.speed + "ms " + this.settings.easing; 422 if (this.glare) this.glareElement.style.transition = `opacity ${this.settings.speed}ms ${this.settings.easing}`; 423 this.transitionTimeout = setTimeout(() => { 424 this.element.style.transition = ""; 425 if (this.glare) { 426 this.glareElement.style.transition = ""; 427 } 428 }, this.settings.speed); 429 } 430 /** 431 * Method return patched settings of instance 432 * @param {boolean} settings.reverse - reverse the tilt direction 433 * @param {number} settings.max - max tilt rotation (degrees) 434 * @param {startX} settings.startX - the starting tilt on the X axis, in degrees. Default: 0 435 * @param {startY} settings.startY - the starting tilt on the Y axis, in degrees. Default: 0 436 * @param {number} settings.perspective - Transform perspective, the lower the more extreme the tilt gets 437 * @param {string} settings.easing - Easing on enter/exit 438 * @param {number} settings.scale - 2 = 200%, 1.5 = 150%, etc.. 439 * @param {number} settings.speed - Speed of the enter/exit transition 440 * @param {boolean} settings.transition - Set a transition on enter/exit 441 * @param {string|null} settings.axis - What axis should be enabled. Can be "x" or "y" 442 * @param {boolean} settings.glare - if it should have a "glare" effect
443 * @param {number} settings.max-glare - the maximum "glare" opacity (1 = 100%, 0.5 = 50%) 444 * @param {boolean} settings.glare-prerender - false = VanillaTilt creates the glare elements for you, otherwise 445 * @param {boolean} settings.full-page-listening - If true, parallax effect will listen to mouse move events on the whole document, not only the selected element 446 * @param {string|object} settings.mouse-event-element - String selector or link to HTML-element what will be listen mouse events 447 * @param {boolean} settings.reset - false = If the tilt effect has to be reset on exit 448 * @param {boolean} settings.reset-to-start - true = On reset event (mouse leave) will return to initial start angle (if startX or startY is set) 449 * @param {gyroscope} settings.gyroscope - Enable tilting by deviceorientation events 450 * @param {gyroscopeSensitivity} settings.gyroscopeSensitivity - Between 0 and 1 - The angle at which max tilt position is reached. 1 = 90deg, 0.5 = 45deg, etc.. 451 * @param {gyroscopeSamples} settings.gyroscopeSamples - How many gyroscope moves to decide the starting position. 452 */ 453 extendSettings(settings) { 454 let defaultSettings = { 455 reverse: false, 456 max: 15, 457 startX: 0, 458 startY: 0, 459 perspective: 1e3, 460 easing: "cubic-bezier(.03,.98,.52,.99)", 461 scale: 1, 462 speed: 300, 463 transition: true, 464 axis: null, 465 glare: false, 466 "max-glare": 1, 467 "glare-prerender": false, 468 "full-page-listening": false, 469 "mouse-event-element": null, 470 reset: true, 471 "reset-to-start": true, 472 gyroscope: true, 473 gyroscopeMinAngleX: -45, 474 gyroscopeMaxAngleX: 45, 475 gyroscopeMinAngleY: -45, 476 gyroscopeMaxAngleY: 45, 477 gyroscopeSamples: 10 478 }; 479 let newSettings = {}; 480 for (var property in defaultSettings) { 481 if (property in settings) { 482 newSettings[property] = settings[property]; 483 } else if (this.element.hasAttribute("data-tilt-" + property)) { 484 let attribute = this.element.getAttribute("data-tilt-" + property); 485 try { 486 newSettings[property] = JSON.parse(attribute); 487 } catch (e) { 488 newSettings[property] = attribute; 489 } 490 } else { 491 newSettings[property] = defaultSettings[property]; 492 } 493 } 494 return newSettings; 495 } 496 static init(elements, settings) { 497 if (elements instanceof Node) { 498 elements = [elements]; 499 } 500 if (elements instanceof NodeList) { 501 elements = [].slice.call(elements); 502 } 503 if (!(elements instanceof Array)) { 504 return; 505 } 506 elements.forEach((element) => { 507 if (!("vanillaTilt" in element)) { 508 element.vanillaTilt = new VanillaTilt(element, settings); 509 } 510 }); 511 } 512 } 513 if (typeof document !== "undefined") { 514 window.VanillaTilt = VanillaTilt; 515 VanillaTilt.init(document.querySelectorAll("[data-tilt]")); 516 } 517 const { lg } = { lg: 1024 }; 518 class Tilt { 519 constructor() { 520 if (window.innerWidth < lg) { 521 return; 522 } 523 document.querySelectorAll(".js-tilt").forEach(($el) => { 524 VanillaTilt.init($el, { 525 max: 5, 526 scale: 1.05, 527 speed: 700, 528 glare: $el.dataset.tiltGlare !== void 0 ? $el.dataset.tiltGlare === "true" : true, 529 "max-glare": 0.2, 530 gyroscopeMinAngleX: -10, 531 gyroscopeMaxAngleX: 10, 532 gyroscopeMinAngleY: -10, 533 gyroscopeMaxAngleY: 10 534 }); 535 }); 536 } 537 } 538 class Anchor { 539 constructor() { 540 this.$links = document.querySelectorAll(".js-anchor"); 541 this.$links.forEach(($link) => { 542 $link.addEventListener("click", (e) => { 543 e.preventDefault(); 544 const $el = document.querySelector($link.getAttribute("href")); 545 const $header = document.querySelector(".js-header"); 546 history.replaceState(null, null, $link.getAttribute("href")); 547 if ($el) { 548 const headerHeight = $header.offsetHeight; 549 const elTop = $el.getBoundingClientRect().top; 550 const scrollPos = window.scrollY || document.documentElement.scrollTop || document.body.scrollTop || 0; 551 window.scrollTo({ 552 top: elTop + scrollPos - headerHeight, 553 behavior: "smooth" 554 }); 555 } 556 }); 557 }); 558 } 559 } 560 class Modal { 561 constructor() { 562 this.$modal = document.querySelector(".js-modal"); 563 if (!this.$modal) { 564 return; 565 } 566 this.$modalContent = document.querySelector(".js-modal-content"); 567 this.$modalClose = this.$modal.querySelector(".js-modal-close"); 568 this.$modalClose.addEventListener("click", this.hideDetails.bind(this)); 569 document.querySelectorAll(".js-open-modal").forEach((item) => { 570 item.addEventListener("click", (e) => { 571 e.preventDefault();
572 this.showDetails(e.currentTarget.dataset.modalContent); 573 }); 574 }); 575 } 576 showDetails(embed) { 577 this.modalOpen = true; 578 document.body.classList.add("scrolling-disabled"); 579 this.$modal.classList.remove("hidden"); 580 this.$modal.setAttribute("aria-hidden", "false"); 581 this.$modalContent.innerHTML = embed; 582 } 583 hideDetails(e) { 584 e.preventDefault(); 585 this.$modal.classList.add("hidden"); 586 this.$modal.setAttribute("aria-hidden", "true"); 587 document.body.classList.remove("scrolling-disabled"); 588 this.modalOpen = false; 589 this.pauseVideo(); 590 } 591 pauseVideo() { 592 this.$modalContent.firstChild.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', "*"); 593 } 594 } 595 function getDefaultExportFromCjs(x) { 596 return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x; 597 } 598 var js = { exports: {} }; 599 var core$1 = { exports: {} }; 600 var evEmitter$1 = { exports: {} }; 601 var evEmitter = evEmitter$1.exports; 602 var hasRequiredEvEmitter; 603 function requireEvEmitter() { 604 if (hasRequiredEvEmitter) return evEmitter$1.exports; 605 hasRequiredEvEmitter = 1; 606 (function(module) { 607 (function(global2, factory) { 608 if (module.exports) { 609 module.exports = factory(); 610 } else { 611 global2.EvEmitter = factory(); 612 } 613 })(typeof window != "undefined" ? window : evEmitter, function() { 614 function EvEmitter() { 615 } 616 let proto = EvEmitter.prototype; 617 proto.on = function(eventName, listener) { 618 if (!eventName || !listener) return this; 619 let events = this._events = this._events || {}; 620 let listeners = events[eventName] = events[eventName] || []; 621 if (!listeners.includes(listener)) { 622 listeners.push(listener); 623 } 624 return this; 625 }; 626 proto.once = function(eventName, listener) { 627 if (!eventName || !listener) return this; 628 this.on(eventName, listener); 629 let onceEvents = this._onceEvents = this._onceEvents || {}; 630 let onceListeners = onceEvents[eventName] = onceEvents[eventName] || {}; 631 onceListeners[listener] = true; 632 return this; 633 }; 634 proto.off = function(eventName, listener) { 635 let listeners = this._events && this._events[eventName]; 636 if (!listeners || !listeners.length) return this; 637 let index = listeners.indexOf(listener); 638 if (index != -1) { 639 listeners.splice(index, 1); 640 } 641 return this; 642 }; 643 proto.emitEvent = function(eventName, args) { 644 let listeners = this._events && this._events[eventName]; 645 if (!listeners || !listeners.length) return this; 646 listeners = listeners.slice(0); 647 args = args || []; 648 let onceListeners = this._onceEvents && this._onceEvents[eventName]; 649 for (let listener of listeners) { 650 let isOnce = onceListeners && onceListeners[listener]; 651 if (isOnce) { 652 this.off(eventName, listener); 653 delete onceListeners[listener]; 654 } 655 listener.apply(this, args); 656 } 657 return this; 658 }; 659 proto.allOff = function() { 660 delete this._events; 661 delete this._onceEvents; 662 return this; 663 }; 664 return EvEmitter; 665 }); 666 })(evEmitter$1); 667 return evEmitter$1.exports; 668 } 669 var getSize = { exports: {} }; 670 /*! 671 * Infinite Scroll v2.0.4 672 * measure size of elements 673 * MIT license 674 */ 675 var hasRequiredGetSize; 676 function requireGetSize() { 677 if (hasRequiredGetSize) return getSize.exports; 678 hasRequiredGetSize = 1; 679 (function(module) { 680 (function(window2, factory) { 681 if (module.exports) { 682 module.exports = factory(); 683 } else { 684 window2.getSize = factory(); 685 } 686 })(window, function factory() { 687 function getStyleSize(value) { 688 let num = parseFloat(value); 689 let isValid = value.indexOf("%") == -1 && !isNaN(num); 690 return isValid && num; 691 } 692 let measurements = [ 693 "paddingLeft", 694 "paddingRight", 695 "paddingTop", 696 "paddingBottom", 697 "marginLeft", 698 "marginRight", 699 "marginTop", 700 "marginBottom", 701 "borderLeftWidth", 702 "borderRightWidth", 703 "borderTopWidth", 704 "borderBottomWidth" 705 ]; 706 function getZeroSize() { 707 let size = { 708 width: 0, 709 height: 0, 710 innerWidth: 0, 711 innerHeight: 0, 712 outerWidth: 0, 713 outerHeight: 0 714 };
vendor: 83,567 bytes, lines 715-2794
715 measurements.forEach((measurement) => { 716 size[measurement] = 0; 717 }); 718 return size; 719 } 720 function getSize2(elem) { 721 if (typeof elem == "string") elem = document.querySelector(elem); 722 let isElement = elem && typeof elem == "object" && elem.nodeType; 723 if (!isElement) return; 724 let style = getComputedStyle(elem); 725 if (style.display == "none") return getZeroSize(); 726 let size = {}; 727 size.width = elem.offsetWidth; 728 size.height = elem.offsetHeight; 729 let isBorderBox = size.isBorderBox = style.boxSizing == "border-box"; 730 measurements.forEach((measurement) => { 731 let value = style[measurement]; 732 let num = parseFloat(value); 733 size[measurement] = !isNaN(num) ? num : 0; 734 }); 735 let paddingWidth = size.paddingLeft + size.paddingRight; 736 let paddingHeight = size.paddingTop + size.paddingBottom; 737 let marginWidth = size.marginLeft + size.marginRight; 738 let marginHeight = size.marginTop + size.marginBottom; 739 let borderWidth = size.borderLeftWidth + size.borderRightWidth; 740 let borderHeight = size.borderTopWidth + size.borderBottomWidth; 741 let styleWidth = getStyleSize(style.width); 742 if (styleWidth !== false) { 743 size.width = styleWidth + // add padding and border unless it's already including it 744 (isBorderBox ? 0 : paddingWidth + borderWidth); 745 } 746 let styleHeight = getStyleSize(style.height); 747 if (styleHeight !== false) { 748 size.height = styleHeight + // add padding and border unless it's already including it 749 (isBorderBox ? 0 : paddingHeight + borderHeight); 750 } 751 size.innerWidth = size.width - (paddingWidth + borderWidth); 752 size.innerHeight = size.height - (paddingHeight + borderHeight); 753 size.outerWidth = size.width + marginWidth; 754 size.outerHeight = size.height + marginHeight; 755 return size; 756 } 757 return getSize2; 758 }); 759 })(getSize); 760 return getSize.exports; 761 } 762 var utils$3 = { exports: {} }; 763 var utils$2 = utils$3.exports; 764 var hasRequiredUtils; 765 function requireUtils() { 766 if (hasRequiredUtils) return utils$3.exports; 767 hasRequiredUtils = 1; 768 (function(module) { 769 (function(global2, factory) { 770 if (module.exports) { 771 module.exports = factory(global2); 772 } else { 773 global2.fizzyUIUtils = factory(global2); 774 } 775 })(utils$2, function factory(global2) { 776 let utils2 = {}; 777 utils2.extend = function(a, b) { 778 return Object.assign(a, b); 779 }; 780 utils2.modulo = function(num, div) { 781 return (num % div + div) % div; 782 }; 783 utils2.makeArray = function(obj) { 784 if (Array.isArray(obj)) return obj; 785 if (obj === null || obj === void 0) return []; 786 let isArrayLike = typeof obj == "object" && typeof obj.length == "number"; 787 if (isArrayLike) return [...obj]; 788 return [obj]; 789 }; 790 utils2.removeFrom = function(ary, obj) { 791 let index = ary.indexOf(obj); 792 if (index != -1) { 793 ary.splice(index, 1); 794 } 795 }; 796 utils2.getParent = function(elem, selector2) { 797 while (elem.parentNode && elem != document.body) { 798 elem = elem.parentNode; 799 if (elem.matches(selector2)) return elem; 800 } 801 }; 802 utils2.getQueryElement = function(elem) { 803 if (typeof elem == "string") { 804 return document.querySelector(elem); 805 } 806 return elem; 807 }; 808 utils2.handleEvent = function(event) { 809 let method = "on" + event.type; 810 if (this[method]) { 811 this[method](event); 812 } 813 }; 814 utils2.filterFindElements = function(elems, selector2) { 815 elems = utils2.makeArray(elems); 816 return elems.filter((elem) => elem instanceof HTMLElement).reduce((ffElems, elem) => { 817 if (!selector2) { 818 ffElems.push(elem); 819 return ffElems; 820 } 821 if (elem.matches(selector2)) { 822 ffElems.push(elem); 823 } 824 let childElems = elem.querySelectorAll(selector2); 825 ffElems = ffElems.concat(...childElems); 826 return ffElems; 827 }, []); 828 }; 829 utils2.debounceMethod = function(_class, methodName, threshold) { 830 threshold = threshold || 100; 831 let method = _class.prototype[methodName]; 832 let timeoutName = methodName + "Timeout"; 833 _class.prototype[methodName] = function() { 834 clearTimeout(this[timeoutName]); 835 let args = arguments; 836 this[timeoutName] = setTimeout(() => { 837 method.apply(this, args); 838 delete this[timeoutName]; 839 }, threshold); 840 }; 841 }; 842 utils2.docReady = function(onDocReady) { 843 let readyState = document.readyState; 844 if (readyState == "complete" || readyState == "interactive") { 845 setTimeout(onDocReady); 846 } else { 847 document.addEventListener("DOMContentLoaded", onDocReady); 848 } 849 }; 850 utils2.toDashed = function(str) { 851 return str.replace(/(.)([A-Z])/g, function(match, $1, $2) { 852 return $1 + "-" + $2; 853 }).toLowerCase(); 854 }; 855 let console2 = global2.console; 856 utils2.htmlInit = function(WidgetClass, namespace) { 857 utils2.docReady(function() { 858 let dashedNamespace = utils2.toDashed(namespace); 859 let dataAttr = "data-" + dashedNamespace; 860 let dataAttrElems = document.querySelectorAll(`[${dataAttr}]`); 861 let jQuery2 = global2.jQuery; 862 [...dataAttrElems].forEach((elem) => { 863 let attr = elem.getAttribute(dataAttr); 864 let options; 865 try { 866 options = attr && JSON.parse(attr); 867 } catch (error) { 868 if (console2) { 869 console2.error(`Error parsing ${dataAttr} on ${elem.className}: ${error}`); 870 } 871 return; 872 } 873 let instance = new WidgetClass(elem, options); 874 if (jQuery2) { 875 jQuery2.data(elem, namespace, instance); 876 } 877 }); 878 }); 879 }; 880 return utils2; 881 }); 882 })(utils$3); 883 return utils$3.exports; 884 } 885 var cell$1 = { exports: {} }; 886 var cell = cell$1.exports; 887 var hasRequiredCell; 888 function requireCell() { 889 if (hasRequiredCell) return cell$1.exports; 890 hasRequiredCell = 1; 891 (function(module) { 892 (function(window2, factory) { 893 if (module.exports) { 894 module.exports = factory(requireGetSize()); 895 } else { 896 window2.Flickity = window2.Flickity || {}; 897 window2.Flickity.Cell = factory(window2.getSize); 898 } 899 })(typeof window != "undefined" ? window : cell, function factory(getSize2) { 900 const cellClassName = "flickity-cell"; 901 function Cell(elem) { 902 this.element = elem; 903 this.element.classList.add(cellClassName); 904 this.x = 0; 905 this.unselect(); 906 } 907 let proto = Cell.prototype; 908 proto.destroy = function() { 909 this.unselect(); 910 this.element.classList.remove(cellClassName); 911 this.element.style.transform = ""; 912 this.element.removeAttribute("aria-hidden"); 913 }; 914 proto.getSize = function() { 915 this.size = getSize2(this.element); 916 }; 917 proto.select = function() { 918 this.element.classList.add("is-selected"); 919 this.element.removeAttribute("aria-hidden"); 920 }; 921 proto.unselect = function() { 922 this.element.classList.remove("is-selected"); 923 this.element.setAttribute("aria-hidden", "true"); 924 }; 925 proto.remove = function() { 926 this.element.remove(); 927 }; 928 return Cell; 929 }); 930 })(cell$1); 931 return cell$1.exports; 932 } 933 var slide$1 = { exports: {} }; 934 var slide = slide$1.exports; 935 var hasRequiredSlide; 936 function requireSlide() { 937 if (hasRequiredSlide) return slide$1.exports; 938 hasRequiredSlide = 1; 939 (function(module) { 940 (function(window2, factory) { 941 if (module.exports) { 942 module.exports = factory(); 943 } else { 944 window2.Flickity = window2.Flickity || {}; 945 window2.Flickity.Slide = factory(); 946 } 947 })(typeof window != "undefined" ? window : slide, function factory() { 948 function Slide(beginMargin, endMargin, cellAlign) { 949 this.beginMargin = beginMargin; 950 this.endMargin = endMargin; 951 this.cellAlign = cellAlign; 952 this.cells = []; 953 this.outerWidth = 0; 954 this.height = 0; 955 } 956 let proto = Slide.prototype; 957 proto.addCell = function(cell2) { 958 this.cells.push(cell2); 959 this.outerWidth += cell2.size.outerWidth; 960 this.height = Math.max(cell2.size.outerHeight, this.height); 961 if (this.cells.length === 1) { 962 this.x = cell2.x; 963 this.firstMargin = cell2.size[this.beginMargin]; 964 } 965 }; 966 proto.updateTarget = function() { 967 let lastCell = this.getLastCell(); 968 let lastMargin = lastCell ? lastCell.size[this.endMargin] : 0; 969 let slideWidth = this.outerWidth - (this.firstMargin + lastMargin); 970 this.target = this.x + this.firstMargin + slideWidth * this.cellAlign; 971 }; 972 proto.getLastCell = function() { 973 return this.cells[this.cells.length - 1]; 974 }; 975 proto.select = function() { 976 this.cells.forEach((cell2) => cell2.select()); 977 }; 978 proto.unselect = function() { 979 this.cells.forEach((cell2) => cell2.unselect()); 980 }; 981 proto.getCellElements = function() { 982 return this.cells.map((cell2) => cell2.element); 983 }; 984 return Slide; 985 }); 986 })(slide$1); 987 return slide$1.exports; 988 } 989 var animate$1 = { exports: {} }; 990 var animate = animate$1.exports; 991 var hasRequiredAnimate; 992 function requireAnimate() { 993 if (hasRequiredAnimate) return animate$1.exports; 994 hasRequiredAnimate = 1; 995 (function(module) { 996 (function(window2, factory) { 997 if (module.exports) { 998 module.exports = factory(requireUtils()); 999 } else { 1000 window2.Flickity = window2.Flickity || {}; 1001 window2.Flickity.animatePrototype = factory(window2.fizzyUIUtils); 1002 } 1003 })(typeof window != "undefined" ? window : animate, function factory(utils2) { 1004 let proto = {}; 1005 proto.startAnimation = function() { 1006 if (this.isAnimating) return; 1007 this.isAnimating = true; 1008 this.restingFrames = 0; 1009 this.animate(); 1010 }; 1011 proto.animate = function() { 1012 this.applyDragForce(); 1013 this.applySelectedAttraction(); 1014 let previousX = this.x; 1015 this.integratePhysics(); 1016 this.positionSlider(); 1017 this.settle(previousX); 1018 if (this.isAnimating) requestAnimationFrame(() => this.animate()); 1019 }; 1020 proto.positionSlider = function() { 1021 let x = this.x; 1022 if (this.isWrapping) { 1023 x = utils2.modulo(x, this.slideableWidth) - this.slideableWidth; 1024 this.shiftWrapCells(x); 1025 } 1026 this.setTranslateX(x, this.isAnimating); 1027 this.dispatchScrollEvent(); 1028 }; 1029 proto.setTranslateX = function(x, is3d) { 1030 x += this.cursorPosition; 1031 if (this.options.rightToLeft) x = -x; 1032 let translateX = this.getPositionValue(x); 1033 this.slider.style.transform = is3d ? `translate3d(${translateX},0,0)` : `translateX(${translateX})`; 1034 }; 1035 proto.dispatchScrollEvent = function() { 1036 let firstSlide = this.slides[0]; 1037 if (!firstSlide) return; 1038 let positionX = -this.x - firstSlide.target; 1039 let progress = positionX / this.slidesWidth; 1040 this.dispatchEvent("scroll", null, [progress, positionX]); 1041 }; 1042 proto.positionSliderAtSelected = function() { 1043 if (!this.cells.length) return; 1044 this.x = -this.selectedSlide.target; 1045 this.velocity = 0; 1046 this.positionSlider(); 1047 }; 1048 proto.getPositionValue = function(position) { 1049 if (this.options.percentPosition) { 1050 return Math.round(position / this.size.innerWidth * 1e4) * 0.01 + "%"; 1051 } else { 1052 return Math.round(position) + "px"; 1053 } 1054 }; 1055 proto.settle = function(previousX) { 1056 let isResting = !this.isPointerDown && Math.round(this.x * 100) === Math.round(previousX * 100); 1057 if (isResting) this.restingFrames++; 1058 if (this.restingFrames > 2) { 1059 this.isAnimating = false; 1060 delete this.isFreeScrolling; 1061 this.positionSlider(); 1062 this.dispatchEvent("settle", null, [this.selectedIndex]); 1063 } 1064 }; 1065 proto.shiftWrapCells = function(x) { 1066 let beforeGap = this.cursorPosition + x; 1067 this._shiftCells(this.beforeShiftCells, beforeGap, -1); 1068 let afterGap = this.size.innerWidth - (x + this.slideableWidth + this.cursorPosition); 1069 this._shiftCells(this.afterShiftCells, afterGap, 1); 1070 }; 1071 proto._shiftCells = function(cells, gap, shift) { 1072 cells.forEach((cell2) => { 1073 let cellShift = gap > 0 ? shift : 0; 1074 this._wrapShiftCell(cell2, cellShift); 1075 gap -= cell2.size.outerWidth; 1076 }); 1077 }; 1078 proto._unshiftCells = function(cells) { 1079 if (!cells || !cells.length) return; 1080 cells.forEach((cell2) => this._wrapShiftCell(cell2, 0)); 1081 }; 1082 proto._wrapShiftCell = function(cell2, shift) { 1083 this._renderCellPosition(cell2, cell2.x + this.slideableWidth * shift); 1084 }; 1085 proto.integratePhysics = function() { 1086 this.x += this.velocity; 1087 this.velocity *= this.getFrictionFactor(); 1088 }; 1089 proto.applyForce = function(force) { 1090 this.velocity += force; 1091 }; 1092 proto.getFrictionFactor = function() { 1093 return 1 - this.options[this.isFreeScrolling ? "freeScrollFriction" : "friction"]; 1094 }; 1095 proto.getRestingPosition = function() { 1096 return this.x + this.velocity / (1 - this.getFrictionFactor()); 1097 }; 1098 proto.applyDragForce = function() { 1099 if (!this.isDraggable || !this.isPointerDown) return; 1100 let dragVelocity = this.dragX - this.x; 1101 let dragForce = dragVelocity - this.velocity; 1102 this.applyForce(dragForce); 1103 }; 1104 proto.applySelectedAttraction = function() { 1105 let dragDown = this.isDraggable && this.isPointerDown; 1106 if (dragDown || this.isFreeScrolling || !this.slides.length) return; 1107 let distance = this.selectedSlide.target * -1 - this.x; 1108 let force = distance * this.options.selectedAttraction; 1109 this.applyForce(force); 1110 }; 1111 return proto; 1112 }); 1113 })(animate$1); 1114 return animate$1.exports; 1115 } 1116 var core = core$1.exports; 1117 var hasRequiredCore; 1118 function requireCore() { 1119 if (hasRequiredCore) return core$1.exports; 1120 hasRequiredCore = 1; 1121 (function(module) { 1122 (function(window2, factory) { 1123 if (module.exports) { 1124 module.exports = factory( 1125 window2, 1126 requireEvEmitter(), 1127 requireGetSize(), 1128 requireUtils(), 1129 requireCell(), 1130 requireSlide(), 1131 requireAnimate() 1132 ); 1133 } else { 1134 let _Flickity = window2.Flickity; 1135 window2.Flickity = factory( 1136 window2, 1137 window2.EvEmitter, 1138 window2.getSize, 1139 window2.fizzyUIUtils, 1140 _Flickity.Cell, 1141 _Flickity.Slide, 1142 _Flickity.animatePrototype 1143 ); 1144 } 1145 })( 1146 typeof window != "undefined" ? window : core, 1147 function factory(window2, EvEmitter, getSize2, utils2, Cell, Slide, animatePrototype) { 1148 const { getComputedStyle: getComputedStyle2, console: console2 } = window2; 1149 let { jQuery: jQuery2 } = window2; 1150 let GUID = 0; 1151 let instances = {}; 1152 function Flickity2(element, options) { 1153 let queryElement = utils2.getQueryElement(element); 1154 if (!queryElement) { 1155 if (console2) console2.error(`Bad element for Flickity: ${queryElement || element}`); 1156 return; 1157 } 1158 this.element = queryElement; 1159 if (this.element.flickityGUID) { 1160 let instance = instances[this.element.flickityGUID]; 1161 if (instance) instance.option(options); 1162 return instance; 1163 } 1164 if (jQuery2) { 1165 this.$element = jQuery2(this.element); 1166 } 1167 this.options = { ...this.constructor.defaults }; 1168 this.option(options); 1169 this._create(); 1170 } 1171 Flickity2.defaults = { 1172 accessibility: true, 1173 // adaptiveHeight: false, 1174 cellAlign: "center", 1175 // cellSelector: undefined, 1176 // contain: false, 1177 freeScrollFriction: 0.075, 1178 // friction when free-scrolling 1179 friction: 0.28, 1180 // friction when selecting 1181 namespaceJQueryEvents: true, 1182 // initialIndex: 0, 1183 percentPosition: true, 1184 resize: true, 1185 selectedAttraction: 0.025, 1186 setGallerySize: true 1187 // watchCSS: false, 1188 // wrapAround: false 1189 }; 1190 Flickity2.create = {}; 1191 let proto = Flickity2.prototype; 1192 Object.assign(proto, EvEmitter.prototype); 1193 proto._create = function() { 1194 let { resize, watchCSS, rightToLeft } = this.options; 1195 let id = this.guid = ++GUID; 1196 this.element.flickityGUID = id; 1197 instances[id] = this; 1198 this.selectedIndex = 0; 1199 this.restingFrames = 0; 1200 this.x = 0; 1201 this.velocity = 0; 1202 this.beginMargin = rightToLeft ? "marginRight" : "marginLeft"; 1203 this.endMargin = rightToLeft ? "marginLeft" : "marginRight"; 1204 this.viewport = document.createElement("div"); 1205 this.viewport.className = "flickity-viewport"; 1206 this._createSlider(); 1207 this.focusableElems = [this.element]; 1208 if (resize || watchCSS) { 1209 window2.addEventListener("resize", this); 1210 } 1211 for (let eventName in this.options.on) { 1212 let listener = this.options.on[eventName]; 1213 this.on(eventName, listener); 1214 } 1215 for (let method in Flickity2.create) { 1216 Flickity2.create[method].call(this); 1217 } 1218 if (watchCSS) { 1219 this.watchCSS(); 1220 } else { 1221 this.activate(); 1222 } 1223 }; 1224 proto.option = function(opts) { 1225 Object.assign(this.options, opts); 1226 }; 1227 proto.activate = function() { 1228 if (this.isActive) return; 1229 this.isActive = true; 1230 this.element.classList.add("flickity-enabled"); 1231 if (this.options.rightToLeft) { 1232 this.element.classList.add("flickity-rtl"); 1233 } 1234 this.getSize(); 1235 let cellElems = this._filterFindCellElements(this.element.children); 1236 this.slider.append(...cellElems); 1237 this.viewport.append(this.slider); 1238 this.element.append(this.viewport); 1239 this.reloadCells(); 1240 if (this.options.accessibility) { 1241 this.element.tabIndex = 0; 1242 this.element.addEventListener("keydown", this); 1243 } 1244 this.emitEvent("activate"); 1245 this.selectInitialIndex(); 1246 this.isInitActivated = true; 1247 this.dispatchEvent("ready"); 1248 }; 1249 proto._createSlider = function() { 1250 let slider = document.createElement("div"); 1251 slider.className = "flickity-slider"; 1252 this.slider = slider; 1253 }; 1254 proto._filterFindCellElements = function(elems) { 1255 return utils2.filterFindElements(elems, this.options.cellSelector); 1256 }; 1257 proto.reloadCells = function() { 1258 this.cells = this._makeCells(this.slider.children); 1259 this.positionCells(); 1260 this._updateWrapShiftCells(); 1261 this.setGallerySize(); 1262 }; 1263 proto._makeCells = function(elems) { 1264 let cellElems = this._filterFindCellElements(elems); 1265 return cellElems.map((cellElem) => new Cell(cellElem)); 1266 }; 1267 proto.getLastCell = function() { 1268 return this.cells[this.cells.length - 1]; 1269 }; 1270 proto.getLastSlide = function() { 1271 return this.slides[this.slides.length - 1]; 1272 }; 1273 proto.positionCells = function() { 1274 this._sizeCells(this.cells); 1275 this._positionCells(0); 1276 }; 1277 proto._positionCells = function(index) { 1278 index = index || 0; 1279 this.maxCellHeight = index ? this.maxCellHeight || 0 : 0; 1280 let cellX = 0; 1281 if (index > 0) { 1282 let startCell = this.cells[index - 1]; 1283 cellX = startCell.x + startCell.size.outerWidth; 1284 } 1285 this.cells.slice(index).forEach((cell2) => { 1286 cell2.x = cellX; 1287 this._renderCellPosition(cell2, cellX); 1288 cellX += cell2.size.outerWidth; 1289 this.maxCellHeight = Math.max(cell2.size.outerHeight, this.maxCellHeight); 1290 }); 1291 this.slideableWidth = cellX; 1292 this.updateSlides(); 1293 this._containSlides(); 1294 this.slidesWidth = this.cells.length ? this.getLastSlide().target - this.slides[0].target : 0; 1295 }; 1296 proto._renderCellPosition = function(cell2, x) { 1297 let sideOffset = this.options.rightToLeft ? -1 : 1; 1298 let renderX = x * sideOffset; 1299 if (this.options.percentPosition) renderX *= this.size.innerWidth / cell2.size.width; 1300 let positionValue = this.getPositionValue(renderX); 1301 cell2.element.style.transform = `translateX( ${positionValue} )`; 1302 }; 1303 proto._sizeCells = function(cells) { 1304 cells.forEach((cell2) => cell2.getSize()); 1305 }; 1306 proto.updateSlides = function() { 1307 this.slides = []; 1308 if (!this.cells.length) return; 1309 let { beginMargin, endMargin } = this; 1310 let slide2 = new Slide(beginMargin, endMargin, this.cellAlign); 1311 this.slides.push(slide2); 1312 let canCellFit = this._getCanCellFit(); 1313 this.cells.forEach((cell2, i2) => { 1314 if (!slide2.cells.length) { 1315 slide2.addCell(cell2); 1316 return; 1317 } 1318 let slideWidth = slide2.outerWidth - slide2.firstMargin + (cell2.size.outerWidth - cell2.size[endMargin]); 1319 if (canCellFit(i2, slideWidth)) { 1320 slide2.addCell(cell2); 1321 } else { 1322 slide2.updateTarget(); 1323 slide2 = new Slide(beginMargin, endMargin, this.cellAlign); 1324 this.slides.push(slide2); 1325 slide2.addCell(cell2); 1326 } 1327 }); 1328 slide2.updateTarget(); 1329 this.updateSelectedSlide(); 1330 }; 1331 proto._getCanCellFit = function() { 1332 let { groupCells } = this.options; 1333 if (!groupCells) return () => false; 1334 if (typeof groupCells == "number") { 1335 let number = parseInt(groupCells, 10); 1336 return (i2) => i2 % number !== 0; 1337 } 1338 let percent = 1; 1339 let percentMatch = typeof groupCells == "string" && groupCells.match(/^(\d+)%$/); 1340 if (percentMatch) percent = parseInt(percentMatch[1], 10) / 100; 1341 let groupWidth = (this.size.innerWidth + 1) * percent; 1342 return (i2, slideWidth) => slideWidth <= groupWidth; 1343 }; 1344 proto._init = proto.reposition = function() { 1345 this.positionCells(); 1346 this.positionSliderAtSelected(); 1347 }; 1348 proto.getSize = function() { 1349 this.size = getSize2(this.element); 1350 this.setCellAlign(); 1351 this.cursorPosition = this.size.innerWidth * this.cellAlign; 1352 }; 1353 let cellAlignShorthands = { 1354 left: 0, 1355 center: 0.5, 1356 right: 1 1357 }; 1358 proto.setCellAlign = function() { 1359 let { cellAlign, rightToLeft } = this.options; 1360 let shorthand = cellAlignShorthands[cellAlign]; 1361 this.cellAlign = shorthand !== void 0 ? shorthand : cellAlign; 1362 if (rightToLeft) this.cellAlign = 1 - this.cellAlign; 1363 }; 1364 proto.setGallerySize = function() { 1365 if (!this.options.setGallerySize) return; 1366 let height = this.options.adaptiveHeight && this.selectedSlide ? this.selectedSlide.height : this.maxCellHeight; 1367 this.viewport.style.height = `${height}px`; 1368 }; 1369 proto._updateWrapShiftCells = function() { 1370 this.isWrapping = this.getIsWrapping(); 1371 if (!this.isWrapping) return; 1372 this._unshiftCells(this.beforeShiftCells); 1373 this._unshiftCells(this.afterShiftCells); 1374 let beforeGapX = this.cursorPosition; 1375 let lastIndex = this.cells.length - 1; 1376 this.beforeShiftCells = this._getGapCells(beforeGapX, lastIndex, -1); 1377 let afterGapX = this.size.innerWidth - this.cursorPosition; 1378 this.afterShiftCells = this._getGapCells(afterGapX, 0, 1); 1379 }; 1380 proto.getIsWrapping = function() { 1381 let { wrapAround } = this.options; 1382 if (!wrapAround || this.slides.length < 2) return false; 1383 if (wrapAround !== "fill") return true; 1384 let gapWidth = this.slideableWidth - this.size.innerWidth; 1385 if (gapWidth > this.size.innerWidth) return true; 1386 for (let cell2 of this.cells) { 1387 if (cell2.size.outerWidth > gapWidth) return false; 1388 } 1389 return true; 1390 }; 1391 proto._getGapCells = function(gapX, cellIndex, increment) { 1392 let cells = []; 1393 while (gapX > 0) { 1394 let cell2 = this.cells[cellIndex]; 1395 if (!cell2) break; 1396 cells.push(cell2); 1397 cellIndex += increment; 1398 gapX -= cell2.size.outerWidth; 1399 } 1400 return cells; 1401 }; 1402 proto._containSlides = function() { 1403 let isContaining = this.options.contain && !this.isWrapping && this.cells.length; 1404 if (!isContaining) return; 1405 let contentWidth = this.slideableWidth - this.getLastCell().size[this.endMargin]; 1406 let isContentSmaller = contentWidth < this.size.innerWidth; 1407 if (isContentSmaller) { 1408 this.slides.forEach((slide2) => { 1409 slide2.target = contentWidth * this.cellAlign; 1410 }); 1411 } else { 1412 let beginBound = this.cursorPosition + this.cells[0].size[this.beginMargin]; 1413 let endBound = contentWidth - this.size.innerWidth * (1 - this.cellAlign); 1414 this.slides.forEach((slide2) => { 1415 slide2.target = Math.max(slide2.target, beginBound); 1416 slide2.target = Math.min(slide2.target, endBound); 1417 }); 1418 } 1419 }; 1420 proto.dispatchEvent = function(type, event, args) { 1421 let emitArgs = event ? [event].concat(args) : args; 1422 this.emitEvent(type, emitArgs); 1423 if (jQuery2 && this.$element) { 1424 type += this.options.namespaceJQueryEvents ? ".flickity" : ""; 1425 let $event = type; 1426 if (event) { 1427 let jQEvent = new jQuery2.Event(event); 1428 jQEvent.type = type; 1429 $event = jQEvent; 1430 } 1431 this.$element.trigger($event, args); 1432 } 1433 }; 1434 const unidraggerEvents = [ 1435 "dragStart", 1436 "dragMove", 1437 "dragEnd", 1438 "pointerDown", 1439 "pointerMove", 1440 "pointerEnd", 1441 "staticClick" 1442 ]; 1443 let _emitEvent = proto.emitEvent; 1444 proto.emitEvent = function(eventName, args) { 1445 if (eventName === "staticClick") { 1446 let clickedCell = this.getParentCell(args[0].target); 1447 let cellElem = clickedCell && clickedCell.element; 1448 let cellIndex = clickedCell && this.cells.indexOf(clickedCell); 1449 args = args.concat(cellElem, cellIndex); 1450 } 1451 _emitEvent.call(this, eventName, args); 1452 let isUnidraggerEvent = unidraggerEvents.includes(eventName); 1453 if (!isUnidraggerEvent || !jQuery2 || !this.$element) return; 1454 eventName += this.options.namespaceJQueryEvents ? ".flickity" : ""; 1455 let event = args.shift(0); 1456 let jQEvent = new jQuery2.Event(event); 1457 jQEvent.type = eventName; 1458 this.$element.trigger(jQEvent, args); 1459 }; 1460 proto.select = function(index, isWrap, isInstant) { 1461 if (!this.isActive) return; 1462 index = parseInt(index, 10); 1463 this._wrapSelect(index); 1464 if (this.isWrapping || isWrap) { 1465 index = utils2.modulo(index, this.slides.length); 1466 } 1467 if (!this.slides[index]) return; 1468 let prevIndex = this.selectedIndex; 1469 this.selectedIndex = index; 1470 this.updateSelectedSlide(); 1471 if (isInstant) { 1472 this.positionSliderAtSelected(); 1473 } else { 1474 this.startAnimation(); 1475 } 1476 if (this.options.adaptiveHeight) { 1477 this.setGallerySize(); 1478 } 1479 this.dispatchEvent("select", null, [index]); 1480 if (index !== prevIndex) { 1481 this.dispatchEvent("change", null, [index]); 1482 } 1483 }; 1484 proto._wrapSelect = function(index) { 1485 if (!this.isWrapping) return; 1486 const { selectedIndex, slideableWidth, slides: { length } } = this; 1487 if (!this.isDragSelect) { 1488 let wrapIndex = utils2.modulo(index, length); 1489 let delta = Math.abs(wrapIndex - selectedIndex); 1490 let backWrapDelta = Math.abs(wrapIndex + length - selectedIndex); 1491 let forewardWrapDelta = Math.abs(wrapIndex - length - selectedIndex); 1492 if (backWrapDelta < delta) { 1493 index += length; 1494 } else if (forewardWrapDelta < delta) { 1495 index -= length; 1496 } 1497 } 1498 if (index < 0) { 1499 this.x -= slideableWidth; 1500 } else if (index >= length) { 1501 this.x += slideableWidth; 1502 } 1503 }; 1504 proto.previous = function(isWrap, isInstant) { 1505 this.select(this.selectedIndex - 1, isWrap, isInstant); 1506 }; 1507 proto.next = function(isWrap, isInstant) { 1508 this.select(this.selectedIndex + 1, isWrap, isInstant); 1509 }; 1510 proto.updateSelectedSlide = function() { 1511 let slide2 = this.slides[this.selectedIndex]; 1512 if (!slide2) return; 1513 this.unselectSelectedSlide(); 1514 this.selectedSlide = slide2; 1515 slide2.select(); 1516 this.selectedCells = slide2.cells; 1517 this.selectedElements = slide2.getCellElements(); 1518 this.selectedCell = slide2.cells[0]; 1519 this.selectedElement = this.selectedElements[0]; 1520 }; 1521 proto.unselectSelectedSlide = function() { 1522 if (this.selectedSlide) this.selectedSlide.unselect(); 1523 }; 1524 proto.selectInitialIndex = function() { 1525 let initialIndex = this.options.initialIndex; 1526 if (this.isInitActivated) { 1527 this.select(this.selectedIndex, false, true); 1528 return; 1529 } 1530 if (initialIndex && typeof initialIndex == "string") { 1531 let cell2 = this.queryCell(initialIndex); 1532 if (cell2) { 1533 this.selectCell(initialIndex, false, true); 1534 return; 1535 } 1536 } 1537 let index = 0; 1538 if (initialIndex && this.slides[initialIndex]) { 1539 index = initialIndex; 1540 } 1541 this.select(index, false, true); 1542 }; 1543 proto.selectCell = function(value, isWrap, isInstant) { 1544 let cell2 = this.queryCell(value); 1545 if (!cell2) return; 1546 let index = this.getCellSlideIndex(cell2); 1547 this.select(index, isWrap, isInstant); 1548 }; 1549 proto.getCellSlideIndex = function(cell2) { 1550 let cellSlide = this.slides.find((slide2) => slide2.cells.includes(cell2)); 1551 return this.slides.indexOf(cellSlide); 1552 }; 1553 proto.getCell = function(elem) { 1554 for (let cell2 of this.cells) { 1555 if (cell2.element === elem) return cell2; 1556 } 1557 }; 1558 proto.getCells = function(elems) { 1559 elems = utils2.makeArray(elems); 1560 return elems.map((elem) => this.getCell(elem)).filter(Boolean); 1561 }; 1562 proto.getCellElements = function() { 1563 return this.cells.map((cell2) => cell2.element); 1564 }; 1565 proto.getParentCell = function(elem) { 1566 let cell2 = this.getCell(elem); 1567 if (cell2) return cell2; 1568 let closest = elem.closest(".flickity-slider > *"); 1569 return this.getCell(closest); 1570 }; 1571 proto.getAdjacentCellElements = function(adjCount, index) { 1572 if (!adjCount) return this.selectedSlide.getCellElements(); 1573 index = index === void 0 ? this.selectedIndex : index; 1574 let len = this.slides.length; 1575 if (1 + adjCount * 2 >= len) { 1576 return this.getCellElements(); 1577 } 1578 let cellElems = []; 1579 for (let i2 = index - adjCount; i2 <= index + adjCount; i2++) { 1580 let slideIndex = this.isWrapping ? utils2.modulo(i2, len) : i2; 1581 let slide2 = this.slides[slideIndex]; 1582 if (slide2) { 1583 cellElems = cellElems.concat(slide2.getCellElements()); 1584 } 1585 } 1586 return cellElems; 1587 }; 1588 proto.queryCell = function(selector2) { 1589 if (typeof selector2 == "number") { 1590 return this.cells[selector2]; 1591 } 1592 let isSelectorString = typeof selector2 == "string" && !selector2.match(/^[#.]?[\d/]/); 1593 if (isSelectorString) { 1594 selector2 = this.element.querySelector(selector2); 1595 } 1596 return this.getCell(selector2); 1597 }; 1598 proto.uiChange = function() { 1599 this.emitEvent("uiChange"); 1600 }; 1601 proto.onresize = function() { 1602 this.watchCSS(); 1603 this.resize(); 1604 }; 1605 utils2.debounceMethod(Flickity2, "onresize", 150); 1606 proto.resize = function() { 1607 if (!this.isActive || this.isAnimating || this.isDragging) return; 1608 this.getSize(); 1609 if (this.isWrapping) { 1610 this.x = utils2.modulo(this.x, this.slideableWidth); 1611 } 1612 this.positionCells(); 1613 this._updateWrapShiftCells(); 1614 this.setGallerySize(); 1615 this.emitEvent("resize"); 1616 let selectedElement = this.selectedElements && this.selectedElements[0]; 1617 this.selectCell(selectedElement, false, true); 1618 }; 1619 proto.watchCSS = function() { 1620 if (!this.options.watchCSS) return; 1621 let afterContent = getComputedStyle2(this.element, ":after").content; 1622 if (afterContent.includes("flickity")) { 1623 this.activate(); 1624 } else { 1625 this.deactivate(); 1626 } 1627 }; 1628 proto.onkeydown = function(event) { 1629 let { activeElement } = document; 1630 let handler = Flickity2.keyboardHandlers[event.key]; 1631 if (!this.options.accessibility || !activeElement || !handler) return; 1632 let isFocused = this.focusableElems.some((elem) => activeElement === elem); 1633 if (isFocused) handler.call(this); 1634 }; 1635 Flickity2.keyboardHandlers = { 1636 ArrowLeft: function() { 1637 this.uiChange(); 1638 let leftMethod = this.options.rightToLeft ? "next" : "previous"; 1639 this[leftMethod](); 1640 }, 1641 ArrowRight: function() { 1642 this.uiChange(); 1643 let rightMethod = this.options.rightToLeft ? "previous" : "next"; 1644 this[rightMethod](); 1645 } 1646 }; 1647 proto.focus = function() { 1648 this.element.focus({ preventScroll: true }); 1649 }; 1650 proto.deactivate = function() { 1651 if (!this.isActive) return; 1652 this.element.classList.remove("flickity-enabled"); 1653 this.element.classList.remove("flickity-rtl"); 1654 this.unselectSelectedSlide(); 1655 this.cells.forEach((cell2) => cell2.destroy()); 1656 this.viewport.remove(); 1657 this.element.append(...this.slider.children); 1658 if (this.options.accessibility) { 1659 this.element.removeAttribute("tabIndex"); 1660 this.element.removeEventListener("keydown", this); 1661 } 1662 this.isActive = false; 1663 this.emitEvent("deactivate"); 1664 }; 1665 proto.destroy = function() { 1666 this.deactivate(); 1667 window2.removeEventListener("resize", this); 1668 this.allOff(); 1669 this.emitEvent("destroy"); 1670 if (jQuery2 && this.$element) { 1671 jQuery2.removeData(this.element, "flickity"); 1672 } 1673 delete this.element.flickityGUID; 1674 delete instances[this.guid]; 1675 }; 1676 Object.assign(proto, animatePrototype); 1677 Flickity2.data = function(elem) { 1678 elem = utils2.getQueryElement(elem); 1679 if (elem) return instances[elem.flickityGUID]; 1680 }; 1681 utils2.htmlInit(Flickity2, "flickity"); 1682 let { jQueryBridget } = window2; 1683 if (jQuery2 && jQueryBridget) { 1684 jQueryBridget("flickity", Flickity2, jQuery2); 1685 } 1686 Flickity2.setJQuery = function(jq) { 1687 jQuery2 = jq; 1688 }; 1689 Flickity2.Cell = Cell; 1690 Flickity2.Slide = Slide; 1691 return Flickity2; 1692 } 1693 ); 1694 })(core$1); 1695 return core$1.exports; 1696 } 1697 var drag$1 = { exports: {} }; 1698 var unidragger$1 = { exports: {} }; 1699 /*! 1700 * Unidragger v3.0.1 1701 * Draggable base class 1702 * MIT license 1703 */ 1704 var unidragger = unidragger$1.exports; 1705 var hasRequiredUnidragger; 1706 function requireUnidragger() { 1707 if (hasRequiredUnidragger) return unidragger$1.exports; 1708 hasRequiredUnidragger = 1; 1709 (function(module) { 1710 (function(window2, factory) { 1711 if (module.exports) { 1712 module.exports = factory( 1713 window2, 1714 requireEvEmitter() 1715 ); 1716 } else { 1717 window2.Unidragger = factory( 1718 window2, 1719 window2.EvEmitter 1720 ); 1721 } 1722 })(typeof window != "undefined" ? window : unidragger, function factory(window2, EvEmitter) { 1723 function Unidragger() { 1724 } 1725 let proto = Unidragger.prototype = Object.create(EvEmitter.prototype); 1726 proto.handleEvent = function(event) { 1727 let method = "on" + event.type; 1728 if (this[method]) { 1729 this[method](event); 1730 } 1731 }; 1732 let startEvent, activeEvents; 1733 if ("ontouchstart" in window2) { 1734 startEvent = "touchstart"; 1735 activeEvents = ["touchmove", "touchend", "touchcancel"]; 1736 } else if (window2.PointerEvent) { 1737 startEvent = "pointerdown"; 1738 activeEvents = ["pointermove", "pointerup", "pointercancel"]; 1739 } else { 1740 startEvent = "mousedown"; 1741 activeEvents = ["mousemove", "mouseup"]; 1742 } 1743 proto.touchActionValue = "none"; 1744 proto.bindHandles = function() { 1745 this._bindHandles("addEventListener", this.touchActionValue); 1746 }; 1747 proto.unbindHandles = function() { 1748 this._bindHandles("removeEventListener", ""); 1749 }; 1750 proto._bindHandles = function(bindMethod, touchAction) { 1751 this.handles.forEach((handle) => { 1752 handle[bindMethod](startEvent, this); 1753 handle[bindMethod]("click", this); 1754 if (window2.PointerEvent) handle.style.touchAction = touchAction; 1755 }); 1756 }; 1757 proto.bindActivePointerEvents = function() { 1758 activeEvents.forEach((eventName) => { 1759 window2.addEventListener(eventName, this); 1760 }); 1761 }; 1762 proto.unbindActivePointerEvents = function() { 1763 activeEvents.forEach((eventName) => { 1764 window2.removeEventListener(eventName, this); 1765 }); 1766 }; 1767 proto.withPointer = function(methodName, event) { 1768 if (event.pointerId === this.pointerIdentifier) { 1769 this[methodName](event, event); 1770 } 1771 }; 1772 proto.withTouch = function(methodName, event) { 1773 let touch; 1774 for (let changedTouch of event.changedTouches) { 1775 if (changedTouch.identifier === this.pointerIdentifier) { 1776 touch = changedTouch; 1777 } 1778 } 1779 if (touch) this[methodName](event, touch); 1780 }; 1781 proto.onmousedown = function(event) { 1782 this.pointerDown(event, event); 1783 }; 1784 proto.ontouchstart = function(event) { 1785 this.pointerDown(event, event.changedTouches[0]); 1786 }; 1787 proto.onpointerdown = function(event) { 1788 this.pointerDown(event, event); 1789 }; 1790 const cursorNodes = ["TEXTAREA", "INPUT", "SELECT", "OPTION"]; 1791 const clickTypes = ["radio", "checkbox", "button", "submit", "image", "file"]; 1792 proto.pointerDown = function(event, pointer) { 1793 let isCursorNode = cursorNodes.includes(event.target.nodeName); 1794 let isClickType = clickTypes.includes(event.target.type); 1795 let isOkayElement = !isCursorNode || isClickType; 1796 let isOkay = !this.isPointerDown && !event.button && isOkayElement; 1797 if (!isOkay) return; 1798 this.isPointerDown = true; 1799 this.pointerIdentifier = pointer.pointerId !== void 0 ? ( 1800 // pointerId for pointer events, touch.indentifier for touch events 1801 pointer.pointerId 1802 ) : pointer.identifier; 1803 this.pointerDownPointer = { 1804 pageX: pointer.pageX, 1805 pageY: pointer.pageY 1806 }; 1807 this.bindActivePointerEvents(); 1808 this.emitEvent("pointerDown", [event, pointer]); 1809 }; 1810 proto.onmousemove = function(event) { 1811 this.pointerMove(event, event); 1812 }; 1813 proto.onpointermove = function(event) { 1814 this.withPointer("pointerMove", event); 1815 }; 1816 proto.ontouchmove = function(event) { 1817 this.withTouch("pointerMove", event); 1818 }; 1819 proto.pointerMove = function(event, pointer) { 1820 let moveVector = { 1821 x: pointer.pageX - this.pointerDownPointer.pageX, 1822 y: pointer.pageY - this.pointerDownPointer.pageY 1823 }; 1824 this.emitEvent("pointerMove", [event, pointer, moveVector]); 1825 let isDragStarting = !this.isDragging && this.hasDragStarted(moveVector); 1826 if (isDragStarting) this.dragStart(event, pointer); 1827 if (this.isDragging) this.dragMove(event, pointer, moveVector); 1828 }; 1829 proto.hasDragStarted = function(moveVector) { 1830 return Math.abs(moveVector.x) > 3 || Math.abs(moveVector.y) > 3; 1831 }; 1832 proto.dragStart = function(event, pointer) { 1833 this.isDragging = true; 1834 this.isPreventingClicks = true; 1835 this.emitEvent("dragStart", [event, pointer]); 1836 }; 1837 proto.dragMove = function(event, pointer, moveVector) { 1838 this.emitEvent("dragMove", [event, pointer, moveVector]); 1839 }; 1840 proto.onmouseup = function(event) { 1841 this.pointerUp(event, event); 1842 }; 1843 proto.onpointerup = function(event) { 1844 this.withPointer("pointerUp", event); 1845 }; 1846 proto.ontouchend = function(event) { 1847 this.withTouch("pointerUp", event); 1848 }; 1849 proto.pointerUp = function(event, pointer) { 1850 this.pointerDone(); 1851 this.emitEvent("pointerUp", [event, pointer]); 1852 if (this.isDragging) { 1853 this.dragEnd(event, pointer); 1854 } else { 1855 this.staticClick(event, pointer); 1856 } 1857 }; 1858 proto.dragEnd = function(event, pointer) { 1859 this.isDragging = false; 1860 setTimeout(() => delete this.isPreventingClicks); 1861 this.emitEvent("dragEnd", [event, pointer]); 1862 }; 1863 proto.pointerDone = function() { 1864 this.isPointerDown = false; 1865 delete this.pointerIdentifier; 1866 this.unbindActivePointerEvents(); 1867 this.emitEvent("pointerDone"); 1868 }; 1869 proto.onpointercancel = function(event) { 1870 this.withPointer("pointerCancel", event); 1871 }; 1872 proto.ontouchcancel = function(event) { 1873 this.withTouch("pointerCancel", event); 1874 }; 1875 proto.pointerCancel = function(event, pointer) { 1876 this.pointerDone(); 1877 this.emitEvent("pointerCancel", [event, pointer]); 1878 }; 1879 proto.onclick = function(event) { 1880 if (this.isPreventingClicks) event.preventDefault(); 1881 }; 1882 proto.staticClick = function(event, pointer) { 1883 let isMouseup = event.type === "mouseup"; 1884 if (isMouseup && this.isIgnoringMouseUp) return; 1885 this.emitEvent("staticClick", [event, pointer]); 1886 if (isMouseup) { 1887 this.isIgnoringMouseUp = true; 1888 setTimeout(() => { 1889 delete this.isIgnoringMouseUp; 1890 }, 400); 1891 } 1892 }; 1893 return Unidragger; 1894 }); 1895 })(unidragger$1); 1896 return unidragger$1.exports; 1897 } 1898 var drag = drag$1.exports; 1899 var hasRequiredDrag; 1900 function requireDrag() { 1901 if (hasRequiredDrag) return drag$1.exports; 1902 hasRequiredDrag = 1; 1903 (function(module) { 1904 (function(window2, factory) { 1905 if (module.exports) { 1906 module.exports = factory( 1907 window2, 1908 requireCore(), 1909 requireUnidragger(), 1910 requireUtils() 1911 ); 1912 } else { 1913 window2.Flickity = factory( 1914 window2, 1915 window2.Flickity, 1916 window2.Unidragger, 1917 window2.fizzyUIUtils 1918 ); 1919 } 1920 })( 1921 typeof window != "undefined" ? window : drag, 1922 function factory(window2, Flickity2, Unidragger, utils2) { 1923 Object.assign(Flickity2.defaults, { 1924 draggable: ">1", 1925 dragThreshold: 3 1926 }); 1927 let proto = Flickity2.prototype; 1928 Object.assign(proto, Unidragger.prototype); 1929 proto.touchActionValue = ""; 1930 Flickity2.create.drag = function() { 1931 this.on("activate", this.onActivateDrag); 1932 this.on("uiChange", this._uiChangeDrag); 1933 this.on("deactivate", this.onDeactivateDrag); 1934 this.on("cellChange", this.updateDraggable); 1935 this.on("pointerDown", this.handlePointerDown); 1936 this.on("pointerUp", this.handlePointerUp); 1937 this.on("pointerDown", this.handlePointerDone); 1938 this.on("dragStart", this.handleDragStart); 1939 this.on("dragMove", this.handleDragMove); 1940 this.on("dragEnd", this.handleDragEnd); 1941 this.on("staticClick", this.handleStaticClick); 1942 }; 1943 proto.onActivateDrag = function() { 1944 this.handles = [this.viewport]; 1945 this.bindHandles(); 1946 this.updateDraggable(); 1947 }; 1948 proto.onDeactivateDrag = function() { 1949 this.unbindHandles(); 1950 this.element.classList.remove("is-draggable"); 1951 }; 1952 proto.updateDraggable = function() { 1953 if (this.options.draggable === ">1") { 1954 this.isDraggable = this.slides.length > 1; 1955 } else { 1956 this.isDraggable = this.options.draggable; 1957 } 1958 this.element.classList.toggle("is-draggable", this.isDraggable); 1959 }; 1960 proto._uiChangeDrag = function() { 1961 delete this.isFreeScrolling; 1962 }; 1963 proto.handlePointerDown = function(event) { 1964 if (!this.isDraggable) { 1965 this.bindActivePointerEvents(event); 1966 return; 1967 } 1968 let isTouchStart = event.type === "touchstart"; 1969 let isTouchPointer = event.pointerType === "touch"; 1970 let isFocusNode = event.target.matches("input, textarea, select"); 1971 if (!isTouchStart && !isTouchPointer && !isFocusNode) event.preventDefault(); 1972 if (!isFocusNode) this.focus(); 1973 if (document.activeElement !== this.element) document.activeElement.blur(); 1974 this.dragX = this.x; 1975 this.viewport.classList.add("is-pointer-down"); 1976 this.pointerDownScroll = getScrollPosition(); 1977 window2.addEventListener("scroll", this); 1978 this.bindActivePointerEvents(event); 1979 }; 1980 proto.hasDragStarted = function(moveVector) { 1981 return Math.abs(moveVector.x) > this.options.dragThreshold; 1982 }; 1983 proto.handlePointerUp = function() { 1984 delete this.isTouchScrolling; 1985 this.viewport.classList.remove("is-pointer-down"); 1986 }; 1987 proto.handlePointerDone = function() { 1988 window2.removeEventListener("scroll", this); 1989 delete this.pointerDownScroll; 1990 }; 1991 proto.handleDragStart = function() { 1992 if (!this.isDraggable) return; 1993 this.dragStartPosition = this.x; 1994 this.startAnimation(); 1995 window2.removeEventListener("scroll", this); 1996 }; 1997 proto.handleDragMove = function(event, pointer, moveVector) { 1998 if (!this.isDraggable) return; 1999 event.preventDefault(); 2000 this.previousDragX = this.dragX; 2001 let direction = this.options.rightToLeft ? -1 : 1; 2002 if (this.isWrapping) moveVector.x %= this.slideableWidth; 2003 let dragX = this.dragStartPosition + moveVector.x * direction; 2004 if (!this.isWrapping) { 2005 let originBound = Math.max(-this.slides[0].target, this.dragStartPosition); 2006 dragX = dragX > originBound ? (dragX + originBound) * 0.5 : dragX; 2007 let endBound = Math.min(-this.getLastSlide().target, this.dragStartPosition); 2008 dragX = dragX < endBound ? (dragX + endBound) * 0.5 : dragX; 2009 } 2010 this.dragX = dragX; 2011 this.dragMoveTime = /* @__PURE__ */ new Date(); 2012 }; 2013 proto.handleDragEnd = function() { 2014 if (!this.isDraggable) return; 2015 let { freeScroll } = this.options; 2016 if (freeScroll) this.isFreeScrolling = true; 2017 let index = this.dragEndRestingSelect(); 2018 if (freeScroll && !this.isWrapping) { 2019 let restingX = this.getRestingPosition(); 2020 this.isFreeScrolling = -restingX > this.slides[0].target && -restingX < this.getLastSlide().target; 2021 } else if (!freeScroll && index === this.selectedIndex) { 2022 index += this.dragEndBoostSelect(); 2023 } 2024 delete this.previousDragX; 2025 this.isDragSelect = this.isWrapping; 2026 this.select(index); 2027 delete this.isDragSelect; 2028 }; 2029 proto.dragEndRestingSelect = function() { 2030 let restingX = this.getRestingPosition(); 2031 let distance = Math.abs(this.getSlideDistance(-restingX, this.selectedIndex)); 2032 let positiveResting = this._getClosestResting(restingX, distance, 1); 2033 let negativeResting = this._getClosestResting(restingX, distance, -1); 2034 return positiveResting.distance < negativeResting.distance ? positiveResting.index : negativeResting.index; 2035 }; 2036 proto._getClosestResting = function(restingX, distance, increment) { 2037 let index = this.selectedIndex; 2038 let minDistance = Infinity; 2039 let condition = this.options.contain && !this.isWrapping ? ( 2040 // if containing, keep going if distance is equal to minDistance 2041 (dist, minDist) => dist <= minDist 2042 ) : (dist, minDist) => dist < minDist; 2043 while (condition(distance, minDistance)) { 2044 index += increment; 2045 minDistance = distance; 2046 distance = this.getSlideDistance(-restingX, index); 2047 if (distance === null) break; 2048 distance = Math.abs(distance); 2049 } 2050 return { 2051 distance: minDistance, 2052 // selected was previous index 2053 index: index - increment 2054 }; 2055 }; 2056 proto.getSlideDistance = function(x, index) { 2057 let len = this.slides.length; 2058 let isWrapAround = this.options.wrapAround && len > 1; 2059 let slideIndex = isWrapAround ? utils2.modulo(index, len) : index; 2060 let slide2 = this.slides[slideIndex]; 2061 if (!slide2) return null; 2062 let wrap2 = isWrapAround ? this.slideableWidth * Math.floor(index / len) : 0; 2063 return x - (slide2.target + wrap2); 2064 }; 2065 proto.dragEndBoostSelect = function() { 2066 if (this.previousDragX === void 0 || !this.dragMoveTime || // or if drag was held for 100 ms 2067 /* @__PURE__ */ new Date() - this.dragMoveTime > 100) { 2068 return 0; 2069 } 2070 let distance = this.getSlideDistance(-this.dragX, this.selectedIndex); 2071 let delta = this.previousDragX - this.dragX; 2072 if (distance > 0 && delta > 0) { 2073 return 1; 2074 } else if (distance < 0 && delta < 0) { 2075 return -1; 2076 } 2077 return 0; 2078 }; 2079 proto.onscroll = function() { 2080 let scroll = getScrollPosition(); 2081 let scrollMoveX = this.pointerDownScroll.x - scroll.x; 2082 let scrollMoveY = this.pointerDownScroll.y - scroll.y; 2083 if (Math.abs(scrollMoveX) > 3 || Math.abs(scrollMoveY) > 3) { 2084 this.pointerDone(); 2085 } 2086 }; 2087 function getScrollPosition() { 2088 return { 2089 x: window2.pageXOffset, 2090 y: window2.pageYOffset 2091 }; 2092 } 2093 return Flickity2; 2094 } 2095 ); 2096 })(drag$1); 2097 return drag$1.exports; 2098 } 2099 var prevNextButton$1 = { exports: {} }; 2100 var prevNextButton = prevNextButton$1.exports; 2101 var hasRequiredPrevNextButton; 2102 function requirePrevNextButton() { 2103 if (hasRequiredPrevNextButton) return prevNextButton$1.exports; 2104 hasRequiredPrevNextButton = 1; 2105 (function(module) { 2106 (function(window2, factory) { 2107 if (module.exports) { 2108 module.exports = factory(requireCore()); 2109 } else { 2110 factory(window2.Flickity); 2111 } 2112 })(typeof window != "undefined" ? window : prevNextButton, function factory(Flickity2) { 2113 const svgURI = "http://www.w3.org/2000/svg"; 2114 function PrevNextButton(increment, direction, arrowShape) { 2115 this.increment = increment; 2116 this.direction = direction; 2117 this.isPrevious = increment === "previous"; 2118 this.isLeft = direction === "left"; 2119 this._create(arrowShape); 2120 } 2121 PrevNextButton.prototype._create = function(arrowShape) { 2122 let element = this.element = document.createElement("button"); 2123 element.className = `flickity-button flickity-prev-next-button ${this.increment}`; 2124 let label = this.isPrevious ? "Previous" : "Next"; 2125 element.setAttribute("type", "button"); 2126 element.setAttribute("aria-label", label); 2127 this.disable(); 2128 let svg = this.createSVG(label, arrowShape); 2129 element.append(svg); 2130 }; 2131 PrevNextButton.prototype.createSVG = function(label, arrowShape) { 2132 let svg = document.createElementNS(svgURI, "svg"); 2133 svg.setAttribute("class", "flickity-button-icon"); 2134 svg.setAttribute("viewBox", "0 0 100 100"); 2135 let title = document.createElementNS(svgURI, "title"); 2136 title.append(label); 2137 let path = document.createElementNS(svgURI, "path"); 2138 let pathMovements = getArrowMovements(arrowShape); 2139 path.setAttribute("d", pathMovements); 2140 path.setAttribute("class", "arrow"); 2141 if (!this.isLeft) { 2142 path.setAttribute("transform", "translate(100, 100) rotate(180)"); 2143 } 2144 svg.append(title, path); 2145 return svg; 2146 }; 2147 function getArrowMovements(shape) { 2148 if (typeof shape == "string") return shape; 2149 let { x0, x1, x2, x3, y1, y2 } = shape; 2150 return `M ${x0}, 50 2151 L ${x1}, ${y1 + 50} 2152 L ${x2}, ${y2 + 50} 2153 L ${x3}, 50 2154 L ${x2}, ${50 - y2} 2155 L ${x1}, ${50 - y1} 2156 Z`; 2157 } 2158 PrevNextButton.prototype.enable = function() { 2159 this.element.removeAttribute("disabled"); 2160 }; 2161 PrevNextButton.prototype.disable = function() { 2162 this.element.setAttribute("disabled", true); 2163 }; 2164 Object.assign(Flickity2.defaults, { 2165 prevNextButtons: true, 2166 arrowShape: { 2167 x0: 10, 2168 x1: 60, 2169 y1: 50, 2170 x2: 70, 2171 y2: 40, 2172 x3: 30 2173 } 2174 }); 2175 Flickity2.create.prevNextButtons = function() { 2176 if (!this.options.prevNextButtons) return; 2177 let { rightToLeft, arrowShape } = this.options; 2178 let prevDirection = rightToLeft ? "right" : "left"; 2179 let nextDirection = rightToLeft ? "left" : "right"; 2180 this.prevButton = new PrevNextButton("previous", prevDirection, arrowShape); 2181 this.nextButton = new PrevNextButton("next", nextDirection, arrowShape); 2182 this.focusableElems.push(this.prevButton.element); 2183 this.focusableElems.push(this.nextButton.element); 2184 this.handlePrevButtonClick = () => { 2185 this.uiChange(); 2186 this.previous(); 2187 }; 2188 this.handleNextButtonClick = () => { 2189 this.uiChange(); 2190 this.next(); 2191 }; 2192 this.on("activate", this.activatePrevNextButtons); 2193 this.on("select", this.updatePrevNextButtons); 2194 }; 2195 let proto = Flickity2.prototype; 2196 proto.updatePrevNextButtons = function() { 2197 let lastIndex = this.slides.length ? this.slides.length - 1 : 0; 2198 this.updatePrevNextButton(this.prevButton, 0); 2199 this.updatePrevNextButton(this.nextButton, lastIndex); 2200 }; 2201 proto.updatePrevNextButton = function(button, disabledIndex) { 2202 if (this.isWrapping && this.slides.length > 1) { 2203 button.enable(); 2204 return; 2205 } 2206 let isEnabled = this.selectedIndex !== disabledIndex; 2207 button[isEnabled ? "enable" : "disable"](); 2208 let isDisabledFocused = !isEnabled && document.activeElement === button.element; 2209 if (isDisabledFocused) this.focus(); 2210 }; 2211 proto.activatePrevNextButtons = function() { 2212 this.prevButton.element.addEventListener("click", this.handlePrevButtonClick); 2213 this.nextButton.element.addEventListener("click", this.handleNextButtonClick); 2214 this.element.append(this.prevButton.element, this.nextButton.element); 2215 this.on("deactivate", this.deactivatePrevNextButtons); 2216 }; 2217 proto.deactivatePrevNextButtons = function() { 2218 this.prevButton.element.remove(); 2219 this.nextButton.element.remove(); 2220 this.prevButton.element.removeEventListener("click", this.handlePrevButtonClick); 2221 this.nextButton.element.removeEventListener("click", this.handleNextButtonClick); 2222 this.off("deactivate", this.deactivatePrevNextButtons); 2223 }; 2224 Flickity2.PrevNextButton = PrevNextButton; 2225 return Flickity2; 2226 }); 2227 })(prevNextButton$1); 2228 return prevNextButton$1.exports; 2229 } 2230 var pageDots$1 = { exports: {} }; 2231 var pageDots = pageDots$1.exports; 2232 var hasRequiredPageDots; 2233 function requirePageDots() { 2234 if (hasRequiredPageDots) return pageDots$1.exports; 2235 hasRequiredPageDots = 1; 2236 (function(module) { 2237 (function(window2, factory) { 2238 if (module.exports) { 2239 module.exports = factory( 2240 requireCore(), 2241 requireUtils() 2242 ); 2243 } else { 2244 factory( 2245 window2.Flickity, 2246 window2.fizzyUIUtils 2247 ); 2248 } 2249 })(typeof window != "undefined" ? window : pageDots, function factory(Flickity2, utils2) { 2250 function PageDots() { 2251 this.holder = document.createElement("div"); 2252 this.holder.className = "flickity-page-dots"; 2253 this.dots = []; 2254 } 2255 PageDots.prototype.setDots = function(slidesLength) { 2256 let delta = slidesLength - this.dots.length; 2257 if (delta > 0) { 2258 this.addDots(delta); 2259 } else if (delta < 0) { 2260 this.removeDots(-delta); 2261 } 2262 }; 2263 PageDots.prototype.addDots = function(count) { 2264 let newDots = new Array(count).fill().map((item, i2) => { 2265 let dot = document.createElement("button"); 2266 dot.setAttribute("type", "button"); 2267 let num = i2 + 1 + this.dots.length; 2268 dot.className = "flickity-page-dot"; 2269 dot.textContent = `View slide ${num}`; 2270 return dot; 2271 }); 2272 this.holder.append(...newDots); 2273 this.dots = this.dots.concat(newDots); 2274 }; 2275 PageDots.prototype.removeDots = function(count) { 2276 let removeDots = this.dots.splice(this.dots.length - count, count); 2277 removeDots.forEach((dot) => dot.remove()); 2278 }; 2279 PageDots.prototype.updateSelected = function(index) { 2280 if (this.selectedDot) { 2281 this.selectedDot.classList.remove("is-selected"); 2282 this.selectedDot.removeAttribute("aria-current"); 2283 } 2284 if (!this.dots.length) return; 2285 this.selectedDot = this.dots[index]; 2286 this.selectedDot.classList.add("is-selected"); 2287 this.selectedDot.setAttribute("aria-current", "step"); 2288 }; 2289 Flickity2.PageDots = PageDots; 2290 Object.assign(Flickity2.defaults, { 2291 pageDots: true 2292 }); 2293 Flickity2.create.pageDots = function() { 2294 if (!this.options.pageDots) return; 2295 this.pageDots = new PageDots(); 2296 this.handlePageDotsClick = this.onPageDotsClick.bind(this); 2297 this.on("activate", this.activatePageDots); 2298 this.on("select", this.updateSelectedPageDots); 2299 this.on("cellChange", this.updatePageDots); 2300 this.on("resize", this.updatePageDots); 2301 this.on("deactivate", this.deactivatePageDots); 2302 }; 2303 let proto = Flickity2.prototype; 2304 proto.activatePageDots = function() { 2305 this.pageDots.setDots(this.slides.length); 2306 this.focusableElems.push(...this.pageDots.dots); 2307 this.pageDots.holder.addEventListener("click", this.handlePageDotsClick); 2308 this.element.append(this.pageDots.holder); 2309 }; 2310 proto.onPageDotsClick = function(event) { 2311 let index = this.pageDots.dots.indexOf(event.target); 2312 if (index === -1) return; 2313 this.uiChange(); 2314 this.select(index); 2315 }; 2316 proto.updateSelectedPageDots = function() { 2317 this.pageDots.updateSelected(this.selectedIndex); 2318 }; 2319 proto.updatePageDots = function() { 2320 this.pageDots.dots.forEach((dot) => { 2321 utils2.removeFrom(this.focusableElems, dot); 2322 }); 2323 this.pageDots.setDots(this.slides.length); 2324 this.focusableElems.push(...this.pageDots.dots); 2325 }; 2326 proto.deactivatePageDots = function() { 2327 this.pageDots.holder.remove(); 2328 this.pageDots.holder.removeEventListener("click", this.handlePageDotsClick); 2329 }; 2330 Flickity2.PageDots = PageDots; 2331 return Flickity2; 2332 }); 2333 })(pageDots$1); 2334 return pageDots$1.exports; 2335 } 2336 var player$1 = { exports: {} }; 2337 var player = player$1.exports; 2338 var hasRequiredPlayer; 2339 function requirePlayer() { 2340 if (hasRequiredPlayer) return player$1.exports; 2341 hasRequiredPlayer = 1; 2342 (function(module) { 2343 (function(window2, factory) { 2344 if (module.exports) { 2345 module.exports = factory(requireCore()); 2346 } else { 2347 factory(window2.Flickity); 2348 } 2349 })(typeof window != "undefined" ? window : player, function factory(Flickity2) { 2350 function Player(autoPlay, onTick) { 2351 this.autoPlay = autoPlay; 2352 this.onTick = onTick; 2353 this.state = "stopped"; 2354 this.onVisibilityChange = this.visibilityChange.bind(this); 2355 this.onVisibilityPlay = this.visibilityPlay.bind(this); 2356 } 2357 Player.prototype.play = function() { 2358 if (this.state === "playing") return; 2359 let isPageHidden = document.hidden; 2360 if (isPageHidden) { 2361 document.addEventListener("visibilitychange", this.onVisibilityPlay); 2362 return; 2363 } 2364 this.state = "playing"; 2365 document.addEventListener("visibilitychange", this.onVisibilityChange); 2366 this.tick(); 2367 }; 2368 Player.prototype.tick = function() { 2369 if (this.state !== "playing") return; 2370 let time = typeof this.autoPlay == "number" ? this.autoPlay : 3e3; 2371 this.clear(); 2372 this.timeout = setTimeout(() => { 2373 this.onTick(); 2374 this.tick(); 2375 }, time); 2376 }; 2377 Player.prototype.stop = function() { 2378 this.state = "stopped"; 2379 this.clear(); 2380 document.removeEventListener("visibilitychange", this.onVisibilityChange); 2381 }; 2382 Player.prototype.clear = function() { 2383 clearTimeout(this.timeout); 2384 }; 2385 Player.prototype.pause = function() { 2386 if (this.state === "playing") { 2387 this.state = "paused"; 2388 this.clear(); 2389 } 2390 }; 2391 Player.prototype.unpause = function() { 2392 if (this.state === "paused") this.play(); 2393 }; 2394 Player.prototype.visibilityChange = function() { 2395 let isPageHidden = document.hidden; 2396 this[isPageHidden ? "pause" : "unpause"](); 2397 }; 2398 Player.prototype.visibilityPlay = function() { 2399 this.play(); 2400 document.removeEventListener("visibilitychange", this.onVisibilityPlay); 2401 }; 2402 Object.assign(Flickity2.defaults, { 2403 pauseAutoPlayOnHover: true 2404 }); 2405 Flickity2.create.player = function() { 2406 this.player = new Player(this.options.autoPlay, () => { 2407 this.next(true); 2408 }); 2409 this.on("activate", this.activatePlayer); 2410 this.on("uiChange", this.stopPlayer); 2411 this.on("pointerDown", this.stopPlayer); 2412 this.on("deactivate", this.deactivatePlayer); 2413 }; 2414 let proto = Flickity2.prototype; 2415 proto.activatePlayer = function() { 2416 if (!this.options.autoPlay) return; 2417 this.player.play(); 2418 this.element.addEventListener("mouseenter", this); 2419 }; 2420 proto.playPlayer = function() { 2421 this.player.play(); 2422 }; 2423 proto.stopPlayer = function() { 2424 this.player.stop(); 2425 }; 2426 proto.pausePlayer = function() { 2427 this.player.pause(); 2428 }; 2429 proto.unpausePlayer = function() { 2430 this.player.unpause(); 2431 }; 2432 proto.deactivatePlayer = function() { 2433 this.player.stop(); 2434 this.element.removeEventListener("mouseenter", this); 2435 }; 2436 proto.onmouseenter = function() { 2437 if (!this.options.pauseAutoPlayOnHover) return; 2438 this.player.pause(); 2439 this.element.addEventListener("mouseleave", this); 2440 }; 2441 proto.onmouseleave = function() { 2442 this.player.unpause(); 2443 this.element.removeEventListener("mouseleave", this); 2444 }; 2445 Flickity2.Player = Player; 2446 return Flickity2; 2447 }); 2448 })(player$1); 2449 return player$1.exports; 2450 } 2451 var addRemoveCell$1 = { exports: {} }; 2452 var addRemoveCell = addRemoveCell$1.exports; 2453 var hasRequiredAddRemoveCell; 2454 function requireAddRemoveCell() { 2455 if (hasRequiredAddRemoveCell) return addRemoveCell$1.exports; 2456 hasRequiredAddRemoveCell = 1; 2457 (function(module) { 2458 (function(window2, factory) { 2459 if (module.exports) { 2460 module.exports = factory( 2461 requireCore(), 2462 requireUtils() 2463 ); 2464 } else { 2465 factory( 2466 window2.Flickity, 2467 window2.fizzyUIUtils 2468 ); 2469 } 2470 })(typeof window != "undefined" ? window : addRemoveCell, function factory(Flickity2, utils2) { 2471 function getCellsFragment(cells) { 2472 let fragment = document.createDocumentFragment(); 2473 cells.forEach((cell2) => fragment.appendChild(cell2.element)); 2474 return fragment; 2475 } 2476 let proto = Flickity2.prototype; 2477 proto.insert = function(elems, index) { 2478 let cells = this._makeCells(elems); 2479 if (!cells || !cells.length) return; 2480 let len = this.cells.length; 2481 index = index === void 0 ? len : index; 2482 let fragment = getCellsFragment(cells); 2483 let isAppend = index === len; 2484 if (isAppend) { 2485 this.slider.appendChild(fragment); 2486 } else { 2487 let insertCellElement = this.cells[index].element; 2488 this.slider.insertBefore(fragment, insertCellElement); 2489 } 2490 if (index === 0) { 2491 this.cells = cells.concat(this.cells); 2492 } else if (isAppend) { 2493 this.cells = this.cells.concat(cells); 2494 } else { 2495 let endCells = this.cells.splice(index, len - index); 2496 this.cells = this.cells.concat(cells).concat(endCells); 2497 } 2498 this._sizeCells(cells); 2499 this.cellChange(index); 2500 this.positionSliderAtSelected(); 2501 }; 2502 proto.append = function(elems) { 2503 this.insert(elems, this.cells.length); 2504 }; 2505 proto.prepend = function(elems) { 2506 this.insert(elems, 0); 2507 }; 2508 proto.remove = function(elems) { 2509 let cells = this.getCells(elems); 2510 if (!cells || !cells.length) return; 2511 let minCellIndex = this.cells.length - 1; 2512 cells.forEach((cell2) => { 2513 cell2.remove(); 2514 let index = this.cells.indexOf(cell2); 2515 minCellIndex = Math.min(index, minCellIndex); 2516 utils2.removeFrom(this.cells, cell2); 2517 }); 2518 this.cellChange(minCellIndex); 2519 this.positionSliderAtSelected(); 2520 }; 2521 proto.cellSizeChange = function(elem) { 2522 let cell2 = this.getCell(elem); 2523 if (!cell2) return; 2524 cell2.getSize(); 2525 let index = this.cells.indexOf(cell2); 2526 this.cellChange(index); 2527 }; 2528 proto.cellChange = function(changedCellIndex) { 2529 let prevSelectedElem = this.selectedElement; 2530 this._positionCells(changedCellIndex); 2531 this._updateWrapShiftCells(); 2532 this.setGallerySize(); 2533 let cell2 = this.getCell(prevSelectedElem); 2534 if (cell2) this.selectedIndex = this.getCellSlideIndex(cell2); 2535 this.selectedIndex = Math.min(this.slides.length - 1, this.selectedIndex); 2536 this.emitEvent("cellChange", [changedCellIndex]); 2537 this.select(this.selectedIndex); 2538 }; 2539 return Flickity2; 2540 }); 2541 })(addRemoveCell$1); 2542 return addRemoveCell$1.exports; 2543 } 2544 var lazyload$1 = { exports: {} }; 2545 var lazyload = lazyload$1.exports; 2546 var hasRequiredLazyload; 2547 function requireLazyload() { 2548 if (hasRequiredLazyload) return lazyload$1.exports; 2549 hasRequiredLazyload = 1; 2550 (function(module) { 2551 (function(window2, factory) { 2552 if (module.exports) { 2553 module.exports = factory( 2554 requireCore(), 2555 requireUtils() 2556 ); 2557 } else { 2558 factory( 2559 window2.Flickity, 2560 window2.fizzyUIUtils 2561 ); 2562 } 2563 })(typeof window != "undefined" ? window : lazyload, function factory(Flickity2, utils2) { 2564 const lazyAttr = "data-flickity-lazyload"; 2565 const lazySrcAttr = `${lazyAttr}-src`; 2566 const lazySrcsetAttr = `${lazyAttr}-srcset`; 2567 const imgSelector = `img[${lazyAttr}], img[${lazySrcAttr}], img[${lazySrcsetAttr}], source[${lazySrcsetAttr}]`; 2568 Flickity2.create.lazyLoad = function() { 2569 this.on("select", this.lazyLoad); 2570 this.handleLazyLoadComplete = this.onLazyLoadComplete.bind(this); 2571 }; 2572 let proto = Flickity2.prototype; 2573 proto.lazyLoad = function() { 2574 let { lazyLoad } = this.options; 2575 if (!lazyLoad) return; 2576 let adjCount = typeof lazyLoad == "number" ? lazyLoad : 0; 2577 this.getAdjacentCellElements(adjCount).map(getCellLazyImages).flat().forEach((img) => new LazyLoader(img, this.handleLazyLoadComplete)); 2578 }; 2579 function getCellLazyImages(cellElem) { 2580 if (cellElem.matches("img")) { 2581 let cellAttr = cellElem.getAttribute(lazyAttr); 2582 let cellSrcAttr = cellElem.getAttribute(lazySrcAttr); 2583 let cellSrcsetAttr = cellElem.getAttribute(lazySrcsetAttr); 2584 if (cellAttr || cellSrcAttr || cellSrcsetAttr) { 2585 return cellElem; 2586 } 2587 } 2588 return [...cellElem.querySelectorAll(imgSelector)]; 2589 } 2590 proto.onLazyLoadComplete = function(img, event) { 2591 let cell2 = this.getParentCell(img); 2592 let cellElem = cell2 && cell2.element; 2593 this.cellSizeChange(cellElem); 2594 this.dispatchEvent("lazyLoad", event, cellElem); 2595 }; 2596 function LazyLoader(img, onComplete) { 2597 this.img = img; 2598 this.onComplete = onComplete; 2599 this.load(); 2600 } 2601 LazyLoader.prototype.handleEvent = utils2.handleEvent; 2602 LazyLoader.prototype.load = function() { 2603 this.img.addEventListener("load", this); 2604 this.img.addEventListener("error", this); 2605 let src = this.img.getAttribute(lazyAttr) || this.img.getAttribute(lazySrcAttr); 2606 let srcset = this.img.getAttribute(lazySrcsetAttr); 2607 this.img.src = src; 2608 if (srcset) this.img.setAttribute("srcset", srcset); 2609 this.img.removeAttribute(lazyAttr); 2610 this.img.removeAttribute(lazySrcAttr); 2611 this.img.removeAttribute(lazySrcsetAttr); 2612 }; 2613 LazyLoader.prototype.onload = function(event) { 2614 this.complete(event, "flickity-lazyloaded"); 2615 }; 2616 LazyLoader.prototype.onerror = function(event) { 2617 this.complete(event, "flickity-lazyerror"); 2618 }; 2619 LazyLoader.prototype.complete = function(event, className) { 2620 this.img.removeEventListener("load", this); 2621 this.img.removeEventListener("error", this); 2622 let mediaElem = this.img.parentNode.matches("picture") ? this.img.parentNode : this.img; 2623 mediaElem.classList.add(className); 2624 this.onComplete(this.img, event); 2625 }; 2626 Flickity2.LazyLoader = LazyLoader; 2627 return Flickity2; 2628 }); 2629 })(lazyload$1); 2630 return lazyload$1.exports; 2631 } 2632 var imagesloaded$3 = { exports: {} }; 2633 var imagesloaded$2 = { exports: {} }; 2634 /*! 2635 * imagesLoaded v5.0.0 2636 * JavaScript is all like "You images are done yet or what?" 2637 * MIT License 2638 */ 2639 var imagesloaded$1 = imagesloaded$2.exports; 2640 var hasRequiredImagesloaded$1; 2641 function requireImagesloaded$1() { 2642 if (hasRequiredImagesloaded$1) return imagesloaded$2.exports; 2643 hasRequiredImagesloaded$1 = 1; 2644 (function(module) { 2645 (function(window2, factory) { 2646 if (module.exports) { 2647 module.exports = factory(window2, requireEvEmitter()); 2648 } else { 2649 window2.imagesLoaded = factory(window2, window2.EvEmitter); 2650 } 2651 })( 2652 typeof window !== "undefined" ? window : imagesloaded$1, 2653 function factory(window2, EvEmitter) { 2654 let $ = window2.jQuery; 2655 let console2 = window2.console; 2656 function makeArray(obj) { 2657 if (Array.isArray(obj)) return obj; 2658 let isArrayLike = typeof obj == "object" && typeof obj.length == "number"; 2659 if (isArrayLike) return [...obj]; 2660 return [obj]; 2661 } 2662 function ImagesLoaded(elem, options, onAlways) { 2663 if (!(this instanceof ImagesLoaded)) { 2664 return new ImagesLoaded(elem, options, onAlways); 2665 } 2666 let queryElem = elem; 2667 if (typeof elem == "string") { 2668 queryElem = document.querySelectorAll(elem); 2669 } 2670 if (!queryElem) { 2671 console2.error(`Bad element for imagesLoaded ${queryElem || elem}`); 2672 return; 2673 } 2674 this.elements = makeArray(queryElem); 2675 this.options = {}; 2676 if (typeof options == "function") { 2677 onAlways = options; 2678 } else { 2679 Object.assign(this.options, options); 2680 } 2681 if (onAlways) this.on("always", onAlways); 2682 this.getImages(); 2683 if ($) this.jqDeferred = new $.Deferred(); 2684 setTimeout(this.check.bind(this)); 2685 } 2686 ImagesLoaded.prototype = Object.create(EvEmitter.prototype); 2687 ImagesLoaded.prototype.getImages = function() { 2688 this.images = []; 2689 this.elements.forEach(this.addElementImages, this); 2690 }; 2691 const elementNodeTypes = [1, 9, 11]; 2692 ImagesLoaded.prototype.addElementImages = function(elem) { 2693 if (elem.nodeName === "IMG") { 2694 this.addImage(elem); 2695 } 2696 if (this.options.background === true) { 2697 this.addElementBackgroundImages(elem); 2698 } 2699 let { nodeType } = elem; 2700 if (!nodeType || !elementNodeTypes.includes(nodeType)) return; 2701 let childImgs = elem.querySelectorAll("img"); 2702 for (let img of childImgs) { 2703 this.addImage(img); 2704 } 2705 if (typeof this.options.background == "string") { 2706 let children = elem.querySelectorAll(this.options.background); 2707 for (let child of children) { 2708 this.addElementBackgroundImages(child); 2709 } 2710 } 2711 }; 2712 const reURL = /url\((['"])?(.*?)\1\)/gi; 2713 ImagesLoaded.prototype.addElementBackgroundImages = function(elem) { 2714 let style = getComputedStyle(elem); 2715 if (!style) return; 2716 let matches = reURL.exec(style.backgroundImage); 2717 while (matches !== null) { 2718 let url = matches && matches[2]; 2719 if (url) { 2720 this.addBackground(url, elem); 2721 } 2722 matches = reURL.exec(style.backgroundImage); 2723 } 2724 }; 2725 ImagesLoaded.prototype.addImage = function(img) { 2726 let loadingImage = new LoadingImage(img); 2727 this.images.push(loadingImage); 2728 }; 2729 ImagesLoaded.prototype.addBackground = function(url, elem) { 2730 let background = new Background(url, elem); 2731 this.images.push(background); 2732 }; 2733 ImagesLoaded.prototype.check = function() { 2734 this.progressedCount = 0; 2735 this.hasAnyBroken = false; 2736 if (!this.images.length) { 2737 this.complete(); 2738 return; 2739 } 2740 let onProgress = (image, elem, message) => { 2741 setTimeout(() => { 2742 this.progress(image, elem, message); 2743 }); 2744 }; 2745 this.images.forEach(function(loadingImage) { 2746 loadingImage.once("progress", onProgress); 2747 loadingImage.check(); 2748 }); 2749 }; 2750 ImagesLoaded.prototype.progress = function(image, elem, message) { 2751 this.progressedCount++; 2752 this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded; 2753 this.emitEvent("progress", [this, image, elem]); 2754 if (this.jqDeferred && this.jqDeferred.notify) { 2755 this.jqDeferred.notify(this, image); 2756 } 2757 if (this.progressedCount === this.images.length) { 2758 this.complete(); 2759 } 2760 if (this.options.debug && console2) { 2761 console2.log(`progress: ${message}`, image, elem); 2762 } 2763 }; 2764 ImagesLoaded.prototype.complete = function() { 2765 let eventName = this.hasAnyBroken ? "fail" : "done"; 2766 this.isComplete = true; 2767 this.emitEvent(eventName, [this]); 2768 this.emitEvent("always", [this]); 2769 if (this.jqDeferred) { 2770 let jqMethod = this.hasAnyBroken ? "reject" : "resolve"; 2771 this.jqDeferred[jqMethod](this); 2772 } 2773 }; 2774 function LoadingImage(img) { 2775 this.img = img; 2776 } 2777 LoadingImage.prototype = Object.create(EvEmitter.prototype); 2778 LoadingImage.prototype.check = function() { 2779 let isComplete = this.getIsImageComplete(); 2780 if (isComplete) { 2781 this.confirm(this.img.naturalWidth !== 0, "naturalWidth"); 2782 return; 2783 } 2784 this.proxyImage = new Image(); 2785 if (this.img.crossOrigin) { 2786 this.proxyImage.crossOrigin = this.img.crossOrigin; 2787 } 2788 this.proxyImage.addEventListener("load", this); 2789 this.proxyImage.addEventListener("error", this); 2790 this.img.addEventListener("load", this); 2791 this.img.addEventListener("error", this); 2792 this.proxyImage.src = this.img.currentSrc || this.img.src; 2793 }; 2794 LoadingImage.prototype.getIsImageComplete = function() {
2795 return this.img.complete && this.img.naturalWidth; 2796 }; 2797 LoadingImage.prototype.confirm = function(isLoaded, message) { 2798 this.isLoaded = isLoaded; 2799 let { parentNode } = this.img; 2800 let elem = parentNode.nodeName === "PICTURE" ? parentNode : this.img; 2801 this.emitEvent("progress", [this, elem, message]); 2802 }; 2803 LoadingImage.prototype.handleEvent = function(event) { 2804 let method = "on" + event.type; 2805 if (this[method]) { 2806 this[method](event); 2807 } 2808 }; 2809 LoadingImage.prototype.onload = function() { 2810 this.confirm(true, "onload"); 2811 this.unbindEvents(); 2812 }; 2813 LoadingImage.prototype.onerror = function() { 2814 this.confirm(false, "onerror"); 2815 this.unbindEvents(); 2816 }; 2817 LoadingImage.prototype.unbindEvents = function() { 2818 this.proxyImage.removeEventListener("load", this); 2819 this.proxyImage.removeEventListener("error", this); 2820 this.img.removeEventListener("load", this); 2821 this.img.removeEventListener("error", this); 2822 }; 2823 function Background(url, element) { 2824 this.url = url; 2825 this.element = element; 2826 this.img = new Image(); 2827 } 2828 Background.prototype = Object.create(LoadingImage.prototype); 2829 Background.prototype.check = function() { 2830 this.img.addEventListener("load", this); 2831 this.img.addEventListener("error", this); 2832 this.img.src = this.url; 2833 let isComplete = this.getIsImageComplete(); 2834 if (isComplete) { 2835 this.confirm(this.img.naturalWidth !== 0, "naturalWidth"); 2836 this.unbindEvents(); 2837 } 2838 }; 2839 Background.prototype.unbindEvents = function() { 2840 this.img.removeEventListener("load", this); 2841 this.img.removeEventListener("error", this); 2842 }; 2843 Background.prototype.confirm = function(isLoaded, message) { 2844 this.isLoaded = isLoaded; 2845 this.emitEvent("progress", [this, this.element, message]); 2846 }; 2847 ImagesLoaded.makeJQueryPlugin = function(jQuery2) { 2848 jQuery2 = jQuery2 || window2.jQuery; 2849 if (!jQuery2) return; 2850 $ = jQuery2; 2851 $.fn.imagesLoaded = function(options, onAlways) { 2852 let instance = new ImagesLoaded(this, options, onAlways); 2853 return instance.jqDeferred.promise($(this)); 2854 }; 2855 }; 2856 ImagesLoaded.makeJQueryPlugin(); 2857 return ImagesLoaded; 2858 } 2859 ); 2860 })(imagesloaded$2); 2861 return imagesloaded$2.exports; 2862 } 2863 var imagesloaded = imagesloaded$3.exports; 2864 var hasRequiredImagesloaded; 2865 function requireImagesloaded() { 2866 if (hasRequiredImagesloaded) return imagesloaded$3.exports; 2867 hasRequiredImagesloaded = 1; 2868 (function(module) { 2869 (function(window2, factory) { 2870 if (module.exports) { 2871 module.exports = factory( 2872 requireCore(), 2873 requireImagesloaded$1() 2874 ); 2875 } else { 2876 factory( 2877 window2.Flickity, 2878 window2.imagesLoaded 2879 ); 2880 } 2881 })( 2882 typeof window != "undefined" ? window : imagesloaded, 2883 function factory(Flickity2, imagesLoaded) { 2884 Flickity2.create.imagesLoaded = function() { 2885 this.on("activate", this.imagesLoaded); 2886 }; 2887 Flickity2.prototype.imagesLoaded = function() { 2888 if (!this.options.imagesLoaded) return; 2889 let onImagesLoadedProgress = (instance, image) => { 2890 let cell2 = this.getParentCell(image.img); 2891 this.cellSizeChange(cell2 && cell2.element); 2892 if (!this.options.freeScroll) this.positionSliderAtSelected(); 2893 }; 2894 imagesLoaded(this.slider).on("progress", onImagesLoadedProgress); 2895 }; 2896 return Flickity2; 2897 } 2898 ); 2899 })(imagesloaded$3); 2900 return imagesloaded$3.exports; 2901 } 2902 /*! 2903 * Flickity v3.0.0 2904 * Touch, responsive, flickable carousels 2905 * 2906 * Licensed GPLv3 for open source use 2907 * or Flickity Commercial License for commercial use 2908 * 2909 * https://flickity.metafizzy.co 2910 * Copyright 2015-2022 Metafizzy 2911 */ 2912 var hasRequiredJs; 2913 function requireJs() { 2914 if (hasRequiredJs) return js.exports; 2915 hasRequiredJs = 1; 2916 (function(module) { 2917 if (module.exports) { 2918 const Flickity2 = requireCore(); 2919 requireDrag(); 2920 requirePrevNextButton(); 2921 requirePageDots(); 2922 requirePlayer();
2923 requireAddRemoveCell(); 2924 requireLazyload(); 2925 requireImagesloaded(); 2926 module.exports = Flickity2; 2927 } 2928 })(js); 2929 return js.exports; 2930 } 2931 var jsExports = requireJs(); 2932 const Flickity = /* @__PURE__ */ getDefaultExportFromCjs(jsExports); 2933 class AccordionContent { 2934 constructor() { 2935 this.$els = document.querySelectorAll(".js-accordion-content"); 2936 this.$els.forEach(($el) => { 2937 const $carousel = $el.querySelector(".js-accordion-content-carousel"); 2938 if ($carousel) { 2939 new Flickity($carousel, { 2940 cellAlign: "left", 2941 contain: true, 2942 wrapAround: true, 2943 prevNextButtons: false, 2944 imagesLoaded: true 2945 }); 2946 } 2947 }); 2948 } 2949 } 2950 const mobileMenuToggle = "OKENDO_MOBILE_MENU_TOGGLE"; 2951 const videoLoaded = "OKENDO_VIDEO_LOADED"; 2952 class Animations { 2953 constructor() { 2954 const $components = document.querySelectorAll("[data-component]"); 2955 this.components = []; 2956 const options = { 2957 root: null, 2958 threshold: 0.3 2959 }; 2960 const observer = new IntersectionObserver((entries, observer2) => { 2961 entries.forEach((entry, index) => { 2962 const { intersectionIndex } = entry.target; 2963 const component = this.components[intersectionIndex]; 2964 const { animations } = component; 2965 if (entry.isIntersecting) { 2966 animations.forEach((animation) => { 2967 if (animation.type === "video" && !animation.video) { 2968 animation.video = new VideoAnimation(animation.$el); 2969 } 2970 }); 2971 entry.target.classList.add("in-view"); 2972 } else { 2973 entry.target.classList.remove("in-view"); 2974 } 2975 }); 2976 }, options); 2977 $components.forEach(($component, index) => { 2978 const animations = []; 2979 const $animations = $component.querySelectorAll(".js-animation"); 2980 $animations.forEach(($animation) => { 2981 const animation = { 2982 "$el": $animation, 2983 "type": $animation.dataset.animationType 2984 }; 2985 animations.push(animation); 2986 }); 2987 this.components.push({ 2988 "$component": $component, 2989 animations 2990 }); 2991 $component.intersectionIndex = index; 2992 observer.observe($component); 2993 }); 2994 } 2995 } 2996 class VideoAnimation { 2997 constructor($el) { 2998 if (!$el || !$el.dataset.source || !$el.dataset.mime) return; 2999 this.$el = $el; 3000 const { 3001 mime, 3002 source, 3003 hoverOnly, 3004 poster, 3005 mp4Source, 3006 mp4Mime, 3007 disableOnMobile, 3008 loop 3009 } = this.$el.dataset; 3010 if (disableOnMobile === "true" && window.innerWidth < 1024) { 3011 return; 3012 } 3013 const isHoverOnly = JSON.parse(hoverOnly.toLowerCase()) || false; 3014 const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); 3015 this.$video = document.createElement("video"); 3016 if (!isSafari || isSafari && !mp4Source) { 3017 this.$source = document.createElement("source"); 3018 this.$source.src = source; 3019 this.$source.type = mime; 3020 this.$video.appendChild(this.$source); 3021 } else if (isSafari && mp4Source && mp4Mime) { 3022 const $mp4Source = document.createElement("source"); 3023 $mp4Source.src = mp4Source; 3024 $mp4Source.type = mp4Mime; 3025 $mp4Source.codecs = "hvc1"; 3026 $mp4Source.setAttribute("codecs", "hvc1"); 3027 this.$video.appendChild($mp4Source); 3028 } 3029 this.$video.muted = true; 3030 this.$video.autoplay = !isHoverOnly; 3031 this.$video.setAttribute("playsinline", true); 3032 this.$video.setAttribute("muted", true); 3033 if (loop === "true") { 3034 this.$video.setAttribute("loop", true); 3035 } 3036 if (poster) { 3037 this.$video.setAttribute("poster", poster); 3038 } 3039 this.$el.appendChild(this.$video); 3040 this.$video.load(); 3041 this.$video.onloadeddata = () => { 3042 if (!isHoverOnly) { 3043 this.$video.play(); 3044 } 3045 window.dispatchEvent(new CustomEvent(videoLoaded, { 3046 detail: { 3047 el: this.$el 3048 } 3049 })); 3050 }; 3051 if (isHoverOnly) {
vendor: 9,487 bytes, lines 3052-3320
3052 const $animationHoverContainer = this.$el.closest(".js-animation-hover-container"); 3053 if ($animationHoverContainer) { 3054 $animationHoverContainer.addEventListener("mouseenter", () => { 3055 this.$video.play(); 3056 }); 3057 $animationHoverContainer.addEventListener("mouseleave", () => { 3058 this.$video.pause(); 3059 this.$video.currentTime = 0; 3060 this.$video.load(); 3061 }); 3062 } else { 3063 this.$el.addEventListener("mouseenter", () => { 3064 this.$video.play(); 3065 }); 3066 this.$el.addEventListener("mouseleave", () => { 3067 this.$video.pause(); 3068 this.$video.currentTime = 0; 3069 }); 3070 } 3071 } 3072 } 3073 } 3074 function bind(fn, thisArg) { 3075 return function wrap2() { 3076 return fn.apply(thisArg, arguments); 3077 }; 3078 } 3079 const { toString } = Object.prototype; 3080 const { getPrototypeOf } = Object; 3081 const kindOf = /* @__PURE__ */ ((cache) => (thing) => { 3082 const str = toString.call(thing); 3083 return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); 3084 })(/* @__PURE__ */ Object.create(null)); 3085 const kindOfTest = (type) => { 3086 type = type.toLowerCase(); 3087 return (thing) => kindOf(thing) === type; 3088 }; 3089 const typeOfTest = (type) => (thing) => typeof thing === type; 3090 const { isArray } = Array; 3091 const isUndefined = typeOfTest("undefined"); 3092 function isBuffer(val) { 3093 return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); 3094 } 3095 const isArrayBuffer = kindOfTest("ArrayBuffer"); 3096 function isArrayBufferView(val) { 3097 let result; 3098 if (typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView) { 3099 result = ArrayBuffer.isView(val); 3100 } else { 3101 result = val && val.buffer && isArrayBuffer(val.buffer); 3102 } 3103 return result; 3104 } 3105 const isString = typeOfTest("string"); 3106 const isFunction = typeOfTest("function"); 3107 const isNumber = typeOfTest("number"); 3108 const isObject = (thing) => thing !== null && typeof thing === "object"; 3109 const isBoolean = (thing) => thing === true || thing === false; 3110 const isPlainObject$1 = (val) => { 3111 if (kindOf(val) !== "object") { 3112 return false; 3113 } 3114 const prototype2 = getPrototypeOf(val); 3115 return (prototype2 === null || prototype2 === Object.prototype || Object.getPrototypeOf(prototype2) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); 3116 }; 3117 const isDate = kindOfTest("Date"); 3118 const isFile = kindOfTest("File"); 3119 const isBlob = kindOfTest("Blob"); 3120 const isFileList = kindOfTest("FileList"); 3121 const isStream = (val) => isObject(val) && isFunction(val.pipe); 3122 const isFormData = (thing) => { 3123 let kind; 3124 return thing && (typeof FormData === "function" && thing instanceof FormData || isFunction(thing.append) && ((kind = kindOf(thing)) === "formdata" || // detect form-data instance 3125 kind === "object" && isFunction(thing.toString) && thing.toString() === "[object FormData]")); 3126 }; 3127 const isURLSearchParams = kindOfTest("URLSearchParams"); 3128 const [isReadableStream, isRequest, isResponse, isHeaders] = ["ReadableStream", "Request", "Response", "Headers"].map(kindOfTest); 3129 const trim = (str) => str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); 3130 function forEach(obj, fn, { allOwnKeys = false } = {}) { 3131 if (obj === null || typeof obj === "undefined") { 3132 return; 3133 } 3134 let i2; 3135 let l; 3136 if (typeof obj !== "object") { 3137 obj = [obj]; 3138 } 3139 if (isArray(obj)) { 3140 for (i2 = 0, l = obj.length; i2 < l; i2++) { 3141 fn.call(null, obj[i2], i2, obj); 3142 } 3143 } else { 3144 const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); 3145 const len = keys.length; 3146 let key; 3147 for (i2 = 0; i2 < len; i2++) { 3148 key = keys[i2]; 3149 fn.call(null, obj[key], key, obj); 3150 } 3151 } 3152 } 3153 function findKey(obj, key) { 3154 key = key.toLowerCase(); 3155 const keys = Object.keys(obj); 3156 let i2 = keys.length; 3157 let _key; 3158 while (i2-- > 0) { 3159 _key = keys[i2]; 3160 if (key === _key.toLowerCase()) { 3161 return _key; 3162 } 3163 } 3164 return null; 3165 } 3166 const _global = (() => { 3167 if (typeof globalThis !== "undefined") return globalThis; 3168 return typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : global; 3169 })(); 3170 const isContextDefined = (context) => !isUndefined(context) && context !== _global; 3171 function merge() { 3172 const { caseless } = isContextDefined(this) && this || {}; 3173 const result = {}; 3174 const assignValue = (val, key) => { 3175 const targetKey = caseless && findKey(result, key) || key; 3176 if (isPlainObject$1(result[targetKey]) && isPlainObject$1(val)) { 3177 result[targetKey] = merge(result[targetKey], val); 3178 } else if (isPlainObject$1(val)) { 3179 result[targetKey] = merge({}, val); 3180 } else if (isArray(val)) { 3181 result[targetKey] = val.slice(); 3182 } else { 3183 result[targetKey] = val; 3184 } 3185 }; 3186 for (let i2 = 0, l = arguments.length; i2 < l; i2++) { 3187 arguments[i2] && forEach(arguments[i2], assignValue); 3188 } 3189 return result; 3190 } 3191 const extend = (a, b, thisArg, { allOwnKeys } = {}) => { 3192 forEach(b, (val, key) => { 3193 if (thisArg && isFunction(val)) { 3194 a[key] = bind(val, thisArg); 3195 } else { 3196 a[key] = val; 3197 } 3198 }, { allOwnKeys }); 3199 return a; 3200 }; 3201 const stripBOM = (content) => { 3202 if (content.charCodeAt(0) === 65279) { 3203 content = content.slice(1); 3204 } 3205 return content; 3206 }; 3207 const inherits = (constructor, superConstructor, props, descriptors2) => { 3208 constructor.prototype = Object.create(superConstructor.prototype, descriptors2); 3209 constructor.prototype.constructor = constructor; 3210 Object.defineProperty(constructor, "super", { 3211 value: superConstructor.prototype 3212 }); 3213 props && Object.assign(constructor.prototype, props); 3214 }; 3215 const toFlatObject = (sourceObj, destObj, filter, propFilter) => { 3216 let props; 3217 let i2; 3218 let prop; 3219 const merged = {}; 3220 destObj = destObj || {}; 3221 if (sourceObj == null) return destObj; 3222 do { 3223 props = Object.getOwnPropertyNames(sourceObj); 3224 i2 = props.length; 3225 while (i2-- > 0) { 3226 prop = props[i2]; 3227 if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { 3228 destObj[prop] = sourceObj[prop]; 3229 merged[prop] = true; 3230 } 3231 } 3232 sourceObj = filter !== false && getPrototypeOf(sourceObj); 3233 } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); 3234 return destObj; 3235 }; 3236 const endsWith = (str, searchString, position) => { 3237 str = String(str); 3238 if (position === void 0 || position > str.length) { 3239 position = str.length; 3240 } 3241 position -= searchString.length; 3242 const lastIndex = str.indexOf(searchString, position); 3243 return lastIndex !== -1 && lastIndex === position; 3244 }; 3245 const toArray$1 = (thing) => { 3246 if (!thing) return null; 3247 if (isArray(thing)) return thing; 3248 let i2 = thing.length; 3249 if (!isNumber(i2)) return null; 3250 const arr = new Array(i2); 3251 while (i2-- > 0) { 3252 arr[i2] = thing[i2]; 3253 } 3254 return arr; 3255 }; 3256 const isTypedArray = /* @__PURE__ */ ((TypedArray) => { 3257 return (thing) => { 3258 return TypedArray && thing instanceof TypedArray; 3259 }; 3260 })(typeof Uint8Array !== "undefined" && getPrototypeOf(Uint8Array)); 3261 const forEachEntry = (obj, fn) => { 3262 const generator = obj && obj[Symbol.iterator]; 3263 const iterator = generator.call(obj); 3264 let result; 3265 while ((result = iterator.next()) && !result.done) { 3266 const pair = result.value; 3267 fn.call(obj, pair[0], pair[1]); 3268 } 3269 }; 3270 const matchAll = (regExp, str) => { 3271 let matches; 3272 const arr = []; 3273 while ((matches = regExp.exec(str)) !== null) { 3274 arr.push(matches); 3275 } 3276 return arr; 3277 }; 3278 const isHTMLForm = kindOfTest("HTMLFormElement"); 3279 const toCamelCase = (str) => { 3280 return str.toLowerCase().replace( 3281 /[-_\s]([a-z\d])(\w*)/g, 3282 function replacer(m, p1, p2) { 3283 return p1.toUpperCase() + p2; 3284 } 3285 ); 3286 }; 3287 const hasOwnProperty = (({ hasOwnProperty: hasOwnProperty2 }) => (obj, prop) => hasOwnProperty2.call(obj, prop))(Object.prototype); 3288 const isRegExp = kindOfTest("RegExp"); 3289 const reduceDescriptors = (obj, reducer) => { 3290 const descriptors2 = Object.getOwnPropertyDescriptors(obj); 3291 const reducedDescriptors = {}; 3292 forEach(descriptors2, (descriptor, name) => { 3293 let ret; 3294 if ((ret = reducer(descriptor, name, obj)) !== false) { 3295 reducedDescriptors[name] = ret || descriptor; 3296 } 3297 }); 3298 Object.defineProperties(obj, reducedDescriptors); 3299 }; 3300 const freezeMethods = (obj) => { 3301 reduceDescriptors(obj, (descriptor, name) => { 3302 if (isFunction(obj) && ["arguments", "caller", "callee"].indexOf(name) !== -1) { 3303 return false; 3304 } 3305 const value = obj[name]; 3306 if (!isFunction(value)) return; 3307 descriptor.enumerable = false; 3308 if ("writable" in descriptor) { 3309 descriptor.writable = false; 3310 return; 3311 } 3312 if (!descriptor.set) { 3313 descriptor.set = () => { 3314 throw Error("Can not rewrite read-only method '" + name + "'"); 3315 }; 3316 } 3317 }); 3318 }; 3319 const toObjectSet = (arrayOrString, delimiter) => { 3320 const obj = {};
3321 const define = (arr) => { 3322 arr.forEach((value) => { 3323 obj[value] = true; 3324 }); 3325 }; 3326 isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); 3327 return obj; 3328 }; 3329 const noop = () => { 3330 }; 3331 const toFiniteNumber = (value, defaultValue) => { 3332 return value != null && Number.isFinite(value = +value) ? value : defaultValue; 3333 }; 3334 const ALPHA = "abcdefghijklmnopqrstuvwxyz"; 3335 const DIGIT = "0123456789"; 3336 const ALPHABET = { 3337 DIGIT, 3338 ALPHA, 3339 ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT 3340 }; 3341 const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { 3342 let str = ""; 3343 const { length } = alphabet; 3344 while (size--) { 3345 str += alphabet[Math.random() * length | 0]; 3346 } 3347 return str; 3348 }; 3349 function isSpecCompliantForm(thing) { 3350 return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === "FormData" && thing[Symbol.iterator]); 3351 } 3352 const toJSONObject = (obj) => { 3353 const stack = new Array(10); 3354 const visit = (source, i2) => { 3355 if (isObject(source)) { 3356 if (stack.indexOf(source) >= 0) { 3357 return; 3358 } 3359 if (!("toJSON" in source)) { 3360 stack[i2] = source; 3361 const target = isArray(source) ? [] : {}; 3362 forEach(source, (value, key) => { 3363 const reducedValue = visit(value, i2 + 1); 3364 !isUndefined(reducedValue) && (target[key] = reducedValue); 3365 }); 3366 stack[i2] = void 0; 3367 return target; 3368 } 3369 } 3370 return source; 3371 }; 3372 return visit(obj, 0); 3373 }; 3374 const isAsyncFn = kindOfTest("AsyncFunction"); 3375 const isThenable = (thing) => thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch); 3376 const _setImmediate = ((setImmediateSupported, postMessageSupported) => { 3377 if (setImmediateSupported) { 3378 return setImmediate; 3379 } 3380 return postMessageSupported ? ((token, callbacks) => { 3381 _global.addEventListener("message", ({ source, data }) => { 3382 if (source === _global && data === token) { 3383 callbacks.length && callbacks.shift()(); 3384 } 3385 }, false); 3386 return (cb) => { 3387 callbacks.push(cb); 3388 _global.postMessage(token, "*"); 3389 }; 3390 })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb); 3391 })( 3392 typeof setImmediate === "function", 3393 isFunction(_global.postMessage) 3394 ); 3395 const asap = typeof queueMicrotask !== "undefined" ? queueMicrotask.bind(_global) : typeof process !== "undefined" && process.nextTick || _setImmediate; 3396 const utils$1 = { 3397 isArray, 3398 isArrayBuffer, 3399 isBuffer, 3400 isFormData, 3401 isArrayBufferView, 3402 isString, 3403 isNumber, 3404 isBoolean, 3405 isObject, 3406 isPlainObject: isPlainObject$1, 3407 isReadableStream, 3408 isRequest, 3409 isResponse, 3410 isHeaders, 3411 isUndefined, 3412 isDate, 3413 isFile, 3414 isBlob, 3415 isRegExp, 3416 isFunction, 3417 isStream, 3418 isURLSearchParams, 3419 isTypedArray, 3420 isFileList, 3421 forEach, 3422 merge, 3423 extend, 3424 trim, 3425 stripBOM, 3426 inherits, 3427 toFlatObject, 3428 kindOf, 3429 kindOfTest, 3430 endsWith, 3431 toArray: toArray$1, 3432 forEachEntry, 3433 matchAll, 3434 isHTMLForm, 3435 hasOwnProperty, 3436 hasOwnProp: hasOwnProperty, 3437 // an alias to avoid ESLint no-prototype-builtins detection 3438 reduceDescriptors, 3439 freezeMethods, 3440 toObjectSet, 3441 toCamelCase, 3442 noop, 3443 toFiniteNumber, 3444 findKey, 3445 global: _global, 3446 isContextDefined, 3447 ALPHABET, 3448 generateString, 3449 isSpecCompliantForm, 3450 toJSONObject, 3451 isAsyncFn, 3452 isThenable, 3453 setImmediate: _setImmediate, 3454 asap 3455 }; 3456 function AxiosError$1(message, code, config, request, response) { 3457 Error.call(this); 3458 if (Error.captureStackTrace) { 3459 Error.captureStackTrace(this, this.constructor); 3460 } else { 3461 this.stack = new Error().stack; 3462 } 3463 this.message = message; 3464 this.name = "AxiosError"; 3465 code && (this.code = code); 3466 config && (this.config = config); 3467 request && (this.request = request); 3468 if (response) { 3469 this.response = response; 3470 this.status = response.status ? response.status : null; 3471 } 3472 } 3473 utils$1.inherits(AxiosError$1, Error, { 3474 toJSON: function toJSON() { 3475 return { 3476 // Standard 3477 message: this.message, 3478 name: this.name, 3479 // Microsoft 3480 description: this.description, 3481 number: this.number, 3482 // Mozilla 3483 fileName: this.fileName, 3484 lineNumber: this.lineNumber, 3485 columnNumber: this.columnNumber, 3486 stack: this.stack, 3487 // Axios 3488 config: utils$1.toJSONObject(this.config),
vendor: 27,472 bytes, lines 3489-4324
3489 code: this.code, 3490 status: this.status 3491 }; 3492 } 3493 }); 3494 const prototype$1 = AxiosError$1.prototype; 3495 const descriptors = {}; 3496 [ 3497 "ERR_BAD_OPTION_VALUE", 3498 "ERR_BAD_OPTION", 3499 "ECONNABORTED", 3500 "ETIMEDOUT", 3501 "ERR_NETWORK", 3502 "ERR_FR_TOO_MANY_REDIRECTS", 3503 "ERR_DEPRECATED", 3504 "ERR_BAD_RESPONSE", 3505 "ERR_BAD_REQUEST", 3506 "ERR_CANCELED", 3507 "ERR_NOT_SUPPORT", 3508 "ERR_INVALID_URL" 3509 // eslint-disable-next-line func-names 3510 ].forEach((code) => { 3511 descriptors[code] = { value: code }; 3512 }); 3513 Object.defineProperties(AxiosError$1, descriptors); 3514 Object.defineProperty(prototype$1, "isAxiosError", { value: true }); 3515 AxiosError$1.from = (error, code, config, request, response, customProps) => { 3516 const axiosError = Object.create(prototype$1); 3517 utils$1.toFlatObject(error, axiosError, function filter(obj) { 3518 return obj !== Error.prototype; 3519 }, (prop) => { 3520 return prop !== "isAxiosError"; 3521 }); 3522 AxiosError$1.call(axiosError, error.message, code, config, request, response); 3523 axiosError.cause = error; 3524 axiosError.name = error.name; 3525 customProps && Object.assign(axiosError, customProps); 3526 return axiosError; 3527 }; 3528 const httpAdapter = null; 3529 function isVisitable(thing) { 3530 return utils$1.isPlainObject(thing) || utils$1.isArray(thing); 3531 } 3532 function removeBrackets(key) { 3533 return utils$1.endsWith(key, "[]") ? key.slice(0, -2) : key; 3534 } 3535 function renderKey(path, key, dots) { 3536 if (!path) return key; 3537 return path.concat(key).map(function each(token, i2) { 3538 token = removeBrackets(token); 3539 return !dots && i2 ? "[" + token + "]" : token; 3540 }).join(dots ? "." : ""); 3541 } 3542 function isFlatArray(arr) { 3543 return utils$1.isArray(arr) && !arr.some(isVisitable); 3544 } 3545 const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { 3546 return /^is[A-Z]/.test(prop); 3547 }); 3548 function toFormData$1(obj, formData, options) { 3549 if (!utils$1.isObject(obj)) { 3550 throw new TypeError("target must be an object"); 3551 } 3552 formData = formData || new FormData(); 3553 options = utils$1.toFlatObject(options, { 3554 metaTokens: true, 3555 dots: false, 3556 indexes: false 3557 }, false, function defined(option, source) { 3558 return !utils$1.isUndefined(source[option]); 3559 }); 3560 const metaTokens = options.metaTokens; 3561 const visitor = options.visitor || defaultVisitor; 3562 const dots = options.dots; 3563 const indexes = options.indexes; 3564 const _Blob = options.Blob || typeof Blob !== "undefined" && Blob; 3565 const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); 3566 if (!utils$1.isFunction(visitor)) { 3567 throw new TypeError("visitor must be a function"); 3568 } 3569 function convertValue(value) { 3570 if (value === null) return ""; 3571 if (utils$1.isDate(value)) { 3572 return value.toISOString(); 3573 } 3574 if (!useBlob && utils$1.isBlob(value)) { 3575 throw new AxiosError$1("Blob is not supported. Use a Buffer instead."); 3576 } 3577 if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { 3578 return useBlob && typeof Blob === "function" ? new Blob([value]) : Buffer.from(value); 3579 } 3580 return value; 3581 } 3582 function defaultVisitor(value, key, path) { 3583 let arr = value; 3584 if (value && !path && typeof value === "object") { 3585 if (utils$1.endsWith(key, "{}")) { 3586 key = metaTokens ? key : key.slice(0, -2); 3587 value = JSON.stringify(value); 3588 } else if (utils$1.isArray(value) && isFlatArray(value) || (utils$1.isFileList(value) || utils$1.endsWith(key, "[]")) && (arr = utils$1.toArray(value))) { 3589 key = removeBrackets(key); 3590 arr.forEach(function each(el, index) { 3591 !(utils$1.isUndefined(el) || el === null) && formData.append( 3592 // eslint-disable-next-line no-nested-ternary 3593 indexes === true ? renderKey([key], index, dots) : indexes === null ? key : key + "[]", 3594 convertValue(el) 3595 ); 3596 }); 3597 return false; 3598 } 3599 } 3600 if (isVisitable(value)) { 3601 return true; 3602 } 3603 formData.append(renderKey(path, key, dots), convertValue(value)); 3604 return false; 3605 } 3606 const stack = []; 3607 const exposedHelpers = Object.assign(predicates, { 3608 defaultVisitor, 3609 convertValue, 3610 isVisitable 3611 }); 3612 function build(value, path) { 3613 if (utils$1.isUndefined(value)) return; 3614 if (stack.indexOf(value) !== -1) { 3615 throw Error("Circular reference detected in " + path.join(".")); 3616 } 3617 stack.push(value); 3618 utils$1.forEach(value, function each(el, key) { 3619 const result = !(utils$1.isUndefined(el) || el === null) && visitor.call( 3620 formData, 3621 el, 3622 utils$1.isString(key) ? key.trim() : key, 3623 path, 3624 exposedHelpers 3625 ); 3626 if (result === true) { 3627 build(el, path ? path.concat(key) : [key]); 3628 } 3629 }); 3630 stack.pop(); 3631 } 3632 if (!utils$1.isObject(obj)) { 3633 throw new TypeError("data must be an object"); 3634 } 3635 build(obj); 3636 return formData; 3637 } 3638 function encode$1(str) { 3639 const charMap = { 3640 "!": "%21", 3641 "'": "%27", 3642 "(": "%28", 3643 ")": "%29", 3644 "~": "%7E", 3645 "%20": "+", 3646 "%00": "\0" 3647 }; 3648 return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { 3649 return charMap[match]; 3650 }); 3651 } 3652 function AxiosURLSearchParams(params, options) { 3653 this._pairs = []; 3654 params && toFormData$1(params, this, options); 3655 } 3656 const prototype = AxiosURLSearchParams.prototype; 3657 prototype.append = function append(name, value) { 3658 this._pairs.push([name, value]); 3659 }; 3660 prototype.toString = function toString2(encoder) { 3661 const _encode = encoder ? function(value) { 3662 return encoder.call(this, value, encode$1); 3663 } : encode$1; 3664 return this._pairs.map(function each(pair) { 3665 return _encode(pair[0]) + "=" + _encode(pair[1]); 3666 }, "").join("&"); 3667 }; 3668 function encode(val) { 3669 return encodeURIComponent(val).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]"); 3670 } 3671 function buildURL(url, params, options) { 3672 if (!params) { 3673 return url; 3674 } 3675 const _encode = options && options.encode || encode; 3676 if (utils$1.isFunction(options)) { 3677 options = { 3678 serialize: options 3679 }; 3680 } 3681 const serializeFn = options && options.serialize; 3682 let serializedParams; 3683 if (serializeFn) { 3684 serializedParams = serializeFn(params, options); 3685 } else { 3686 serializedParams = utils$1.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, options).toString(_encode); 3687 } 3688 if (serializedParams) { 3689 const hashmarkIndex = url.indexOf("#"); 3690 if (hashmarkIndex !== -1) { 3691 url = url.slice(0, hashmarkIndex); 3692 } 3693 url += (url.indexOf("?") === -1 ? "?" : "&") + serializedParams; 3694 } 3695 return url; 3696 } 3697 class InterceptorManager { 3698 constructor() { 3699 this.handlers = []; 3700 } 3701 /** 3702 * Add a new interceptor to the stack 3703 * 3704 * @param {Function} fulfilled The function to handle `then` for a `Promise` 3705 * @param {Function} rejected The function to handle `reject` for a `Promise` 3706 * 3707 * @return {Number} An ID used to remove interceptor later 3708 */ 3709 use(fulfilled, rejected, options) { 3710 this.handlers.push({ 3711 fulfilled, 3712 rejected, 3713 synchronous: options ? options.synchronous : false, 3714 runWhen: options ? options.runWhen : null 3715 }); 3716 return this.handlers.length - 1; 3717 } 3718 /** 3719 * Remove an interceptor from the stack 3720 * 3721 * @param {Number} id The ID that was returned by `use` 3722 * 3723 * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise 3724 */ 3725 eject(id) { 3726 if (this.handlers[id]) { 3727 this.handlers[id] = null; 3728 } 3729 } 3730 /** 3731 * Clear all interceptors from the stack 3732 * 3733 * @returns {void} 3734 */ 3735 clear() { 3736 if (this.handlers) { 3737 this.handlers = []; 3738 } 3739 } 3740 /** 3741 * Iterate over all the registered interceptors 3742 * 3743 * This method is particularly useful for skipping over any 3744 * interceptors that may have become `null` calling `eject`. 3745 * 3746 * @param {Function} fn The function to call for each interceptor 3747 * 3748 * @returns {void} 3749 */ 3750 forEach(fn) { 3751 utils$1.forEach(this.handlers, function forEachHandler(h) { 3752 if (h !== null) { 3753 fn(h); 3754 } 3755 }); 3756 } 3757 } 3758 const transitionalDefaults = { 3759 silentJSONParsing: true, 3760 forcedJSONParsing: true, 3761 clarifyTimeoutError: false 3762 }; 3763 const URLSearchParams$1 = typeof URLSearchParams !== "undefined" ? URLSearchParams : AxiosURLSearchParams; 3764 const FormData$1 = typeof FormData !== "undefined" ? FormData : null; 3765 const Blob$1 = typeof Blob !== "undefined" ? Blob : null; 3766 const platform$1 = { 3767 isBrowser: true, 3768 classes: { 3769 URLSearchParams: URLSearchParams$1, 3770 FormData: FormData$1, 3771 Blob: Blob$1 3772 }, 3773 protocols: ["http", "https", "file", "blob", "url", "data"] 3774 }; 3775 const hasBrowserEnv = typeof window !== "undefined" && typeof document !== "undefined"; 3776 const _navigator = typeof navigator === "object" && navigator || void 0; 3777 const hasStandardBrowserEnv = hasBrowserEnv && (!_navigator || ["ReactNative", "NativeScript", "NS"].indexOf(_navigator.product) < 0); 3778 const hasStandardBrowserWebWorkerEnv = (() => { 3779 return typeof WorkerGlobalScope !== "undefined" && // eslint-disable-next-line no-undef 3780 self instanceof WorkerGlobalScope && typeof self.importScripts === "function"; 3781 })(); 3782 const origin = hasBrowserEnv && window.location.href || "http://localhost"; 3783 const utils = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ 3784 __proto__: null, 3785 hasBrowserEnv, 3786 hasStandardBrowserEnv, 3787 hasStandardBrowserWebWorkerEnv, 3788 navigator: _navigator, 3789 origin 3790 }, Symbol.toStringTag, { value: "Module" })); 3791 const platform = { 3792 ...utils, 3793 ...platform$1 3794 }; 3795 function toURLEncodedForm(data, options) { 3796 return toFormData$1(data, new platform.classes.URLSearchParams(), Object.assign({ 3797 visitor: function(value, key, path, helpers) { 3798 if (platform.isNode && utils$1.isBuffer(value)) { 3799 this.append(key, value.toString("base64")); 3800 return false; 3801 } 3802 return helpers.defaultVisitor.apply(this, arguments); 3803 } 3804 }, options)); 3805 } 3806 function parsePropPath(name) { 3807 return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map((match) => { 3808 return match[0] === "[]" ? "" : match[1] || match[0]; 3809 }); 3810 } 3811 function arrayToObject(arr) { 3812 const obj = {}; 3813 const keys = Object.keys(arr); 3814 let i2; 3815 const len = keys.length; 3816 let key; 3817 for (i2 = 0; i2 < len; i2++) { 3818 key = keys[i2]; 3819 obj[key] = arr[key]; 3820 } 3821 return obj; 3822 } 3823 function formDataToJSON(formData) { 3824 function buildPath(path, value, target, index) { 3825 let name = path[index++]; 3826 if (name === "__proto__") return true; 3827 const isNumericKey = Number.isFinite(+name); 3828 const isLast = index >= path.length; 3829 name = !name && utils$1.isArray(target) ? target.length : name; 3830 if (isLast) { 3831 if (utils$1.hasOwnProp(target, name)) { 3832 target[name] = [target[name], value]; 3833 } else { 3834 target[name] = value; 3835 } 3836 return !isNumericKey; 3837 } 3838 if (!target[name] || !utils$1.isObject(target[name])) { 3839 target[name] = []; 3840 } 3841 const result = buildPath(path, value, target[name], index); 3842 if (result && utils$1.isArray(target[name])) { 3843 target[name] = arrayToObject(target[name]); 3844 } 3845 return !isNumericKey; 3846 } 3847 if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { 3848 const obj = {}; 3849 utils$1.forEachEntry(formData, (name, value) => { 3850 buildPath(parsePropPath(name), value, obj, 0); 3851 }); 3852 return obj; 3853 } 3854 return null; 3855 } 3856 function stringifySafely(rawValue, parser, encoder) { 3857 if (utils$1.isString(rawValue)) { 3858 try { 3859 (parser || JSON.parse)(rawValue); 3860 return utils$1.trim(rawValue); 3861 } catch (e) { 3862 if (e.name !== "SyntaxError") { 3863 throw e; 3864 } 3865 } 3866 } 3867 return (encoder || JSON.stringify)(rawValue); 3868 } 3869 const defaults$1 = { 3870 transitional: transitionalDefaults, 3871 adapter: ["xhr", "http", "fetch"], 3872 transformRequest: [function transformRequest(data, headers) { 3873 const contentType = headers.getContentType() || ""; 3874 const hasJSONContentType = contentType.indexOf("application/json") > -1; 3875 const isObjectPayload = utils$1.isObject(data); 3876 if (isObjectPayload && utils$1.isHTMLForm(data)) { 3877 data = new FormData(data); 3878 } 3879 const isFormData2 = utils$1.isFormData(data); 3880 if (isFormData2) { 3881 return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; 3882 } 3883 if (utils$1.isArrayBuffer(data) || utils$1.isBuffer(data) || utils$1.isStream(data) || utils$1.isFile(data) || utils$1.isBlob(data) || utils$1.isReadableStream(data)) { 3884 return data; 3885 } 3886 if (utils$1.isArrayBufferView(data)) { 3887 return data.buffer; 3888 } 3889 if (utils$1.isURLSearchParams(data)) { 3890 headers.setContentType("application/x-www-form-urlencoded;charset=utf-8", false); 3891 return data.toString(); 3892 } 3893 let isFileList2; 3894 if (isObjectPayload) { 3895 if (contentType.indexOf("application/x-www-form-urlencoded") > -1) { 3896 return toURLEncodedForm(data, this.formSerializer).toString(); 3897 } 3898 if ((isFileList2 = utils$1.isFileList(data)) || contentType.indexOf("multipart/form-data") > -1) { 3899 const _FormData = this.env && this.env.FormData; 3900 return toFormData$1( 3901 isFileList2 ? { "files[]": data } : data, 3902 _FormData && new _FormData(), 3903 this.formSerializer 3904 ); 3905 } 3906 } 3907 if (isObjectPayload || hasJSONContentType) { 3908 headers.setContentType("application/json", false); 3909 return stringifySafely(data); 3910 } 3911 return data; 3912 }], 3913 transformResponse: [function transformResponse(data) { 3914 const transitional = this.transitional || defaults$1.transitional; 3915 const forcedJSONParsing = transitional && transitional.forcedJSONParsing; 3916 const JSONRequested = this.responseType === "json"; 3917 if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) { 3918 return data; 3919 } 3920 if (data && utils$1.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) { 3921 const silentJSONParsing = transitional && transitional.silentJSONParsing; 3922 const strictJSONParsing = !silentJSONParsing && JSONRequested; 3923 try { 3924 return JSON.parse(data); 3925 } catch (e) { 3926 if (strictJSONParsing) { 3927 if (e.name === "SyntaxError") { 3928 throw AxiosError$1.from(e, AxiosError$1.ERR_BAD_RESPONSE, this, null, this.response); 3929 } 3930 throw e; 3931 } 3932 } 3933 } 3934 return data; 3935 }], 3936 /** 3937 * A timeout in milliseconds to abort a request. If set to 0 (default) a 3938 * timeout is not created. 3939 */ 3940 timeout: 0, 3941 xsrfCookieName: "XSRF-TOKEN", 3942 xsrfHeaderName: "X-XSRF-TOKEN", 3943 maxContentLength: -1, 3944 maxBodyLength: -1, 3945 env: { 3946 FormData: platform.classes.FormData, 3947 Blob: platform.classes.Blob 3948 }, 3949 validateStatus: function validateStatus(status) { 3950 return status >= 200 && status < 300; 3951 }, 3952 headers: { 3953 common: { 3954 "Accept": "application/json, text/plain, */*", 3955 "Content-Type": void 0 3956 } 3957 } 3958 }; 3959 utils$1.forEach(["delete", "get", "head", "post", "put", "patch"], (method) => { 3960 defaults$1.headers[method] = {}; 3961 }); 3962 const ignoreDuplicateOf = utils$1.toObjectSet([ 3963 "age", 3964 "authorization", 3965 "content-length", 3966 "content-type", 3967 "etag", 3968 "expires", 3969 "from", 3970 "host", 3971 "if-modified-since", 3972 "if-unmodified-since", 3973 "last-modified", 3974 "location", 3975 "max-forwards", 3976 "proxy-authorization", 3977 "referer", 3978 "retry-after", 3979 "user-agent" 3980 ]); 3981 const parseHeaders = (rawHeaders) => { 3982 const parsed = {}; 3983 let key; 3984 let val; 3985 let i2; 3986 rawHeaders && rawHeaders.split("\n").forEach(function parser(line) { 3987 i2 = line.indexOf(":"); 3988 key = line.substring(0, i2).trim().toLowerCase(); 3989 val = line.substring(i2 + 1).trim(); 3990 if (!key || parsed[key] && ignoreDuplicateOf[key]) { 3991 return; 3992 } 3993 if (key === "set-cookie") { 3994 if (parsed[key]) { 3995 parsed[key].push(val); 3996 } else { 3997 parsed[key] = [val]; 3998 } 3999 } else { 4000 parsed[key] = parsed[key] ? parsed[key] + ", " + val : val; 4001 } 4002 }); 4003 return parsed; 4004 }; 4005 const $internals = Symbol("internals"); 4006 function normalizeHeader(header) { 4007 return header && String(header).trim().toLowerCase(); 4008 } 4009 function normalizeValue(value) { 4010 if (value === false || value == null) { 4011 return value; 4012 } 4013 return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); 4014 } 4015 function parseTokens(str) { 4016 const tokens = /* @__PURE__ */ Object.create(null); 4017 const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; 4018 let match; 4019 while (match = tokensRE.exec(str)) { 4020 tokens[match[1]] = match[2]; 4021 } 4022 return tokens; 4023 } 4024 const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); 4025 function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { 4026 if (utils$1.isFunction(filter)) { 4027 return filter.call(this, value, header); 4028 } 4029 if (isHeaderNameFilter) { 4030 value = header; 4031 } 4032 if (!utils$1.isString(value)) return; 4033 if (utils$1.isString(filter)) { 4034 return value.indexOf(filter) !== -1; 4035 } 4036 if (utils$1.isRegExp(filter)) { 4037 return filter.test(value); 4038 } 4039 } 4040 function formatHeader(header) { 4041 return header.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { 4042 return char.toUpperCase() + str; 4043 }); 4044 } 4045 function buildAccessors(obj, header) { 4046 const accessorName = utils$1.toCamelCase(" " + header); 4047 ["get", "set", "has"].forEach((methodName) => { 4048 Object.defineProperty(obj, methodName + accessorName, { 4049 value: function(arg1, arg2, arg3) { 4050 return this[methodName].call(this, header, arg1, arg2, arg3); 4051 }, 4052 configurable: true 4053 }); 4054 }); 4055 } 4056 let AxiosHeaders$1 = class AxiosHeaders { 4057 constructor(headers) { 4058 headers && this.set(headers); 4059 } 4060 set(header, valueOrRewrite, rewrite) { 4061 const self2 = this; 4062 function setHeader(_value, _header, _rewrite) { 4063 const lHeader = normalizeHeader(_header); 4064 if (!lHeader) { 4065 throw new Error("header name must be a non-empty string"); 4066 } 4067 const key = utils$1.findKey(self2, lHeader); 4068 if (!key || self2[key] === void 0 || _rewrite === true || _rewrite === void 0 && self2[key] !== false) { 4069 self2[key || _header] = normalizeValue(_value); 4070 } 4071 } 4072 const setHeaders = (headers, _rewrite) => utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); 4073 if (utils$1.isPlainObject(header) || header instanceof this.constructor) { 4074 setHeaders(header, valueOrRewrite); 4075 } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { 4076 setHeaders(parseHeaders(header), valueOrRewrite); 4077 } else if (utils$1.isHeaders(header)) { 4078 for (const [key, value] of header.entries()) { 4079 setHeader(value, key, rewrite); 4080 } 4081 } else { 4082 header != null && setHeader(valueOrRewrite, header, rewrite); 4083 } 4084 return this; 4085 } 4086 get(header, parser) { 4087 header = normalizeHeader(header); 4088 if (header) { 4089 const key = utils$1.findKey(this, header); 4090 if (key) { 4091 const value = this[key]; 4092 if (!parser) { 4093 return value; 4094 } 4095 if (parser === true) { 4096 return parseTokens(value); 4097 } 4098 if (utils$1.isFunction(parser)) { 4099 return parser.call(this, value, key); 4100 } 4101 if (utils$1.isRegExp(parser)) { 4102 return parser.exec(value); 4103 } 4104 throw new TypeError("parser must be boolean|regexp|function"); 4105 } 4106 } 4107 } 4108 has(header, matcher) { 4109 header = normalizeHeader(header); 4110 if (header) { 4111 const key = utils$1.findKey(this, header); 4112 return !!(key && this[key] !== void 0 && (!matcher || matchHeaderValue(this, this[key], key, matcher))); 4113 } 4114 return false; 4115 } 4116 delete(header, matcher) { 4117 const self2 = this; 4118 let deleted = false; 4119 function deleteHeader(_header) { 4120 _header = normalizeHeader(_header); 4121 if (_header) { 4122 const key = utils$1.findKey(self2, _header); 4123 if (key && (!matcher || matchHeaderValue(self2, self2[key], key, matcher))) { 4124 delete self2[key]; 4125 deleted = true; 4126 } 4127 } 4128 } 4129 if (utils$1.isArray(header)) { 4130 header.forEach(deleteHeader); 4131 } else { 4132 deleteHeader(header); 4133 } 4134 return deleted; 4135 } 4136 clear(matcher) { 4137 const keys = Object.keys(this); 4138 let i2 = keys.length; 4139 let deleted = false; 4140 while (i2--) { 4141 const key = keys[i2]; 4142 if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { 4143 delete this[key]; 4144 deleted = true; 4145 } 4146 } 4147 return deleted; 4148 } 4149 normalize(format) { 4150 const self2 = this; 4151 const headers = {}; 4152 utils$1.forEach(this, (value, header) => { 4153 const key = utils$1.findKey(headers, header); 4154 if (key) { 4155 self2[key] = normalizeValue(value); 4156 delete self2[header]; 4157 return; 4158 } 4159 const normalized = format ? formatHeader(header) : String(header).trim(); 4160 if (normalized !== header) { 4161 delete self2[header]; 4162 } 4163 self2[normalized] = normalizeValue(value); 4164 headers[normalized] = true; 4165 }); 4166 return this; 4167 } 4168 concat(...targets) { 4169 return this.constructor.concat(this, ...targets); 4170 } 4171 toJSON(asStrings) { 4172 const obj = /* @__PURE__ */ Object.create(null); 4173 utils$1.forEach(this, (value, header) => { 4174 value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(", ") : value); 4175 }); 4176 return obj; 4177 } 4178 [Symbol.iterator]() { 4179 return Object.entries(this.toJSON())[Symbol.iterator](); 4180 } 4181 toString() { 4182 return Object.entries(this.toJSON()).map(([header, value]) => header + ": " + value).join("\n"); 4183 } 4184 get [Symbol.toStringTag]() { 4185 return "AxiosHeaders"; 4186 } 4187 static from(thing) { 4188 return thing instanceof this ? thing : new this(thing); 4189 } 4190 static concat(first, ...targets) { 4191 const computed = new this(first); 4192 targets.forEach((target) => computed.set(target)); 4193 return computed; 4194 } 4195 static accessor(header) { 4196 const internals = this[$internals] = this[$internals] = { 4197 accessors: {} 4198 }; 4199 const accessors = internals.accessors; 4200 const prototype2 = this.prototype; 4201 function defineAccessor(_header) { 4202 const lHeader = normalizeHeader(_header); 4203 if (!accessors[lHeader]) { 4204 buildAccessors(prototype2, _header); 4205 accessors[lHeader] = true; 4206 } 4207 } 4208 utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); 4209 return this; 4210 } 4211 }; 4212 AxiosHeaders$1.accessor(["Content-Type", "Content-Length", "Accept", "Accept-Encoding", "User-Agent", "Authorization"]); 4213 utils$1.reduceDescriptors(AxiosHeaders$1.prototype, ({ value }, key) => { 4214 let mapped = key[0].toUpperCase() + key.slice(1); 4215 return { 4216 get: () => value, 4217 set(headerValue) { 4218 this[mapped] = headerValue; 4219 } 4220 }; 4221 }); 4222 utils$1.freezeMethods(AxiosHeaders$1); 4223 function transformData(fns, response) { 4224 const config = this || defaults$1; 4225 const context = response || config; 4226 const headers = AxiosHeaders$1.from(context.headers); 4227 let data = context.data; 4228 utils$1.forEach(fns, function transform(fn) { 4229 data = fn.call(config, data, headers.normalize(), response ? response.status : void 0); 4230 }); 4231 headers.normalize(); 4232 return data; 4233 } 4234 function isCancel$1(value) { 4235 return !!(value && value.__CANCEL__); 4236 } 4237 function CanceledError$1(message, config, request) { 4238 AxiosError$1.call(this, message == null ? "canceled" : message, AxiosError$1.ERR_CANCELED, config, request); 4239 this.name = "CanceledError"; 4240 } 4241 utils$1.inherits(CanceledError$1, AxiosError$1, { 4242 __CANCEL__: true 4243 }); 4244 function settle(resolve, reject, response) { 4245 const validateStatus = response.config.validateStatus; 4246 if (!response.status || !validateStatus || validateStatus(response.status)) { 4247 resolve(response); 4248 } else { 4249 reject(new AxiosError$1( 4250 "Request failed with status code " + response.status, 4251 [AxiosError$1.ERR_BAD_REQUEST, AxiosError$1.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], 4252 response.config, 4253 response.request, 4254 response 4255 )); 4256 } 4257 } 4258 function parseProtocol(url) { 4259 const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); 4260 return match && match[1] || ""; 4261 } 4262 function speedometer(samplesCount, min) { 4263 samplesCount = samplesCount || 10; 4264 const bytes = new Array(samplesCount); 4265 const timestamps = new Array(samplesCount); 4266 let head = 0; 4267 let tail = 0; 4268 let firstSampleTS; 4269 min = min !== void 0 ? min : 1e3; 4270 return function push(chunkLength) { 4271 const now = Date.now(); 4272 const startedAt = timestamps[tail]; 4273 if (!firstSampleTS) { 4274 firstSampleTS = now; 4275 } 4276 bytes[head] = chunkLength; 4277 timestamps[head] = now; 4278 let i2 = tail; 4279 let bytesCount = 0; 4280 while (i2 !== head) { 4281 bytesCount += bytes[i2++]; 4282 i2 = i2 % samplesCount; 4283 } 4284 head = (head + 1) % samplesCount; 4285 if (head === tail) { 4286 tail = (tail + 1) % samplesCount; 4287 } 4288 if (now - firstSampleTS < min) { 4289 return; 4290 } 4291 const passed = startedAt && now - startedAt; 4292 return passed ? Math.round(bytesCount * 1e3 / passed) : void 0; 4293 }; 4294 } 4295 function throttle(fn, freq) { 4296 let timestamp = 0; 4297 let threshold = 1e3 / freq; 4298 let lastArgs; 4299 let timer; 4300 const invoke = (args, now = Date.now()) => { 4301 timestamp = now; 4302 lastArgs = null; 4303 if (timer) { 4304 clearTimeout(timer); 4305 timer = null; 4306 } 4307 fn.apply(null, args); 4308 }; 4309 const throttled = (...args) => { 4310 const now = Date.now(); 4311 const passed = now - timestamp; 4312 if (passed >= threshold) { 4313 invoke(args, now); 4314 } else { 4315 lastArgs = args; 4316 if (!timer) { 4317 timer = setTimeout(() => { 4318 timer = null; 4319 invoke(lastArgs); 4320 }, threshold - passed); 4321 } 4322 } 4323 }; 4324 const flush = () =>
4324 lastArgs && invoke(lastArgs); 4325 return [throttled, flush]; 4326 } 4327 const progressEventReducer = (listener, isDownloadStream, freq = 3) => { 4328 let bytesNotified = 0; 4329 const _speedometer = speedometer(50, 250); 4330 return throttle((e) => { 4331 const loaded = e.loaded; 4332 const total = e.lengthComputable ? e.total : void 0; 4333 const progressBytes = loaded - bytesNotified; 4334 const rate = _speedometer(progressBytes); 4335 const inRange = loaded <= total; 4336 bytesNotified = loaded; 4337 const data = { 4338 loaded, 4339 total, 4340 progress: total ? loaded / total : void 0, 4341 bytes: progressBytes, 4342 rate: rate ? rate : void 0, 4343 estimated: rate && total && inRange ? (total - loaded) / rate : void 0, 4344 event: e, 4345 lengthComputable: total != null, 4346 [isDownloadStream ? "download" : "upload"]: true 4347 }; 4348 listener(data); 4349 }, freq); 4350 }; 4351 const progressEventDecorator = (total, throttled) => { 4352 const lengthComputable = total != null; 4353 return [(loaded) => throttled[0]({ 4354 lengthComputable, 4355 total, 4356 loaded 4357 }), throttled[1]]; 4358 }; 4359 const asyncDecorator = (fn) => (...args) => utils$1.asap(() => fn(...args)); 4360 const isURLSameOrigin = platform.hasStandardBrowserEnv ? /* @__PURE__ */ ((origin2, isMSIE) => (url) => { 4361 url = new URL(url, platform.origin); 4362 return origin2.protocol === url.protocol && origin2.host === url.host && (isMSIE || origin2.port === url.port); 4363 })( 4364 new URL(platform.origin), 4365 platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent) 4366 ) : () => true; 4367 const cookies = platform.hasStandardBrowserEnv ? ( 4368 // Standard browser envs support document.cookie 4369 { 4370 write(name, value, expires, path, domain, secure) { 4371 const cookie = [name + "=" + encodeURIComponent(value)]; 4372 utils$1.isNumber(expires) && cookie.push("expires=" + new Date(expires).toGMTString()); 4373 utils$1.isString(path) && cookie.push("path=" + path); 4374 utils$1.isString(domain) && cookie.push("domain=" + domain); 4375 secure === true && cookie.push("secure"); 4376 document.cookie = cookie.join("; "); 4377 }, 4378 read(name) { 4379 const match = document.cookie.match(new RegExp("(^|;\\s*)(" + name + ")=([^;]*)")); 4380 return match ? decodeURIComponent(match[3]) : null; 4381 }, 4382 remove(name) { 4383 this.write(name, "", Date.now() - 864e5); 4384 } 4385 } 4386 ) : ( 4387 // Non-standard browser env (web workers, react-native) lack needed support. 4388 { 4389 write() { 4390 }, 4391 read() { 4392 return null; 4393 }, 4394 remove() { 4395 } 4396 } 4397 ); 4398 function isAbsoluteURL(url) { 4399 return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); 4400 } 4401 function combineURLs(baseURL, relativeURL) { 4402 return relativeURL ? baseURL.replace(/\/?\/$/, "") + "/" + relativeURL.replace(/^\/+/, "") : baseURL; 4403 } 4404 function buildFullPath(baseURL, requestedURL) { 4405 if (baseURL && !isAbsoluteURL(requestedURL)) { 4406 return combineURLs(baseURL, requestedURL); 4407 } 4408 return requestedURL; 4409 } 4410 const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing; 4411 function mergeConfig$1(config1, config2) { 4412 config2 = config2 || {}; 4413 const config = {}; 4414 function getMergedValue(target, source, prop, caseless) { 4415 if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { 4416 return utils$1.merge.call({ caseless }, target, source); 4417 } else if (utils$1.isPlainObject(source)) { 4418 return utils$1.merge({}, source); 4419 } else if (utils$1.isArray(source)) { 4420 return source.slice(); 4421 } 4422 return source; 4423 } 4424 function mergeDeepProperties(a, b, prop, caseless) { 4425 if (!utils$1.isUndefined(b)) { 4426 return getMergedValue(a, b, prop, caseless); 4427 } else if (!utils$1.isUndefined(a)) { 4428 return getMergedValue(void 0, a, prop, caseless); 4429 } 4430 } 4431 function valueFromConfig2(a, b) { 4432 if (!utils$1.isUndefined(b)) { 4433 return getMergedValue(void 0, b); 4434 } 4435 } 4436 function defaultToConfig2(a, b) { 4437 if (!utils$1.isUndefined(b)) { 4438 return getMergedValue(void 0, b); 4439 } else if (!utils$1.isUndefined(a)) { 4440 return getMergedValue(void 0, a); 4441 } 4442 } 4443 function mergeDirectKeys(a, b, prop) { 4444 if (prop in config2) { 4445 return getMergedValue(a, b); 4446 } else if (prop in config1) { 4447 return getMergedValue(void 0, a); 4448 } 4449 } 4450 const mergeMap = { 4451 url: valueFromConfig2, 4452 method: valueFromConfig2, 4453 data: valueFromConfig2, 4454 baseURL: defaultToConfig2, 4455 transformRequest: defaultToConfig2, 4456 transformResponse: defaultToConfig2, 4457 paramsSerializer: defaultToConfig2, 4458 timeout: defaultToConfig2, 4459 timeoutMessage: defaultToConfig2, 4460 withCredentials: defaultToConfig2, 4461 withXSRFToken: defaultToConfig2, 4462 adapter: defaultToConfig2, 4463 responseType: defaultToConfig2, 4464 xsrfCookieName: defaultToConfig2, 4465 xsrfHeaderName: defaultToConfig2, 4466 onUploadProgress: defaultToConfig2, 4467 onDownloadProgress: defaultToConfig2, 4468 decompress: defaultToConfig2, 4469 maxContentLength: defaultToConfig2,
4470 maxBodyLength: defaultToConfig2, 4471 beforeRedirect: defaultToConfig2, 4472 transport: defaultToConfig2, 4473 httpAgent: defaultToConfig2, 4474 httpsAgent: defaultToConfig2, 4475 cancelToken: defaultToConfig2, 4476 socketPath: defaultToConfig2, 4477 responseEncoding: defaultToConfig2, 4478 validateStatus: mergeDirectKeys, 4479 headers: (a, b, prop) => mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true) 4480 }; 4481 utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { 4482 const merge2 = mergeMap[prop] || mergeDeepProperties; 4483 const configValue = merge2(config1[prop], config2[prop], prop); 4484 utils$1.isUndefined(configValue) && merge2 !== mergeDirectKeys || (config[prop] = configValue); 4485 }); 4486 return config; 4487 } 4488 const resolveConfig$2 = (config) => { 4489 const newConfig = mergeConfig$1({}, config); 4490 let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig; 4491 newConfig.headers = headers = AxiosHeaders$1.from(headers); 4492 newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer); 4493 if (auth) { 4494 headers.set( 4495 "Authorization", 4496 "Basic " + btoa((auth.username || "") + ":" + (auth.password ? unescape(encodeURIComponent(auth.password)) : "")) 4497 ); 4498 } 4499 let contentType; 4500 if (utils$1.isFormData(data)) { 4501 if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { 4502 headers.setContentType(void 0); 4503 } else if ((contentType = headers.getContentType()) !== false) { 4504 const [type, ...tokens] = contentType ? contentType.split(";").map((token) => token.trim()).filter(Boolean) : []; 4505 headers.setContentType([type || "multipart/form-data", ...tokens].join("; ")); 4506 } 4507 } 4508 if (platform.hasStandardBrowserEnv) { 4509 withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig)); 4510 if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin(newConfig.url)) { 4511 const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName); 4512 if (xsrfValue) { 4513 headers.set(xsrfHeaderName, xsrfValue); 4514 } 4515 } 4516 } 4517 return newConfig; 4518 }; 4519 const isXHRAdapterSupported = typeof XMLHttpRequest !== "undefined"; 4520 const xhrAdapter = isXHRAdapterSupported && function(config) { 4521 return new Promise(function dispatchXhrRequest(resolve, reject) { 4522 const _config2 = resolveConfig$2(config); 4523 let requestData = _config2.data; 4524 const requestHeaders = AxiosHeaders$1.from(_config2.headers).normalize(); 4525 let { responseType, onUploadProgress, onDownloadProgress } = _config2; 4526 let onCanceled; 4527 let uploadThrottled, downloadThrottled; 4528 let flushUpload, flushDownload; 4529 function done() { 4530 flushUpload && flushUpload(); 4531 flushDownload && flushDownload(); 4532 _config2.cancelToken && _config2.cancelToken.unsubscribe(onCanceled); 4533 _config2.signal && _config2.signal.removeEventListener("abort", onCanceled); 4534 } 4535 let request = new XMLHttpRequest(); 4536 request.open(_config2.method.toUpperCase(), _config2.url, true); 4537 request.timeout = _config2.timeout; 4538 function onloadend() { 4539 if (!request) { 4540 return; 4541 } 4542 const responseHeaders = AxiosHeaders$1.from( 4543 "getAllResponseHeaders" in request && request.getAllResponseHeaders() 4544 ); 4545 const responseData = !responseType || responseType === "text" || responseType === "json" ? request.responseText : request.response; 4546 const response = { 4547 data: responseData, 4548 status: request.status, 4549 statusText: request.statusText, 4550 headers: responseHeaders, 4551 config, 4552 request 4553 }; 4554 settle(function _resolve(value) { 4555 resolve(value); 4556 done(); 4557 }, function _reject(err) { 4558 reject(err); 4559 done(); 4560 }, response); 4561 request = null; 4562 } 4563 if ("onloadend" in request) { 4564 request.onloadend = onloadend; 4565 } else { 4566 request.onreadystatechange = function handleLoad() { 4567 if (!request || request.readyState !== 4) { 4568 return; 4569 } 4570 if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf("file:") === 0)) { 4571 return; 4572 } 4573 setTimeout(onloadend); 4574 }; 4575 } 4576 request.onabort = function handleAbort() { 4577 if (!request) { 4578 return; 4579 } 4580 reject(new AxiosError$1("Request aborted", AxiosError$1.ECONNABORTED, config, request)); 4581 request = null; 4582 }; 4583 request.onerror = function handleError() { 4584 reject(new AxiosError$1("Network Error", AxiosError$1.ERR_NETWORK, config, request)); 4585 request = null; 4586 }; 4587 request.ontimeout = function handleTimeout() { 4588 let timeoutErrorMessage = _config2.timeout ? "timeout of " + _config2.timeout + "ms exceeded" : "timeout exceeded"; 4589 const transitional = _config2.transitional || transitionalDefaults; 4590 if (_config2.timeoutErrorMessage) { 4591 timeoutErrorMessage = _config2.timeoutErrorMessage; 4592 } 4593 reject(new AxiosError$1( 4594 timeoutErrorMessage, 4595 transitional.clarifyTimeoutError ? AxiosError$1.ETIMEDOUT : AxiosError$1.ECONNABORTED, 4596 config, 4597 request 4598 )); 4599 request = null; 4600 }; 4601 requestData === void 0 && requestHeaders.setContentType(null); 4602 if ("setRequestHeader" in request) {
vendor: 4,767 bytes, lines 4603-4748
4603 utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { 4604 request.setRequestHeader(key, val); 4605 }); 4606 } 4607 if (!utils$1.isUndefined(_config2.withCredentials)) { 4608 request.withCredentials = !!_config2.withCredentials; 4609 } 4610 if (responseType && responseType !== "json") { 4611 request.responseType = _config2.responseType; 4612 } 4613 if (onDownloadProgress) { 4614 [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true); 4615 request.addEventListener("progress", downloadThrottled); 4616 } 4617 if (onUploadProgress && request.upload) { 4618 [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress); 4619 request.upload.addEventListener("progress", uploadThrottled); 4620 request.upload.addEventListener("loadend", flushUpload); 4621 } 4622 if (_config2.cancelToken || _config2.signal) { 4623 onCanceled = (cancel) => { 4624 if (!request) { 4625 return; 4626 } 4627 reject(!cancel || cancel.type ? new CanceledError$1(null, config, request) : cancel); 4628 request.abort(); 4629 request = null; 4630 }; 4631 _config2.cancelToken && _config2.cancelToken.subscribe(onCanceled); 4632 if (_config2.signal) { 4633 _config2.signal.aborted ? onCanceled() : _config2.signal.addEventListener("abort", onCanceled); 4634 } 4635 } 4636 const protocol = parseProtocol(_config2.url); 4637 if (protocol && platform.protocols.indexOf(protocol) === -1) { 4638 reject(new AxiosError$1("Unsupported protocol " + protocol + ":", AxiosError$1.ERR_BAD_REQUEST, config)); 4639 return; 4640 } 4641 request.send(requestData || null); 4642 }); 4643 }; 4644 const composeSignals = (signals, timeout) => { 4645 const { length } = signals = signals ? signals.filter(Boolean) : []; 4646 if (timeout || length) { 4647 let controller = new AbortController(); 4648 let aborted; 4649 const onabort = function(reason) { 4650 if (!aborted) { 4651 aborted = true; 4652 unsubscribe(); 4653 const err = reason instanceof Error ? reason : this.reason; 4654 controller.abort(err instanceof AxiosError$1 ? err : new CanceledError$1(err instanceof Error ? err.message : err)); 4655 } 4656 }; 4657 let timer = timeout && setTimeout(() => { 4658 timer = null; 4659 onabort(new AxiosError$1(`timeout ${timeout} of ms exceeded`, AxiosError$1.ETIMEDOUT)); 4660 }, timeout); 4661 const unsubscribe = () => { 4662 if (signals) { 4663 timer && clearTimeout(timer); 4664 timer = null; 4665 signals.forEach((signal2) => { 4666 signal2.unsubscribe ? signal2.unsubscribe(onabort) : signal2.removeEventListener("abort", onabort); 4667 }); 4668 signals = null; 4669 } 4670 }; 4671 signals.forEach((signal2) => signal2.addEventListener("abort", onabort)); 4672 const { signal } = controller; 4673 signal.unsubscribe = () => utils$1.asap(unsubscribe); 4674 return signal; 4675 } 4676 }; 4677 const streamChunk = function* (chunk, chunkSize) { 4678 let len = chunk.byteLength; 4679 if (len < chunkSize) { 4680 yield chunk; 4681 return; 4682 } 4683 let pos = 0; 4684 let end; 4685 while (pos < len) { 4686 end = pos + chunkSize; 4687 yield chunk.slice(pos, end); 4688 pos = end; 4689 } 4690 }; 4691 const readBytes = async function* (iterable, chunkSize) { 4692 for await (const chunk of readStream(iterable)) { 4693 yield* streamChunk(chunk, chunkSize); 4694 } 4695 }; 4696 const readStream = async function* (stream) { 4697 if (stream[Symbol.asyncIterator]) { 4698 yield* stream; 4699 return; 4700 } 4701 const reader = stream.getReader(); 4702 try { 4703 for (; ; ) { 4704 const { done, value } = await reader.read(); 4705 if (done) { 4706 break; 4707 } 4708 yield value; 4709 } 4710 } finally { 4711 await reader.cancel(); 4712 } 4713 }; 4714 const trackStream = (stream, chunkSize, onProgress, onFinish) => { 4715 const iterator = readBytes(stream, chunkSize); 4716 let bytes = 0; 4717 let done; 4718 let _onFinish = (e) => { 4719 if (!done) { 4720 done = true; 4721 onFinish && onFinish(e); 4722 } 4723 }; 4724 return new ReadableStream({ 4725 async pull(controller) { 4726 try { 4727 const { done: done2, value } = await iterator.next(); 4728 if (done2) { 4729 _onFinish(); 4730 controller.close(); 4731 return; 4732 } 4733 let len = value.byteLength; 4734 if (onProgress) { 4735 let loadedBytes = bytes += len; 4736 onProgress(loadedBytes); 4737 } 4738 controller.enqueue(new Uint8Array(value)); 4739 } catch (err) { 4740 _onFinish(err); 4741 throw err; 4742 } 4743 }, 4744 cancel(reason) { 4745 _onFinish(reason); 4746 return iterator.return(); 4747 } 4748 }, {
4749 highWaterMark: 2 4750 }); 4751 }; 4752 const isFetchSupported = typeof fetch === "function" && typeof Request === "function" && typeof Response === "function"; 4753 const isReadableStreamSupported = isFetchSupported && typeof ReadableStream === "function"; 4754 const encodeText = isFetchSupported && (typeof TextEncoder === "function" ? /* @__PURE__ */ ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) : async (str) => new Uint8Array(await new Response(str).arrayBuffer())); 4755 const test = (fn, ...args) => { 4756 try { 4757 return !!fn(...args); 4758 } catch (e) { 4759 return false; 4760 } 4761 }; 4762 const supportsRequestStream = isReadableStreamSupported && test(() => { 4763 let duplexAccessed = false; 4764 const hasContentType = new Request(platform.origin, { 4765 body: new ReadableStream(), 4766 method: "POST", 4767 get duplex() { 4768 duplexAccessed = true; 4769 return "half"; 4770 } 4771 }).headers.has("Content-Type"); 4772 return duplexAccessed && !hasContentType; 4773 }); 4774 const DEFAULT_CHUNK_SIZE = 64 * 1024; 4775 const supportsResponseStream = isReadableStreamSupported && test(() => utils$1.isReadableStream(new Response("").body)); 4776 const resolvers = { 4777 stream: supportsResponseStream && ((res) => res.body) 4778 }; 4779 isFetchSupported && ((res) => { 4780 ["text", "arrayBuffer", "blob", "formData", "stream"].forEach((type) => { 4781 !resolvers[type] && (resolvers[type] = utils$1.isFunction(res[type]) ? (res2) => res2[type]() : (_, config) => { 4782 throw new AxiosError$1(`Response type '${type}' is not supported`, AxiosError$1.ERR_NOT_SUPPORT, config); 4783 }); 4784 }); 4785 })(new Response()); 4786 const getBodyLength = async (body) => { 4787 if (body == null) { 4788 return 0; 4789 } 4790 if (utils$1.isBlob(body)) { 4791 return body.size; 4792 } 4793 if (utils$1.isSpecCompliantForm(body)) { 4794 const _request = new Request(platform.origin, { 4795 method: "POST", 4796 body 4797 }); 4798 return (await _request.arrayBuffer()).byteLength; 4799 } 4800 if (utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) { 4801 return body.byteLength; 4802 } 4803 if (utils$1.isURLSearchParams(body)) { 4804 body = body + ""; 4805 } 4806 if (utils$1.isString(body)) { 4807 return (await encodeText(body)).byteLength; 4808 } 4809 }; 4810 const resolveBodyLength = async (headers, body) => { 4811 const length = utils$1.toFiniteNumber(headers.getContentLength()); 4812 return length == null ? getBodyLength(body) : length; 4813 }; 4814 const fetchAdapter = isFetchSupported && (async (config) => { 4815 let { 4816 url, 4817 method, 4818 data, 4819 signal, 4820 cancelToken, 4821 timeout, 4822 onDownloadProgress, 4823 onUploadProgress, 4824 responseType, 4825 headers, 4826 withCredentials = "same-origin", 4827 fetchOptions 4828 } = resolveConfig$2(config); 4829 responseType = responseType ? (responseType + "").toLowerCase() : "text"; 4830 let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout); 4831 let request; 4832 const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => { 4833 composedSignal.unsubscribe(); 4834 }); 4835 let requestContentLength; 4836 try { 4837 if (onUploadProgress && supportsRequestStream && method !== "get" && method !== "head" && (requestContentLength = await resolveBodyLength(headers, data)) !== 0) { 4838 let _request = new Request(url, { 4839 method: "POST", 4840 body: data, 4841 duplex: "half" 4842 }); 4843 let contentTypeHeader; 4844 if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get("content-type"))) { 4845 headers.setContentType(contentTypeHeader); 4846 } 4847 if (_request.body) { 4848 const [onProgress, flush] = progressEventDecorator( 4849 requestContentLength, 4850 progressEventReducer(asyncDecorator(onUploadProgress)) 4851 ); 4852 data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush); 4853 } 4854 } 4855 if (!utils$1.isString(withCredentials)) { 4856 withCredentials = withCredentials ? "include" : "omit"; 4857 } 4858 const isCredentialsSupported = "credentials" in Request.prototype;
vendor: 7,047 bytes, lines 4859-5049
4859 request = new Request(url, { 4860 ...fetchOptions, 4861 signal: composedSignal, 4862 method: method.toUpperCase(), 4863 headers: headers.normalize().toJSON(), 4864 body: data, 4865 duplex: "half", 4866 credentials: isCredentialsSupported ? withCredentials : void 0 4867 }); 4868 let response = await fetch(request); 4869 const isStreamResponse = supportsResponseStream && (responseType === "stream" || responseType === "response"); 4870 if (supportsResponseStream && (onDownloadProgress || isStreamResponse && unsubscribe)) { 4871 const options = {}; 4872 ["status", "statusText", "headers"].forEach((prop) => { 4873 options[prop] = response[prop]; 4874 }); 4875 const responseContentLength = utils$1.toFiniteNumber(response.headers.get("content-length")); 4876 const [onProgress, flush] = onDownloadProgress && progressEventDecorator( 4877 responseContentLength, 4878 progressEventReducer(asyncDecorator(onDownloadProgress), true) 4879 ) || []; 4880 response = new Response( 4881 trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => { 4882 flush && flush(); 4883 unsubscribe && unsubscribe(); 4884 }), 4885 options 4886 ); 4887 } 4888 responseType = responseType || "text"; 4889 let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || "text"](response, config); 4890 !isStreamResponse && unsubscribe && unsubscribe(); 4891 return await new Promise((resolve, reject) => { 4892 settle(resolve, reject, { 4893 data: responseData, 4894 headers: AxiosHeaders$1.from(response.headers), 4895 status: response.status, 4896 statusText: response.statusText, 4897 config, 4898 request 4899 }); 4900 }); 4901 } catch (err) { 4902 unsubscribe && unsubscribe(); 4903 if (err && err.name === "TypeError" && /fetch/i.test(err.message)) { 4904 throw Object.assign( 4905 new AxiosError$1("Network Error", AxiosError$1.ERR_NETWORK, config, request), 4906 { 4907 cause: err.cause || err 4908 } 4909 ); 4910 } 4911 throw AxiosError$1.from(err, err && err.code, config, request); 4912 } 4913 }); 4914 const knownAdapters = { 4915 http: httpAdapter, 4916 xhr: xhrAdapter, 4917 fetch: fetchAdapter 4918 }; 4919 utils$1.forEach(knownAdapters, (fn, value) => { 4920 if (fn) { 4921 try { 4922 Object.defineProperty(fn, "name", { value }); 4923 } catch (e) { 4924 } 4925 Object.defineProperty(fn, "adapterName", { value }); 4926 } 4927 }); 4928 const renderReason = (reason) => `- ${reason}`; 4929 const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false; 4930 const adapters = { 4931 getAdapter: (adapters2) => { 4932 adapters2 = utils$1.isArray(adapters2) ? adapters2 : [adapters2]; 4933 const { length } = adapters2; 4934 let nameOrAdapter; 4935 let adapter; 4936 const rejectedReasons = {}; 4937 for (let i2 = 0; i2 < length; i2++) { 4938 nameOrAdapter = adapters2[i2]; 4939 let id; 4940 adapter = nameOrAdapter; 4941 if (!isResolvedHandle(nameOrAdapter)) { 4942 adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; 4943 if (adapter === void 0) { 4944 throw new AxiosError$1(`Unknown adapter '${id}'`); 4945 } 4946 } 4947 if (adapter) { 4948 break; 4949 } 4950 rejectedReasons[id || "#" + i2] = adapter; 4951 } 4952 if (!adapter) { 4953 const reasons = Object.entries(rejectedReasons).map( 4954 ([id, state]) => `adapter ${id} ` + (state === false ? "is not supported by the environment" : "is not available in the build") 4955 ); 4956 let s = length ? reasons.length > 1 ? "since :\n" + reasons.map(renderReason).join("\n") : " " + renderReason(reasons[0]) : "as no adapter specified"; 4957 throw new AxiosError$1( 4958 `There is no suitable adapter to dispatch the request ` + s, 4959 "ERR_NOT_SUPPORT" 4960 ); 4961 } 4962 return adapter; 4963 }, 4964 adapters: knownAdapters 4965 }; 4966 function throwIfCancellationRequested(config) { 4967 if (config.cancelToken) { 4968 config.cancelToken.throwIfRequested(); 4969 } 4970 if (config.signal && config.signal.aborted) { 4971 throw new CanceledError$1(null, config); 4972 } 4973 } 4974 function dispatchRequest(config) { 4975 throwIfCancellationRequested(config); 4976 config.headers = AxiosHeaders$1.from(config.headers); 4977 config.data = transformData.call( 4978 config, 4979 config.transformRequest 4980 ); 4981 if (["post", "put", "patch"].indexOf(config.method) !== -1) { 4982 config.headers.setContentType("application/x-www-form-urlencoded", false); 4983 } 4984 const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter); 4985 return adapter(config).then(function onAdapterResolution(response) { 4986 throwIfCancellationRequested(config); 4987 response.data = transformData.call( 4988 config, 4989 config.transformResponse, 4990 response 4991 ); 4992 response.headers = AxiosHeaders$1.from(response.headers); 4993 return response; 4994 }, function onAdapterRejection(reason) { 4995 if (!isCancel$1(reason)) { 4996 throwIfCancellationRequested(config); 4997 if (reason && reason.response) { 4998 reason.response.data = transformData.call( 4999 config, 5000 config.transformResponse, 5001 reason.response 5002 ); 5003 reason.response.headers = AxiosHeaders$1.from(reason.response.headers); 5004 } 5005 } 5006 return Promise.reject(reason); 5007 }); 5008 } 5009 const VERSION$1 = "1.7.9"; 5010 const validators$1 = {}; 5011 ["object", "boolean", "number", "function", "string", "symbol"].forEach((type, i2) => { 5012 validators$1[type] = function validator2(thing) { 5013 return typeof thing === type || "a" + (i2 < 1 ? "n " : " ") + type; 5014 }; 5015 }); 5016 const deprecatedWarnings = {}; 5017 validators$1.transitional = function transitional(validator2, version, message) { 5018 function formatMessage(opt, desc) { 5019 return "[Axios v" + VERSION$1 + "] Transitional option '" + opt + "'" + desc + (message ? ". " + message : ""); 5020 } 5021 return (value, opt, opts) => { 5022 if (validator2 === false) { 5023 throw new AxiosError$1( 5024 formatMessage(opt, " has been removed" + (version ? " in " + version : "")), 5025 AxiosError$1.ERR_DEPRECATED 5026 ); 5027 } 5028 if (version && !deprecatedWarnings[opt]) { 5029 deprecatedWarnings[opt] = true; 5030 console.warn( 5031 formatMessage( 5032 opt, 5033 " has been deprecated since v" + version + " and will be removed in the near future" 5034 ) 5035 ); 5036 } 5037 return validator2 ? validator2(value, opt, opts) : true; 5038 }; 5039 }; 5040 validators$1.spelling = function spelling(correctSpelling) { 5041 return (value, opt) => { 5042 console.warn(`${opt} is likely a misspelling of ${correctSpelling}`); 5043 return true; 5044 }; 5045 }; 5046 function assertOptions(options, schema, allowUnknown) { 5047 if (typeof options !== "object") { 5048 throw new AxiosError$1("options must be an object", AxiosError$1.ERR_BAD_OPTION_VALUE); 5049 }
vendor: 9,543 bytes, lines 5050-5349
5050 const keys = Object.keys(options); 5051 let i2 = keys.length; 5052 while (i2-- > 0) { 5053 const opt = keys[i2]; 5054 const validator2 = schema[opt]; 5055 if (validator2) { 5056 const value = options[opt]; 5057 const result = value === void 0 || validator2(value, opt, options); 5058 if (result !== true) { 5059 throw new AxiosError$1("option " + opt + " must be " + result, AxiosError$1.ERR_BAD_OPTION_VALUE); 5060 } 5061 continue; 5062 } 5063 if (allowUnknown !== true) { 5064 throw new AxiosError$1("Unknown option " + opt, AxiosError$1.ERR_BAD_OPTION); 5065 } 5066 } 5067 } 5068 const validator = { 5069 assertOptions, 5070 validators: validators$1 5071 }; 5072 const validators = validator.validators; 5073 let Axios$1 = class Axios { 5074 constructor(instanceConfig) { 5075 this.defaults = instanceConfig; 5076 this.interceptors = { 5077 request: new InterceptorManager(), 5078 response: new InterceptorManager() 5079 }; 5080 } 5081 /** 5082 * Dispatch a request 5083 * 5084 * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) 5085 * @param {?Object} config 5086 * 5087 * @returns {Promise} The Promise to be fulfilled 5088 */ 5089 async request(configOrUrl, config) { 5090 try { 5091 return await this._request(configOrUrl, config); 5092 } catch (err) { 5093 if (err instanceof Error) { 5094 let dummy = {}; 5095 Error.captureStackTrace ? Error.captureStackTrace(dummy) : dummy = new Error(); 5096 const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, "") : ""; 5097 try { 5098 if (!err.stack) { 5099 err.stack = stack; 5100 } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ""))) { 5101 err.stack += "\n" + stack; 5102 } 5103 } catch (e) { 5104 } 5105 } 5106 throw err; 5107 } 5108 } 5109 _request(configOrUrl, config) { 5110 if (typeof configOrUrl === "string") { 5111 config = config || {}; 5112 config.url = configOrUrl; 5113 } else { 5114 config = configOrUrl || {}; 5115 } 5116 config = mergeConfig$1(this.defaults, config); 5117 const { transitional, paramsSerializer, headers } = config; 5118 if (transitional !== void 0) { 5119 validator.assertOptions(transitional, { 5120 silentJSONParsing: validators.transitional(validators.boolean), 5121 forcedJSONParsing: validators.transitional(validators.boolean), 5122 clarifyTimeoutError: validators.transitional(validators.boolean) 5123 }, false); 5124 } 5125 if (paramsSerializer != null) { 5126 if (utils$1.isFunction(paramsSerializer)) { 5127 config.paramsSerializer = { 5128 serialize: paramsSerializer 5129 }; 5130 } else { 5131 validator.assertOptions(paramsSerializer, { 5132 encode: validators.function, 5133 serialize: validators.function 5134 }, true); 5135 } 5136 } 5137 validator.assertOptions(config, { 5138 baseUrl: validators.spelling("baseURL"), 5139 withXsrfToken: validators.spelling("withXSRFToken") 5140 }, true); 5141 config.method = (config.method || this.defaults.method || "get").toLowerCase(); 5142 let contextHeaders = headers && utils$1.merge( 5143 headers.common, 5144 headers[config.method] 5145 ); 5146 headers && utils$1.forEach( 5147 ["delete", "get", "head", "post", "put", "patch", "common"], 5148 (method) => { 5149 delete headers[method]; 5150 } 5151 ); 5152 config.headers = AxiosHeaders$1.concat(contextHeaders, headers); 5153 const requestInterceptorChain = []; 5154 let synchronousRequestInterceptors = true; 5155 this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { 5156 if (typeof interceptor.runWhen === "function" && interceptor.runWhen(config) === false) { 5157 return; 5158 } 5159 synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; 5160 requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); 5161 }); 5162 const responseInterceptorChain = []; 5163 this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { 5164 responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); 5165 }); 5166 let promise; 5167 let i2 = 0; 5168 let len; 5169 if (!synchronousRequestInterceptors) { 5170 const chain = [dispatchRequest.bind(this), void 0]; 5171 chain.unshift.apply(chain, requestInterceptorChain); 5172 chain.push.apply(chain, responseInterceptorChain); 5173 len = chain.length; 5174 promise = Promise.resolve(config); 5175 while (i2 < len) { 5176 promise = promise.then(chain[i2++], chain[i2++]); 5177 } 5178 return promise; 5179 } 5180 len = requestInterceptorChain.length; 5181 let newConfig = config; 5182 i2 = 0; 5183 while (i2 < len) { 5184 const onFulfilled = requestInterceptorChain[i2++]; 5185 const onRejected = requestInterceptorChain[i2++]; 5186 try { 5187 newConfig = onFulfilled(newConfig); 5188 } catch (error) { 5189 onRejected.call(this, error); 5190 break; 5191 } 5192 } 5193 try { 5194 promise = dispatchRequest.call(this, newConfig); 5195 } catch (error) { 5196 return Promise.reject(error); 5197 } 5198 i2 = 0; 5199 len = responseInterceptorChain.length; 5200 while (i2 < len) { 5201 promise = promise.then(responseInterceptorChain[i2++], responseInterceptorChain[i2++]); 5202 } 5203 return promise; 5204 } 5205 getUri(config) { 5206 config = mergeConfig$1(this.defaults, config); 5207 const fullPath = buildFullPath(config.baseURL, config.url); 5208 return buildURL(fullPath, config.params, config.paramsSerializer); 5209 } 5210 }; 5211 utils$1.forEach(["delete", "get", "head", "options"], function forEachMethodNoData(method) { 5212 Axios$1.prototype[method] = function(url, config) { 5213 return this.request(mergeConfig$1(config || {}, { 5214 method, 5215 url, 5216 data: (config || {}).data 5217 })); 5218 }; 5219 }); 5220 utils$1.forEach(["post", "put", "patch"], function forEachMethodWithData(method) { 5221 function generateHTTPMethod(isForm) { 5222 return function httpMethod(url, data, config) { 5223 return this.request(mergeConfig$1(config || {}, { 5224 method, 5225 headers: isForm ? { 5226 "Content-Type": "multipart/form-data" 5227 } : {}, 5228 url, 5229 data 5230 })); 5231 }; 5232 } 5233 Axios$1.prototype[method] = generateHTTPMethod(); 5234 Axios$1.prototype[method + "Form"] = generateHTTPMethod(true); 5235 }); 5236 let CancelToken$1 = class CancelToken2 { 5237 constructor(executor) { 5238 if (typeof executor !== "function") { 5239 throw new TypeError("executor must be a function."); 5240 } 5241 let resolvePromise; 5242 this.promise = new Promise(function promiseExecutor(resolve) { 5243 resolvePromise = resolve; 5244 }); 5245 const token = this; 5246 this.promise.then((cancel) => { 5247 if (!token._listeners) return; 5248 let i2 = token._listeners.length; 5249 while (i2-- > 0) { 5250 token._listeners[i2](cancel); 5251 } 5252 token._listeners = null; 5253 }); 5254 this.promise.then = (onfulfilled) => { 5255 let _resolve; 5256 const promise = new Promise((resolve) => { 5257 token.subscribe(resolve); 5258 _resolve = resolve; 5259 }).then(onfulfilled); 5260 promise.cancel = function reject() { 5261 token.unsubscribe(_resolve); 5262 }; 5263 return promise; 5264 }; 5265 executor(function cancel(message, config, request) { 5266 if (token.reason) { 5267 return; 5268 } 5269 token.reason = new CanceledError$1(message, config, request); 5270 resolvePromise(token.reason); 5271 }); 5272 } 5273 /** 5274 * Throws a `CanceledError` if cancellation has been requested. 5275 */ 5276 throwIfRequested() { 5277 if (this.reason) { 5278 throw this.reason; 5279 } 5280 } 5281 /** 5282 * Subscribe to the cancel signal 5283 */ 5284 subscribe(listener) { 5285 if (this.reason) { 5286 listener(this.reason); 5287 return; 5288 } 5289 if (this._listeners) { 5290 this._listeners.push(listener); 5291 } else { 5292 this._listeners = [listener]; 5293 } 5294 } 5295 /** 5296 * Unsubscribe from the cancel signal 5297 */ 5298 unsubscribe(listener) { 5299 if (!this._listeners) { 5300 return; 5301 } 5302 const index = this._listeners.indexOf(listener); 5303 if (index !== -1) { 5304 this._listeners.splice(index, 1); 5305 } 5306 } 5307 toAbortSignal() { 5308 const controller = new AbortController(); 5309 const abort = (err) => { 5310 controller.abort(err); 5311 }; 5312 this.subscribe(abort); 5313 controller.signal.unsubscribe = () => this.unsubscribe(abort); 5314 return controller.signal; 5315 } 5316 /** 5317 * Returns an object that contains a new `CancelToken` and a function that, when called, 5318 * cancels the `CancelToken`. 5319 */ 5320 static source() { 5321 let cancel; 5322 const token = new CancelToken2(function executor(c) { 5323 cancel = c; 5324 }); 5325 return { 5326 token, 5327 cancel 5328 }; 5329 } 5330 }; 5331 function spread$1(callback) { 5332 return function wrap2(arr) { 5333 return callback.apply(null, arr); 5334 }; 5335 } 5336 function isAxiosError$1(payload) { 5337 return utils$1.isObject(payload) && payload.isAxiosError === true; 5338 } 5339 const HttpStatusCode$1 = { 5340 Continue: 100, 5341 SwitchingProtocols: 101, 5342 Processing: 102, 5343 EarlyHints: 103, 5344 Ok: 200, 5345 Created: 201, 5346 Accepted: 202, 5347 NonAuthoritativeInformation: 203, 5348 NoContent: 204, 5349 ResetContent: 205,
5350 PartialContent: 206, 5351 MultiStatus: 207, 5352 AlreadyReported: 208, 5353 ImUsed: 226, 5354 MultipleChoices: 300, 5355 MovedPermanently: 301, 5356 Found: 302, 5357 SeeOther: 303, 5358 NotModified: 304, 5359 UseProxy: 305, 5360 Unused: 306, 5361 TemporaryRedirect: 307, 5362 PermanentRedirect: 308, 5363 BadRequest: 400, 5364 Unauthorized: 401, 5365 PaymentRequired: 402, 5366 Forbidden: 403, 5367 NotFound: 404, 5368 MethodNotAllowed: 405, 5369 NotAcceptable: 406, 5370 ProxyAuthenticationRequired: 407, 5371 RequestTimeout: 408, 5372 Conflict: 409, 5373 Gone: 410, 5374 LengthRequired: 411, 5375 PreconditionFailed: 412, 5376 PayloadTooLarge: 413, 5377 UriTooLong: 414, 5378 UnsupportedMediaType: 415, 5379 RangeNotSatisfiable: 416, 5380 ExpectationFailed: 417, 5381 ImATeapot: 418, 5382 MisdirectedRequest: 421, 5383 UnprocessableEntity: 422, 5384 Locked: 423, 5385 FailedDependency: 424, 5386 TooEarly: 425, 5387 UpgradeRequired: 426, 5388 PreconditionRequired: 428, 5389 TooManyRequests: 429, 5390 RequestHeaderFieldsTooLarge: 431, 5391 UnavailableForLegalReasons: 451, 5392 InternalServerError: 500, 5393 NotImplemented: 501, 5394 BadGateway: 502, 5395 ServiceUnavailable: 503, 5396 GatewayTimeout: 504, 5397 HttpVersionNotSupported: 505, 5398 VariantAlsoNegotiates: 506, 5399 InsufficientStorage: 507, 5400 LoopDetected: 508, 5401 NotExtended: 510, 5402 NetworkAuthenticationRequired: 511 5403 }; 5404 Object.entries(HttpStatusCode$1).forEach(([key, value]) => { 5405 HttpStatusCode$1[value] = key; 5406 }); 5407 function createInstance(defaultConfig) { 5408 const context = new Axios$1(defaultConfig); 5409 const instance = bind(Axios$1.prototype.request, context); 5410 utils$1.extend(instance, Axios$1.prototype, context, { allOwnKeys: true }); 5411 utils$1.extend(instance, context, null, { allOwnKeys: true }); 5412 instance.create = function create(instanceConfig) { 5413 return createInstance(mergeConfig$1(defaultConfig, instanceConfig)); 5414 }; 5415 return instance; 5416 } 5417 const axios = createInstance(defaults$1); 5418 axios.Axios = Axios$1; 5419 axios.CanceledError = CanceledError$1; 5420 axios.CancelToken = CancelToken$1; 5421 axios.isCancel = isCancel$1; 5422 axios.VERSION = VERSION$1; 5423 axios.toFormData = toFormData$1; 5424 axios.AxiosError = AxiosError$1; 5425 axios.Cancel = axios.CanceledError; 5426 axios.all = function all2(promises) { 5427 return Promise.all(promises); 5428 }; 5429 axios.spread = spread$1; 5430 axios.isAxiosError = isAxiosError$1; 5431 axios.mergeConfig = mergeConfig$1; 5432 axios.AxiosHeaders = AxiosHeaders$1; 5433 axios.formToJSON = (thing) => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); 5434 axios.getAdapter = adapters.getAdapter; 5435 axios.HttpStatusCode = HttpStatusCode$1; 5436 axios.default = axios; 5437 const { 5438 Axios, 5439 AxiosError, 5440 CanceledError, 5441 isCancel, 5442 CancelToken, 5443 VERSION, 5444 all, 5445 Cancel, 5446 isAxiosError, 5447 spread, 5448 toFormData, 5449 AxiosHeaders, 5450 HttpStatusCode, 5451 formToJSON, 5452 getAdapter, 5453 mergeConfig 5454 } = axios; 5455 class ArticleListing { 5456 constructor() { 5457 var _a, _b; 5458 this.$el = document.querySelector(".js-article-listing"); 5459 if (!this.$el) return; 5460 this.currentPage = 1; 5461 this.$header = document.querySelector(".js-header"); 5462 this.$loadMoreButton = this.$el.querySelector(".js-article-listing-load-more"); 5463 this.$grid = this.$el.querySelector(".js-article-listing-grid"); 5464 this.$categorySelect = this.$el.querySelector(".js-article-listing-category-select"); 5465 this.$typeSelect = this.$el.querySelector(".js-article-listing-type-select"); 5466 this.$numberOfVisibleArticles = this.$el.querySelector(".js-article-listing-visible-articles"); 5467 this.$totalArticles = this.$el.querySelector(".js-article-listing-total-articles"); 5468 this.$resetButton = this.$el.querySelector(".js-article-listing-reset-filters"); 5469 (_a = this.$categorySelect) == null ? void 0 : _a.addEventListener("change", this.filterByCategory.bind(this)); 5470 (_b = this.$typeSelect) == null ? void 0 : _b.addEventListener("change", this.onTypeSelect.bind(this)); 5471 if (this.$loadMoreButton) { 5472 this.$loadMoreButtonText = this.$loadMoreButton.querySelector(".c-cta__label"); 5473 this.originalLoadMoreButtonText = this.$loadMoreButtonText.innerText; 5474 this.$loadMoreButton.addEventListener("click", this.loadMore.bind(this)); 5475 } 5476 if (this.$resetButton) { 5477 this.$resetButton.addEventListener("click", this.resetFilters.bind(this)); 5478 } 5479 this.updateResetFilters(); 5480 } 5481 async execute(params, scrollToTop = true, reset = false) { 5482 if (reset) { 5483 this.currentPage = 1; 5484 } else { 5485 this.currentPage++; 5486 } 5487 this.$grid.classList.add("is-loading"); 5488 if (this.$loadMoreButton) { 5489 this.$loadMoreButtonText.innerText = "Loading"; 5490 this.$loadMoreButton.disabled = true; 5491 } 5492 const payload = new FormData(); 5493 payload.append("paged", this.currentPage);
5494 Object.keys(params).forEach((key) => { 5495 payload.append(key, params[key]); 5496 }); 5497 let category = void 0; 5498 if (this.selectedCategory) { 5499 category = this.selectedCategory; 5500 } else if (this.$loadMoreButton && this.$loadMoreButton.dataset.category) { 5501 category = this.$loadMoreButton.dataset.category; 5502 } 5503 if (category) { 5504 payload.append("category", category); 5505 } 5506 if (this.$el.dataset.postType === "post") { 5507 payload.append("action", "theme_articles_load_more"); 5508 } 5509 if (this.$el.dataset.postType === "webinars") { 5510 payload.append("action", "theme_webinars_load_more"); 5511 } 5512 if (this.$el.dataset.postType === "guides") { 5513 payload.append("action", "theme_guides_load_more"); 5514 } 5515 try { 5516 const { data } = await axios.post(window.site.api.ajax, payload); 5517 if (this.$loadMoreButton) { 5518 this.$loadMoreButtonText.innerText = this.originalLoadMoreButtonText; 5519 this.$loadMoreButton.disabled = false; 5520 if (data.is_last_page) { 5521 this.$loadMoreButton.style.display = "none"; 5522 } else { 5523 this.$loadMoreButton.style.display = "block"; 5524 } 5525 } 5526 if (data) { 5527 this.$grid.innerHTML = reset ? data.response : this.$grid.innerHTML + data.response; 5528 this.$grid.classList.remove("is-loading"); 5529 this.updateTotal(data.total_articles, scrollToTop); 5530 this.updateResetFilters(); 5531 } else { 5532 if (this.$loadMoreButton) { 5533 this.$loadMoreButton.style.display = "none"; 5534 } 5535 this.updateResetFilters(); 5536 } 5537 } catch (error) { 5538 this.currentPage = 1; 5539 this.$grid.classList.remove("is-loading"); 5540 } 5541 } 5542 async loadMore() { 5543 const payload = {}; 5544 if (this.selectedCategory) { 5545 payload["category"] = this.selectedCategory; 5546 } 5547 await this.execute(payload, false); 5548 } 5549 async filterByCategory(e) { 5550 const payload = {}; 5551 if (e.target.value === "all") { 5552 this.selectedCategory = void 0; 5553 } else { 5554 this.selectedCategory = e.target.value; 5555 } 5556 if (this.category) { 5557 payload["category"] = this.selectedCategory; 5558 } 5559 await this.execute(payload, true, true); 5560 } 5561 async resetFilters() { 5562 this.selectedCategory = void 0; 5563 this.$categorySelect.selectedIndex = 0; 5564 await this.execute({}, true, true); 5565 } 5566 updateTotal(totalArticles, scrollToTop = true) { 5567 const total = this.$grid.querySelectorAll(".js-article-card").length; 5568 this.$numberOfVisibleArticles.innerText = total; 5569 this.$totalArticles.innerText = totalArticles; 5570 this.$grid.classList.remove("is-loading"); 5571 if (scrollToTop) { 5572 window.scrollTo({ 5573 top: this.$el.offsetTop - this.$header.offsetHeight, 5574 behavior: "smooth" 5575 }); 5576 } 5577 } 5578 updateResetFilters() { 5579 if (!this.$resetButton) return; 5580 if (this.currentPage > 1 || this.selectedCategory) { 5581 this.$resetButton.style.display = "block"; 5582 } else { 5583 this.$resetButton.style.display = "none"; 5584 } 5585 } 5586 onTypeSelect(e) { 5587 window.location = e.currentTarget.value; 5588 } 5589 } 5590 class BecomePartnerForm { 5591 constructor() { 5592 this.$el = document.querySelector(".js-become-partner-form"); 5593 if (!this.$el) return; 5594 this.$carousels = this.$el.querySelectorAll(".js-become-partner-form-logo-carousel"); 5595 this.$carousels.forEach(($carousel) => new Flickity($carousel, { 5596 imagesLoaded: true, 5597 prevNextButtons: false, 5598 pageDots: true, 5599 autoPlay: 3e3 5600 })); 5601 } 5602 } 5603 class BookDemo { 5604 constructor() { 5605 this.$el = document.querySelector(".js-book-demo"); 5606 if (!this.$el) return; 5607 this.$cta = this.$el.querySelector("a.c-cta"); 5608 if (this.$cta && this.$cta.href.indexOf("#") > -1) { 5609 this.$cta.addEventListener("click", (e) => { 5610 e.preventDefault(); 5611 const id = this.$cta.href.split("#")[1]; 5612 const $target = document.getElementById(id); 5613 $target.scrollIntoView({ behavior: "smooth" }); 5614 }); 5615 } 5616 } 5617 } 5618 class BookDemoForm { 5619 constructor() { 5620 this.$el = document.querySelector(".js-book-demo-form"); 5621 if (!this.$el) return; 5622 this.$carousels = this.$el.querySelectorAll(".js-book-demo-form-logo-carousel");
5623 this.$carousels.forEach(($carousel) => new Flickity($carousel, { 5624 imagesLoaded: true, 5625 prevNextButtons: false, 5626 pageDots: true, 5627 autoPlay: 3e3 5628 })); 5629 } 5630 } 5631 class BookNowForm { 5632 constructor() { 5633 const $els = document.querySelectorAll(".js-book-now-form"); 5634 $els.forEach(($el) => new Form($el)); 5635 } 5636 } 5637 class Form { 5638 constructor($el) { 5639 this.$el = $el; 5640 this.$el.addEventListener("submit", this.onSubmit.bind(this)); 5641 } 5642 onSubmit(e) { 5643 e.preventDefault(); 5644 const email = this.$el.querySelector(".js-book-now-form-email").value; 5645 let path = `/book-a-demo/?email=${email}`; 5646 window.location = path; 5647 } 5648 } 5649 class Callouts { 5650 constructor() { 5651 this.$els = document.querySelectorAll(".js-callouts"); 5652 this.$els.forEach(($el) => { 5653 const activeClass = "is-active"; 5654 const $tabs = $el.querySelectorAll(".js-callouts-tab"); 5655 const $carousel = $el.querySelector(".js-callouts-carousel"); 5656 const $prevButtons = $el.querySelectorAll(".js-callouts-prev"); 5657 const $nextButtons = $el.querySelectorAll(".js-callouts-next"); 5658 const carousel = new Flickity($carousel, { 5659 cellAlign: "left", 5660 contain: true, 5661 prevNextButtons: false, 5662 pageDots: false, 5663 wrapAround: true, 5664 imagesLoaded: true 5665 }); 5666 carousel.on("select", (index) => { 5667 var _a; 5668 $tabs.forEach(($tab) => $tab.classList.remove(activeClass)); 5669 (_a = $tabs[index]) == null ? void 0 : _a.classList.add(activeClass); 5670 }); 5671 $prevButtons.forEach(($prevButton) => { 5672 $prevButton.addEventListener("click", () => { 5673 carousel.previous(); 5674 }); 5675 }); 5676 $nextButtons.forEach(($nextButton) => { 5677 $nextButton.addEventListener("click", () => { 5678 carousel.next(); 5679 }); 5680 }); 5681 $tabs.forEach(($tab, index) => { 5682 $tab.addEventListener("click", () => { 5683 carousel.select(index); 5684 }); 5685 }); 5686 }); 5687 } 5688 } 5689 class CarouselContent { 5690 constructor() { 5691 const $els = document.querySelectorAll(".js-carousel-content"); 5692 $els.forEach(($el) => new Carousel$i($el)); 5693 } 5694 } 5695 let Carousel$i = class Carousel { 5696 constructor($el) { 5697 this.$el = $el; 5698 this.$carousel = $el.querySelector(".js-carousel-content-carousel"); 5699 this.carousel = new Flickity(this.$carousel, { 5700 contain: true, 5701 prevNextButtons: false, 5702 pageDots: false, 5703 wrapAround: false, 5704 imagesLoaded: true 5705 }); 5706 } 5707 }; 5708 class CaseStudiesListing { 5709 constructor() { 5710 var _a, _b, _c; 5711 this.$el = document.querySelector(".js-case-studies-listing"); 5712 if (!this.$el) return; 5713 this.currentPage = 1; 5714 this.$header = document.querySelector(".js-header"); 5715 this.$loadMoreButton = this.$el.querySelector(".js-case-studies-listing-load-more"); 5716 this.$grid = this.$el.querySelector(".js-case-studies-listing-grid"); 5717 this.$noResults = this.$el.querySelector(".js-case-studies-listing-no-results"); 5718 this.$verticalSelect = this.$el.querySelector(".js-case-studies-listing-vertical-select"); 5719 this.$productSelect = this.$el.querySelector(".js-case-studies-listing-product-select"); 5720 this.$integrationSelect = this.$el.querySelector(".js-case-studies-listing-integration-select"); 5721 this.$numberOfVisibleArticles = this.$el.querySelector(".js-case-studies-listing-visible-articles"); 5722 this.$totalArticles = this.$el.querySelector(".js-case-studies-listing-total-articles"); 5723 this.$resetButton = this.$el.querySelector(".js-case-studies-listing-reset-filters"); 5724 (_a = this.$verticalSelect) == null ? void 0 : _a.addEventListener("change", this.filterByVertical.bind(this)); 5725 (_b = this.$productSelect) == null ? void 0 : _b.addEventListener("change", this.filterByProduct.bind(this)); 5726 (_c = this.$integrationSelect) == null ? void 0 : _c.addEventListener("change", this.filterByIntegration.bind(this)); 5727 if (this.$loadMoreButton) { 5728 this.$loadMoreButtonText = this.$loadMoreButton.querySelector(".c-cta__label"); 5729 this.originalLoadMoreButtonText = this.$loadMoreButtonText.innerText; 5730 this.$loadMoreButton.addEventListener("click", this.loadMore.bind(this)); 5731 } 5732 if (this.$resetButton) { 5733 this.$resetButton.addEventListener("click", this.resetFilters.bind(this)); 5734 } 5735 if (this.$noResults) { 5736 this.$noResults.style.display = "none"; 5737 } 5738 this.updateResetFilters(); 5739 } 5740 async execute(params, scrollToTop = true, reset = false) { 5741 if (reset) { 5742 this.currentPage = 1; 5743 } else { 5744 this.currentPage++; 5745 } 5746 this.$grid.classList.add("is-loading"); 5747 if (this.$loadMoreButton) { 5748 this.$loadMoreButtonText.innerText = "Loading"; 5749 this.$loadMoreButton.disabled = true; 5750 } 5751 const payload = new FormData(); 5752 payload.append("paged", this.currentPage);
5753 Object.keys(params).forEach((key) => { 5754 payload.append(key, params[key]); 5755 }); 5756 try { 5757 const { data } = await axios.post(window.site.api.ajax, payload); 5758 if (this.$loadMoreButton) { 5759 this.$loadMoreButtonText.innerText = this.originalLoadMoreButtonText; 5760 this.$loadMoreButton.disabled = false; 5761 if (data.is_last_page) { 5762 this.$loadMoreButton.style.display = "none"; 5763 } else { 5764 this.$loadMoreButton.style.display = "block"; 5765 } 5766 } 5767 if (data) { 5768 this.$grid.innerHTML = reset ? data.response : this.$grid.innerHTML + data.response; 5769 this.$grid.classList.remove("is-loading"); 5770 this.updateTotal(data.total_articles, scrollToTop); 5771 this.updateResetFilters(); 5772 if (!data.total_articles) { 5773 this.$grid.style.display = "none"; 5774 if (this.$noResults) { 5775 this.$noResults.removeAttribute("style"); 5776 } 5777 if (this.$loadMoreButton) { 5778 this.$loadMoreButton.style.display = "none"; 5779 } 5780 } else { 5781 if (this.$noResults) { 5782 this.$noResults.style.display = "none"; 5783 } 5784 this.$grid.removeAttribute("style"); 5785 } 5786 } else { 5787 if (this.$loadMoreButton) { 5788 this.$loadMoreButton.style.display = "none"; 5789 } 5790 this.updateResetFilters(); 5791 } 5792 } catch (error) { 5793 this.currentPage = 1; 5794 this.$grid.classList.remove("is-loading"); 5795 } 5796 } 5797 async loadMore() { 5798 const payload = { 5799 action: "theme_case_studies_load_more" 5800 }; 5801 if (this.selectedVertical) { 5802 payload["vertical"] = this.selectedVertical; 5803 } 5804 if (this.selectedProduct) { 5805 payload["product"] = this.selectedProduct; 5806 } 5807 if (this.selectedIntegration) { 5808 payload["integration"] = this.selectedIntegration; 5809 } 5810 await this.execute(payload, false); 5811 } 5812 async filterByVertical(e) { 5813 if (e.target.value === "all") { 5814 this.selectedVertical = void 0; 5815 } else { 5816 this.selectedVertical = e.target.value; 5817 } 5818 await this.filterByCategory(); 5819 } 5820 async filterByProduct(e) { 5821 if (e.target.value === "all") { 5822 this.selectedProduct = void 0; 5823 } else { 5824 this.selectedProduct = e.target.value; 5825 } 5826 await this.filterByCategory(); 5827 } 5828 async filterByIntegration(e) { 5829 if (e.target.value === "all") { 5830 this.selectedIntegration = void 0; 5831 } else { 5832 this.selectedIntegration = e.target.value; 5833 } 5834 await this.filterByCategory(); 5835 } 5836 async filterByCategory(e) { 5837 const payload = { 5838 action: "theme_case_studies_load_more" 5839 }; 5840 if (this.selectedVertical) { 5841 payload["vertical"] = this.selectedVertical; 5842 } 5843 if (this.selectedProduct) { 5844 payload["product"] = this.selectedProduct; 5845 } 5846 if (this.selectedIntegration) { 5847 payload["integration"] = this.selectedIntegration; 5848 } 5849 await this.execute(payload, true, true); 5850 } 5851 async resetFilters() { 5852 this.selectedVertical = void 0; 5853 this.selectedProduct = void 0; 5854 this.selectedIntegration = void 0; 5855 if (this.$verticalSelect) { 5856 this.$verticalSelect.selectedIndex = 0; 5857 } 5858 if (this.$productSelect) { 5859 this.$productSelect.selectedIndex = 0; 5860 } 5861 if (this.$integrationSelect) { 5862 this.$integrationSelect.selectedIndex = 0; 5863 } 5864 const payload = { 5865 action: "theme_case_studies_load_more" 5866 }; 5867 await this.execute(payload, true, true); 5868 } 5869 updateTotal(totalArticles, scrollToTop = true) { 5870 const total = this.$grid.querySelectorAll(".js-case-studies-card").length; 5871 this.$numberOfVisibleArticles.innerText = total; 5872 this.$totalArticles.innerText = totalArticles; 5873 this.$grid.classList.remove("is-loading"); 5874 if (scrollToTop) { 5875 window.scrollTo({ 5876 top: this.$el.offsetTop - this.$header.offsetHeight, 5877 behavior: "smooth" 5878 }); 5879 } 5880 } 5881 updateResetFilters() { 5882 if (!this.$resetButton) return; 5883 if (this.currentPage > 1 || this.selectedVertical || this.selectedProduct || this.selectedIntegration) { 5884 this.$resetButton.style.display = "block"; 5885 } else { 5886 this.$resetButton.style.display = "none"; 5887 } 5888 } 5889 } 5890 class MobileCarousel { 5891 constructor($el, options = { 5892 maxWidth: 1024 5893 }) { 5894 this.maxWidth = options.maxWidth; 5895 this.flickityOptions = { 5896 wrapAround: true,
5897 prevNextButtons: false, 5898 pageDots: true, 5899 imagesLoaded: "true", 5900 cellAlign: "left", 5901 ...options.flickity 5902 }; 5903 this.$el = $el; 5904 if (window.innerWidth < this.maxWidth) { 5905 this.createCarousel(); 5906 } 5907 window.addEventListener("resize", () => { 5908 const t2 = setTimeout(() => { 5909 this.onResize(); 5910 clearTimeout(t2); 5911 }, 250); 5912 }); 5913 return this; 5914 } 5915 onResize() { 5916 if (window.innerWidth < this.maxWidth) { 5917 this.createCarousel(); 5918 return; 5919 } 5920 if (this.carousel) { 5921 this.carousel.destroy(); 5922 } 5923 } 5924 createCarousel() { 5925 if (!this.$el) { 5926 return; 5927 } 5928 this.carousel = new Flickity(this.$el, this.flickityOptions); 5929 const t2 = setTimeout(() => { 5930 this.carousel.resize(); 5931 clearTimeout(t2); 5932 }, 250); 5933 } 5934 } 5935 class ClientTestimonialGrid { 5936 constructor() { 5937 const $els = document.querySelectorAll(".js-client-testimonials-carousel"); 5938 $els.forEach(($el) => new MobileCarousel($el, { 5939 maxWidth: 768 5940 })); 5941 } 5942 } 5943 class Countdown { 5944 constructor() { 5945 this.$el = document.querySelector(".js-countdown"); 5946 if (!this.$el) return; 5947 const launch = new Date(parseInt(this.$el.dataset.launch) * 1e3).getTime(); 5948 const tick = () => { 5949 const now = (/* @__PURE__ */ new Date()).getTime(); 5950 const distance = launch - now; 5951 if (distance < 0) { 5952 return; 5953 } 5954 const props = { 5955 days: Math.floor(distance / (1e3 * 60 * 60 * 24)), 5956 hours: Math.floor(distance % (1e3 * 60 * 60 * 24) / (1e3 * 60 * 60)), 5957 minutes: Math.floor(distance % (1e3 * 60 * 60) / (1e3 * 60)), 5958 seconds: Math.floor(distance % (1e3 * 60) / 1e3) 5959 }; 5960 for (const [key, value] of Object.entries(props)) { 5961 document.querySelector(".js-" + key).innerHTML = value; 5962 } 5963 }; 5964 tick(); 5965 setInterval(tick, 1e3); 5966 } 5967 } 5968 class CustomerImpact { 5969 constructor() { 5970 this.$els = document.querySelectorAll(".js-customer-impact"); 5971 this.$els.forEach(($el) => { 5972 const $carousel = $el.querySelector(".js-customer-impact-carousel"); 5973 const $prevButtons = $el.querySelectorAll(".js-customer-impact-prev"); 5974 const $nextButtons = $el.querySelectorAll(".js-customer-impact-next"); 5975 const carousel = new Flickity($carousel, { 5976 cellAlign: "left", 5977 contain: true, 5978 prevNextButtons: false, 5979 pageDots: false, 5980 wrapAround: true, 5981 imagesLoaded: true 5982 }); 5983 $prevButtons.forEach(($prevButton) => { 5984 $prevButton.addEventListener("click", () => { 5985 carousel.previous(); 5986 }); 5987 }); 5988 $nextButtons.forEach(($nextButton) => { 5989 $nextButton.addEventListener("click", () => { 5990 carousel.next(); 5991 }); 5992 }); 5993 }); 5994 } 5995 } 5996 class CustomerStoryVideos { 5997 constructor() { 5998 const $els = document.querySelectorAll(".js-customer-story-videos"); 5999 $els.forEach(($el) => new Carousel$h($el)); 6000 } 6001 } 6002 let Carousel$h = class Carousel { 6003 constructor($el) { 6004 var _a, _b; 6005 this.$el = $el; 6006 this.activeClass = "is-active"; 6007 this.$tabs = this.$el.querySelectorAll(".js-customer-story-videos-tab"); 6008 this.$carousel = this.$el.querySelector(".js-customer-story-videos-carousel"); 6009 this.$nextBtn = this.$el.querySelector(".js-customer-story-videos-carousel-next-btn"); 6010 this.$prevBtn = this.$el.querySelector(".js-customer-story-videos-carousel-prev-btn"); 6011 this.$iframes = this.$el.querySelectorAll("iframe"); 6012 this.flickity = new Flickity(this.$carousel, { 6013 imagesLoaded: true, 6014 prevNextButtons: false, 6015 pageDots: false, 6016 percentPosition: false, 6017 wrapAround: true 6018 }); 6019 this.flickity.on("select", this.onSelect.bind(this)); 6020 (_a = this.$nextBtn) == null ? void 0 : _a.addEventListener("click", this.next.bind(this)); 6021 (_b = this.$prevBtn) == null ? void 0 : _b.addEventListener("click", this.prev.bind(this));
6022 this.$tabs.forEach(($tab, index) => { 6023 $tab.addEventListener("click", this.goToSlide.bind(this, $tab, index)); 6024 }); 6025 } 6026 stopVideos() { 6027 this.$iframes.forEach(($iframe) => { 6028 $iframe.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', "*"); 6029 }); 6030 } 6031 /** 6032 * @function next 6033 * @param {Event} e 6034 * @returns void 6035 * Goes to next slide in carousel 6036 */ 6037 next(e) { 6038 if (!this.flickity) return; 6039 e.preventDefault(); 6040 this.flickity.next(); 6041 } 6042 /** 6043 * @function prev 6044 * @param {Event} e 6045 * @returns void 6046 * Goes to previous slide in carousel 6047 */ 6048 prev(e) { 6049 if (!this.flickity) return; 6050 e.preventDefault(); 6051 this.flickity.previous(); 6052 } 6053 /** 6054 * @function goToSlide 6055 * @param {HTMLButtonElement} $tab tab that has been clicked 6056 * @param {Number} index slide index 6057 * @returns void 6058 * Goes to specific slide in carousel based on index 6059 */ 6060 goToSlide($tab, index = 0) { 6061 if (!this.flickity || !$tab) return; 6062 this.$tabs.forEach(($tab2) => $tab2.classList.remove(this.activeClass)); 6063 $tab.classList.add(this.activeClass); 6064 this.flickity.select(index); 6065 } 6066 /** 6067 * @function onSelect 6068 * @param {Number} index 6069 * Fired when the Flickity slide changes 6070 */ 6071 onSelect(index) { 6072 var _a; 6073 this.stopVideos(); 6074 this.$tabs.forEach(($tab) => $tab.classList.remove(this.activeClass)); 6075 (_a = this.$tabs[index]) == null ? void 0 : _a.classList.add(this.activeClass); 6076 } 6077 }; 6078 class FeaturedMerchants { 6079 constructor() { 6080 const $els = document.querySelectorAll(".js-featured-merchants-carousel"); 6081 $els.forEach(($el) => new Carousel$g($el)); 6082 } 6083 } 6084 let Carousel$g = class Carousel { 6085 constructor($el) { 6086 this.$el = $el; 6087 this.flickity = new Flickity($el, { 6088 imagesLoaded: true, 6089 prevNextButtons: false, 6090 pageDots: false, 6091 cellAlign: "center", 6092 contain: true, 6093 freeScroll: true, 6094 initialIndex: 2, 6095 on: { 6096 ready: () => { 6097 $el.classList.remove("opacity-0"); 6098 } 6099 } 6100 }); 6101 } 6102 }; 6103 class Hamburger { 6104 constructor($el) { 6105 this.$el = document.querySelector(".js-hamburger"); 6106 this.activeClass = "is-active"; 6107 this.$el && this.$el.addEventListener("click", this.onClick.bind(this)); 6108 } 6109 /** 6110 * @function onClick 6111 * @param {Event} e 6112 */ 6113 onClick(e) { 6114 e.preventDefault(); 6115 this.$el.classList.toggle(this.activeClass); 6116 window.dispatchEvent(new Event(mobileMenuToggle)); 6117 } 6118 } 6119 class HiringProcess { 6120 constructor() { 6121 const $els = document.querySelectorAll(".js-hiring-process"); 6122 $els.forEach(($el) => new Carousel$f($el)); 6123 } 6124 } 6125 let Carousel$f = class Carousel { 6126 constructor($el) { 6127 this.$el = $el; 6128 this.$carousel = this.$el.querySelector(".js-hiring-process-carousel"); 6129 this.$nextBtn = this.$el.querySelector(".js-hiring-process-carousel-next-btn"); 6130 this.$prevBtn = this.$el.querySelector(".js-hiring-process-carousel-prev-btn"); 6131 this.flickity = new Flickity(this.$carousel, { 6132 imagesLoaded: true, 6133 prevNextButtons: false, 6134 pageDots: true, 6135 cellAlign: "center", 6136 draggable: window.innerWidth < 768, 6137 // can't drag and animate the variable centre width 6138 groupCells: 1, 6139 wrapAround: false 6140 }); 6141 this.flickity.on("change", this.assignHeights.bind(this)); 6142 this.$nextBtn.addEventListener("click", this.next.bind(this)); 6143 this.$prevBtn.addEventListener("click", this.prev.bind(this)); 6144 } 6145 assignHeights(index) { 6146 if (window.innerWidth < 768) return; 6147 var adjust = (i3, pos) => { 6148 const diff = Math.abs(index - i3); 6149 this.$carousel.querySelector(`.c-hiring-process-card:nth-child(${i3 + 1})`).style.height = `calc(100% - 2.46rem * ${diff})`; 6150 this.$carousel.querySelector(`.c-hiring-process-card:nth-child(${i3 + 1})`).dataset.pos = pos; 6151 this.$carousel.querySelector(`.c-hiring-process-card:nth-child(${i3 + 1}) .c-hiring-process-card--title`).style.width = `calc(20rem - 1.6rem * ${diff})`; 6152 }; 6153 for (var i2 = index - 1; i2 >= 0; i2--) { 6154 adjust(i2, "left"); 6155 } 6156 for (var i2 = index + 1; i2 < this.flickity.cells.length; i2++) { 6157 adjust(i2, "right"); 6158 } 6159 adjust(index, "center"); 6160 } 6161 /** 6162 * @function next 6163 * @param {Event} e 6164 * @returns void 6165 * Goes to next slide in carousel
6166 */ 6167 next(e) { 6168 if (!this.flickity) return; 6169 e.preventDefault(); 6170 this.flickity.next(); 6171 this.flickity.reposition(); 6172 } 6173 /** 6174 * @function prev 6175 * @param {Event} e 6176 * @returns void 6177 * Goes to previous slide in carousel 6178 */ 6179 prev(e) { 6180 if (!this.flickity) return; 6181 e.preventDefault(); 6182 this.flickity.previous(); 6183 this.flickity.reposition(); 6184 } 6185 }; 6186 class InspirationListing { 6187 constructor() { 6188 var _a, _b, _c, _d; 6189 this.$el = document.querySelector(".js-inspiration-listing"); 6190 if (!this.$el) return; 6191 this.currentPage = 1; 6192 this.$header = document.querySelector(".js-header"); 6193 this.$loadMoreButton = this.$el.querySelector(".js-inspiration-listing-load-more"); 6194 this.$grid = this.$el.querySelector(".js-inspiration-listing-grid"); 6195 this.$noResults = this.$el.querySelector(".js-inspiration-listing-no-results"); 6196 this.$verticalSelect = this.$el.querySelector(".js-inspiration-listing-vertical-select"); 6197 this.$productSelect = this.$el.querySelector(".js-inspiration-listing-product-select"); 6198 this.$featureSelect = this.$el.querySelector(".js-inspiration-listing-feature-select"); 6199 this.$pageSelect = this.$el.querySelector(".js-inspiration-listing-page-select"); 6200 this.$resetButton = this.$el.querySelector(".js-inspiration-listing-reset-filters"); 6201 (_a = this.$verticalSelect) == null ? void 0 : _a.addEventListener("change", this.filterByVertical.bind(this)); 6202 (_b = this.$productSelect) == null ? void 0 : _b.addEventListener("change", this.filterByProduct.bind(this)); 6203 (_c = this.$featureSelect) == null ? void 0 : _c.addEventListener("change", this.filterByFeature.bind(this)); 6204 (_d = this.$pageSelect) == null ? void 0 : _d.addEventListener("change", this.filterByPage.bind(this)); 6205 this.$detailButtons = this.$el.querySelectorAll(".js-inspiration-details-button"); 6206 this.$modal = document.querySelector(".js-inspiration-modal"); 6207 this.$modalInner = this.$modal.querySelector(".js-inspiration-modal-inner"); 6208 this.$modalClose = this.$modal.querySelector(".js-inspiration-modal-close"); 6209 this.$modalImages = this.$modal.querySelector(".js-images"); 6210 this.$modalVideo = this.$modal.querySelector(".js-video"); 6211 this.$modalVideoEmbed = this.$modal.querySelector(".js-video-embed"); 6212 this.$modalImage = this.$modal.querySelector(".js-inspiration-modal-image"); 6213 this.$modalImageMobile = this.$modal.querySelector(".js-inspiration-modal-image-mobile"); 6214 this.$modalLogo = this.$modal.querySelector(".js-inspiration-modal-logo"); 6215 this.$modalLink = this.$modal.querySelector(".js-inspiration-modal-link"); 6216 this.$modalIndustries = this.$modal.querySelector(".js-inspiration-modal-industries"); 6217 this.$modalProducts = this.$modal.querySelector(".js-inspiration-modal-products"); 6218 this.$modalFeatures = this.$modal.querySelector(".js-inspiration-modal-features"); 6219 this.$modalPages = this.$modal.querySelector(".js-inspiration-modal-pages"); 6220 this.$modalCaseStudyLink = this.$modal.querySelector(".js-inspiration-modal-case-study-link"); 6221 this.$modalNext = this.$modal.querySelector(".js-inspiration-modal-next"); 6222 this.$modalPrev = this.$modal.querySelector(".js-inspiration-modal-prev"); 6223 this.$modalNext.addEventListener("click", this.nextModal.bind(this)); 6224 this.$modalPrev.addEventListener("click", this.prevModal.bind(this)); 6225 if (this.$loadMoreButton) { 6226 this.$loadMoreButtonText = this.$loadMoreButton.querySelector(".c-cta__label"); 6227 this.originalLoadMoreButtonText = this.$loadMoreButtonText.innerText; 6228 this.$loadMoreButton.addEventListener("click", this.loadMore.bind(this)); 6229 } 6230 if (this.$resetButton) { 6231 this.$resetButton.addEventListener("click", this.resetFilters.bind(this)); 6232 } 6233 if (this.$noResults) { 6234 this.$noResults.style.display = "none"; 6235 } 6236 document.addEventListener("click", (e) => {
6237 if (e.target.closest(".js-inspiration-details-button")) { 6238 e.preventDefault(); 6239 const $el = e.target.closest(".js-inspiration-details-button"); 6240 this.permalink(parseInt($el.dataset.jsonId)); 6241 this.showDetails(parseInt($el.dataset.jsonId), $el); 6242 return; 6243 } 6244 }); 6245 this.$modalClose.addEventListener("click", this.hideDetails.bind(this)); 6246 window.addEventListener("keyup", (e) => { 6247 if (e.key === "Escape" && this.modalOpen) { 6248 this.hideDetails(e); 6249 } 6250 }); 6251 this.openPermalink(); 6252 this.updateResetFilters(); 6253 } 6254 permalink(id) { 6255 var queryParams = new URLSearchParams(window.location.search); 6256 queryParams.set("inspiration", id); 6257 history.replaceState(null, null, "?" + queryParams.toString()); 6258 } 6259 clearPermalink() { 6260 var queryParams = new URLSearchParams(window.location.search); 6261 queryParams.delete("inspiration"); 6262 history.replaceState(null, null, "?" + queryParams.toString()); 6263 } 6264 openPermalink() { 6265 const urlParams = new URLSearchParams(window.location.search); 6266 const inspiration = urlParams.get("inspiration"); 6267 if (inspiration) {
6268 this.showDetails(parseInt(inspiration)); 6269 } 6270 const vertical = urlParams.get("vertical"); 6271 if (vertical) { 6272 this.selectedVertical = vertical; 6273 this.$verticalSelect.value = vertical; 6274 } 6275 const product = urlParams.get("product"); 6276 if (product) { 6277 this.selectedProduct = product; 6278 this.$productSelect.value = product; 6279 } 6280 if (vertical || product) { 6281 this.filterByCategory(); 6282 } 6283 } 6284 async execute(params, scrollToTop = true, reset = false) { 6285 if (reset) { 6286 this.currentPage = 1; 6287 } else { 6288 this.currentPage++; 6289 } 6290 this.$grid.classList.add("is-loading"); 6291 if (this.$loadMoreButton) { 6292 this.$loadMoreButtonText.innerText = "Loading"; 6293 this.$loadMoreButton.disabled = true; 6294 } 6295 const payload = new FormData(); 6296 payload.append("paged", this.currentPage); 6297 Object.keys(params).forEach((key) => { 6298 payload.append(key, params[key]); 6299 }); 6300 try { 6301 const { data } = await axios.post(window.site.api.ajax, payload); 6302 if (this.$loadMoreButton) { 6303 this.$loadMoreButtonText.innerText = this.originalLoadMoreButtonText; 6304 this.$loadMoreButton.disabled = false; 6305 if (data.is_last_page) { 6306 this.$loadMoreButton.style.display = "none"; 6307 } else { 6308 this.$loadMoreButton.style.display = "block"; 6309 } 6310 } 6311 if (data) { 6312 this.$grid.innerHTML = reset ? data.response : this.$grid.innerHTML + data.response; 6313 this.$grid.classList.remove("is-loading"); 6314 this.updateResetFilters(); 6315 if (!data.total_articles) { 6316 this.$grid.style.display = "none"; 6317 if (this.$noResults) { 6318 this.$noResults.removeAttribute("style"); 6319 } 6320 if (this.$loadMoreButton) { 6321 this.$loadMoreButton.style.display = "none"; 6322 } 6323 } else { 6324 if (this.$noResults) { 6325 this.$noResults.style.display = "none"; 6326 } 6327 this.$grid.removeAttribute("style"); 6328 } 6329 } else { 6330 if (this.$loadMoreButton) { 6331 this.$loadMoreButton.style.display = "none"; 6332 } 6333 this.updateResetFilters(); 6334 } 6335 } catch (error) { 6336 this.currentPage = 1; 6337 this.$grid.classList.remove("is-loading"); 6338 } 6339 } 6340 async loadMore() { 6341 const payload = { 6342 action: "theme_inspiration_load_more" 6343 }; 6344 if (this.selectedVertical) { 6345 payload["vertical"] = this.selectedVertical; 6346 } 6347 if (this.selectedProduct) { 6348 payload["product"] = this.selectedProduct; 6349 } 6350 if (this.selectedFeature) { 6351 payload["feature"] = this.selectedFeature; 6352 } 6353 await this.execute(payload, false); 6354 } 6355 async filterByVertical(e) { 6356 if (e.target.value === "all") { 6357 this.selectedVertical = void 0; 6358 } else { 6359 this.selectedVertical = e.target.value; 6360 } 6361 var queryParams = new URLSearchParams(window.location.search); 6362 queryParams.set("vertical", this.selectedVertical); 6363 history.replaceState(null, null, "?" + queryParams.toString()); 6364 await this.filterByCategory(); 6365 } 6366 async filterByProduct(e) { 6367 if (e.target.value === "all") { 6368 this.selectedProduct = void 0; 6369 } else { 6370 this.selectedProduct = e.target.value; 6371 } 6372 var queryParams = new URLSearchParams(window.location.search); 6373 queryParams.set("product", this.selectedProduct); 6374 history.replaceState(null, null, "?" + queryParams.toString()); 6375 await this.filterByCategory(); 6376 } 6377 async filterByFeature(e) { 6378 if (e.target.value === "all") { 6379 this.selectedFeature = void 0; 6380 } else { 6381 this.selectedFeature = e.target.value; 6382 } 6383 await this.filterByCategory(); 6384 } 6385 async filterByPage(e) { 6386 if (e.target.value === "all") { 6387 this.selectedPage = void 0; 6388 } else { 6389 this.selectedPage = e.target.value; 6390 } 6391 await this.filterByCategory(); 6392 } 6393 async filterByCategory(e) { 6394 const payload = { 6395 action: "theme_inspiration_load_more" 6396 }; 6397 if (this.selectedVertical) { 6398 payload["vertical"] = this.selectedVertical; 6399 } 6400 if (this.selectedProduct) { 6401 payload["product"] = this.selectedProduct; 6402 } 6403 if (this.selectedFeature) { 6404 payload["feature"] = this.selectedFeature; 6405 } 6406 if (this.selectedPage) { 6407 payload["page"] = this.selectedPage; 6408 } 6409 await this.execute(payload, true, true); 6410 } 6411 async resetFilters() { 6412 this.selectedVertical = void 0; 6413 this.selectedProduct = void 0; 6414 this.selectedFeature = void 0; 6415 this.selectedPage = void 0; 6416 if (this.$verticalSelect) { 6417 this.$verticalSelect.selectedIndex = 0; 6418 } 6419 if (this.$productSelect) { 6420 this.$productSelect.selectedIndex = 0; 6421 } 6422 if (this.$featureSelect) { 6423 this.$featureSelect.selectedIndex = 0; 6424 } 6425 const payload = { 6426 action: "theme_inspiration_load_more" 6427 }; 6428 await this.execute(payload, true, true); 6429 } 6430 updateResetFilters() { 6431 if (!this.$resetButton) return; 6432 if (this.currentPage > 1 || this.selectedVertical || this.selectedProduct || this.selectedFeature || this.selectedPage) { 6433 this.$resetButton.style.display = "block"; 6434 } else { 6435 this.$resetButton.style.display = "none"; 6436 } 6437 }
6438 showDetails(id, invoker) { 6439 this.modalOpen = true; 6440 document.body.classList.add("scrolling-disabled"); 6441 this.invoker = invoker; 6442 this.$modal.classList.add("is-open"); 6443 this.$modalInner.focus(); 6444 this.$modal.setAttribute("aria-hidden", "false"); 6445 this.setModalData(id); 6446 } 6447 setModalData(id) { 6448 const modalData = window.okeInspirationModalData.find((item) => item.id === id); 6449 this.$modalNext.dataset.jsonId = modalData.next; 6450 this.$modalPrev.dataset.jsonId = modalData.prev; 6451 this.modalData = modalData.data; 6452 this.$modalLogo.src = this.modalData[this.$modalLogo.dataset.json]; 6453 if (this.modalData.modal_media === "image") { 6454 this.$modalImages.classList.remove("hidden"); 6455 this.$modalVideo.classList.add("hidden"); 6456 this.$modalImage.src = this.modalData[this.$modalImage.dataset.json]; 6457 this.$modalImageMobile.src = this.modalData[this.$modalImageMobile.dataset.json]; 6458 } else if (this.modalData.modal_media === "video") { 6459 this.$modalImages.classList.add("hidden"); 6460 this.$modalVideo.classList.remove("hidden"); 6461 this.$modalVideoEmbed.innerHTML = this.modalData.modal_video; 6462 this.$modalVideoEmbed.classList.remove("*:aspect-video"); 6463 this.$modalVideoEmbed.classList.remove("*:aspect-fullscreen"); 6464 this.$modalVideoEmbed.classList.remove("*:aspect-portrait"); 6465 const aspectClass = "*:aspect-" + this.modalData.modal_video_aspect_ratio; 6466 this.$modalVideoEmbed.classList.add(aspectClass); 6467 } 6468 this.$modalLink.href = this.modalData[this.$modalLink.dataset.json].url; 6469 this.$modalLink.innerHTML = this.modalData[this.$modalLink.dataset.json].title; 6470 const industries = this.modalData[this.$modalIndustries.dataset.json]; 6471 const products = this.modalData[this.$modalProducts.dataset.json]; 6472 const features = this.modalData[this.$modalFeatures.dataset.json]; 6473 const pages = this.modalData[this.$modalPages.dataset.json]; 6474 const caseStudyLink = this.modalData[this.$modalCaseStudyLink.dataset.json]; 6475 this.$modalIndustries.parentElement.classList.remove("hidden"); 6476 this.$modalProducts.parentElement.classList.remove("hidden"); 6477 this.$modalFeatures.parentElement.classList.remove("hidden"); 6478 this.$modalPages.parentElement.classList.remove("hidden"); 6479 this.$modalCaseStudyLink.classList.remove("hidden"); 6480 if (industries) { 6481 this.$modalIndustries.innerHTML = this.modalData[this.$modalIndustries.dataset.json]; 6482 } else { 6483 this.$modalIndustries.parentElement.classList.add("hidden"); 6484 } 6485 if (products) { 6486 this.$modalProducts.innerHTML = this.modalData[this.$modalProducts.dataset.json]; 6487 } else { 6488 this.$modalProducts.parentElement.classList.add("hidden"); 6489 } 6490 if (features) { 6491 this.$modalFeatures.innerHTML = this.modalData[this.$modalFeatures.dataset.json]; 6492 } else { 6493 this.$modalFeatures.parentElement.classList.add("hidden"); 6494 } 6495 if (pages) { 6496 this.$modalPages.innerHTML = this.modalData[this.$modalPages.dataset.json]; 6497 } else { 6498 this.$modalPages.parentElement.classList.add("hidden"); 6499 } 6500 if (caseStudyLink) { 6501 this.$modalCaseStudyLink.href = this.modalData[this.$modalCaseStudyLink.dataset.json]; 6502 } else { 6503 this.$modalCaseStudyLink.classList.add("hidden"); 6504 } 6505 } 6506 hideDetails(e) { 6507 e.preventDefault(); 6508 this.$modal.classList.remove("is-open"); 6509 this.$modal.setAttribute("aria-hidden", "true"); 6510 document.body.classList.remove("scrolling-disabled"); 6511 this.modalOpen = false; 6512 this.clearPermalink(); 6513 this.pauseVideo(); 6514 if (this.invoker) { 6515 this.invoker.focus(); 6516 } 6517 } 6518 pauseVideo() { 6519 var _a; 6520 (_a = this.$modalVideoEmbed.firstChild) == null ? void 0 : _a.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', "*"); 6521 } 6522 nextModal(e) { 6523 e.preventDefault(); 6524 this.pauseVideo(); 6525 this.permalink(e.currentTarget.dataset.jsonId); 6526 this.setModalData(parseInt(e.currentTarget.dataset.jsonId)); 6527 } 6528 prevModal(e) { 6529 e.preventDefault(); 6530 this.pauseVideo(); 6531 this.permalink(e.currentTarget.dataset.jsonId); 6532 this.setModalData(parseInt(e.currentTarget.dataset.jsonId)); 6533 } 6534 } 6535 class JoinUs { 6536 constructor() { 6537 const $els = document.querySelectorAll(".js-join-us");
6538 $els.forEach(($el) => new Carousel$e($el)); 6539 } 6540 } 6541 let Carousel$e = class Carousel { 6542 constructor($el) { 6543 this.$el = $el; 6544 this.activeClass = "is-active"; 6545 this.$tabs = this.$el.querySelectorAll(".js-join-us-tab"); 6546 this.$carousel = this.$el.querySelector(".js-join-us-carousel"); 6547 this.flickity = new Flickity(this.$carousel, { 6548 imagesLoaded: true, 6549 prevNextButtons: false, 6550 pageDots: false, 6551 percentPosition: false, 6552 wrapAround: true, 6553 draggable: false 6554 }); 6555 window.addEventListener("hashchange", this.goToHash.bind(this)); 6556 this.flickity.on("select", this.onSelect.bind(this)); 6557 this.$tabs.forEach(($tab, index) => { 6558 $tab.addEventListener("click", this.onTabClick.bind(this, $tab, index)); 6559 }); 6560 if (window.location.hash) { 6561 this.goToHash(); 6562 } else { 6563 this.$tabs[0].classList.add(this.activeClass); 6564 } 6565 } 6566 onTabClick($tab, index) { 6567 history.pushState({}, "", "#" + $tab.dataset.hash); 6568 this.goToSlide($tab, index); 6569 } 6570 goToHash() { 6571 try { 6572 var el = this.$el.querySelector(window.location.hash); 6573 var idx = [...el.parentNode.children].indexOf(el); 6574 this.goToSlide(el, idx); 6575 } catch (e) { 6576 } 6577 } 6578 /** 6579 * @function goToSlide 6580 * @param {HTMLButtonElement} $tab tab that has been clicked 6581 * @param {Number} index slide index 6582 * @returns void 6583 * Goes to specific slide in carousel based on index 6584 */ 6585 goToSlide($tab, index = 0) { 6586 if (!this.flickity || !$tab) return; 6587 this.$tabs.forEach(($tab2) => $tab2.classList.remove(this.activeClass)); 6588 $tab.classList.add(this.activeClass); 6589 this.flickity.select(index); 6590 } 6591 /** 6592 * @function onSelect 6593 * @param {Number} index 6594 * Fired when the Flickity slide changes 6595 */ 6596 onSelect(index) { 6597 var _a; 6598 this.$tabs.forEach(($tab) => $tab.classList.remove(this.activeClass)); 6599 (_a = this.$tabs[index]) == null ? void 0 : _a.classList.add(this.activeClass); 6600 } 6601 }; 6602 class LandingPageHero { 6603 constructor() { 6604 this.$el = document.querySelector(".js-landing-page-hero"); 6605 if (!this.$el) return; 6606 this.$carousels = this.$el.querySelectorAll(".js-landing-page-hero-logo-carousel"); 6607 this.$carousels.forEach(($carousel) => new Flickity($carousel, { 6608 imagesLoaded: true, 6609 prevNextButtons: false, 6610 pageDots: true, 6611 autoPlay: 3e3 6612 })); 6613 } 6614 } 6615 var t = function() { 6616 return t = Object.assign || function(t2) { 6617 for (var i2, n = 1, s = arguments.length; n < s; n++) for (var a in i2 = arguments[n]) Object.prototype.hasOwnProperty.call(i2, a) && (t2[a] = i2[a]); 6618 return t2; 6619 }, t.apply(this, arguments); 6620 }, i = function() { 6621 function i2(i3, n, s) { 6622 var a = this; 6623 this.endVal = n, this.options = s, this.version = "2.8.0", this.defaults = { startVal: 0, decimalPlaces: 0, duration: 2, useEasing: true, useGrouping: true, useIndianSeparators: false, smartEasingThreshold: 999, smartEasingAmount: 333, separator: ",", decimal: ".", prefix: "", suffix: "", enableScrollSpy: false, scrollSpyDelay: 200, scrollSpyOnce: false }, this.finalEndVal = null, this.useEasing = true, this.countDown = false, this.error = "", this.startVal = 0, this.paused = true, this.once = false, this.count = function(t2) { 6624 a.startTime || (a.startTime = t2); 6625 var i4 = t2 - a.startTime; 6626 a.remaining = a.duration - i4, a.useEasing ? a.countDown ? a.frameVal = a.startVal - a.easingFn(i4, 0, a.startVal - a.endVal, a.duration) : a.frameVal = a.easingFn(i4, a.startVal, a.endVal - a.startVal, a.duration) : a.frameVal = a.startVal + (a.endVal - a.startVal) * (i4 / a.duration); 6627 var n2 = a.countDown ? a.frameVal < a.endVal : a.frameVal > a.endVal; 6628 a.frameVal = n2 ? a.endVal : a.frameVal, a.frameVal = Number(a.frameVal.toFixed(a.options.decimalPlaces)), a.printValue(a.frameVal), i4 < a.duration ? a.rAF = requestAnimationFrame(a.count) : null !== a.finalEndVal ? a.update(a.finalEndVal) : a.options.onCompleteCallback && a.options.onCompleteCallback(); 6629 }, this.formatNumber = function(t2) { 6630 var i4, n2, s2, e, o = t2 < 0 ? "-" : ""; 6631 i4 = Math.abs(t2).toFixed(a.options.decimalPlaces); 6632 var r = (i4 += "").split("."); 6633 if (n2 = r[0], s2 = r.length > 1 ? a.options.decimal + r[1] : "", a.options.useGrouping) { 6634 e = ""; 6635 for (var l = 3, h = 0, u = 0, p = n2.length; u < p; ++u) a.options.useIndianSeparators && 4 === u && (l = 2, h = 1), 0 !== u && h % l == 0 && (e = a.options.separator + e), h++, e = n2[p - u - 1] + e; 6636 n2 = e; 6637 } 6638 return a.options.numerals && a.options.numerals.length && (n2 = n2.replace(/[0-9]/g, function(t3) { 6639 return a.options.numerals[+t3]; 6640 }), s2 = s2.replace(/[0-9]/g, function(t3) { 6641 return a.options.numerals[+t3]; 6642 })), o + a.options.prefix + n2 + s2 + a.options.suffix; 6643 }, this.easeOutExpo = function(t2, i4, n2, s2) { 6644 return n2 * (1 - Math.pow(2, -10 * t2 / s2)) * 1024 / 1023 + i4; 6645 }, this.options = t(t({}, this.defaults), s), this.formattingFn = this.options.formattingFn ? this.options.formattingFn : this.formatNumber, this.easingFn = this.options.easingFn ? this.options.easingFn : this.easeOutExpo, this.startVal = this.validateValue(this.options.startVal), this.frameVal = this.startVal, this.endVal = this.validateValue(n), this.options.decimalPlaces = Math.max(this.options.decimalPlaces), this.resetDuration(), this.options.separator = String(this.options.separator), this.useEasing = this.options.useEasing, "" === this.options.separator && (this.options.useGrouping = false), this.el = "string" == typeof i3 ? document.getElementById(i3) : i3, this.el ? this.printValue(this.startVal) : this.error = "[CountUp] target is null or undefined", "undefined" != typeof window && this.options.enableScrollSpy && (this.error ? console.error(this.error, i3) : (window.onScrollFns = window.onScrollFns || [], window.onScrollFns.push(function() { 6646 return a.handleScroll(a); 6647 }), window.onscroll = function() { 6648 window.onScrollFns.forEach(function(t2) { 6649 return t2(); 6650 }); 6651 }, this.handleScroll(this))); 6652 } 6653 return i2.prototype.handleScroll = function(t2) { 6654 if (t2 && window && !t2.once) { 6655 var i3 = window.innerHeight + window.scrollY, n = t2.el.getBoundingClientRect(), s = n.top + window.pageYOffset, a = n.top + n.height + window.pageYOffset; 6656 a < i3 && a > window.scrollY && t2.paused ? (t2.paused = false, setTimeout(function() { 6657 return t2.start(); 6658 }, t2.options.scrollSpyDelay), t2.options.scrollSpyOnce && (t2.once = true)) : (window.scrollY > a || s > i3) && !t2.paused && t2.reset(); 6659 } 6660 }, i2.prototype.determineDirectionAndSmartEasing = function() { 6661 var t2 = this.finalEndVal ? this.finalEndVal : this.endVal; 6662 this.countDown = this.startVal > t2; 6663 var i3 = t2 - this.startVal; 6664 if (Math.abs(i3) > this.options.smartEasingThreshold && this.options.useEasing) { 6665 this.finalEndVal = t2; 6666 var n = this.countDown ? 1 : -1;
6667 this.endVal = t2 + n * this.options.smartEasingAmount, this.duration = this.duration / 2; 6668 } else this.endVal = t2, this.finalEndVal = null; 6669 null !== this.finalEndVal ? this.useEasing = false : this.useEasing = this.options.useEasing; 6670 }, i2.prototype.start = function(t2) { 6671 this.error || (this.options.onStartCallback && this.options.onStartCallback(), t2 && (this.options.onCompleteCallback = t2), this.duration > 0 ? (this.determineDirectionAndSmartEasing(), this.paused = false, this.rAF = requestAnimationFrame(this.count)) : this.printValue(this.endVal)); 6672 }, i2.prototype.pauseResume = function() { 6673 this.paused ? (this.startTime = null, this.duration = this.remaining, this.startVal = this.frameVal, this.determineDirectionAndSmartEasing(), this.rAF = requestAnimationFrame(this.count)) : cancelAnimationFrame(this.rAF), this.paused = !this.paused; 6674 }, i2.prototype.reset = function() { 6675 cancelAnimationFrame(this.rAF), this.paused = true, this.resetDuration(), this.startVal = this.validateValue(this.options.startVal), this.frameVal = this.startVal, this.printValue(this.startVal); 6676 }, i2.prototype.update = function(t2) { 6677 cancelAnimationFrame(this.rAF), this.startTime = null, this.endVal = this.validateValue(t2), this.endVal !== this.frameVal && (this.startVal = this.frameVal, null == this.finalEndVal && this.resetDuration(), this.finalEndVal = null, this.determineDirectionAndSmartEasing(), this.rAF = requestAnimationFrame(this.count)); 6678 }, i2.prototype.printValue = function(t2) { 6679 var i3; 6680 if (this.el) { 6681 var n = this.formattingFn(t2); 6682 if (null === (i3 = this.options.plugin) || void 0 === i3 ? void 0 : i3.render) this.options.plugin.render(this.el, n); 6683 else if ("INPUT" === this.el.tagName) this.el.value = n; 6684 else "text" === this.el.tagName || "tspan" === this.el.tagName ? this.el.textContent = n : this.el.innerHTML = n; 6685 } 6686 }, i2.prototype.ensureNumber = function(t2) { 6687 return "number" == typeof t2 && !isNaN(t2); 6688 }, i2.prototype.validateValue = function(t2) { 6689 var i3 = Number(t2); 6690 return this.ensureNumber(i3) ? i3 : (this.error = "[CountUp] invalid start or end value: ".concat(t2), null); 6691 }, i2.prototype.resetDuration = function() { 6692 this.startTime = null, this.duration = 1e3 * Number(this.options.duration), this.remaining = this.duration; 6693 }, i2; 6694 }(); 6695 class LogoTicker { 6696 constructor() { 6697 const $els = document.querySelectorAll(".js-logo-ticker-carousel"); 6698 $els.forEach(($el) => new Carousel$d($el)); 6699 const $countups = document.querySelectorAll(".js-countup"); 6700 $countups.forEach(($el) => { 6701 var countUp = new i($el, $el.dataset.count, { 6702 enableScrollSpy: true, 6703 suffix: "+", 6704 onCompleteCallback: () => $el.classList.add("c-countup-complete") 6705 }); 6706 countUp.start(); 6707 }); 6708 } 6709 } 6710 let Carousel$d = class Carousel { 6711 constructor($el) { 6712 this.$el = $el; 6713 this.$el.classList.remove("flex"); 6714 this.carousel = new Flickity(this.$el, { 6715 cellAlign: "center", 6716 prevNextButtons: false, 6717 pageDots: false, 6718 wrapAround: true, 6719 imagesLoaded: true, 6720 draggable: false 6721 }); 6722 this.carousel.x = 0; 6723 this.play(); 6724 } 6725 play() { 6726 this.carousel.x = this.carousel.x - 1.05; 6727 this.carousel.settle(this.carousel.x); 6728 this.requestId = window.requestAnimationFrame(this.play.bind(this)); 6729 } 6730 }; 6731 var resolveConfig$1 = {}; 6732 var resolveConfig = {}; 6733 var negateValue = {}; 6734 var hasRequiredNegateValue; 6735 function requireNegateValue() { 6736 if (hasRequiredNegateValue) return negateValue; 6737 hasRequiredNegateValue = 1; 6738 (function(exports) { 6739 Object.defineProperty(exports, "__esModule", { 6740 value: true 6741 }); 6742 Object.defineProperty(exports, "default", { 6743 enumerable: true, 6744 get: function() { 6745 return negateValue2; 6746 } 6747 }); 6748 function negateValue2(value) { 6749 value = `${value}`; 6750 if (value === "0") { 6751 return "0"; 6752 } 6753 if (/^[+-]?(\d+|\d*\.\d+)(e[+-]?\d+)?(%|\w+)?$/.test(value)) { 6754 return value.replace(/^[+-]?/, (sign) => sign === "-" ? "" : "-"); 6755 } 6756 let numericFunctions = [ 6757 "var", 6758 "calc", 6759 "min", 6760 "max", 6761 "clamp" 6762 ]; 6763 for (const fn of numericFunctions) { 6764 if (value.includes(`${fn}(`)) { 6765 return `calc(${value} * -1)`; 6766 } 6767 } 6768 } 6769 })(negateValue); 6770 return negateValue; 6771 } 6772 var corePluginList = {}; 6773 var hasRequiredCorePluginList; 6774 function requireCorePluginList() { 6775 if (hasRequiredCorePluginList) return corePluginList; 6776 hasRequiredCorePluginList = 1; 6777 (function(exports) { 6778 Object.defineProperty(exports, "__esModule", { 6779 value: true 6780 }); 6781 Object.defineProperty(exports, "default", { 6782 enumerable: true, 6783 get: function() { 6784 return _default; 6785 } 6786 }); 6787 const _default = [ 6788 "preflight", 6789 "container", 6790 "accessibility", 6791 "pointerEvents", 6792 "visibility", 6793 "position", 6794 "inset", 6795 "isolation", 6796 "zIndex", 6797 "order", 6798 "gridColumn", 6799 "gridColumnStart", 6800 "gridColumnEnd", 6801 "gridRow", 6802 "gridRowStart", 6803 "gridRowEnd", 6804 "float", 6805 "clear", 6806 "margin", 6807 "boxSizing", 6808 "lineClamp", 6809 "display", 6810 "aspectRatio", 6811 "size", 6812 "height", 6813 "maxHeight", 6814 "minHeight", 6815 "width", 6816 "minWidth", 6817 "maxWidth", 6818 "flex", 6819 "flexShrink", 6820 "flexGrow", 6821 "flexBasis", 6822 "tableLayout", 6823 "captionSide", 6824 "borderCollapse", 6825 "borderSpacing", 6826 "transformOrigin", 6827 "translate", 6828 "rotate", 6829 "skew", 6830 "scale", 6831 "transform", 6832 "animation",
6833 "cursor", 6834 "touchAction", 6835 "userSelect", 6836 "resize", 6837 "scrollSnapType", 6838 "scrollSnapAlign", 6839 "scrollSnapStop", 6840 "scrollMargin", 6841 "scrollPadding", 6842 "listStylePosition", 6843 "listStyleType", 6844 "listStyleImage", 6845 "appearance", 6846 "columns", 6847 "breakBefore", 6848 "breakInside", 6849 "breakAfter", 6850 "gridAutoColumns", 6851 "gridAutoFlow", 6852 "gridAutoRows", 6853 "gridTemplateColumns", 6854 "gridTemplateRows", 6855 "flexDirection", 6856 "flexWrap", 6857 "placeContent", 6858 "placeItems", 6859 "alignContent", 6860 "alignItems", 6861 "justifyContent", 6862 "justifyItems", 6863 "gap", 6864 "space", 6865 "divideWidth", 6866 "divideStyle", 6867 "divideColor", 6868 "divideOpacity", 6869 "placeSelf", 6870 "alignSelf", 6871 "justifySelf", 6872 "overflow", 6873 "overscrollBehavior", 6874 "scrollBehavior", 6875 "textOverflow", 6876 "hyphens", 6877 "whitespace", 6878 "textWrap", 6879 "wordBreak", 6880 "borderRadius", 6881 "borderWidth", 6882 "borderStyle", 6883 "borderColor", 6884 "borderOpacity", 6885 "backgroundColor", 6886 "backgroundOpacity", 6887 "backgroundImage", 6888 "gradientColorStops", 6889 "boxDecorationBreak", 6890 "backgroundSize", 6891 "backgroundAttachment", 6892 "backgroundClip", 6893 "backgroundPosition", 6894 "backgroundRepeat", 6895 "backgroundOrigin", 6896 "fill", 6897 "stroke", 6898 "strokeWidth", 6899 "objectFit", 6900 "objectPosition", 6901 "padding", 6902 "textAlign", 6903 "textIndent", 6904 "verticalAlign", 6905 "fontFamily", 6906 "fontSize", 6907 "fontWeight", 6908 "textTransform", 6909 "fontStyle", 6910 "fontVariantNumeric", 6911 "lineHeight", 6912 "letterSpacing", 6913 "textColor", 6914 "textOpacity", 6915 "textDecoration", 6916 "textDecorationColor", 6917 "textDecorationStyle", 6918 "textDecorationThickness", 6919 "textUnderlineOffset", 6920 "fontSmoothing", 6921 "placeholderColor", 6922 "placeholderOpacity", 6923 "caretColor", 6924 "accentColor", 6925 "opacity", 6926 "backgroundBlendMode", 6927 "mixBlendMode", 6928 "boxShadow", 6929 "boxShadowColor", 6930 "outlineStyle", 6931 "outlineWidth", 6932 "outlineOffset", 6933 "outlineColor", 6934 "ringWidth", 6935 "ringColor", 6936 "ringOpacity", 6937 "ringOffsetWidth", 6938 "ringOffsetColor", 6939 "blur", 6940 "brightness", 6941 "contrast", 6942 "dropShadow", 6943 "grayscale", 6944 "hueRotate", 6945 "invert", 6946 "saturate", 6947 "sepia", 6948 "filter", 6949 "backdropBlur", 6950 "backdropBrightness", 6951 "backdropContrast", 6952 "backdropGrayscale", 6953 "backdropHueRotate", 6954 "backdropInvert", 6955 "backdropOpacity", 6956 "backdropSaturate", 6957 "backdropSepia", 6958 "backdropFilter", 6959 "transitionProperty", 6960 "transitionDelay", 6961 "transitionDuration", 6962 "transitionTimingFunction", 6963 "willChange", 6964 "contain", 6965 "content", 6966 "forcedColorAdjust" 6967 ]; 6968 })(corePluginList); 6969 return corePluginList; 6970 } 6971 var configurePlugins = {}; 6972 var hasRequiredConfigurePlugins; 6973 function requireConfigurePlugins() { 6974 if (hasRequiredConfigurePlugins) return configurePlugins; 6975 hasRequiredConfigurePlugins = 1; 6976 (function(exports) { 6977 Object.defineProperty(exports, "__esModule", { 6978 value: true 6979 }); 6980 Object.defineProperty(exports, "default", { 6981 enumerable: true, 6982 get: function() { 6983 return _default; 6984 } 6985 }); 6986 function _default(pluginConfig, plugins) { 6987 if (pluginConfig === void 0) { 6988 return plugins; 6989 } 6990 const pluginNames = Array.isArray(pluginConfig) ? pluginConfig : [ 6991 ...new Set(plugins.filter((pluginName) => { 6992 return pluginConfig !== false && pluginConfig[pluginName] !== false; 6993 }).concat(Object.keys(pluginConfig).filter((pluginName) => { 6994 return pluginConfig[pluginName] !== false; 6995 }))) 6996 ]; 6997 return pluginNames; 6998 } 6999 })(configurePlugins); 7000 return configurePlugins; 7001 } 7002 var colors = {}; 7003 var log = {}; 7004 var picocolors_browser = { exports: {} }; 7005 var hasRequiredPicocolors_browser; 7006 function requirePicocolors_browser() { 7007 if (hasRequiredPicocolors_browser) return picocolors_browser.exports; 7008 hasRequiredPicocolors_browser = 1; 7009 var x = String; 7010 var create = function() { 7011 return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x, blackBright: x, redBright: x, greenBright: x, yellowBright: x, blueBright: x, magentaBright: x, cyanBright: x, whiteBright: x, bgBlackBright: x, bgRedBright: x, bgGreenBright: x, bgYellowBright: x, bgBlueBright: x, bgMagentaBright: x, bgCyanBright: x, bgWhiteBright: x }; 7012 }; 7013 picocolors_browser.exports = create(); 7014 picocolors_browser.exports.createColors = create; 7015 return picocolors_browser.exports; 7016 } 7017 var hasRequiredLog; 7018 function requireLog() { 7019 if (hasRequiredLog) return log; 7020 hasRequiredLog = 1; 7021 (function(exports) { 7022 Object.defineProperty(exports, "__esModule", { 7023 value: true 7024 }); 7025 function _export(target, all2) { 7026 for (var name in all2) Object.defineProperty(target, name, { 7027 enumerable: true, 7028 get: all2[name] 7029 }); 7030 } 7031 _export(exports, { 7032 dim: function() { 7033 return dim; 7034 }, 7035 default: function() { 7036 return _default; 7037 } 7038 }); 7039 const _picocolors = /* @__PURE__ */ _interop_require_default(/* @__PURE__ */ requirePicocolors_browser()); 7040 function _interop_require_default(obj) { 7041 return obj && obj.__esModule ? obj : { 7042 default: obj 7043 }; 7044 } 7045 let alreadyShown = /* @__PURE__ */ new Set(); 7046 function log2(type, messages, key) { 7047 if (typeof process !== "undefined" && process.env.JEST_WORKER_ID) return; 7048 if (key && alreadyShown.has(key)) return; 7049 if (key) alreadyShown.add(key); 7050 console.warn("");
7051 messages.forEach((message) => console.warn(type, "-", message)); 7052 } 7053 function dim(input) { 7054 return _picocolors.default.dim(input); 7055 } 7056 const _default = { 7057 info(key, messages) { 7058 log2(_picocolors.default.bold(_picocolors.default.cyan("info")), ...Array.isArray(key) ? [ 7059 key 7060 ] : [ 7061 messages, 7062 key 7063 ]); 7064 }, 7065 warn(key, messages) { 7066 log2(_picocolors.default.bold(_picocolors.default.yellow("warn")), ...Array.isArray(key) ? [ 7067 key 7068 ] : [ 7069 messages, 7070 key 7071 ]); 7072 }, 7073 risk(key, messages) { 7074 log2(_picocolors.default.bold(_picocolors.default.magenta("risk")), ...Array.isArray(key) ? [ 7075 key 7076 ] : [ 7077 messages, 7078 key 7079 ]); 7080 } 7081 }; 7082 })(log); 7083 return log; 7084 } 7085 var hasRequiredColors; 7086 function requireColors() { 7087 if (hasRequiredColors) return colors; 7088 hasRequiredColors = 1; 7089 (function(exports) { 7090 Object.defineProperty(exports, "__esModule", { 7091 value: true 7092 }); 7093 Object.defineProperty(exports, "default", { 7094 enumerable: true, 7095 get: function() { 7096 return _default; 7097 } 7098 }); 7099 const _log = /* @__PURE__ */ _interop_require_default(requireLog()); 7100 function _interop_require_default(obj) { 7101 return obj && obj.__esModule ? obj : { 7102 default: obj 7103 }; 7104 } 7105 function warn({ version, from, to }) { 7106 _log.default.warn(`${from}-color-renamed`, [ 7107 `As of Tailwind CSS ${version}, \`${from}\` has been renamed to \`${to}\`.`, 7108 "Update your configuration file to silence this warning." 7109 ]); 7110 } 7111 const _default = { 7112 inherit: "inherit", 7113 current: "currentColor", 7114 transparent: "transparent", 7115 black: "#000", 7116 white: "#fff", 7117 slate: { 7118 50: "#f8fafc", 7119 100: "#f1f5f9", 7120 200: "#e2e8f0", 7121 300: "#cbd5e1", 7122 400: "#94a3b8", 7123 500: "#64748b", 7124 600: "#475569", 7125 700: "#334155", 7126 800: "#1e293b", 7127 900: "#0f172a", 7128 950: "#020617" 7129 }, 7130 gray: { 7131 50: "#f9fafb", 7132 100: "#f3f4f6", 7133 200: "#e5e7eb", 7134 300: "#d1d5db", 7135 400: "#9ca3af", 7136 500: "#6b7280", 7137 600: "#4b5563", 7138 700: "#374151", 7139 800: "#1f2937", 7140 900: "#111827", 7141 950: "#030712" 7142 }, 7143 zinc: { 7144 50: "#fafafa", 7145 100: "#f4f4f5", 7146 200: "#e4e4e7", 7147 300: "#d4d4d8", 7148 400: "#a1a1aa", 7149 500: "#71717a", 7150 600: "#52525b", 7151 700: "#3f3f46", 7152 800: "#27272a", 7153 900: "#18181b", 7154 950: "#09090b" 7155 }, 7156 neutral: { 7157 50: "#fafafa", 7158 100: "#f5f5f5", 7159 200: "#e5e5e5", 7160 300: "#d4d4d4", 7161 400: "#a3a3a3", 7162 500: "#737373", 7163 600: "#525252", 7164 700: "#404040", 7165 800: "#262626", 7166 900: "#171717", 7167 950: "#0a0a0a" 7168 }, 7169 stone: { 7170 50: "#fafaf9", 7171 100: "#f5f5f4", 7172 200: "#e7e5e4", 7173 300: "#d6d3d1", 7174 400: "#a8a29e", 7175 500: "#78716c", 7176 600: "#57534e", 7177 700: "#44403c", 7178 800: "#292524", 7179 900: "#1c1917", 7180 950: "#0c0a09" 7181 }, 7182 red: { 7183 50: "#fef2f2", 7184 100: "#fee2e2", 7185 200: "#fecaca", 7186 300: "#fca5a5", 7187 400: "#f87171", 7188 500: "#ef4444", 7189 600: "#dc2626", 7190 700: "#b91c1c", 7191 800: "#991b1b", 7192 900: "#7f1d1d", 7193 950: "#450a0a" 7194 }, 7195 orange: { 7196 50: "#fff7ed", 7197 100: "#ffedd5", 7198 200: "#fed7aa", 7199 300: "#fdba74", 7200 400: "#fb923c", 7201 500: "#f97316", 7202 600: "#ea580c", 7203 700: "#c2410c", 7204 800: "#9a3412", 7205 900: "#7c2d12", 7206 950: "#431407" 7207 }, 7208 amber: { 7209 50: "#fffbeb", 7210 100: "#fef3c7", 7211 200: "#fde68a", 7212 300: "#fcd34d", 7213 400: "#fbbf24", 7214 500: "#f59e0b", 7215 600: "#d97706", 7216 700: "#b45309", 7217 800: "#92400e", 7218 900: "#78350f", 7219 950: "#451a03" 7220 }, 7221 yellow: { 7222 50: "#fefce8", 7223 100: "#fef9c3", 7224 200: "#fef08a", 7225 300: "#fde047", 7226 400: "#facc15", 7227 500: "#eab308", 7228 600: "#ca8a04", 7229 700: "#a16207", 7230 800: "#854d0e", 7231 900: "#713f12", 7232 950: "#422006" 7233 }, 7234 lime: { 7235 50: "#f7fee7",
7236 100: "#ecfccb", 7237 200: "#d9f99d", 7238 300: "#bef264", 7239 400: "#a3e635", 7240 500: "#84cc16", 7241 600: "#65a30d", 7242 700: "#4d7c0f", 7243 800: "#3f6212", 7244 900: "#365314", 7245 950: "#1a2e05" 7246 }, 7247 green: { 7248 50: "#f0fdf4", 7249 100: "#dcfce7", 7250 200: "#bbf7d0", 7251 300: "#86efac", 7252 400: "#4ade80", 7253 500: "#22c55e", 7254 600: "#16a34a", 7255 700: "#15803d", 7256 800: "#166534", 7257 900: "#14532d", 7258 950: "#052e16" 7259 }, 7260 emerald: { 7261 50: "#ecfdf5", 7262 100: "#d1fae5", 7263 200: "#a7f3d0", 7264 300: "#6ee7b7", 7265 400: "#34d399", 7266 500: "#10b981", 7267 600: "#059669", 7268 700: "#047857", 7269 800: "#065f46", 7270 900: "#064e3b", 7271 950: "#022c22" 7272 }, 7273 teal: { 7274 50: "#f0fdfa", 7275 100: "#ccfbf1", 7276 200: "#99f6e4", 7277 300: "#5eead4", 7278 400: "#2dd4bf", 7279 500: "#14b8a6", 7280 600: "#0d9488", 7281 700: "#0f766e", 7282 800: "#115e59", 7283 900: "#134e4a", 7284 950: "#042f2e" 7285 }, 7286 cyan: { 7287 50: "#ecfeff", 7288 100: "#cffafe", 7289 200: "#a5f3fc", 7290 300: "#67e8f9", 7291 400: "#22d3ee", 7292 500: "#06b6d4", 7293 600: "#0891b2", 7294 700: "#0e7490", 7295 800: "#155e75", 7296 900: "#164e63", 7297 950: "#083344" 7298 }, 7299 sky: { 7300 50: "#f0f9ff", 7301 100: "#e0f2fe", 7302 200: "#bae6fd", 7303 300: "#7dd3fc", 7304 400: "#38bdf8", 7305 500: "#0ea5e9", 7306 600: "#0284c7", 7307 700: "#0369a1", 7308 800: "#075985", 7309 900: "#0c4a6e", 7310 950: "#082f49" 7311 }, 7312 blue: { 7313 50: "#eff6ff", 7314 100: "#dbeafe", 7315 200: "#bfdbfe", 7316 300: "#93c5fd", 7317 400: "#60a5fa", 7318 500: "#3b82f6", 7319 600: "#2563eb", 7320 700: "#1d4ed8", 7321 800: "#1e40af", 7322 900: "#1e3a8a", 7323 950: "#172554" 7324 }, 7325 indigo: { 7326 50: "#eef2ff", 7327 100: "#e0e7ff", 7328 200: "#c7d2fe", 7329 300: "#a5b4fc", 7330 400: "#818cf8", 7331 500: "#6366f1", 7332 600: "#4f46e5", 7333 700: "#4338ca", 7334 800: "#3730a3", 7335 900: "#312e81", 7336 950: "#1e1b4b" 7337 }, 7338 violet: { 7339 50: "#f5f3ff", 7340 100: "#ede9fe", 7341 200: "#ddd6fe", 7342 300: "#c4b5fd", 7343 400: "#a78bfa", 7344 500: "#8b5cf6", 7345 600: "#7c3aed", 7346 700: "#6d28d9", 7347 800: "#5b21b6", 7348 900: "#4c1d95", 7349 950: "#2e1065" 7350 }, 7351 purple: { 7352 50: "#faf5ff", 7353 100: "#f3e8ff", 7354 200: "#e9d5ff", 7355 300: "#d8b4fe", 7356 400: "#c084fc", 7357 500: "#a855f7", 7358 600: "#9333ea", 7359 700: "#7e22ce", 7360 800: "#6b21a8", 7361 900: "#581c87", 7362 950: "#3b0764" 7363 }, 7364 fuchsia: { 7365 50: "#fdf4ff", 7366 100: "#fae8ff", 7367 200: "#f5d0fe", 7368 300: "#f0abfc", 7369 400: "#e879f9", 7370 500: "#d946ef", 7371 600: "#c026d3", 7372 700: "#a21caf", 7373 800: "#86198f", 7374 900: "#701a75", 7375 950: "#4a044e" 7376 }, 7377 pink: { 7378 50: "#fdf2f8", 7379 100: "#fce7f3", 7380 200: "#fbcfe8", 7381 300: "#f9a8d4", 7382 400: "#f472b6", 7383 500: "#ec4899", 7384 600: "#db2777", 7385 700: "#be185d", 7386 800: "#9d174d", 7387 900: "#831843", 7388 950: "#500724" 7389 }, 7390 rose: { 7391 50: "#fff1f2", 7392 100: "#ffe4e6", 7393 200: "#fecdd3", 7394 300: "#fda4af", 7395 400: "#fb7185", 7396 500: "#f43f5e", 7397 600: "#e11d48", 7398 700: "#be123c", 7399 800: "#9f1239", 7400 900: "#881337", 7401 950: "#4c0519" 7402 }, 7403 get lightBlue() { 7404 warn({ 7405 version: "v2.2", 7406 from: "lightBlue",
7407 to: "sky" 7408 }); 7409 return this.sky; 7410 }, 7411 get warmGray() { 7412 warn({ 7413 version: "v3.0", 7414 from: "warmGray", 7415 to: "stone" 7416 }); 7417 return this.stone; 7418 }, 7419 get trueGray() { 7420 warn({ 7421 version: "v3.0", 7422 from: "trueGray", 7423 to: "neutral" 7424 }); 7425 return this.neutral; 7426 }, 7427 get coolGray() { 7428 warn({ 7429 version: "v3.0", 7430 from: "coolGray", 7431 to: "gray" 7432 }); 7433 return this.gray; 7434 }, 7435 get blueGray() { 7436 warn({ 7437 version: "v3.0", 7438 from: "blueGray", 7439 to: "slate" 7440 }); 7441 return this.slate; 7442 } 7443 }; 7444 })(colors); 7445 return colors; 7446 } 7447 var defaults = {}; 7448 var hasRequiredDefaults; 7449 function requireDefaults() { 7450 if (hasRequiredDefaults) return defaults; 7451 hasRequiredDefaults = 1; 7452 (function(exports) { 7453 Object.defineProperty(exports, "__esModule", { 7454 value: true 7455 }); 7456 Object.defineProperty(exports, "defaults", { 7457 enumerable: true, 7458 get: function() { 7459 return defaults2; 7460 } 7461 }); 7462 function defaults2(target, ...sources) { 7463 for (let source of sources) { 7464 for (let k in source) { 7465 var _target_hasOwnProperty; 7466 if (!(target === null || target === void 0 ? void 0 : (_target_hasOwnProperty = target.hasOwnProperty) === null || _target_hasOwnProperty === void 0 ? void 0 : _target_hasOwnProperty.call(target, k))) { 7467 target[k] = source[k]; 7468 } 7469 } 7470 for (let k of Object.getOwnPropertySymbols(source)) { 7471 var _target_hasOwnProperty1; 7472 if (!(target === null || target === void 0 ? void 0 : (_target_hasOwnProperty1 = target.hasOwnProperty) === null || _target_hasOwnProperty1 === void 0 ? void 0 : _target_hasOwnProperty1.call(target, k))) { 7473 target[k] = source[k]; 7474 } 7475 } 7476 } 7477 return target; 7478 } 7479 })(defaults); 7480 return defaults; 7481 } 7482 var toPath = {}; 7483 var hasRequiredToPath; 7484 function requireToPath() { 7485 if (hasRequiredToPath) return toPath; 7486 hasRequiredToPath = 1; 7487 (function(exports) { 7488 Object.defineProperty(exports, "__esModule", { 7489 value: true 7490 }); 7491 Object.defineProperty(exports, "toPath", { 7492 enumerable: true, 7493 get: function() { 7494 return toPath2; 7495 } 7496 }); 7497 function toPath2(path) { 7498 if (Array.isArray(path)) return path; 7499 let openBrackets = path.split("[").length - 1; 7500 let closedBrackets = path.split("]").length - 1; 7501 if (openBrackets !== closedBrackets) { 7502 throw new Error(`Path is invalid. Has unbalanced brackets: ${path}`); 7503 } 7504 return path.split(/\.(?![^\[]*\])|[\[\]]/g).filter(Boolean); 7505 } 7506 })(toPath); 7507 return toPath; 7508 } 7509 var normalizeConfig = {}; 7510 var featureFlags = {}; 7511 var hasRequiredFeatureFlags; 7512 function requireFeatureFlags() { 7513 if (hasRequiredFeatureFlags) return featureFlags; 7514 hasRequiredFeatureFlags = 1; 7515 (function(exports) { 7516 Object.defineProperty(exports, "__esModule", { 7517 value: true 7518 }); 7519 function _export(target, all2) { 7520 for (var name in all2) Object.defineProperty(target, name, { 7521 enumerable: true, 7522 get: all2[name] 7523 }); 7524 } 7525 _export(exports, { 7526 flagEnabled: function() { 7527 return flagEnabled; 7528 }, 7529 issueFlagNotices: function() { 7530 return issueFlagNotices; 7531 }, 7532 default: function() { 7533 return _default; 7534 } 7535 }); 7536 const _picocolors = /* @__PURE__ */ _interop_require_default(/* @__PURE__ */ requirePicocolors_browser()); 7537 const _log = /* @__PURE__ */ _interop_require_default(requireLog()); 7538 function _interop_require_default(obj) { 7539 return obj && obj.__esModule ? obj : { 7540 default: obj 7541 }; 7542 } 7543 let defaults2 = { 7544 optimizeUniversalDefaults: false, 7545 generalizedModifiers: true, 7546 disableColorOpacityUtilitiesByDefault: false, 7547 relativeContentPathsByDefault: false 7548 }; 7549 let featureFlags2 = { 7550 future: [ 7551 "hoverOnlyWhenSupported", 7552 "respectDefaultRingColorOpacity", 7553 "disableColorOpacityUtilitiesByDefault", 7554 "relativeContentPathsByDefault" 7555 ], 7556 experimental: [ 7557 "optimizeUniversalDefaults", 7558 "generalizedModifiers" 7559 ] 7560 }; 7561 function flagEnabled(config, flag) { 7562 if (featureFlags2.future.includes(flag)) { 7563 var _config_future; 7564 var _config_future_flag, _ref; 7565 return config.future === "all" || ((_ref = (_config_future_flag = config === null || config === void 0 ? void 0 : (_config_future = config.future) === null || _config_future === void 0 ? void 0 : _config_future[flag]) !== null && _config_future_flag !== void 0 ? _config_future_flag : defaults2[flag]) !== null && _ref !== void 0 ? _ref : false); 7566 } 7567 if (featureFlags2.experimental.includes(flag)) { 7568 var _config_experimental; 7569 var _config_experimental_flag, _ref1; 7570 return config.experimental === "all" || ((_ref1 = (_config_experimental_flag = config === null || config === void 0 ? void 0 : (_config_experimental = config.experimental) === null || _config_experimental === void 0 ? void 0 : _config_experimental[flag]) !== null && _config_experimental_flag !== void 0 ? _config_experimental_flag : defaults2[flag]) !== null && _ref1 !== void 0 ? _ref1 : false); 7571 } 7572 return false;
7573 } 7574 function experimentalFlagsEnabled(config) { 7575 if (config.experimental === "all") { 7576 return featureFlags2.experimental; 7577 } 7578 var _config_experimental; 7579 return Object.keys((_config_experimental = config === null || config === void 0 ? void 0 : config.experimental) !== null && _config_experimental !== void 0 ? _config_experimental : {}).filter((flag) => featureFlags2.experimental.includes(flag) && config.experimental[flag]); 7580 } 7581 function issueFlagNotices(config) { 7582 if (process.env.JEST_WORKER_ID !== void 0) { 7583 return; 7584 } 7585 if (experimentalFlagsEnabled(config).length > 0) { 7586 let changes = experimentalFlagsEnabled(config).map((s) => _picocolors.default.yellow(s)).join(", "); 7587 _log.default.warn("experimental-flags-enabled", [ 7588 `You have enabled experimental features: ${changes}`, 7589 "Experimental features in Tailwind CSS are not covered by semver, may introduce breaking changes, and can change at any time." 7590 ]); 7591 } 7592 } 7593 const _default = featureFlags2; 7594 })(featureFlags); 7595 return featureFlags; 7596 } 7597 var hasRequiredNormalizeConfig; 7598 function requireNormalizeConfig() { 7599 if (hasRequiredNormalizeConfig) return normalizeConfig; 7600 hasRequiredNormalizeConfig = 1; 7601 (function(exports) { 7602 Object.defineProperty(exports, "__esModule", { 7603 value: true 7604 }); 7605 Object.defineProperty(exports, "normalizeConfig", { 7606 enumerable: true, 7607 get: function() { 7608 return normalizeConfig2; 7609 } 7610 }); 7611 const _featureFlags = requireFeatureFlags(); 7612 const _log = /* @__PURE__ */ _interop_require_wildcard(requireLog()); 7613 function _getRequireWildcardCache(nodeInterop) { 7614 if (typeof WeakMap !== "function") return null; 7615 var cacheBabelInterop = /* @__PURE__ */ new WeakMap(); 7616 var cacheNodeInterop = /* @__PURE__ */ new WeakMap(); 7617 return (_getRequireWildcardCache = function(nodeInterop2) { 7618 return nodeInterop2 ? cacheNodeInterop : cacheBabelInterop; 7619 })(nodeInterop); 7620 } 7621 function _interop_require_wildcard(obj, nodeInterop) { 7622 if (obj && obj.__esModule) { 7623 return obj; 7624 } 7625 if (obj === null || typeof obj !== "object" && typeof obj !== "function") { 7626 return { 7627 default: obj 7628 }; 7629 } 7630 var cache = _getRequireWildcardCache(nodeInterop); 7631 if (cache && cache.has(obj)) { 7632 return cache.get(obj); 7633 } 7634 var newObj = {}; 7635 var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; 7636 for (var key in obj) { 7637 if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { 7638 var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; 7639 if (desc && (desc.get || desc.set)) { 7640 Object.defineProperty(newObj, key, desc); 7641 } else { 7642 newObj[key] = obj[key]; 7643 } 7644 } 7645 } 7646 newObj.default = obj; 7647 if (cache) { 7648 cache.set(obj, newObj); 7649 } 7650 return newObj; 7651 } 7652 function normalizeConfig2(config) { 7653 let valid = (() => { 7654 if (config.purge) { 7655 return false; 7656 } 7657 if (!config.content) { 7658 return false; 7659 } 7660 if (!Array.isArray(config.content) && !(typeof config.content === "object" && config.content !== null)) { 7661 return false; 7662 } 7663 if (Array.isArray(config.content)) { 7664 return config.content.every((path) => { 7665 if (typeof path === "string") return true; 7666 if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== "string") return false; 7667 if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== "string") { 7668 return false; 7669 } 7670 return true; 7671 }); 7672 } 7673 if (typeof config.content === "object" && config.content !== null) { 7674 if (Object.keys(config.content).some((key) => ![ 7675 "files", 7676 "relative", 7677 "extract", 7678 "transform" 7679 ].includes(key))) { 7680 return false;
7681 } 7682 if (Array.isArray(config.content.files)) { 7683 if (!config.content.files.every((path) => { 7684 if (typeof path === "string") return true; 7685 if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== "string") return false; 7686 if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== "string") { 7687 return false; 7688 } 7689 return true; 7690 })) { 7691 return false; 7692 } 7693 if (typeof config.content.extract === "object") { 7694 for (let value of Object.values(config.content.extract)) { 7695 if (typeof value !== "function") { 7696 return false; 7697 } 7698 } 7699 } else if (!(config.content.extract === void 0 || typeof config.content.extract === "function")) { 7700 return false; 7701 } 7702 if (typeof config.content.transform === "object") { 7703 for (let value of Object.values(config.content.transform)) { 7704 if (typeof value !== "function") { 7705 return false; 7706 } 7707 } 7708 } else if (!(config.content.transform === void 0 || typeof config.content.transform === "function")) { 7709 return false; 7710 } 7711 if (typeof config.content.relative !== "boolean" && typeof config.content.relative !== "undefined") { 7712 return false; 7713 } 7714 } 7715 return true; 7716 } 7717 return false; 7718 })(); 7719 if (!valid) { 7720 _log.default.warn("purge-deprecation", [ 7721 "The `purge`/`content` options have changed in Tailwind CSS v3.0.", 7722 "Update your configuration file to eliminate this warning.", 7723 "https://tailwindcss.com/docs/upgrade-guide#configure-content-sources" 7724 ]); 7725 } 7726 config.safelist = (() => { 7727 var _purge_options; 7728 let { content, purge, safelist } = config; 7729 if (Array.isArray(safelist)) return safelist; 7730 if (Array.isArray(content === null || content === void 0 ? void 0 : content.safelist)) return content.safelist; 7731 if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.safelist)) return purge.safelist; 7732 if (Array.isArray(purge === null || purge === void 0 ? void 0 : (_purge_options = purge.options) === null || _purge_options === void 0 ? void 0 : _purge_options.safelist)) return purge.options.safelist; 7733 return []; 7734 })(); 7735 config.blocklist = (() => { 7736 let { blocklist } = config; 7737 if (Array.isArray(blocklist)) { 7738 if (blocklist.every((item) => typeof item === "string")) { 7739 return blocklist; 7740 } 7741 _log.default.warn("blocklist-invalid", [ 7742 "The `blocklist` option must be an array of strings.", 7743 "https://tailwindcss.com/docs/content-configuration#discarding-classes" 7744 ]); 7745 } 7746 return []; 7747 })(); 7748 if (typeof config.prefix === "function") { 7749 _log.default.warn("prefix-function", [ 7750 "As of Tailwind CSS v3.0, `prefix` cannot be a function.", 7751 "Update `prefix` in your configuration to be a string to eliminate this warning.", 7752 "https://tailwindcss.com/docs/upgrade-guide#prefix-cannot-be-a-function" 7753 ]); 7754 config.prefix = ""; 7755 } else { 7756 var _config_prefix; 7757 config.prefix = (_config_prefix = config.prefix) !== null && _config_prefix !== void 0 ? _config_prefix : ""; 7758 } 7759 config.content = { 7760 relative: (() => { 7761 let { content } = config; 7762 if (content === null || content === void 0 ? void 0 : content.relative) { 7763 return content.relative; 7764 } 7765 return (0, _featureFlags.flagEnabled)(config, "relativeContentPathsByDefault"); 7766 })(), 7767 files: (() => { 7768 let { content, purge } = config; 7769 if (Array.isArray(purge)) return purge; 7770 if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.content)) return purge.content; 7771 if (Array.isArray(content)) return content; 7772 if (Array.isArray(content === null || content === void 0 ? void 0 : content.content)) return content.content; 7773 if (Array.isArray(content === null || content === void 0 ? void 0 : content.files)) return content.files; 7774 return []; 7775 })(), 7776 extract: (() => { 7777 let extract = (() => { 7778 var _config_purge, _config_content, _config_purge1, _config_purge_extract, _config_content1, _config_content_extract, _config_purge2, _config_purge_options, _config_content2, _config_content_options; 7779 if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : _config_purge.extract) return config.purge.extract; 7780 if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : _config_content.extract) return config.content.extract; 7781 if ((_config_purge1 = config.purge) === null || _config_purge1 === void 0 ? void 0 : (_config_purge_extract = _config_purge1.extract) === null || _config_purge_extract === void 0 ? void 0 : _config_purge_extract.DEFAULT) return config.purge.extract.DEFAULT; 7782 if ((_config_content1 = config.content) === null || _config_content1 === void 0 ? void 0 : (_config_content_extract = _config_content1.extract) === null || _config_content_extract === void 0 ? void 0 : _config_content_extract.DEFAULT) return config.content.extract.DEFAULT; 7783 if ((_config_purge2 = config.purge) === null || _config_purge2 === void 0 ? void 0 : (_config_purge_options = _config_purge2.options) === null || _config_purge_options === void 0 ? void 0 : _config_purge_options.extractors) return config.purge.options.extractors; 7784 if ((_config_content2 = config.content) === null || _config_content2 === void 0 ? void 0 : (_config_content_options = _config_content2.options) === null || _config_content_options === void 0 ? void 0 : _config_content_options.extractors) return config.content.options.extractors; 7785 return {}; 7786 })(); 7787 let extractors = {}; 7788 let defaultExtractor = (() => { 7789 var _config_purge, _config_purge_options, _config_content, _config_content_options; 7790 if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : (_config_purge_options = _config_purge.options) === null || _config_purge_options === void 0 ? void 0 : _config_purge_options.defaultExtractor) { 7791 return config.purge.options.defaultExtractor; 7792 } 7793 if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : (_config_content_options = _config_content.options) === null || _config_content_options === void 0 ? void 0 : _config_content_options.defaultExtractor) { 7794 return config.content.options.defaultExtractor; 7795 } 7796 return void 0; 7797 })(); 7798 if (defaultExtractor !== void 0) { 7799 extractors.DEFAULT = defaultExtractor; 7800 } 7801 if (typeof extract === "function") { 7802 extractors.DEFAULT = extract; 7803 } else if (Array.isArray(extract)) { 7804 for (let { extensions, extractor } of extract !== null && extract !== void 0 ? extract : []) { 7805 for (let extension of extensions) { 7806 extractors[extension] = extractor; 7807 } 7808 } 7809 } else if (typeof extract === "object" && extract !== null) { 7810 Object.assign(extractors, extract); 7811 } 7812 return extractors; 7813 })(), 7814 transform: (() => { 7815 let transform = (() => { 7816 var _config_purge, _config_content, _config_purge1, _config_purge_transform, _c
7816onfig_content1, _config_content_transform; 7817 if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : _config_purge.transform) return config.purge.transform; 7818 if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : _config_content.transform) return config.content.transform; 7819 if ((_config_purge1 = config.purge) === null || _config_purge1 === void 0 ? void 0 : (_config_purge_transform = _config_purge1.transform) === null || _config_purge_transform === void 0 ? void 0 : _config_purge_transform.DEFAULT) return config.purge.transform.DEFAULT; 7820 if ((_config_content1 = config.content) === null || _config_content1 === void 0 ? void 0 : (_config_content_transform = _config_content1.transform) === null || _config_content_transform === void 0 ? void 0 : _config_content_transform.DEFAULT) return config.content.transform.DEFAULT; 7821 return {}; 7822 })(); 7823 let transformers = {}; 7824 if (typeof transform === "function") { 7825 transformers.DEFAULT = transform; 7826 } else if (typeof transform === "object" && transform !== null) { 7827 Object.assign(transformers, transform); 7828 } 7829 return transformers; 7830 })() 7831 }; 7832 for (let file of config.content.files) { 7833 if (typeof file === "string" && /{([^,]*?)}/g.test(file)) { 7834 _log.default.warn("invalid-glob-braces", [ 7835 `The glob pattern ${(0, _log.dim)(file)} in your Tailwind CSS configuration is invalid.`, 7836 `Update it to ${(0, _log.dim)(file.replace(/{([^,]*?)}/g, "$1"))} to silence this warning.` 7837 ]); 7838 break; 7839 } 7840 } 7841 return config; 7842 } 7843 })(normalizeConfig); 7844 return normalizeConfig; 7845 } 7846 var isPlainObject = {}; 7847 var hasRequiredIsPlainObject; 7848 function requireIsPlainObject() { 7849 if (hasRequiredIsPlainObject) return isPlainObject; 7850 hasRequiredIsPlainObject = 1; 7851 (function(exports) { 7852 Object.defineProperty(exports, "__esModule", { 7853 value: true 7854 }); 7855 Object.defineProperty(exports, "default", { 7856 enumerable: true, 7857 get: function() { 7858 return isPlainObject2; 7859 } 7860 }); 7861 function isPlainObject2(value) { 7862 if (Object.prototype.toString.call(value) !== "[object Object]") { 7863 return false; 7864 } 7865 const prototype2 = Object.getPrototypeOf(value); 7866 return prototype2 === null || Object.getPrototypeOf(prototype2) === null; 7867 } 7868 })(isPlainObject); 7869 return isPlainObject; 7870 } 7871 var cloneDeep = {}; 7872 var hasRequiredCloneDeep; 7873 function requireCloneDeep() { 7874 if (hasRequiredCloneDeep) return cloneDeep; 7875 hasRequiredCloneDeep = 1; 7876 (function(exports) { 7877 Object.defineProperty(exports, "__esModule", { 7878 value: true 7879 }); 7880 Object.defineProperty(exports, "cloneDeep", { 7881 enumerable: true, 7882 get: function() { 7883 return cloneDeep2; 7884 } 7885 }); 7886 function cloneDeep2(value) { 7887 if (Array.isArray(value)) { 7888 return value.map((child) => cloneDeep2(child)); 7889 } 7890 if (typeof value === "object" && value !== null) { 7891 return Object.fromEntries(Object.entries(value).map(([k, v]) => [ 7892 k, 7893 cloneDeep2(v) 7894 ])); 7895 } 7896 return value; 7897 } 7898 })(cloneDeep); 7899 return cloneDeep; 7900 } 7901 var pluginUtils = {}; 7902 var escapeCommas = {}; 7903 var hasRequiredEscapeCommas; 7904 function requireEscapeCommas() { 7905 if (hasRequiredEscapeCommas) return escapeCommas; 7906 hasRequiredEscapeCommas = 1; 7907 (function(exports) { 7908 Object.defineProperty(exports, "__esModule", { 7909 value: true 7910 }); 7911 Object.defineProperty(exports, "default", { 7912 enumerable: true, 7913 get: function() { 7914 return escapeCommas2; 7915 } 7916 }); 7917 function escapeCommas2(className) { 7918 return className.replace(/\\,/g, "\\2c "); 7919 } 7920 })(escapeCommas); 7921 return escapeCommas; 7922 } 7923 var withAlphaVariable = {}; 7924 var color = {}; 7925 var colorNames = {}; 7926 var hasRequiredColorNames; 7927 function requireColorNames() { 7928 if (hasRequiredColorNames) return colorNames; 7929 hasRequiredColorNames = 1; 7930 (function(exports) { 7931 Object.defineProperty(exports, "__esModule", { 7932 value: true 7933 }); 7934 Object.defineProperty(exports, "default", { 7935 enumerable: true, 7936 get: function() { 7937 return _default; 7938 } 7939 }); 7940 const _default = { 7941 aliceblue: [ 7942 240, 7943 248, 7944 255 7945 ], 7946 antiquewhite: [ 7947 250, 7948 235, 7949 215 7950 ], 7951 aqua: [ 7952 0, 7953 255, 7954 255 7955 ], 7956 aquamarine: [ 7957 127, 7958 255, 7959 212 7960 ], 7961 azure: [ 7962 240, 7963 255, 7964 255 7965 ], 7966 beige: [ 7967 245, 7968 245, 7969 220 7970 ], 7971 bisque: [ 7972 255, 7973 228, 7974 196 7975 ], 7976 black: [ 7977 0, 7978 0, 7979 0 7980 ], 7981 blanchedalmond: [ 7982 255, 7983 235, 7984 205 7985 ], 7986 blue: [ 7987 0, 7988 0, 7989 255 7990 ], 7991 blueviolet: [ 7992 138, 7993 43, 7994 226 7995 ], 7996 brown: [ 7997 165, 7998 42, 7999 42 8000 ], 8001 burlywood: [ 8002 222, 8003 184, 8004 135 8005 ], 8006 cadetblue: [ 8007 95, 8008 158, 8009 160 8010 ], 8011 chartreuse: [ 8012 127, 8013 255, 8014 0 8015 ], 8016 chocolate: [ 8017 210, 8018 105, 8019 30 8020 ], 8021 coral: [ 8022 255, 8023 127, 8024 80 8025 ], 8026 cornflowerblue: [ 8027 100, 8028 149, 8029 237 8030 ], 8031 cornsilk: [ 8032 255, 8033 248, 8034 220 8035 ], 8036 crimson: [ 8037 220, 8038 20, 8039 60 8040 ], 8041 cyan: [ 8042 0, 8043 255, 8044 255 8045 ], 8046 darkblue: [ 8047 0, 8048 0, 8049 139 8050 ], 8051 darkcyan: [ 8052 0, 8053 139, 8054 139 8055 ], 8056 darkgoldenrod: [ 8057 184, 8058 134, 8059 11 8060 ], 8061 darkgray: [ 8062 169, 8063 169, 8064 169 8065 ], 8066 darkgreen: [ 8067 0, 8068 100, 8069 0 8070 ], 8071 darkgrey: [ 8072 169, 8073 169, 8074 169 8075 ], 8076 darkkhaki: [ 8077 189, 8078 183, 8079 107 8080 ], 8081 darkmagenta: [ 8082 139, 8083 0, 8084 139 8085 ], 8086 darkolivegreen: [ 8087 85, 8088 107, 8089 47 8090 ], 8091 darkorange: [ 8092 255, 8093 140, 8094 0 8095 ], 8096 darkorchid: [ 8097 153, 8098 50,
8099 204 8100 ], 8101 darkred: [ 8102 139, 8103 0, 8104 0 8105 ], 8106 darksalmon: [ 8107 233, 8108 150, 8109 122 8110 ], 8111 darkseagreen: [ 8112 143, 8113 188, 8114 143 8115 ], 8116 darkslateblue: [ 8117 72, 8118 61, 8119 139 8120 ], 8121 darkslategray: [ 8122 47, 8123 79, 8124 79 8125 ], 8126 darkslategrey: [ 8127 47, 8128 79, 8129 79 8130 ], 8131 darkturquoise: [ 8132 0, 8133 206, 8134 209 8135 ], 8136 darkviolet: [ 8137 148, 8138 0, 8139 211 8140 ], 8141 deeppink: [ 8142 255, 8143 20, 8144 147 8145 ], 8146 deepskyblue: [ 8147 0, 8148 191, 8149 255 8150 ], 8151 dimgray: [ 8152 105, 8153 105, 8154 105 8155 ], 8156 dimgrey: [ 8157 105, 8158 105, 8159 105 8160 ], 8161 dodgerblue: [ 8162 30, 8163 144, 8164 255 8165 ], 8166 firebrick: [ 8167 178, 8168 34, 8169 34 8170 ], 8171 floralwhite: [ 8172 255, 8173 250, 8174 240 8175 ], 8176 forestgreen: [ 8177 34, 8178 139, 8179 34 8180 ], 8181 fuchsia: [ 8182 255, 8183 0, 8184 255 8185 ], 8186 gainsboro: [ 8187 220, 8188 220, 8189 220 8190 ], 8191 ghostwhite: [ 8192 248, 8193 248, 8194 255 8195 ], 8196 gold: [ 8197 255, 8198 215, 8199 0 8200 ], 8201 goldenrod: [ 8202 218, 8203 165, 8204 32 8205 ], 8206 gray: [ 8207 128, 8208 128, 8209 128 8210 ], 8211 green: [ 8212 0, 8213 128, 8214 0 8215 ], 8216 greenyellow: [ 8217 173, 8218 255, 8219 47 8220 ], 8221 grey: [ 8222 128, 8223 128, 8224 128 8225 ], 8226 honeydew: [ 8227 240, 8228 255, 8229 240 8230 ], 8231 hotpink: [ 8232 255, 8233 105, 8234 180 8235 ], 8236 indianred: [ 8237 205, 8238 92, 8239 92 8240 ], 8241 indigo: [ 8242 75, 8243 0, 8244 130 8245 ], 8246 ivory: [ 8247 255, 8248 255, 8249 240 8250 ], 8251 khaki: [ 8252 240, 8253 230, 8254 140 8255 ], 8256 lavender: [ 8257 230, 8258 230, 8259 250 8260 ], 8261 lavenderblush: [ 8262 255, 8263 240, 8264 245 8265 ], 8266 lawngreen: [ 8267 124, 8268 252, 8269 0 8270 ], 8271 lemonchiffon: [ 8272 255, 8273 250, 8274 205 8275 ], 8276 lightblue: [ 8277 173, 8278 216, 8279 230 8280 ], 8281 lightcoral: [ 8282 240, 8283 128, 8284 128 8285 ], 8286 lightcyan: [ 8287 224, 8288 255, 8289 255 8290 ], 8291 lightgoldenrodyellow: [ 8292 250, 8293 250, 8294 210 8295 ], 8296 lightgray: [ 8297 211, 8298 211, 8299 211 8300 ], 8301 lightgreen: [ 8302 144, 8303 238, 8304 144 8305 ], 8306 lightgrey: [ 8307 211, 8308 211, 8309 211 8310 ], 8311 lightpink: [ 8312 255, 8313 182, 8314 193 8315 ], 8316 lightsalmon: [ 8317 255, 8318 160, 8319 122 8320 ], 8321 lightseagreen: [ 8322 32, 8323 178, 8324 170 8325 ], 8326 lightskyblue: [ 8327 135, 8328 206, 8329 250 8330 ], 8331 lightslategray: [ 8332 119, 8333 136, 8334 153 8335 ], 8336 lightslategrey: [ 8337 119, 8338 136, 8339 153 8340 ], 8341 lightsteelblue: [ 8342 176, 8343 196, 8344 222 8345 ], 8346 lightyellow: [ 8347 255, 8348 255, 8349 224 8350 ], 8351 lime: [ 8352 0, 8353 255, 8354 0 8355 ], 8356 limegreen: [ 8357 50, 8358 205, 8359 50 8360 ], 8361 linen: [ 8362 250, 8363 240, 8364 230 8365 ], 8366 magenta: [ 8367 255, 8368 0, 8369 255 8370 ], 8371 maroon: [ 8372 128, 8373 0, 8374 0 8375 ], 8376 mediumaquamarine: [ 8377 102, 8378 205, 8379 170 8380 ], 8381 mediumblue: [ 8382 0, 8383 0, 8384 205 8385 ], 8386 mediumorchid: [ 8387 186, 8388 85, 8389 211 8390 ], 8391 mediumpurple: [ 8392 147, 8393 112, 8394 219 8395 ], 8396 mediumseagreen: [ 8397 60, 8398 179, 8399 113 8400 ], 8401 mediumslateblue: [ 8402 123, 8403 104, 8404 238 8405 ], 8406 mediumspringgreen: [ 8407 0, 8408 250, 8409 154 8410 ], 8411 mediumturquoise: [ 8412 72, 8413 209, 8414 204 8415 ], 8416 mediumvioletred: [ 8417 199, 8418 21, 8419 133
8420 ], 8421 midnightblue: [ 8422 25, 8423 25, 8424 112 8425 ], 8426 mintcream: [ 8427 245, 8428 255, 8429 250 8430 ], 8431 mistyrose: [ 8432 255, 8433 228, 8434 225 8435 ], 8436 moccasin: [ 8437 255, 8438 228, 8439 181 8440 ], 8441 navajowhite: [ 8442 255, 8443 222, 8444 173 8445 ], 8446 navy: [ 8447 0, 8448 0, 8449 128 8450 ], 8451 oldlace: [ 8452 253, 8453 245, 8454 230 8455 ], 8456 olive: [ 8457 128, 8458 128, 8459 0 8460 ], 8461 olivedrab: [ 8462 107, 8463 142, 8464 35 8465 ], 8466 orange: [ 8467 255, 8468 165, 8469 0 8470 ], 8471 orangered: [ 8472 255, 8473 69, 8474 0 8475 ], 8476 orchid: [ 8477 218, 8478 112, 8479 214 8480 ], 8481 palegoldenrod: [ 8482 238, 8483 232, 8484 170 8485 ], 8486 palegreen: [ 8487 152, 8488 251, 8489 152 8490 ], 8491 paleturquoise: [ 8492 175, 8493 238, 8494 238 8495 ], 8496 palevioletred: [ 8497 219, 8498 112, 8499 147 8500 ], 8501 papayawhip: [ 8502 255, 8503 239, 8504 213 8505 ], 8506 peachpuff: [ 8507 255, 8508 218, 8509 185 8510 ], 8511 peru: [ 8512 205, 8513 133, 8514 63 8515 ], 8516 pink: [ 8517 255, 8518 192, 8519 203 8520 ], 8521 plum: [ 8522 221, 8523 160, 8524 221 8525 ], 8526 powderblue: [ 8527 176, 8528 224, 8529 230 8530 ], 8531 purple: [ 8532 128, 8533 0, 8534 128 8535 ], 8536 rebeccapurple: [ 8537 102, 8538 51, 8539 153 8540 ], 8541 red: [ 8542 255, 8543 0, 8544 0 8545 ], 8546 rosybrown: [ 8547 188, 8548 143, 8549 143 8550 ], 8551 royalblue: [ 8552 65, 8553 105, 8554 225 8555 ], 8556 saddlebrown: [ 8557 139, 8558 69, 8559 19 8560 ], 8561 salmon: [ 8562 250, 8563 128, 8564 114 8565 ], 8566 sandybrown: [ 8567 244, 8568 164, 8569 96 8570 ], 8571 seagreen: [ 8572 46, 8573 139, 8574 87 8575 ], 8576 seashell: [ 8577 255, 8578 245, 8579 238 8580 ], 8581 sienna: [ 8582 160, 8583 82, 8584 45 8585 ], 8586 silver: [ 8587 192, 8588 192, 8589 192 8590 ], 8591 skyblue: [ 8592 135, 8593 206, 8594 235 8595 ], 8596 slateblue: [ 8597 106, 8598 90, 8599 205 8600 ], 8601 slategray: [ 8602 112, 8603 128, 8604 144 8605 ], 8606 slategrey: [ 8607 112, 8608 128, 8609 144 8610 ], 8611 snow: [ 8612 255, 8613 250, 8614 250 8615 ], 8616 springgreen: [ 8617 0, 8618 255, 8619 127 8620 ], 8621 steelblue: [ 8622 70, 8623 130, 8624 180 8625 ], 8626 tan: [ 8627 210, 8628 180, 8629 140 8630 ], 8631 teal: [ 8632 0, 8633 128, 8634 128 8635 ], 8636 thistle: [ 8637 216, 8638 191, 8639 216 8640 ], 8641 tomato: [ 8642 255, 8643 99, 8644 71 8645 ], 8646 turquoise: [ 8647 64, 8648 224, 8649 208 8650 ], 8651 violet: [ 8652 238, 8653 130, 8654 238 8655 ], 8656 wheat: [ 8657 245, 8658 222, 8659 179 8660 ], 8661 white: [ 8662 255, 8663 255, 8664 255 8665 ], 8666 whitesmoke: [ 8667 245, 8668 245, 8669 245 8670 ], 8671 yellow: [ 8672 255, 8673 255, 8674 0 8675 ], 8676 yellowgreen: [ 8677 154, 8678 205, 8679 50 8680 ] 8681 }; 8682 })(colorNames); 8683 return colorNames; 8684 } 8685 var hasRequiredColor; 8686 function requireColor() { 8687 if (hasRequiredColor) return color; 8688 hasRequiredColor = 1; 8689 (function(exports) { 8690 Object.defineProperty(exports, "__esModule", { 8691 value: true 8692 }); 8693 function _export(target, all2) { 8694 for (var name in all2) Object.defineProperty(target, name, { 8695 enumerable: true, 8696 get: all2[name] 8697 }); 8698 } 8699 _export(exports, { 8700 parseColor: function() { 8701 return parseColor; 8702 }, 8703 formatColor: function() { 8704 return formatColor; 8705 } 8706 }); 8707 const _colorNames = /* @__PURE__ */ _interop_require_default(requireColorNames()); 8708 function _interop_require_default(obj) { 8709 return obj && obj.__esModule ? obj : { 8710 default: obj 8711 }; 8712 } 8713 let HEX = /^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i; 8714 let SHORT_HEX = /^#([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i; 8715 let VALUE = /(?:\d+|\d*\.\d+)%?/; 8716 let SEP = /(?:\s*,\s*|\s+)/; 8717 let ALPHA_SEP = /\s*[,/]\s*/; 8718 let CUSTOM_PROPERTY = /var\(--(?:[^ )]*?)(?:,(?:[^ )]*?|var\(--[^ )]*?\)))?\)/; 8719 let RGB = new RegExp(`^(rgba?)\\(\\s*(${VALUE.source}|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\s*\\)$`); 8720 let HSL = new RegExp(`^(hsla?)\\(\\s*((?:${VALUE.source})(?:deg|rad|grad|turn)?|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\s*\\)$`); 8721 function parseColor(value, { loose = false } = {}) { 8722 var _match_, _match__toString; 8723 if (typeof value !== "string") { 8724 return null; 8725 } 8726 value = value.trim(); 8727 if (value === "transparent") { 8728 return { 8729 mode: "rgb", 8730 color: [ 8731 "0", 8732 "0", 8733 "0" 8734 ], 8735 alpha: "0" 8736 }; 8737 } 8738 if (value in _colorNames.default) { 8739 return { 8740 mode: "rgb", 8741 color: _colorNames.default[value].map((v) => v.toString()) 8742 }; 8743 } 8744 let hex = value.replace(SHORT_HEX, (_, r, g, b, a) => [ 8745 "#", 8746 r, 8747 r, 8748 g, 8749 g, 8750 b, 8751 b, 8752 a ? a + a : "" 8753 ].join("")).match(HEX); 8754 if (hex !== null) { 8755 return { 8756 mode: "rgb", 8757 color: [ 8758 parseInt(hex[1], 16), 8759 parseInt(hex[2], 16), 8760 parseInt(hex[3], 16) 8761 ].map((v) => v.toString()),
8762 alpha: hex[4] ? (parseInt(hex[4], 16) / 255).toString() : void 0 8763 }; 8764 } 8765 var _value_match; 8766 let match = (_value_match = value.match(RGB)) !== null && _value_match !== void 0 ? _value_match : value.match(HSL); 8767 if (match === null) { 8768 return null; 8769 } 8770 let color2 = [ 8771 match[2], 8772 match[3], 8773 match[4] 8774 ].filter(Boolean).map((v) => v.toString()); 8775 if (color2.length === 2 && color2[0].startsWith("var(")) { 8776 return { 8777 mode: match[1], 8778 color: [ 8779 color2[0] 8780 ], 8781 alpha: color2[1] 8782 }; 8783 } 8784 if (!loose && color2.length !== 3) { 8785 return null; 8786 } 8787 if (color2.length < 3 && !color2.some((part) => /^var\(.*?\)$/.test(part))) { 8788 return null; 8789 } 8790 return { 8791 mode: match[1], 8792 color: color2, 8793 alpha: (_match_ = match[5]) === null || _match_ === void 0 ? void 0 : (_match__toString = _match_.toString) === null || _match__toString === void 0 ? void 0 : _match__toString.call(_match_) 8794 }; 8795 } 8796 function formatColor({ mode, color: color2, alpha }) { 8797 let hasAlpha = alpha !== void 0; 8798 if (mode === "rgba" || mode === "hsla") { 8799 return `${mode}(${color2.join(", ")}${hasAlpha ? `, ${alpha}` : ""})`; 8800 } 8801 return `${mode}(${color2.join(" ")}${hasAlpha ? ` / ${alpha}` : ""})`; 8802 } 8803 })(color); 8804 return color; 8805 } 8806 var hasRequiredWithAlphaVariable; 8807 function requireWithAlphaVariable() { 8808 if (hasRequiredWithAlphaVariable) return withAlphaVariable; 8809 hasRequiredWithAlphaVariable = 1; 8810 (function(exports) { 8811 Object.defineProperty(exports, "__esModule", { 8812 value: true 8813 }); 8814 function _export(target, all2) { 8815 for (var name in all2) Object.defineProperty(target, name, { 8816 enumerable: true, 8817 get: all2[name] 8818 }); 8819 } 8820 _export(exports, { 8821 withAlphaValue: function() { 8822 return withAlphaValue; 8823 }, 8824 default: function() { 8825 return withAlphaVariable2; 8826 } 8827 }); 8828 const _color = requireColor(); 8829 function withAlphaValue(color2, alphaValue, defaultValue) { 8830 if (typeof color2 === "function") { 8831 return color2({ 8832 opacityValue: alphaValue 8833 }); 8834 } 8835 let parsed = (0, _color.parseColor)(color2, { 8836 loose: true 8837 }); 8838 if (parsed === null) { 8839 return defaultValue; 8840 } 8841 return (0, _color.formatColor)({ 8842 ...parsed, 8843 alpha: alphaValue 8844 }); 8845 } 8846 function withAlphaVariable2({ color: color2, property, variable }) { 8847 let properties = [].concat(property); 8848 if (typeof color2 === "function") { 8849 return { 8850 [variable]: "1", 8851 ...Object.fromEntries(properties.map((p) => { 8852 return [ 8853 p, 8854 color2({ 8855 opacityVariable: variable, 8856 opacityValue: `var(${variable}, 1)` 8857 }) 8858 ]; 8859 })) 8860 }; 8861 } 8862 const parsed = (0, _color.parseColor)(color2); 8863 if (parsed === null) { 8864 return Object.fromEntries(properties.map((p) => [ 8865 p, 8866 color2 8867 ])); 8868 } 8869 if (parsed.alpha !== void 0) { 8870 return Object.fromEntries(properties.map((p) => [ 8871 p, 8872 color2 8873 ])); 8874 } 8875 return { 8876 [variable]: "1", 8877 ...Object.fromEntries(properties.map((p) => { 8878 return [ 8879 p, 8880 (0, _color.formatColor)({ 8881 ...parsed, 8882 alpha: `var(${variable}, 1)` 8883 }) 8884 ]; 8885 })) 8886 }; 8887 } 8888 })(withAlphaVariable); 8889 return withAlphaVariable; 8890 } 8891 var dataTypes = {}; 8892 var parseBoxShadowValue = {}; 8893 var splitAtTopLevelOnly = {}; 8894 var hasRequiredSplitAtTopLevelOnly; 8895 function requireSplitAtTopLevelOnly() { 8896 if (hasRequiredSplitAtTopLevelOnly) return splitAtTopLevelOnly; 8897 hasRequiredSplitAtTopLevelOnly = 1; 8898 (function(exports) { 8899 Object.defineProperty(exports, "__esModule", { 8900 value: true 8901 }); 8902 Object.defineProperty(exports, "splitAtTopLevelOnly", { 8903 enumerable: true, 8904 get: function() { 8905 return splitAtTopLevelOnly2; 8906 } 8907 }); 8908 function splitAtTopLevelOnly2(input, separator) { 8909 let stack = []; 8910 let parts = [];
8911 let lastPos = 0; 8912 let isEscaped = false; 8913 for (let idx = 0; idx < input.length; idx++) { 8914 let char = input[idx]; 8915 if (stack.length === 0 && char === separator[0] && !isEscaped) { 8916 if (separator.length === 1 || input.slice(idx, idx + separator.length) === separator) { 8917 parts.push(input.slice(lastPos, idx)); 8918 lastPos = idx + separator.length; 8919 } 8920 } 8921 isEscaped = isEscaped ? false : char === "\\"; 8922 if (char === "(" || char === "[" || char === "{") { 8923 stack.push(char); 8924 } else if (char === ")" && stack[stack.length - 1] === "(" || char === "]" && stack[stack.length - 1] === "[" || char === "}" && stack[stack.length - 1] === "{") { 8925 stack.pop(); 8926 } 8927 } 8928 parts.push(input.slice(lastPos)); 8929 return parts; 8930 } 8931 })(splitAtTopLevelOnly); 8932 return splitAtTopLevelOnly; 8933 } 8934 var hasRequiredParseBoxShadowValue; 8935 function requireParseBoxShadowValue() { 8936 if (hasRequiredParseBoxShadowValue) return parseBoxShadowValue; 8937 hasRequiredParseBoxShadowValue = 1; 8938 (function(exports) { 8939 Object.defineProperty(exports, "__esModule", { 8940 value: true 8941 }); 8942 function _export(target, all2) { 8943 for (var name in all2) Object.defineProperty(target, name, { 8944 enumerable: true, 8945 get: all2[name] 8946 }); 8947 } 8948 _export(exports, { 8949 parseBoxShadowValue: function() { 8950 return parseBoxShadowValue2; 8951 }, 8952 formatBoxShadowValue: function() { 8953 return formatBoxShadowValue; 8954 } 8955 }); 8956 const _splitAtTopLevelOnly = requireSplitAtTopLevelOnly(); 8957 let KEYWORDS = /* @__PURE__ */ new Set([ 8958 "inset", 8959 "inherit", 8960 "initial", 8961 "revert", 8962 "unset" 8963 ]); 8964 let SPACE = /\ +(?![^(]*\))/g; 8965 let LENGTH = /^-?(\d+|\.\d+)(.*?)$/g; 8966 function parseBoxShadowValue2(input) { 8967 let shadows = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(input, ","); 8968 return shadows.map((shadow) => { 8969 let value = shadow.trim(); 8970 let result = { 8971 raw: value 8972 }; 8973 let parts = value.split(SPACE); 8974 let seen = /* @__PURE__ */ new Set(); 8975 for (let part of parts) { 8976 LENGTH.lastIndex = 0; 8977 if (!seen.has("KEYWORD") && KEYWORDS.has(part)) { 8978 result.keyword = part; 8979 seen.add("KEYWORD"); 8980 } else if (LENGTH.test(part)) { 8981 if (!seen.has("X")) { 8982 result.x = part; 8983 seen.add("X"); 8984 } else if (!seen.has("Y")) { 8985 result.y = part; 8986 seen.add("Y"); 8987 } else if (!seen.has("BLUR")) { 8988 result.blur = part; 8989 seen.add("BLUR"); 8990 } else if (!seen.has("SPREAD")) { 8991 result.spread = part;
8992 seen.add("SPREAD"); 8993 } 8994 } else { 8995 if (!result.color) { 8996 result.color = part; 8997 } else { 8998 if (!result.unknown) result.unknown = []; 8999 result.unknown.push(part); 9000 } 9001 } 9002 } 9003 result.valid = result.x !== void 0 && result.y !== void 0; 9004 return result; 9005 }); 9006 } 9007 function formatBoxShadowValue(shadows) { 9008 return shadows.map((shadow) => { 9009 if (!shadow.valid) { 9010 return shadow.raw; 9011 } 9012 return [ 9013 shadow.keyword, 9014 shadow.x, 9015 shadow.y, 9016 shadow.blur, 9017 shadow.spread, 9018 shadow.color 9019 ].filter(Boolean).join(" "); 9020 }).join(", "); 9021 } 9022 })(parseBoxShadowValue); 9023 return parseBoxShadowValue; 9024 } 9025 var hasRequiredDataTypes; 9026 function requireDataTypes() { 9027 if (hasRequiredDataTypes) return dataTypes; 9028 hasRequiredDataTypes = 1; 9029 (function(exports) { 9030 Object.defineProperty(exports, "__esModule", { 9031 value: true 9032 }); 9033 function _export(target, all2) { 9034 for (var name in all2) Object.defineProperty(target, name, { 9035 enumerable: true, 9036 get: all2[name] 9037 }); 9038 } 9039 _export(exports, { 9040 normalize: function() { 9041 return normalize2; 9042 }, 9043 normalizeAttributeSelectors: function() { 9044 return normalizeAttributeSelectors; 9045 }, 9046 url: function() { 9047 return url; 9048 }, 9049 number: function() { 9050 return number; 9051 }, 9052 percentage: function() { 9053 return percentage; 9054 }, 9055 length: function() { 9056 return length; 9057 }, 9058 lineWidth: function() { 9059 return lineWidth; 9060 }, 9061 shadow: function() { 9062 return shadow; 9063 }, 9064 color: function() { 9065 return color2; 9066 }, 9067 image: function() { 9068 return image; 9069 }, 9070 gradient: function() { 9071 return gradient; 9072 }, 9073 position: function() { 9074 return position; 9075 }, 9076 familyName: function() { 9077 return familyName; 9078 }, 9079 genericName: function() { 9080 return genericName; 9081 }, 9082 absoluteSize: function() { 9083 return absoluteSize; 9084 }, 9085 relativeSize: function() { 9086 return relativeSize; 9087 } 9088 }); 9089 const _color = requireColor(); 9090 const _parseBoxShadowValue = requireParseBoxShadowValue(); 9091 const _splitAtTopLevelOnly = requireSplitAtTopLevelOnly(); 9092 let cssFunctions = [ 9093 "min", 9094 "max", 9095 "clamp", 9096 "calc" 9097 ]; 9098 function isCSSFunction(value) { 9099 return cssFunctions.some((fn) => new RegExp(`^${fn}\\(.*\\)`).test(value)); 9100 } 9101 const AUTO_VAR_INJECTION_EXCEPTIONS = /* @__PURE__ */ new Set([ 9102 // Concrete properties 9103 "scroll-timeline-name", 9104 "timeline-scope", 9105 "view-timeline-name", 9106 "font-palette", 9107 "anchor-name", 9108 "anchor-scope", 9109 "position-anchor", 9110 "position-try-options", 9111 // Shorthand properties 9112 "scroll-timeline", 9113 "animation-timeline", 9114 "view-timeline", 9115 "position-try" 9116 ]); 9117 function normalize2(value, context = null, isRoot = true) { 9118 let isVarException = context && AUTO_VAR_INJECTION_EXCEPTIONS.has(context.property); 9119 if (value.startsWith("--") && !isVarException) { 9120 return `var(${value})`; 9121 } 9122 if (value.includes("url(")) { 9123 return value.split(/(url\(.*?\))/g).filter(Boolean).map((part) => { 9124 if (/^url\(.*?\)$/.test(part)) { 9125 return part; 9126 } 9127 return normalize2(part, context, false); 9128 }).join(""); 9129 } 9130 value = value.replace(/([^\\])_+/g, (fullMatch, characterBefore) => characterBefore + " ".repeat(fullMatch.length - 1)).replace(/^_/g, " ").replace(/\\_/g, "_"); 9131 if (isRoot) { 9132 value = value.trim(); 9133 } 9134 value = normalizeMathOperatorSpacing(value); 9135 return value; 9136 } 9137 function normalizeAttributeSelectors(value) { 9138 if (value.includes("=")) { 9139 value = value.replace(/(=.*)/g, (_fullMatch, match) => { 9140 if (match[1] === "'" || match[1] === '"') { 9141 return match; 9142 } 9143 if (match.length > 2) { 9144 let trailingCharacter = match[match.length - 1]; 9145 if (match[match.length - 2] === " " && (trailingCharacter === "i" || trailingCharacter === "I" || trailingCharacter === "s" || trailingCharacter === "S")) { 9146 return `="${match.slice(1, -2)}" ${match[match.length - 1]}`; 9147 } 9148 } 9149 return `="${match.slice(1)}"`; 9150 }); 9151 } 9152 return value; 9153 } 9154 function normalizeMathOperatorSpacing(value) { 9155 let preventFormattingInFunctions = [ 9156 "theme" 9157 ]; 9158 let preventFormattingKeywords = [ 9159 "min-content", 9160 "max-content", 9161 "fit-content", 9162 // Env 9163 "safe-area-inset-top", 9164 "safe-area-inset-right", 9165 "safe-area-inset-bottom", 9166 "safe-area-inset-left", 9167 "titlebar-area-x", 9168 "titlebar-area-y", 9169 "titlebar-area-width", 9170 "titlebar-area-height", 9171 "keyboard-inset-top", 9172 "keyboard-inset-right", 9173 "keyboard-inset-bottom", 9174 "keyboard-inset-left", 9175 "keyboard-inset-width", 9176 "keyboard-inset-height", 9177 "radial-gradient", 9178 "linear-gradient", 9179 "conic-gradient", 9180 "repeating-radial-gradient", 9181 "repeating-linear-gradient", 9182 "repeating-conic-gradient", 9183 "anchor-size" 9184 ]; 9185 return value.replace(/(calc|min|max|clamp)\(.+\)/g, (match) => { 9186 let result = ""; 9187 function lastChar() { 9188 let char = result.trimEnd(); 9189 return char[char.length - 1]; 9190 } 9191 for (let i2 = 0; i2 < match.length; i2++) { 9192 let peek = function(word) { 9193 return word.split("").every((char2, j) => match[i2 + j] === char2); 9194 }
9194, consumeUntil = function(chars) { 9195 let minIndex = Infinity; 9196 for (let char2 of chars) { 9197 let index = match.indexOf(char2, i2); 9198 if (index !== -1 && index < minIndex) { 9199 minIndex = index; 9200 } 9201 } 9202 let result2 = match.slice(i2, minIndex); 9203 i2 += result2.length - 1; 9204 return result2; 9205 }; 9206 let char = match[i2]; 9207 if (peek("var")) { 9208 result += consumeUntil([ 9209 ")", 9210 "," 9211 ]); 9212 } else if (preventFormattingKeywords.some((keyword) => peek(keyword))) { 9213 let keyword = preventFormattingKeywords.find((keyword2) => peek(keyword2)); 9214 result += keyword; 9215 i2 += keyword.length - 1; 9216 } else if (preventFormattingInFunctions.some((fn) => peek(fn))) { 9217 result += consumeUntil([ 9218 ")" 9219 ]); 9220 } else if (peek("[")) { 9221 result += consumeUntil([ 9222 "]" 9223 ]); 9224 } else if ([ 9225 "+", 9226 "-", 9227 "*", 9228 "/" 9229 ].includes(char) && ![ 9230 "(", 9231 "+", 9232 "-", 9233 "*", 9234 "/", 9235 "," 9236 ].includes(lastChar())) { 9237 result += ` ${char} `; 9238 } else { 9239 result += char; 9240 } 9241 } 9242 return result.replace(/\s+/g, " "); 9243 }); 9244 } 9245 function url(value) { 9246 return value.startsWith("url("); 9247 } 9248 function number(value) { 9249 return !isNaN(Number(value)) || isCSSFunction(value); 9250 } 9251 function percentage(value) { 9252 return value.endsWith("%") && number(value.slice(0, -1)) || isCSSFunction(value); 9253 } 9254 let lengthUnits = [ 9255 "cm", 9256 "mm", 9257 "Q", 9258 "in", 9259 "pc", 9260 "pt", 9261 "px", 9262 "em", 9263 "ex", 9264 "ch", 9265 "rem", 9266 "lh", 9267 "rlh", 9268 "vw", 9269 "vh", 9270 "vmin", 9271 "vmax", 9272 "vb", 9273 "vi", 9274 "svw", 9275 "svh", 9276 "lvw", 9277 "lvh", 9278 "dvw", 9279 "dvh", 9280 "cqw", 9281 "cqh", 9282 "cqi", 9283 "cqb", 9284 "cqmin", 9285 "cqmax" 9286 ]; 9287 let lengthUnitsPattern = `(?:${lengthUnits.join("|")})`; 9288 function length(value) { 9289 return value === "0" || new RegExp(`^[+-]?[0-9]*.?[0-9]+(?:[eE][+-]?[0-9]+)?${lengthUnitsPattern}$`).test(value) || isCSSFunction(value); 9290 } 9291 let lineWidths = /* @__PURE__ */ new Set([ 9292 "thin", 9293 "medium", 9294 "thick" 9295 ]); 9296 function lineWidth(value) { 9297 return lineWidths.has(value); 9298 } 9299 function shadow(value) { 9300 let parsedShadows = (0, _parseBoxShadowValue.parseBoxShadowValue)(normalize2(value)); 9301 for (let parsedShadow of parsedShadows) { 9302 if (!parsedShadow.valid) { 9303 return false; 9304 } 9305 } 9306 return true; 9307 } 9308 function color2(value) { 9309 let colors2 = 0; 9310 let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, "_").every((part) => { 9311 part = normalize2(part); 9312 if (part.startsWith("var(")) return true; 9313 if ((0, _color.parseColor)(part, { 9314 loose: true 9315 }) !== null) return colors2++, true; 9316 return false; 9317 }); 9318 if (!result) return false; 9319 return colors2 > 0; 9320 } 9321 function image(value) { 9322 let images = 0; 9323 let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, ",").every((part) => { 9324 part = normalize2(part); 9325 if (part.startsWith("var(")) return true; 9326 if (url(part) || gradient(part) || [ 9327 "element(", 9328 "image(", 9329 "cross-fade(", 9330 "image-set(" 9331 ].some((fn) => part.startsWith(fn))) { 9332 images++; 9333 return true; 9334 } 9335 return false; 9336 }); 9337 if (!result) return false;
9338 return images > 0; 9339 } 9340 let gradientTypes = /* @__PURE__ */ new Set([ 9341 "conic-gradient", 9342 "linear-gradient", 9343 "radial-gradient", 9344 "repeating-conic-gradient", 9345 "repeating-linear-gradient", 9346 "repeating-radial-gradient" 9347 ]); 9348 function gradient(value) { 9349 value = normalize2(value); 9350 for (let type of gradientTypes) { 9351 if (value.startsWith(`${type}(`)) { 9352 return true; 9353 } 9354 } 9355 return false; 9356 } 9357 let validPositions = /* @__PURE__ */ new Set([ 9358 "center", 9359 "top", 9360 "right", 9361 "bottom", 9362 "left" 9363 ]); 9364 function position(value) { 9365 let positions = 0; 9366 let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, "_").every((part) => { 9367 part = normalize2(part); 9368 if (part.startsWith("var(")) return true; 9369 if (validPositions.has(part) || length(part) || percentage(part)) { 9370 positions++; 9371 return true; 9372 } 9373 return false; 9374 }); 9375 if (!result) return false; 9376 return positions > 0; 9377 } 9378 function familyName(value) { 9379 let fonts = 0; 9380 let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, ",").every((part) => { 9381 part = normalize2(part); 9382 if (part.startsWith("var(")) return true; 9383 if (part.includes(" ")) { 9384 if (!/(['"])([^"']+)\1/g.test(part)) { 9385 return false; 9386 } 9387 } 9388 if (/^\d/g.test(part)) { 9389 return false; 9390 } 9391 fonts++; 9392 return true; 9393 }); 9394 if (!result) return false; 9395 return fonts > 0; 9396 } 9397 let genericNames = /* @__PURE__ */ new Set([ 9398 "serif", 9399 "sans-serif", 9400 "monospace", 9401 "cursive", 9402 "fantasy", 9403 "system-ui", 9404 "ui-serif", 9405 "ui-sans-serif", 9406 "ui-monospace", 9407 "ui-rounded", 9408 "math", 9409 "emoji", 9410 "fangsong" 9411 ]); 9412 function genericName(value) { 9413 return genericNames.has(value); 9414 } 9415 let absoluteSizes = /* @__PURE__ */ new Set([ 9416 "xx-small", 9417 "x-small", 9418 "small", 9419 "medium", 9420 "large", 9421 "x-large", 9422 "xx-large", 9423 "xxx-large" 9424 ]); 9425 function absoluteSize(value) { 9426 return absoluteSizes.has(value); 9427 } 9428 let relativeSizes = /* @__PURE__ */ new Set([ 9429 "larger", 9430 "smaller" 9431 ]); 9432 function relativeSize(value) { 9433 return relativeSizes.has(value); 9434 } 9435 })(dataTypes); 9436 return dataTypes; 9437 }
9438 var validateFormalSyntax = {}; 9439 var hasRequiredValidateFormalSyntax; 9440 function requireValidateFormalSyntax() { 9441 if (hasRequiredValidateFormalSyntax) return validateFormalSyntax; 9442 hasRequiredValidateFormalSyntax = 1; 9443 (function(exports) { 9444 Object.defineProperty(exports, "__esModule", { 9445 value: true 9446 }); 9447 Object.defineProperty(exports, "backgroundSize", { 9448 enumerable: true, 9449 get: function() { 9450 return backgroundSize; 9451 } 9452 }); 9453 const _dataTypes = requireDataTypes(); 9454 const _splitAtTopLevelOnly = requireSplitAtTopLevelOnly(); 9455 function backgroundSize(value) { 9456 let keywordValues = [ 9457 "cover", 9458 "contain" 9459 ]; 9460 return (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, ",").every((part) => { 9461 let sizes = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(part, "_").filter(Boolean); 9462 if (sizes.length === 1 && keywordValues.includes(sizes[0])) return true; 9463 if (sizes.length !== 1 && sizes.length !== 2) return false; 9464 return sizes.every((size) => (0, _dataTypes.length)(size) || (0, _dataTypes.percentage)(size) || size === "auto"); 9465 }); 9466 } 9467 })(validateFormalSyntax); 9468 return validateFormalSyntax; 9469 } 9470 var hasRequiredPluginUtils; 9471 function requirePluginUtils() { 9472 if (hasRequiredPluginUtils) return pluginUtils; 9473 hasRequiredPluginUtils = 1; 9474 (function(exports) { 9475 Object.defineProperty(exports, "__esModule", { 9476 value: true 9477 }); 9478 function _export(target, all2) { 9479 for (var name in all2) Object.defineProperty(target, name, { 9480 enumerable: true, 9481 get: all2[name] 9482 }); 9483 } 9484 _export(exports, { 9485 updateAllClasses: function() { 9486 return updateAllClasses; 9487 }, 9488 asValue: function() { 9489 return asValue; 9490 }, 9491 parseColorFormat: function() { 9492 return parseColorFormat; 9493 }, 9494 asColor: function() { 9495 return asColor; 9496 }, 9497 asLookupValue: function() { 9498 return asLookupValue; 9499 }, 9500 typeMap: function() { 9501 return typeMap; 9502 }, 9503 coerceValue: function() { 9504 return coerceValue; 9505 }, 9506 getMatchingTypes: function() { 9507 return getMatchingTypes; 9508 } 9509 }); 9510 const _escapeCommas = /* @__PURE__ */ _interop_require_default(requireEscapeCommas()); 9511 const _withAlphaVariable = requireWithAlphaVariable(); 9512 const _dataTypes = requireDataTypes(); 9513 const _negateValue = /* @__PURE__ */ _interop_require_default(requireNegateValue()); 9514 const _validateFormalSyntax = requireValidateFormalSyntax(); 9515 const _featureFlags = requireFeatureFlags(); 9516 function _interop_require_default(obj) { 9517 return obj && obj.__esModule ? obj : { 9518 default: obj 9519 }; 9520 } 9521 function updateAllClasses(selectors, updateClass) { 9522 selectors.walkClasses((sel) => { 9523 sel.value = updateClass(sel.value); 9524 if (sel.raws && sel.raws.value) { 9525 sel.raws.value = (0, _escapeCommas.default)(sel.raws.value); 9526 } 9527 }); 9528 } 9529 function resolveArbitraryValue(modifier, validate) { 9530 if (!isArbitraryValue(modifier)) { 9531 return void 0; 9532 } 9533 let value = modifier.slice(1, -1); 9534 if (!validate(value)) { 9535 return void 0; 9536 } 9537 return (0, _dataTypes.normalize)(value); 9538 } 9539 function asNegativeValue(modifier, lookup = {}, validate) { 9540 let positiveValue = lookup[modifier]; 9541 if (positiveValue !== void 0) { 9542 return (0, _negateValue.default)(positiveValue); 9543 } 9544 if (isArbitraryValue(modifier)) { 9545 let resolved = resolveArbitraryValue(modifier, validate); 9546 if (resolved === void 0) { 9547 return void 0; 9548 } 9549 return (0, _negateValue.default)(resolved); 9550 } 9551 } 9552 function asValue(modifier, options = {}, { validate = () => true } = {}) { 9553 var _options_values; 9554 let value = (_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier]; 9555 if (value !== void 0) { 9556 return value; 9557 } 9558 if (options.supportsNegativeValues && modifier.startsWith("-")) { 9559 return asNegativeValue(modifier.slice(1), options.values, validate); 9560 } 9561 return resolveArbitraryValue(modifier, validate); 9562 } 9563 function isArbitraryValue(input) { 9564 return input.startsWith("[") && input.endsWith("]"); 9565 } 9566 function splitUtilityModifier(modifier) { 9567 let slashIdx = modifier.lastIndexOf("/"); 9568 let arbitraryStartIdx = modifier.lastIndexOf("[", slashIdx); 9569 let arbitraryEndIdx = modifier.indexOf("]", slashIdx); 9570 let isNextToArbitrary = modifier[slashIdx - 1] === "]" || modifier[slashIdx + 1] === "["; 9571 if (!isNextToArbitrary) { 9572 if (arbitraryStartIdx !== -1 && arbitraryEndIdx !== -1) { 9573 if (arbitraryStartIdx < slashIdx && slashIdx < arbitraryEndIdx) { 9574 slashIdx = modifier.lastIndexOf("/", arbitraryStartIdx); 9575 } 9576 } 9577 } 9578 if (slashIdx === -1 || slashIdx === modifier.length - 1) { 9579 return [ 9580 modifier, 9581 void 0 9582 ]; 9583 } 9584 let arbitrary = isArbitraryValue(modifier); 9585 if (arbitrary && !modifier.includes("]/[")) { 9586 return [ 9587 modifier, 9588 void 0 9589 ]; 9590 } 9591 return [ 9592 modifier.slice(0, slashIdx), 9593 modifier.slice(slashIdx + 1) 9594 ]; 9595 } 9596 function parseColorFormat(value) { 9597 if (typeof value === "string" && value.includes("<alpha-value>")) { 9598 let oldValue = value; 9599 return ({ opacityValue = 1 }) => oldValue.replace(/<alpha-value>/g, opacityValue); 9600 } 9601 return value; 9602 } 9603 function unwrapArbitraryModifier(modifier) { 9604 return (0, _dataTypes.normalize)(modifier.slice(1, -1)); 9605 } 9606 function asColor(modifier, options = {}, { tailwindConfig = {} } = {}) { 9607 var _options_values; 9608 if (((_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier]) !== void 0) { 9609 var _options_values1; 9610 return parseColorFormat((_options_values1 = options.values) === null || _options_values1 === void 0 ? void 0 : _options_values1[modifier]); 9611 } 9612 let [color2, alpha] = splitUtilityModifier(modifier); 9613 if (alpha !== void 0) { 9614 var _options_values2, _tailwindConfig_theme, _tailwindConfig_theme_opacity; 9615 var _options_values_color; 9616 let normalizedColor = (_options_values_color = (_options_values2 = options.values) === null || _options_values2 === void 0 ? void 0 : _options_values2[color2]) !== null && _options_values_color !== void 0 ? _options_values_color : isArbitraryValue(color2) ? color2.slice(1, -1) : void 0; 9617 if (normalizedColor === void 0) { 9618 return void 0; 9619 } 9620 normalizedColor = parseColorFormat(normalizedColor); 9621 if (isArbitraryValue(alpha)) { 9622 return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, unwrapArbitraryModifier(alpha)); 9623 } 9624 if (((_tailwindConfig_theme = tailwindConfig.theme) === null || _tailwindConfig_theme === void 0 ? void 0 : (_tailwindConfig_theme_opacity = _tailwindConfig_theme.opacity) === null || _tailwindConfig_theme_opacity === void 0 ? void 0 : _tailwindConfig_theme_opacity[alpha]) === void 0) { 9625 return void 0; 9626 } 9627 return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, tailwindConfig.theme.opacity[alpha]); 9628 } 9629 return asValue(modifier, options, { 9630 validate: _dataTypes.color 9631 }); 9632 } 9633 function asLookupValue(modifier, options = {}) { 9634 var _options_values; 9635 return (_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier]; 9636 } 9637 function guess(validate) { 9638 return (modifier, options) => { 9639 return asValue(modifier, options, { 9640 validate 9641 }); 9642 }; 9643 } 9644 let typeMap = { 9645 any: asValue, 9646 color: asColor, 9647 url: guess(_dataTypes.url), 9648 image: guess(_dataTypes.image), 9649 length: guess(_dataTypes.length), 9650 percentage: guess(_dataTypes.percentage), 9651 position: guess(_dataTypes.position), 9652 lookup: asLookupValue, 9653 "generic-name": guess(_dataTypes.genericName), 9654 "family-name": guess(_dataTypes.familyName), 9655 number: guess(_dataTypes.number), 9656 "line-width": guess(_dataTypes.lineWidth), 9657 "absolute-size": guess(_dataTypes.absoluteSize), 9658 "relative-size": guess(_dataTypes.relativeSize), 9659 shadow: guess(_dataTypes.shadow), 9660 size: guess(_validateFormalSyntax.backgroundSize) 9661 }; 9662 let supportedTypes = Object.keys(typeMap); 9663 function splitAtFirst(input, delim) { 9664 let idx = input.indexOf(delim); 9665 if (idx === -1) return [ 9666 void 0, 9667 input 9668 ]; 9669 return [ 9670 input.slice(0, idx), 9671 input.slice(idx + 1) 9672 ]; 9673 } 9674 function coerceValue(types, modifier, options, tailwindConfig) { 9675 if (options.values && modifier in options.values) { 9676 for (let { type } of types !== null && types !== void 0 ? types : []) { 9677 let result = typeMap[type](modifier, options, { 9678 tailwindConfig 9679 }); 9680 if (result === void 0) { 9681 continue; 9682 } 9683 return [ 9684 result, 9685 type, 9686 null 9687 ]; 9688 } 9689 } 9690 if (isArbitraryValue(modifier)) { 9691 let arbitraryValue = modifier.slice(1, -1); 9692 let [explicitType, value] = splitAtFirst(arbitraryValue, ":"); 9693 if (!/^[\w-_]+$/g.test(explicitType)) { 9694 value = arbitraryValue; 9695 } else if (explicitType !== void 0 && !supportedTypes.includes(explicitType)) { 9696 return []; 9697 } 9698 if (value.length > 0 && supportedTypes.includes(explicitType)) { 9699 return [ 9700 asValue(`[${value}]`, options), 9701 explicitType, 9702 null 9703 ]; 9704 } 9705 } 9706 let matches = getMatchingTypes(types, modifier, options, tailwindConfig); 9707 for (let match of matches) { 9708 return match; 9709 } 9710 return []; 9711 } 9712 function* getMatchingTypes(types, rawModifier, options, tailwindConfig) { 9713 let modifiersEnabled = (0, _featureFlags.flagEnabled)(tailwindConfig, "generalizedModifiers"); 9714 let [modifier, utilityModifier] = splitUtilityModifier(rawModifier); 9715 let canUseUtilityModifier = modifiersEnabled && options.modifiers != null && (options.modifiers === "any" || typeof options.modifiers === "object" && (utilityModifier && isArbitraryValue(utilityModifier) || utilityModifier in options.modifiers)); 9716 if (!canUseUtilityModifier) { 9717 modifier = rawModifier; 9718 utilityModifier = void 0; 9719 } 9720 if (utilityModifier !== void 0 && modifier === "") { 9721 modifier = "DEFAULT"; 9722 } 9723 if (utilityModifier !== void 0) { 9724 if (typeof options.modifiers === "object") { 9725 var _options_modifiers; 9726 var _options_modifiers_utilityModifier; 9727 let configValue = (_options_modifiers_utilityModifier = (_options_modifiers = options.modifiers) === null || _options_modifiers === void 0 ? void 0 : _options_modifiers[utilityModifier]) !== null && _options_modifiers_utilityModifier !== void 0 ? _options_modifiers_utilityModifier : null; 9728 if (configValue !== null) { 9729 utilityModifier = configValue; 9730 } else if (isArbitraryValue(utilityModifier)) { 9731 utilityModifier = unwrapArbitraryModifier(utilityModifier); 9732 } 9733 } 9734 } 9735 for (let { type } of types !== null && types !== void 0 ? types : []) { 9736 let result = typeMap[type](modifier, options, { 9737 tailwindConfig 9738 }); 9739 if (result === void 0) { 9740 continue; 9741 } 9742 yield [ 9743 result, 9744 type, 9745 utilityModifier !== null && utilityModifier !== void 0 ? utilityModifier : null 9746 ]; 9747 } 9748 } 9749 })(pluginUtils); 9750 return pluginUtils; 9751 } 9752 var toColorValue = {}; 9753 var hasRequiredToColorValue; 9754 function requireToColorValue() { 9755 if (hasRequiredToColorValue) return toColorValue; 9756 hasRequiredToColorValue = 1; 9757 (function(exports) { 9758 Object.defineProperty(exports, "__esModule", { 9759 value: true 9760 }); 9761 Object.defineProperty(exports, "default", { 9762 enumerable: true, 9763 get: function() { 9764 return toColorValue2; 9765 } 9766 }); 9767 function toColorValue2(maybeFunction) { 9768 return typeof maybeFunction === "function" ? maybeFunction({}) : maybeFunction; 9769 } 9770 })(toColorValue); 9771 return toColorValue; 9772 } 9773 var hasRequiredResolveConfig$2; 9774 function requireResolveConfig$2() {
9775 if (hasRequiredResolveConfig$2) return resolveConfig; 9776 hasRequiredResolveConfig$2 = 1; 9777 (function(exports) { 9778 Object.defineProperty(exports, "__esModule", { 9779 value: true 9780 }); 9781 Object.defineProperty(exports, "default", { 9782 enumerable: true, 9783 get: function() { 9784 return resolveConfig2; 9785 } 9786 }); 9787 const _negateValue = /* @__PURE__ */ _interop_require_default(requireNegateValue()); 9788 const _corePluginList = /* @__PURE__ */ _interop_require_default(requireCorePluginList()); 9789 const _configurePlugins = /* @__PURE__ */ _interop_require_default(requireConfigurePlugins()); 9790 const _colors = /* @__PURE__ */ _interop_require_default(requireColors()); 9791 const _defaults2 = requireDefaults(); 9792 const _toPath = requireToPath(); 9793 const _normalizeConfig = requireNormalizeConfig(); 9794 const _isPlainObject = /* @__PURE__ */ _interop_require_default(requireIsPlainObject()); 9795 const _cloneDeep = requireCloneDeep(); 9796 const _pluginUtils = requirePluginUtils(); 9797 const _withAlphaVariable = requireWithAlphaVariable(); 9798 const _toColorValue = /* @__PURE__ */ _interop_require_default(requireToColorValue()); 9799 function _interop_require_default(obj) { 9800 return obj && obj.__esModule ? obj : { 9801 default: obj 9802 }; 9803 } 9804 function isFunction2(input) { 9805 return typeof input === "function"; 9806 } 9807 function mergeWith(target, ...sources) { 9808 let customizer = sources.pop(); 9809 for (let source of sources) { 9810 for (let k in source) { 9811 let merged = customizer(target[k], source[k]); 9812 if (merged === void 0) { 9813 if ((0, _isPlainObject.default)(target[k]) && (0, _isPlainObject.default)(source[k])) { 9814 target[k] = mergeWith({}, target[k], source[k], customizer); 9815 } else { 9816 target[k] = source[k]; 9817 } 9818 } else { 9819 target[k] = merged; 9820 } 9821 } 9822 } 9823 return target; 9824 } 9825 const configUtils = { 9826 colors: _colors.default, 9827 negative(scale) { 9828 return Object.keys(scale).filter((key) => scale[key] !== "0").reduce((negativeScale, key) => { 9829 let negativeValue = (0, _negateValue.default)(scale[key]); 9830 if (negativeValue !== void 0) { 9831 negativeScale[`-${key}`] = negativeValue; 9832 } 9833 return negativeScale; 9834 }, {}); 9835 }, 9836 breakpoints(screens) { 9837 return Object.keys(screens).filter((key) => typeof screens[key] === "string").reduce((breakpoints, key) => ({ 9838 ...breakpoints, 9839 [`screen-${key}`]: screens[key] 9840 }), {}); 9841 } 9842 }; 9843 function value(valueToResolve, ...args) { 9844 return isFunction2(valueToResolve) ? valueToResolve(...args) : valueToResolve; 9845 } 9846 function collectExtends(items) { 9847 return items.reduce((merged, { extend: extend2 }) => { 9848 return mergeWith(merged, extend2, (mergedValue, extendValue) => { 9849 if (mergedValue === void 0) { 9850 return [ 9851 extendValue 9852 ]; 9853 } 9854 if (Array.isArray(mergedValue)) { 9855 return [ 9856 extendValue, 9857 ...mergedValue 9858 ]; 9859 } 9860 return [ 9861 extendValue, 9862 mergedValue 9863 ]; 9864 }); 9865 }, {}); 9866 } 9867 function mergeThemes(themes) { 9868 return { 9869 ...themes.reduce((merged, theme) => (0, _defaults2.defaults)(merged, theme), {}), 9870 // In order to resolve n config objects, we combine all of their `extend` properties 9871 // into arrays instead of objects so they aren't overridden. 9872 extend: collectExtends(themes) 9873 }; 9874 } 9875 function mergeExtensionCustomizer(merged, value2) { 9876 if (Array.isArray(merged) && (0, _isPlainObject.default)(merged[0])) { 9877 return merged.concat(value2); 9878 } 9879 if (Array.isArray(value2) && (0, _isPlainObject.default)(value2[0]) && (0, _isPlainObject.default)(merged)) { 9880 return [ 9881 merged, 9882 ...value2 9883 ]; 9884 } 9885 if (Array.isArray(value2)) { 9886 return value2; 9887 } 9888 return void 0; 9889 } 9890 function mergeExtensions({ extend: extend2, ...theme }) { 9891 return mergeWith(theme, extend2, (themeValue, extensions) => { 9892 if (!isFunction2(themeValue) && !extensions.some(isFunction2)) { 9893 return mergeWith({}, themeValue, ...extensions, mergeExtensionCustomizer); 9894 } 9895 return (resolveThemePath, utils2) => mergeWith({}, ...[ 9896 themeValue, 9897 ...extensions 9898 ].map((e) => value(e, resolveThemePath, utils2)), mergeExtensionCustomizer); 9899 }); 9900 } 9901 function* toPaths(key) { 9902 let path = (0, _toPath.toPath)(key); 9903 if (path.length === 0) { 9904 return; 9905 } 9906 yield path; 9907 if (Array.isArray(key)) { 9908 return; 9909 } 9910 let pattern = /^(.*?)\s*\/\s*([^/]+)$/; 9911 let matches = key.match(pattern); 9912 if (matches !== null) {
9913 let [, prefix, alpha] = matches; 9914 let newPath = (0, _toPath.toPath)(prefix); 9915 newPath.alpha = alpha; 9916 yield newPath; 9917 } 9918 } 9919 function resolveFunctionKeys(object) { 9920 const resolvePath = (key, defaultValue) => { 9921 for (const path of toPaths(key)) { 9922 let index = 0; 9923 let val = object; 9924 while (val !== void 0 && val !== null && index < path.length) { 9925 val = val[path[index++]]; 9926 let shouldResolveAsFn = isFunction2(val) && (path.alpha === void 0 || index <= path.length - 1); 9927 val = shouldResolveAsFn ? val(resolvePath, configUtils) : val; 9928 } 9929 if (val !== void 0) { 9930 if (path.alpha !== void 0) { 9931 let normalized = (0, _pluginUtils.parseColorFormat)(val); 9932 return (0, _withAlphaVariable.withAlphaValue)(normalized, path.alpha, (0, _toColorValue.default)(normalized)); 9933 } 9934 if ((0, _isPlainObject.default)(val)) { 9935 return (0, _cloneDeep.cloneDeep)(val); 9936 } 9937 return val; 9938 } 9939 } 9940 return defaultValue; 9941 }; 9942 Object.assign(resolvePath, { 9943 theme: resolvePath, 9944 ...configUtils 9945 }); 9946 return Object.keys(object).reduce((resolved, key) => { 9947 resolved[key] = isFunction2(object[key]) ? object[key](resolvePath, configUtils) : object[key]; 9948 return resolved; 9949 }, {}); 9950 } 9951 function extractPluginConfigs(configs) { 9952 let allConfigs = []; 9953 configs.forEach((config) => { 9954 allConfigs = [ 9955 ...allConfigs, 9956 config 9957 ]; 9958 var _config_plugins; 9959 const plugins = (_config_plugins = config === null || config === void 0 ? void 0 : config.plugins) !== null && _config_plugins !== void 0 ? _config_plugins : []; 9960 if (plugins.length === 0) { 9961 return; 9962 } 9963 plugins.forEach((plugin) => { 9964 if (plugin.__isOptionsFunction) { 9965 plugin = plugin(); 9966 } 9967 var _plugin_config; 9968 allConfigs = [ 9969 ...allConfigs, 9970 ...extractPluginConfigs([ 9971 (_plugin_config = plugin === null || plugin === void 0 ? void 0 : plugin.config) !== null && _plugin_config !== void 0 ? _plugin_config : {} 9972 ]) 9973 ]; 9974 }); 9975 }); 9976 return allConfigs; 9977 } 9978 function resolveCorePlugins(corePluginConfigs) { 9979 const result = [ 9980 ...corePluginConfigs 9981 ].reduceRight((resolved, corePluginConfig) => { 9982 if (isFunction2(corePluginConfig)) { 9983 return corePluginConfig({ 9984 corePlugins: resolved 9985 }); 9986 } 9987 return (0, _configurePlugins.default)(corePluginConfig, resolved); 9988 }, _corePluginList.default); 9989 return result; 9990 } 9991 function resolvePluginLists(pluginLists) { 9992 const result = [ 9993 ...pluginLists 9994 ].reduceRight((resolved, pluginList) => { 9995 return [ 9996 ...resolved, 9997 ...pluginList 9998 ]; 9999 }, []); 10000 return result; 10001 } 10002 function resolveConfig2(configs) { 10003 let allConfigs = [ 10004 ...extractPluginConfigs(configs), 10005 { 10006 prefix: "", 10007 important: false, 10008 separator: ":" 10009 } 10010 ]; 10011 var _t_theme, _c_plugins; 10012 return (0, _normalizeConfig.normalizeConfig)((0, _defaults2.defaults)({ 10013 theme: resolveFunctionKeys(mergeExtensions(mergeThemes(allConfigs.map((t2) => { 10014 return (_t_theme = t2 === null || t2 === void 0 ? void 0 : t2.theme) !== null && _t_theme !== void 0 ? _t_theme : {}; 10015 })))),
10016 corePlugins: resolveCorePlugins(allConfigs.map((c) => c.corePlugins)), 10017 plugins: resolvePluginLists(configs.map((c) => { 10018 return (_c_plugins = c === null || c === void 0 ? void 0 : c.plugins) !== null && _c_plugins !== void 0 ? _c_plugins : []; 10019 })) 10020 }, ...allConfigs)); 10021 } 10022 })(resolveConfig); 10023 return resolveConfig; 10024 } 10025 var getAllConfigs = {}; 10026 var config_full; 10027 var hasRequiredConfig_full; 10028 function requireConfig_full() { 10029 if (hasRequiredConfig_full) return config_full; 10030 hasRequiredConfig_full = 1; 10031 config_full = { 10032 content: [], 10033 presets: [], 10034 darkMode: "media", 10035 // or 'class' 10036 theme: { 10037 accentColor: ({ theme }) => ({ 10038 ...theme("colors"), 10039 auto: "auto" 10040 }), 10041 animation: { 10042 none: "none", 10043 spin: "spin 1s linear infinite", 10044 ping: "ping 1s cubic-bezier(0, 0, 0.2, 1) infinite", 10045 pulse: "pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite", 10046 bounce: "bounce 1s infinite" 10047 }, 10048 aria: { 10049 busy: 'busy="true"', 10050 checked: 'checked="true"', 10051 disabled: 'disabled="true"', 10052 expanded: 'expanded="true"', 10053 hidden: 'hidden="true"', 10054 pressed: 'pressed="true"', 10055 readonly: 'readonly="true"', 10056 required: 'required="true"', 10057 selected: 'selected="true"' 10058 }, 10059 aspectRatio: { 10060 auto: "auto", 10061 square: "1 / 1", 10062 video: "16 / 9" 10063 }, 10064 backdropBlur: ({ theme }) => theme("blur"), 10065 backdropBrightness: ({ theme }) => theme("brightness"), 10066 backdropContrast: ({ theme }) => theme("contrast"), 10067 backdropGrayscale: ({ theme }) => theme("grayscale"), 10068 backdropHueRotate: ({ theme }) => theme("hueRotate"), 10069 backdropInvert: ({ theme }) => theme("invert"), 10070 backdropOpacity: ({ theme }) => theme("opacity"), 10071 backdropSaturate: ({ theme }) => theme("saturate"), 10072 backdropSepia: ({ theme }) => theme("sepia"), 10073 backgroundColor: ({ theme }) => theme("colors"), 10074 backgroundImage: { 10075 none: "none", 10076 "gradient-to-t": "linear-gradient(to top, var(--tw-gradient-stops))", 10077 "gradient-to-tr": "linear-gradient(to top right, var(--tw-gradient-stops))", 10078 "gradient-to-r": "linear-gradient(to right, var(--tw-gradient-stops))", 10079 "gradient-to-br": "linear-gradient(to bottom right, var(--tw-gradient-stops))", 10080 "gradient-to-b": "linear-gradient(to bottom, var(--tw-gradient-stops))", 10081 "gradient-to-bl": "linear-gradient(to bottom left, var(--tw-gradient-stops))", 10082 "gradient-to-l": "linear-gradient(to left, var(--tw-gradient-stops))", 10083 "gradient-to-tl": "linear-gradient(to top left, var(--tw-gradient-stops))" 10084 }, 10085 backgroundOpacity: ({ theme }) => theme("opacity"), 10086 backgroundPosition: { 10087 bottom: "bottom", 10088 center: "center", 10089 left: "left", 10090 "left-bottom": "left bottom", 10091 "left-top": "left top", 10092 right: "right", 10093 "right-bottom": "right bottom", 10094 "right-top": "right top", 10095 top: "top" 10096 }, 10097 backgroundSize: { 10098 auto: "auto", 10099 cover: "cover", 10100 contain: "contain" 10101 }, 10102 blur: { 10103 0: "0", 10104 none: "", 10105 sm: "4px", 10106 DEFAULT: "8px", 10107 md: "12px", 10108 lg: "16px", 10109 xl: "24px", 10110 "2xl": "40px", 10111 "3xl": "64px" 10112 }, 10113 borderColor: ({ theme }) => ({ 10114 ...theme("colors"), 10115 DEFAULT: theme("colors.gray.200", "currentColor") 10116 }), 10117 borderOpacity: ({ theme }) => theme("opacity"), 10118 borderRadius: { 10119 none: "0px", 10120 sm: "0.125rem", 10121 DEFAULT: "0.25rem", 10122 md: "0.375rem", 10123 lg: "0.5rem", 10124 xl: "0.75rem", 10125 "2xl": "1rem", 10126 "3xl": "1.5rem", 10127 full: "9999px" 10128 }, 10129 borderSpacing: ({ theme }) => ({ 10130 ...theme("spacing") 10131 }), 10132 borderWidth: { 10133 DEFAULT: "1px", 10134 0: "0px", 10135 2: "2px", 10136 4: "4px", 10137 8: "8px" 10138 }, 10139 boxShadow: { 10140 sm: "0 1px 2px 0 rgb(0 0 0 / 0.05)", 10141 DEFAULT: "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)", 10142 md: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)", 10143 lg: "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)", 10144 xl: "0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)", 10145 "2xl": "0 25px 50px -12px rgb(0 0 0 / 0.25)", 10146 inner: "inset 0 2px 4px 0 rgb(0 0 0 / 0.05)", 10147 none: "none" 10148 }, 10149 boxShadowColor: ({ theme }) => theme("colors"), 10150 brightness: { 10151 0: "0", 10152 50: ".5",
vendor: 12,662 bytes, lines 10153-10606
10153 75: ".75", 10154 90: ".9", 10155 95: ".95", 10156 100: "1", 10157 105: "1.05", 10158 110: "1.1", 10159 125: "1.25", 10160 150: "1.5", 10161 200: "2" 10162 }, 10163 caretColor: ({ theme }) => theme("colors"), 10164 colors: ({ colors: colors2 }) => ({ 10165 inherit: colors2.inherit, 10166 current: colors2.current, 10167 transparent: colors2.transparent, 10168 black: colors2.black, 10169 white: colors2.white, 10170 slate: colors2.slate, 10171 gray: colors2.gray, 10172 zinc: colors2.zinc, 10173 neutral: colors2.neutral, 10174 stone: colors2.stone, 10175 red: colors2.red, 10176 orange: colors2.orange, 10177 amber: colors2.amber, 10178 yellow: colors2.yellow, 10179 lime: colors2.lime, 10180 green: colors2.green, 10181 emerald: colors2.emerald, 10182 teal: colors2.teal, 10183 cyan: colors2.cyan, 10184 sky: colors2.sky, 10185 blue: colors2.blue, 10186 indigo: colors2.indigo, 10187 violet: colors2.violet, 10188 purple: colors2.purple, 10189 fuchsia: colors2.fuchsia, 10190 pink: colors2.pink, 10191 rose: colors2.rose 10192 }), 10193 columns: { 10194 auto: "auto", 10195 1: "1", 10196 2: "2", 10197 3: "3", 10198 4: "4", 10199 5: "5", 10200 6: "6", 10201 7: "7", 10202 8: "8", 10203 9: "9", 10204 10: "10", 10205 11: "11", 10206 12: "12", 10207 "3xs": "16rem", 10208 "2xs": "18rem", 10209 xs: "20rem", 10210 sm: "24rem", 10211 md: "28rem", 10212 lg: "32rem", 10213 xl: "36rem", 10214 "2xl": "42rem", 10215 "3xl": "48rem", 10216 "4xl": "56rem", 10217 "5xl": "64rem", 10218 "6xl": "72rem", 10219 "7xl": "80rem" 10220 }, 10221 container: {}, 10222 content: { 10223 none: "none" 10224 }, 10225 contrast: { 10226 0: "0", 10227 50: ".5", 10228 75: ".75", 10229 100: "1", 10230 125: "1.25", 10231 150: "1.5", 10232 200: "2" 10233 }, 10234 cursor: { 10235 auto: "auto", 10236 default: "default", 10237 pointer: "pointer", 10238 wait: "wait", 10239 text: "text", 10240 move: "move", 10241 help: "help", 10242 "not-allowed": "not-allowed", 10243 none: "none", 10244 "context-menu": "context-menu", 10245 progress: "progress", 10246 cell: "cell", 10247 crosshair: "crosshair", 10248 "vertical-text": "vertical-text", 10249 alias: "alias", 10250 copy: "copy", 10251 "no-drop": "no-drop", 10252 grab: "grab", 10253 grabbing: "grabbing", 10254 "all-scroll": "all-scroll", 10255 "col-resize": "col-resize", 10256 "row-resize": "row-resize", 10257 "n-resize": "n-resize", 10258 "e-resize": "e-resize", 10259 "s-resize": "s-resize", 10260 "w-resize": "w-resize", 10261 "ne-resize": "ne-resize", 10262 "nw-resize": "nw-resize", 10263 "se-resize": "se-resize", 10264 "sw-resize": "sw-resize", 10265 "ew-resize": "ew-resize", 10266 "ns-resize": "ns-resize", 10267 "nesw-resize": "nesw-resize", 10268 "nwse-resize": "nwse-resize", 10269 "zoom-in": "zoom-in", 10270 "zoom-out": "zoom-out" 10271 }, 10272 divideColor: ({ theme }) => theme("borderColor"), 10273 divideOpacity: ({ theme }) => theme("borderOpacity"), 10274 divideWidth: ({ theme }) => theme("borderWidth"), 10275 dropShadow: { 10276 sm: "0 1px 1px rgb(0 0 0 / 0.05)", 10277 DEFAULT: ["0 1px 2px rgb(0 0 0 / 0.1)", "0 1px 1px rgb(0 0 0 / 0.06)"], 10278 md: ["0 4px 3px rgb(0 0 0 / 0.07)", "0 2px 2px rgb(0 0 0 / 0.06)"], 10279 lg: ["0 10px 8px rgb(0 0 0 / 0.04)", "0 4px 3px rgb(0 0 0 / 0.1)"], 10280 xl: ["0 20px 13px rgb(0 0 0 / 0.03)", "0 8px 5px rgb(0 0 0 / 0.08)"], 10281 "2xl": "0 25px 25px rgb(0 0 0 / 0.15)", 10282 none: "0 0 #0000" 10283 }, 10284 fill: ({ theme }) => ({ 10285 none: "none", 10286 ...theme("colors") 10287 }), 10288 flex: { 10289 1: "1 1 0%", 10290 auto: "1 1 auto", 10291 initial: "0 1 auto", 10292 none: "none" 10293 }, 10294 flexBasis: ({ theme }) => ({ 10295 auto: "auto", 10296 ...theme("spacing"), 10297 "1/2": "50%", 10298 "1/3": "33.333333%", 10299 "2/3": "66.666667%", 10300 "1/4": "25%", 10301 "2/4": "50%", 10302 "3/4": "75%", 10303 "1/5": "20%", 10304 "2/5": "40%", 10305 "3/5": "60%", 10306 "4/5": "80%", 10307 "1/6": "16.666667%", 10308 "2/6": "33.333333%", 10309 "3/6": "50%", 10310 "4/6": "66.666667%", 10311 "5/6": "83.333333%", 10312 "1/12": "8.333333%", 10313 "2/12": "16.666667%", 10314 "3/12": "25%", 10315 "4/12": "33.333333%", 10316 "5/12": "41.666667%", 10317 "6/12": "50%", 10318 "7/12": "58.333333%", 10319 "8/12": "66.666667%", 10320 "9/12": "75%", 10321 "10/12": "83.333333%", 10322 "11/12": "91.666667%", 10323 full: "100%" 10324 }), 10325 flexGrow: { 10326 0: "0", 10327 DEFAULT: "1" 10328 }, 10329 flexShrink: { 10330 0: "0", 10331 DEFAULT: "1" 10332 }, 10333 fontFamily: { 10334 sans: [ 10335 "ui-sans-serif", 10336 "system-ui", 10337 "sans-serif", 10338 '"Apple Color Emoji"', 10339 '"Segoe UI Emoji"', 10340 '"Segoe UI Symbol"', 10341 '"Noto Color Emoji"' 10342 ], 10343 serif: ["ui-serif", "Georgia", "Cambria", '"Times New Roman"', "Times", "serif"], 10344 mono: [ 10345 "ui-monospace", 10346 "SFMono-Regular", 10347 "Menlo", 10348 "Monaco", 10349 "Consolas", 10350 '"Liberation Mono"', 10351 '"Courier New"', 10352 "monospace" 10353 ] 10354 }, 10355 fontSize: { 10356 xs: ["0.75rem", { lineHeight: "1rem" }], 10357 sm: ["0.875rem", { lineHeight: "1.25rem" }], 10358 base: ["1rem", { lineHeight: "1.5rem" }], 10359 lg: ["1.125rem", { lineHeight: "1.75rem" }], 10360 xl: ["1.25rem", { lineHeight: "1.75rem" }], 10361 "2xl": ["1.5rem", { lineHeight: "2rem" }], 10362 "3xl": ["1.875rem", { lineHeight: "2.25rem" }], 10363 "4xl": ["2.25rem", { lineHeight: "2.5rem" }], 10364 "5xl": ["3rem", { lineHeight: "1" }], 10365 "6xl": ["3.75rem", { lineHeight: "1" }], 10366 "7xl": ["4.5rem", { lineHeight: "1" }], 10367 "8xl": ["6rem", { lineHeight: "1" }], 10368 "9xl": ["8rem", { lineHeight: "1" }] 10369 }, 10370 fontWeight: { 10371 thin: "100", 10372 extralight: "200", 10373 light: "300", 10374 normal: "400", 10375 medium: "500", 10376 semibold: "600", 10377 bold: "700", 10378 extrabold: "800", 10379 black: "900" 10380 }, 10381 gap: ({ theme }) => theme("spacing"), 10382 gradientColorStops: ({ theme }) => theme("colors"), 10383 gradientColorStopPositions: { 10384 "0%": "0%", 10385 "5%": "5%", 10386 "10%": "10%", 10387 "15%": "15%", 10388 "20%": "20%", 10389 "25%": "25%", 10390 "30%": "30%", 10391 "35%": "35%", 10392 "40%": "40%", 10393 "45%": "45%", 10394 "50%": "50%", 10395 "55%": "55%", 10396 "60%": "60%", 10397 "65%": "65%", 10398 "70%": "70%", 10399 "75%": "75%", 10400 "80%": "80%", 10401 "85%": "85%", 10402 "90%": "90%", 10403 "95%": "95%", 10404 "100%": "100%" 10405 }, 10406 grayscale: { 10407 0: "0", 10408 DEFAULT: "100%" 10409 }, 10410 gridAutoColumns: { 10411 auto: "auto", 10412 min: "min-content", 10413 max: "max-content", 10414 fr: "minmax(0, 1fr)" 10415 }, 10416 gridAutoRows: { 10417 auto: "auto", 10418 min: "min-content", 10419 max: "max-content", 10420 fr: "minmax(0, 1fr)" 10421 }, 10422 gridColumn: { 10423 auto: "auto", 10424 "span-1": "span 1 / span 1", 10425 "span-2": "span 2 / span 2", 10426 "span-3": "span 3 / span 3", 10427 "span-4": "span 4 / span 4", 10428 "span-5": "span 5 / span 5", 10429 "span-6": "span 6 / span 6", 10430 "span-7": "span 7 / span 7", 10431 "span-8": "span 8 / span 8", 10432 "span-9": "span 9 / span 9", 10433 "span-10": "span 10 / span 10", 10434 "span-11": "span 11 / span 11", 10435 "span-12": "span 12 / span 12", 10436 "span-full": "1 / -1" 10437 }, 10438 gridColumnEnd: { 10439 auto: "auto", 10440 1: "1", 10441 2: "2", 10442 3: "3", 10443 4: "4", 10444 5: "5", 10445 6: "6", 10446 7: "7", 10447 8: "8", 10448 9: "9", 10449 10: "10", 10450 11: "11", 10451 12: "12", 10452 13: "13" 10453 }, 10454 gridColumnStart: { 10455 auto: "auto", 10456 1: "1", 10457 2: "2", 10458 3: "3", 10459 4: "4", 10460 5: "5", 10461 6: "6", 10462 7: "7", 10463 8: "8", 10464 9: "9", 10465 10: "10", 10466 11: "11", 10467 12: "12", 10468 13: "13" 10469 }, 10470 gridRow: { 10471 auto: "auto", 10472 "span-1": "span 1 / span 1", 10473 "span-2": "span 2 / span 2", 10474 "span-3": "span 3 / span 3", 10475 "span-4": "span 4 / span 4", 10476 "span-5": "span 5 / span 5", 10477 "span-6": "span 6 / span 6", 10478 "span-7": "span 7 / span 7", 10479 "span-8": "span 8 / span 8", 10480 "span-9": "span 9 / span 9", 10481 "span-10": "span 10 / span 10", 10482 "span-11": "span 11 / span 11", 10483 "span-12": "span 12 / span 12", 10484 "span-full": "1 / -1" 10485 }, 10486 gridRowEnd: { 10487 auto: "auto", 10488 1: "1", 10489 2: "2", 10490 3: "3", 10491 4: "4", 10492 5: "5", 10493 6: "6", 10494 7: "7", 10495 8: "8", 10496 9: "9", 10497 10: "10", 10498 11: "11", 10499 12: "12", 10500 13: "13" 10501 }, 10502 gridRowStart: { 10503 auto: "auto", 10504 1: "1", 10505 2: "2", 10506 3: "3", 10507 4: "4", 10508 5: "5", 10509 6: "6", 10510 7: "7", 10511 8: "8", 10512 9: "9", 10513 10: "10", 10514 11: "11", 10515 12: "12", 10516 13: "13" 10517 }, 10518 gridTemplateColumns: { 10519 none: "none", 10520 subgrid: "subgrid", 10521 1: "repeat(1, minmax(0, 1fr))", 10522 2: "repeat(2, minmax(0, 1fr))", 10523 3: "repeat(3, minmax(0, 1fr))", 10524 4: "repeat(4, minmax(0, 1fr))", 10525 5: "repeat(5, minmax(0, 1fr))", 10526 6: "repeat(6, minmax(0, 1fr))", 10527 7: "repeat(7, minmax(0, 1fr))", 10528 8: "repeat(8, minmax(0, 1fr))", 10529 9: "repeat(9, minmax(0, 1fr))", 10530 10: "repeat(10, minmax(0, 1fr))", 10531 11: "repeat(11, minmax(0, 1fr))", 10532 12: "repeat(12, minmax(0, 1fr))" 10533 }, 10534 gridTemplateRows: { 10535 none: "none", 10536 subgrid: "subgrid", 10537 1: "repeat(1, minmax(0, 1fr))", 10538 2: "repeat(2, minmax(0, 1fr))", 10539 3: "repeat(3, minmax(0, 1fr))", 10540 4: "repeat(4, minmax(0, 1fr))", 10541 5: "repeat(5, minmax(0, 1fr))", 10542 6: "repeat(6, minmax(0, 1fr))", 10543 7: "repeat(7, minmax(0, 1fr))", 10544 8: "repeat(8, minmax(0, 1fr))", 10545 9: "repeat(9, minmax(0, 1fr))", 10546 10: "repeat(10, minmax(0, 1fr))", 10547 11: "repeat(11, minmax(0, 1fr))", 10548 12: "repeat(12, minmax(0, 1fr))" 10549 }, 10550 height: ({ theme }) => ({ 10551 auto: "auto", 10552 ...theme("spacing"), 10553 "1/2": "50%", 10554 "1/3": "33.333333%", 10555 "2/3": "66.666667%", 10556 "1/4": "25%", 10557 "2/4": "50%", 10558 "3/4": "75%", 10559 "1/5": "20%", 10560 "2/5": "40%", 10561 "3/5": "60%", 10562 "4/5": "80%", 10563 "1/6": "16.666667%", 10564 "2/6": "33.333333%", 10565 "3/6": "50%", 10566 "4/6": "66.666667%", 10567 "5/6": "83.333333%", 10568 full: "100%", 10569 screen: "100vh", 10570 svh: "100svh", 10571 lvh: "100lvh", 10572 dvh: "100dvh", 10573 min: "min-content", 10574 max: "max-content", 10575 fit: "fit-content" 10576 }), 10577 hueRotate: { 10578 0: "0deg", 10579 15: "15deg", 10580 30: "30deg", 10581 60: "60deg", 10582 90: "90deg", 10583 180: "180deg" 10584 }, 10585 inset: ({ theme }) => ({ 10586 auto: "auto", 10587 ...theme("spacing"), 10588 "1/2": "50%", 10589 "1/3": "33.333333%", 10590 "2/3": "66.666667%", 10591 "1/4": "25%", 10592 "2/4": "50%", 10593 "3/4": "75%", 10594 full: "100%" 10595 }), 10596 invert: { 10597 0: "0", 10598 DEFAULT: "100%" 10599 }, 10600 keyframes: { 10601 spin: { 10602 to: { 10603 transform: "rotate(360deg)" 10604 } 10605 }, 10606 ping: {
10607 "75%, 100%": { 10608 transform: "scale(2)", 10609 opacity: "0" 10610 } 10611 }, 10612 pulse: { 10613 "50%": { 10614 opacity: ".5" 10615 } 10616 }, 10617 bounce: { 10618 "0%, 100%": { 10619 transform: "translateY(-25%)", 10620 animationTimingFunction: "cubic-bezier(0.8,0,1,1)" 10621 }, 10622 "50%": { 10623 transform: "none", 10624 animationTimingFunction: "cubic-bezier(0,0,0.2,1)" 10625 } 10626 } 10627 }, 10628 letterSpacing: { 10629 tighter: "-0.05em", 10630 tight: "-0.025em", 10631 normal: "0em", 10632 wide: "0.025em", 10633 wider: "0.05em", 10634 widest: "0.1em" 10635 }, 10636 lineHeight: { 10637 none: "1", 10638 tight: "1.25", 10639 snug: "1.375", 10640 normal: "1.5", 10641 relaxed: "1.625", 10642 loose: "2", 10643 3: ".75rem", 10644 4: "1rem", 10645 5: "1.25rem", 10646 6: "1.5rem", 10647 7: "1.75rem", 10648 8: "2rem", 10649 9: "2.25rem", 10650 10: "2.5rem" 10651 }, 10652 listStyleType: { 10653 none: "none", 10654 disc: "disc", 10655 decimal: "decimal" 10656 }, 10657 listStyleImage: { 10658 none: "none" 10659 }, 10660 margin: ({ theme }) => ({ 10661 auto: "auto", 10662 ...theme("spacing") 10663 }), 10664 lineClamp: { 10665 1: "1", 10666 2: "2", 10667 3: "3", 10668 4: "4", 10669 5: "5", 10670 6: "6" 10671 }, 10672 maxHeight: ({ theme }) => ({ 10673 ...theme("spacing"), 10674 none: "none", 10675 full: "100%", 10676 screen: "100vh", 10677 svh: "100svh", 10678 lvh: "100lvh", 10679 dvh: "100dvh", 10680 min: "min-content", 10681 max: "max-content", 10682 fit: "fit-content" 10683 }), 10684 maxWidth: ({ theme, breakpoints }) => ({ 10685 ...theme("spacing"), 10686 none: "none", 10687 xs: "20rem", 10688 sm: "24rem", 10689 md: "28rem", 10690 lg: "32rem", 10691 xl: "36rem", 10692 "2xl": "42rem", 10693 "3xl": "48rem", 10694 "4xl": "56rem", 10695 "5xl": "64rem", 10696 "6xl": "72rem", 10697 "7xl": "80rem", 10698 full: "100%", 10699 min: "min-content", 10700 max: "max-content", 10701 fit: "fit-content", 10702 prose: "65ch", 10703 ...breakpoints(theme("screens")) 10704 }), 10705 minHeight: ({ theme }) => ({ 10706 ...theme("spacing"), 10707 full: "100%", 10708 screen: "100vh", 10709 svh: "100svh", 10710 lvh: "100lvh", 10711 dvh: "100dvh", 10712 min: "min-content", 10713 max: "max-content", 10714 fit: "fit-content" 10715 }), 10716 minWidth: ({ theme }) => ({ 10717 ...theme("spacing"), 10718 full: "100%", 10719 min: "min-content", 10720 max: "max-content", 10721 fit: "fit-content" 10722 }), 10723 objectPosition: { 10724 bottom: "bottom", 10725 center: "center", 10726 left: "left", 10727 "left-bottom": "left bottom", 10728 "left-top": "left top", 10729 right: "right", 10730 "right-bottom": "right bottom", 10731 "right-top": "right top", 10732 top: "top" 10733 }, 10734 opacity: { 10735 0: "0", 10736 5: "0.05", 10737 10: "0.1", 10738 15: "0.15", 10739 20: "0.2", 10740 25: "0.25", 10741 30: "0.3", 10742 35: "0.35", 10743 40: "0.4", 10744 45: "0.45", 10745 50: "0.5", 10746 55: "0.55", 10747 60: "0.6", 10748 65: "0.65", 10749 70: "0.7", 10750 75: "0.75", 10751 80: "0.8", 10752 85: "0.85", 10753 90: "0.9", 10754 95: "0.95", 10755 100: "1" 10756 }, 10757 order: { 10758 first: "-9999", 10759 last: "9999", 10760 none: "0", 10761 1: "1", 10762 2: "2", 10763 3: "3", 10764 4: "4", 10765 5: "5", 10766 6: "6", 10767 7: "7", 10768 8: "8", 10769 9: "9", 10770 10: "10", 10771 11: "11", 10772 12: "12" 10773 }, 10774 outlineColor: ({ theme }) => theme("colors"), 10775 outlineOffset: { 10776 0: "0px", 10777 1: "1px", 10778 2: "2px", 10779 4: "4px", 10780 8: "8px" 10781 }, 10782 outlineWidth: { 10783 0: "0px", 10784 1: "1px", 10785 2: "2px", 10786 4: "4px", 10787 8: "8px" 10788 }, 10789 padding: ({ theme }) => theme("spacing"), 10790 placeholderColor: ({ theme }) => theme("colors"), 10791 placeholderOpacity: ({ theme }) => theme("opacity"), 10792 ringColor: ({ theme }) => ({ 10793 DEFAULT: theme("colors.blue.500", "#3b82f6"), 10794 ...theme("colors") 10795 }), 10796 ringOffsetColor: ({ theme }) => theme("colors"), 10797 ringOffsetWidth: { 10798 0: "0px", 10799 1: "1px", 10800 2: "2px", 10801 4: "4px", 10802 8: "8px" 10803 }, 10804 ringOpacity: ({ theme }) => ({ 10805 DEFAULT: "0.5", 10806 ...theme("opacity") 10807 }), 10808 ringWidth: { 10809 DEFAULT: "3px", 10810 0: "0px", 10811 1: "1px", 10812 2: "2px", 10813 4: "4px", 10814 8: "8px" 10815 }, 10816 rotate: { 10817 0: "0deg", 10818 1: "1deg", 10819 2: "2deg", 10820 3: "3deg", 10821 6: "6deg", 10822 12: "12deg", 10823 45: "45deg", 10824 90: "90deg", 10825 180: "180deg" 10826 }, 10827 saturate: { 10828 0: "0", 10829 50: ".5", 10830 100: "1", 10831 150: "1.5", 10832 200: "2" 10833 }, 10834 scale: { 10835 0: "0", 10836 50: ".5",
10837 75: ".75", 10838 90: ".9", 10839 95: ".95", 10840 100: "1", 10841 105: "1.05", 10842 110: "1.1", 10843 125: "1.25", 10844 150: "1.5" 10845 }, 10846 screens: { 10847 sm: "640px", 10848 md: "768px", 10849 lg: "1024px", 10850 xl: "1280px", 10851 "2xl": "1536px" 10852 }, 10853 scrollMargin: ({ theme }) => ({ 10854 ...theme("spacing") 10855 }), 10856 scrollPadding: ({ theme }) => theme("spacing"), 10857 sepia: { 10858 0: "0", 10859 DEFAULT: "100%" 10860 }, 10861 skew: { 10862 0: "0deg", 10863 1: "1deg", 10864 2: "2deg", 10865 3: "3deg", 10866 6: "6deg", 10867 12: "12deg" 10868 }, 10869 space: ({ theme }) => ({ 10870 ...theme("spacing") 10871 }), 10872 spacing: { 10873 px: "1px", 10874 0: "0px", 10875 0.5: "0.125rem", 10876 1: "0.25rem", 10877 1.5: "0.375rem", 10878 2: "0.5rem", 10879 2.5: "0.625rem", 10880 3: "0.75rem", 10881 3.5: "0.875rem", 10882 4: "1rem", 10883 5: "1.25rem", 10884 6: "1.5rem", 10885 7: "1.75rem", 10886 8: "2rem", 10887 9: "2.25rem", 10888 10: "2.5rem", 10889 11: "2.75rem", 10890 12: "3rem", 10891 14: "3.5rem", 10892 16: "4rem", 10893 20: "5rem", 10894 24: "6rem", 10895 28: "7rem", 10896 32: "8rem", 10897 36: "9rem", 10898 40: "10rem", 10899 44: "11rem", 10900 48: "12rem", 10901 52: "13rem", 10902 56: "14rem", 10903 60: "15rem", 10904 64: "16rem", 10905 72: "18rem", 10906 80: "20rem", 10907 96: "24rem" 10908 }, 10909 stroke: ({ theme }) => ({ 10910 none: "none", 10911 ...theme("colors") 10912 }), 10913 strokeWidth: { 10914 0: "0", 10915 1: "1", 10916 2: "2" 10917 }, 10918 supports: {}, 10919 data: {}, 10920 textColor: ({ theme }) => theme("colors"), 10921 textDecorationColor: ({ theme }) => theme("colors"), 10922 textDecorationThickness: { 10923 auto: "auto", 10924 "from-font": "from-font", 10925 0: "0px", 10926 1: "1px", 10927 2: "2px", 10928 4: "4px", 10929 8: "8px" 10930 }, 10931 textIndent: ({ theme }) => ({ 10932 ...theme("spacing") 10933 }), 10934 textOpacity: ({ theme }) => theme("opacity"), 10935 textUnderlineOffset: { 10936 auto: "auto", 10937 0: "0px", 10938 1: "1px", 10939 2: "2px", 10940 4: "4px", 10941 8: "8px" 10942 }, 10943 transformOrigin: { 10944 center: "center", 10945 top: "top", 10946 "top-right": "top right", 10947 right: "right", 10948 "bottom-right": "bottom right", 10949 bottom: "bottom", 10950 "bottom-left": "bottom left", 10951 left: "left", 10952 "top-left": "top left" 10953 }, 10954 transitionDelay: { 10955 0: "0s", 10956 75: "75ms", 10957 100: "100ms", 10958 150: "150ms", 10959 200: "200ms", 10960 300: "300ms", 10961 500: "500ms", 10962 700: "700ms", 10963 1e3: "1000ms" 10964 }, 10965 transitionDuration: { 10966 DEFAULT: "150ms", 10967 0: "0s", 10968 75: "75ms", 10969 100: "100ms", 10970 150: "150ms", 10971 200: "200ms", 10972 300: "300ms", 10973 500: "500ms", 10974 700: "700ms", 10975 1e3: "1000ms" 10976 }, 10977 transitionProperty: { 10978 none: "none", 10979 all: "all", 10980 DEFAULT: "color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter", 10981 colors: "color, background-color, border-color, text-decoration-color, fill, stroke", 10982 opacity: "opacity", 10983 shadow: "box-shadow", 10984 transform: "transform" 10985 }, 10986 transitionTimingFunction: { 10987 DEFAULT: "cubic-bezier(0.4, 0, 0.2, 1)", 10988 linear: "linear", 10989 in: "cubic-bezier(0.4, 0, 1, 1)", 10990 out: "cubic-bezier(0, 0, 0.2, 1)", 10991 "in-out": "cubic-bezier(0.4, 0, 0.2, 1)" 10992 }, 10993 translate: ({ theme }) => ({ 10994 ...theme("spacing"), 10995 "1/2": "50%", 10996 "1/3": "33.333333%", 10997 "2/3": "66.666667%", 10998 "1/4": "25%", 10999 "2/4": "50%", 11000 "3/4": "75%", 11001 full: "100%" 11002 }), 11003 size: ({ theme }) => ({ 11004 auto: "auto", 11005 ...theme("spacing"), 11006 "1/2": "50%", 11007 "1/3": "33.333333%", 11008 "2/3": "66.666667%", 11009 "1/4": "25%", 11010 "2/4": "50%", 11011 "3/4": "75%", 11012 "1/5": "20%", 11013 "2/5": "40%", 11014 "3/5": "60%", 11015 "4/5": "80%", 11016 "1/6": "16.666667%", 11017 "2/6": "33.333333%", 11018 "3/6": "50%", 11019 "4/6": "66.666667%", 11020 "5/6": "83.333333%", 11021 "1/12": "8.333333%", 11022 "2/12": "16.666667%", 11023 "3/12": "25%", 11024 "4/12": "33.333333%", 11025 "5/12": "41.666667%", 11026 "6/12": "50%", 11027 "7/12": "58.333333%", 11028 "8/12": "66.666667%", 11029 "9/12": "75%", 11030 "10/12": "83.333333%", 11031 "11/12": "91.666667%", 11032 full: "100%", 11033 min: "min-content", 11034 max: "max-content", 11035 fit: "fit-content" 11036 }), 11037 width: ({ theme }) => ({ 11038 auto: "auto", 11039 ...theme("spacing"), 11040 "1/2": "50%", 11041 "1/3": "33.333333%", 11042 "2/3": "66.666667%", 11043 "1/4": "25%", 11044 "2/4": "50%", 11045 "3/4": "75%", 11046 "1/5": "20%", 11047 "2/5": "40%", 11048 "3/5": "60%", 11049 "4/5": "80%", 11050 "1/6": "16.666667%", 11051 "2/6": "33.333333%", 11052 "3/6": "50%", 11053 "4/6": "66.666667%", 11054 "5/6": "83.333333%", 11055 "1/12": "8.333333%", 11056 "2/12": "16.666667%", 11057 "3/12": "25%", 11058 "4/12": "33.333333%", 11059 "5/12": "41.666667%", 11060 "6/12": "50%", 11061 "7/12": "58.333333%", 11062 "8/12": "66.666667%", 11063 "9/12": "75%", 11064 "10/12": "83.333333%", 11065 "11/12": "91.666667%", 11066 full: "100%", 11067 screen: "100vw", 11068 svw: "100svw", 11069 lvw: "100lvw", 11070 dvw: "100dvw", 11071 min: "min-content", 11072 max: "max-content", 11073 fit: "fit-content" 11074 }), 11075 willChange: { 11076 auto: "auto", 11077 scroll: "scroll-position", 11078 contents: "contents", 11079 transform: "transform" 11080 }, 11081 zIndex: { 11082 auto: "auto", 11083 0: "0", 11084 10: "10", 11085 20: "20", 11086 30: "30", 11087 40: "40", 11088 50: "50" 11089 } 11090 }, 11091 plugins: [] 11092 }; 11093 return config_full; 11094 } 11095 var hasRequiredGetAllConfigs; 11096 function requireGetAllConfigs() { 11097 if (hasRequiredGetAllConfigs) return getAllConfigs; 11098 hasRequiredGetAllConfigs = 1; 11099 (function(exports) { 11100 Object.defineProperty(exports, "__esModule", { 11101 value: true 11102 }); 11103 Object.defineProperty(exports, "default", { 11104 enumerable: true, 11105 get: function() { 11106 return getAllConfigs2; 11107 } 11108 }); 11109 const _configfull = /* @__PURE__ */ _interop_require_default(requireConfig_full()); 11110 const _featureFlags = requireFeatureFlags(); 11111 function _interop_require_default(obj) { 11112 return obj && obj.__esModule ? obj : { 11113 default: obj 11114 }; 11115 } 11116 function getAllConfigs2(config) { 11117 var _config_presets; 11118 const configs = ((_config_presets = config === null || config === void 0 ? void 0 : config.presets) !== null && _config_presets !== void 0 ? _config_presets : [ 11119 _configfull.default
11120 ]).slice().reverse().flatMap((preset) => getAllConfigs2(preset instanceof Function ? preset() : preset)); 11121 const features = { 11122 // Add experimental configs here... 11123 respectDefaultRingColorOpacity: { 11124 theme: { 11125 ringColor: ({ theme }) => ({ 11126 DEFAULT: "#3b82f67f", 11127 ...theme("colors") 11128 }) 11129 } 11130 }, 11131 disableColorOpacityUtilitiesByDefault: { 11132 corePlugins: { 11133 backgroundOpacity: false, 11134 borderOpacity: false, 11135 divideOpacity: false, 11136 placeholderOpacity: false, 11137 ringOpacity: false, 11138 textOpacity: false 11139 } 11140 } 11141 }; 11142 const experimentals = Object.keys(features).filter((feature) => (0, _featureFlags.flagEnabled)(config, feature)).map((feature) => features[feature]); 11143 return [ 11144 config, 11145 ...experimentals, 11146 ...configs 11147 ]; 11148 } 11149 })(getAllConfigs); 11150 return getAllConfigs; 11151 } 11152 var hasRequiredResolveConfig$1; 11153 function requireResolveConfig$1() { 11154 if (hasRequiredResolveConfig$1) return resolveConfig$1; 11155 hasRequiredResolveConfig$1 = 1; 11156 (function(exports) { 11157 Object.defineProperty(exports, "__esModule", { 11158 value: true 11159 }); 11160 Object.defineProperty(exports, "default", { 11161 enumerable: true, 11162 get: function() { 11163 return resolveConfig2; 11164 } 11165 }); 11166 const _resolveConfig = /* @__PURE__ */ _interop_require_default(requireResolveConfig$2()); 11167 const _getAllConfigs = /* @__PURE__ */ _interop_require_default(requireGetAllConfigs()); 11168 function _interop_require_default(obj) { 11169 return obj && obj.__esModule ? obj : { 11170 default: obj 11171 }; 11172 } 11173 function resolveConfig2(...configs) { 11174 let [, ...defaultConfigs] = (0, _getAllConfigs.default)(configs[0]); 11175 return (0, _resolveConfig.default)([ 11176 ...configs, 11177 ...defaultConfigs 11178 ]); 11179 } 11180 })(resolveConfig$1); 11181 return resolveConfig$1; 11182 } 11183 var resolveConfig_1; 11184 var hasRequiredResolveConfig; 11185 function requireResolveConfig() { 11186 if (hasRequiredResolveConfig) return resolveConfig_1; 11187 hasRequiredResolveConfig = 1; 11188 let resolveConfig2 = requireResolveConfig$1(); 11189 resolveConfig_1 = (resolveConfig2.__esModule ? resolveConfig2 : { default: resolveConfig2 }).default; 11190 return resolveConfig_1; 11191 } 11192 requireResolveConfig(); 11193 class MobileMenu { 11194 constructor() { 11195 window.addEventListener(mobileMenuToggle, this.toggle.bind(this)); 11196 window.addEventListener("resize", this.onResize.bind(this)); 11197 this.$el = document.getElementById("mobile-menu"); 11198 this.activeClass = "is-active"; 11199 this.active = this.$el.classList.contains(this.activeClass); 11200 this.$listItems = this.$el.querySelectorAll(".js-mobile-menu-item"); 11201 this.$listItems.forEach(($item) => { 11202 const $link = $item.querySelector(".js-mobile-menu-item-link"); 11203 const $subMenu = $item.querySelector(".js-mobile-menu-sub-menu"); 11204 if ($subMenu) { 11205 $link.addEventListener("click", (e) => { 11206 e.preventDefault(); 11207 this.onParentButtonClick($link, $subMenu); 11208 }); 11209 } 11210 }); 11211 } 11212 /** 11213 * @function toggle 11214 * Toggles the mobile menu 11215 */ 11216 toggle() { 11217 this.active = !this.active; 11218 this.$el.classList.toggle(this.activeClass, this.active); 11219 this.$el.setAttribute("aria-hidden", !this.active); 11220 document.body.classList.toggle("scrolling-disabled", this.active); 11221 } 11222 /** 11223 * @function onResize 11224 * Hides the mobile menu if resizing the browser 11225 * beyond mobile when the mobile menu is active 11226 */ 11227 onResize() { 11228 const { lg: lg2 } = { lg: "1024px" }; 11229 const size = parseInt(lg2.substring(0, lg2.length - 2)); 11230 if (window.innerWidth >= size && this.active) { 11231 this.toggle(); 11232 } 11233 } 11234 /** 11235 * @function onParentButtonClick 11236 * @param {HTMLAnchorElement} $link 11237 * @param {HTMLUListElement} $subMenu 11238 * Toggles the sub menu of a parent element 11239 */ 11240 onParentButtonClick($link, $subMenu) { 11241 const $listItem = $link.parentElement; 11242 $listItem.classList.toggle(this.activeClass); 11243 $subMenu.setAttribute("aria-hidden", !$listItem.classList.contains(this.activeClass)); 11244 } 11245 } 11246 class PartnerBenefits { 11247 constructor() { 11248 const $els = document.querySelectorAll(".js-benefits-carousel");
11249 $els.forEach(($el) => new MobileCarousel($el)); 11250 } 11251 } 11252 class PartnershipSpotlight { 11253 constructor() { 11254 this.$els = document.querySelectorAll(".js-partnership-spotlight"); 11255 this.$els.forEach(($el) => { 11256 const $carousel = $el.querySelector(".js-partnership-spotlight-carousel"); 11257 const $prevbutton = $el.querySelector(".js-partnership-spotlight-prev"); 11258 const $nextbutton = $el.querySelector(".js-partnership-spotlight-next"); 11259 const carousel = new Flickity($carousel, { 11260 cellAlign: "left", 11261 contain: true, 11262 prevNextButtons: false, 11263 pageDots: false, 11264 wrapAround: true, 11265 imagesLoaded: true 11266 }); 11267 if ($prevbutton) { 11268 $prevbutton.addEventListener("click", () => { 11269 carousel.previous(); 11270 }); 11271 } 11272 if ($nextbutton) { 11273 $nextbutton.addEventListener("click", () => { 11274 carousel.next(); 11275 }); 11276 } 11277 }); 11278 } 11279 } 11280 class PlatformAdvantages { 11281 constructor() { 11282 const $els = document.querySelectorAll(".js-platform-advantages-carousel"); 11283 $els.forEach(($el) => new MobileCarousel($el)); 11284 } 11285 } 11286 class Pricing { 11287 constructor() { 11288 this.$form = document.querySelector(".js-pricing-form"); 11289 if (!this.$form) return; 11290 this.$plans = this.$form.querySelectorAll(".js-pricing-plan"); 11291 this.$planRadios = this.$form.querySelectorAll(".js-pricing-radio"); 11292 this.$billingFrequencyRadioRadios = this.$form.querySelectorAll(".js-pricing-billing-frequency"); 11293 this.$monthlyPrices = this.$form.querySelectorAll(".js-pricing-plan-monthly"); 11294 this.$yearlyPrices = this.$form.querySelectorAll(".js-pricing-plan-yearly"); 11295 this.$allFeatures = document.querySelectorAll(".js-pricing-features"); 11296 this.$allAddOns = document.querySelectorAll(".js-pricing-add-ons"); 11297 this.$addOnCheckboxes = document.querySelectorAll(".js-pricing-add-on-checkbox"); 11298 this.$totalPriceContainer = document.querySelector(".js-pricing-total-price-container"); 11299 this.$totalPrice = document.querySelector(".js-pricing-total-price"); 11300 this.$totalPriceBeforeDiscount = document.querySelector(".js-pricing-total-price-before-discount"); 11301 this.$showAllFeaturesButtons = document.querySelectorAll(".js-pricing-show-all-features"); 11302 this.$featuresTable = document.querySelector(".js-pricing-features-table"); 11303 this.$closeFeaturesTable = document.querySelector(".js-pricing-close-features-table"); 11304 this.$menu = document.querySelector(".js-pricing-menu-list"); 11305 this.$menuLinks = document.querySelectorAll(".js-pricing-menu-link"); 11306 this.$currentMenuLink = document.querySelector(".js-pricing-menu-link.is-current"); 11307 this.$bookDemoButton = document.querySelector(".js-pricing-book-demo-button"); 11308 this.scrollCurrentMenuLinkIntoView(); 11309 this.urlHashes = { 11310 plan: null, 11311 frequency: null 11312 }; 11313 this.loadUrlHash(); 11314 this.$plans.forEach(($plan) => { 11315 const $planRadio = $plan.querySelector(".js-pricing-radio"); 11316 $plan.addEventListener("click", (e) => { 11317 e.stopPropagation(); 11318 e.preventDefault(); 11319 this.handlePlanClick($plan); 11320 }); 11321 if ($planRadio.checked) { 11322 if (!this.urlHashes.plan) { 11323 this.urlHashes.plan = $plan.dataset.plan; 11324 $plan.classList.add("is-selected"); 11325 this.handlePlanChange($plan); 11326 } else { 11327 if ($plan.dataset.plan === this.urlHashes.plan) { 11328 $plan.classList.add("is-selected"); 11329 this.handlePlanChange($plan); 11330 } 11331 } 11332 } 11333 }); 11334 this.$billingFrequencyRadioRadios.forEach(($billingFrequencyRadio) => { 11335 $billingFrequencyRadio.addEventListener("change", (e) => { 11336 this.handleBillingFrequencyChange(e); 11337 }); 11338 if (!this.urlHashes.frequency && $billingFrequencyRadio.checked) { 11339 this.urlHashes.frequency = $billingFrequencyRadio.value; 11340 this.handleBillingFrequencyChange({ target: $billingFrequencyRadio }); 11341 } 11342 });
11343 this.$addOnCheckboxes.forEach(($addOnCheckbox) => { 11344 $addOnCheckbox.addEventListener("change", this.handleAddonsChange.bind(this)); 11345 }); 11346 this.$showAllFeaturesButtons.forEach(($showAllFeaturesButton) => { 11347 $showAllFeaturesButton.addEventListener("click", this.handleShowAllFeaturesClick.bind(this)); 11348 }); 11349 this.$closeFeaturesTable.addEventListener("click", (e) => { 11350 e.preventDefault(); 11351 this.closeFeaturesTable(); 11352 }); 11353 this.$allAddOns.forEach(($addOn) => { 11354 $addOn.addEventListener("click", (e) => { 11355 e.stopPropagation(); 11356 }); 11357 }); 11358 window.addEventListener("keydown", (e) => { 11359 if (e.key === "Escape" || e.key === "Esc" || e.keyCode === 27) { 11360 this.closeFeaturesTable(); 11361 } 11362 }); 11363 } 11364 handlePlanClick($plan) { 11365 const $selectedPlanRadio = $plan.querySelector(".js-pricing-radio"); 11366 this.$plans.forEach(($plan2) => { 11367 const $planRadio = $plan2.querySelector(".js-pricing-radio"); 11368 if ($planRadio === $selectedPlanRadio) { 11369 if (window.innerWidth < 1024 && $selectedPlanRadio.checked) { 11370 $planRadio.checked = false; 11371 $plan2.classList.remove("is-selected"); 11372 } else { 11373 $planRadio.checked = true; 11374 $plan2.classList.add("is-selected"); 11375 } 11376 } else { 11377 $planRadio.checked = false; 11378 $plan2.classList.remove("is-selected"); 11379 } 11380 }); 11381 this.handlePlanChange($plan); 11382 } 11383 handlePlanChange($plan) { 11384 const $selectedPlanFeatures = document.querySelector(`.js-pricing-features[data-plan="${$plan.dataset.plan}"]`); 11385 const $selectedPlanAddOns = document.querySelectorAll(`.js-pricing-add-ons[data-plan="${$plan.dataset.plan}"]`); 11386 this.$allFeatures.forEach(($feature) => { 11387 $feature.classList.add("hidden"); 11388 }); 11389 this.$allAddOns.forEach(($addOn) => { 11390 $addOn.classList.add("hidden"); 11391 }); 11392 this.$addOnCheckboxes.forEach(($addOnCheckbox) => { 11393 $addOnCheckbox.checked = false; 11394 }); 11395 $selectedPlanFeatures.classList.remove("hidden"); 11396 if ($plan.classList.contains("is-selected")) { 11397 $selectedPlanAddOns.forEach(($selectedPlanAddOn) => { 11398 $selectedPlanAddOn.classList.remove("hidden"); 11399 }); 11400 this.urlHashes.plan = $plan.dataset.plan; 11401 } else { 11402 this.urlHashes.plan = void 0; 11403 } 11404 this.updateUrlHash(); 11405 this.updateTotalPrice(); 11406 } 11407 handleBillingFrequencyChange(e) { 11408 const { value } = e.target; 11409 this.$monthlyPrices.forEach(($monthlyPrice) => { 11410 return value === "monthly" ? $monthlyPrice.removeAttribute("style") : $monthlyPrice.style.display = "none"; 11411 }); 11412 this.$yearlyPrices.forEach(($yearlyPrice) => { 11413 return value === "annually" ? $yearlyPrice.removeAttribute("style") : $yearlyPrice.style.display = "none"; 11414 }); 11415 this.urlHashes.frequency = value; 11416 this.updateUrlHash(); 11417 this.updateTotalPrice(); 11418 } 11419 handleAddonsChange(e) { 11420 const $selectedPlanRadio = document.querySelector(".js-pricing-radio:checked"); 11421 const selectedPlan = $selectedPlanRadio.dataset.plan; 11422 const $selectedPlanAddOns = document.querySelectorAll(`.js-pricing-add-ons[data-plan="${selectedPlan}"]`); 11423 document.querySelectorAll(`.js-pricing-add-ons[data-plan="${selectedPlan}"] .js-pricing-add-on-checkbox:checked`); 11424 $selectedPlanAddOns.forEach(($selectedPlanAddOn) => { 11425 if ($selectedPlanAddOn.dataset.allowMultiple === "false") { 11426 const $addOns = $selectedPlanAddOn.querySelectorAll(".js-pricing-add-on-checkbox"); 11427 $addOns.forEach(($addOn) => { 11428 if (e.target === $addOn && $addOn.checked) { 11429 return; 11430 } 11431 $addOn.checked = false; 11432 }); 11433 } 11434 }); 11435 this.updateTotalPrice(); 11436 } 11437 handleShowAllFeaturesClick(e) { 11438 e.stopPropagation(); 11439 e.preventDefault(); 11440 this.$featuresTable.classList.add("is-visible"); 11441 this.$featuresTable.setAttribute("aria-hidden", false); 11442 document.body.classList.add("scrolling-disabled"); 11443 } 11444 closeFeaturesTable() { 11445 this.$featuresTable.classList.remove("is-visible"); 11446 this.$featuresTable.setAttribute("aria-hidden", true); 11447 document.body.classList.remove("scrolling-disabled"); 11448 } 11449 updateTotalPrice() { 11450 const selectedFrequency = document.querySelector(".js-pricing-billing-frequency:checked").value; 11451 const $selectedPlanRadio = document.querySelector(".js-pricing-radio:checked"); 11452 let totalPrice = 0; 11453 let totalPriceBeforeDiscount = 0; 11454 let hasSelectedAddOns = false;
11455 if (!$selectedPlanRadio) { 11456 this.$totalPriceContainer.classList.add("hidden"); 11457 return; 11458 } 11459 this.$totalPriceContainer.classList.remove("hidden"); 11460 const selectedPlan = $selectedPlanRadio.dataset.plan; 11461 const $selectedPlanAddOns = document.querySelectorAll(`.js-pricing-add-ons[data-plan="${selectedPlan}"]`); 11462 const $selectedPlanSelectedAddOns = document.querySelectorAll(`.js-pricing-add-ons[data-plan="${selectedPlan}"] .js-pricing-add-on-checkbox:checked`); 11463 if ($selectedPlanRadio.dataset.hasOwnProperty("isCustom")) { 11464 this.$totalPriceContainer.classList.add("hidden"); 11465 this.updateBookDemoButtonUrl(); 11466 return; 11467 } 11468 this.$totalPriceContainer.classList.remove("hidden"); 11469 $selectedPlanAddOns.forEach(($selectedPlanAddOn) => { 11470 const $addOns = $selectedPlanAddOn.querySelectorAll(".js-pricing-add-on-checkbox"); 11471 const $selectedAddOns = $selectedPlanAddOn.querySelectorAll(".js-pricing-add-on-checkbox:checked"); 11472 $selectedAddOns.forEach(($selectedAddOn) => { 11473 hasSelectedAddOns = true; 11474 switch (selectedFrequency) { 11475 case "monthly": 11476 totalPrice = parseInt($selectedAddOn.dataset.totalMonthlyPrice); 11477 break; 11478 case "annually": 11479 totalPrice = parseInt($selectedAddOn.dataset.totalYearlyPrice); 11480 break; 11481 } 11482 totalPriceBeforeDiscount = parseInt($selectedAddOn.dataset.rrpPrice); 11483 }); 11484 if ($selectedAddOns.length === $addOns.length) { 11485 switch (selectedFrequency) { 11486 case "monthly": 11487 totalPrice = parseInt($selectedPlanAddOn.dataset.combinedBundleTotalMonthlyPrice); 11488 break; 11489 case "annually": 11490 totalPrice = parseInt($selectedPlanAddOn.dataset.combinedBundleTotalYearlyPrice); 11491 break; 11492 } 11493 totalPriceBeforeDiscount = parseInt($selectedPlanAddOn.dataset.combinedBundleRrpPrice); 11494 return; 11495 } 11496 }); 11497 if (!$selectedPlanSelectedAddOns.length) { 11498 switch (selectedFrequency) { 11499 case "monthly": 11500 totalPrice = parseInt($selectedPlanRadio.dataset.monthlyPrice); 11501 break; 11502 case "annually": 11503 totalPrice = parseInt($selectedPlanRadio.dataset.annualPrice); 11504 totalPriceBeforeDiscount = parseInt($selectedPlanRadio.dataset.monthlyPrice); 11505 break; 11506 } 11507 } 11508 switch (selectedFrequency) { 11509 case "monthly": 11510 if (hasSelectedAddOns) { 11511 this.$totalPriceBeforeDiscount.classList.remove("hidden"); 11512 } else { 11513 this.$totalPriceBeforeDiscount.classList.add("hidden"); 11514 } 11515 this.$totalPrice.innerHTML = `$${totalPrice.toLocaleString("en-US", { 11516 minimumFractionDigits: 0, 11517 maximumFractionDigits: 0 11518 })}`; 11519 this.$totalPriceBeforeDiscount.innerHTML = `$${totalPriceBeforeDiscount.toLocaleString("en-US", { 11520 minimumFractionDigits: 0, 11521 maximumFractionDigits: 0 11522 })}`; 11523 break; 11524 case "annually": 11525 this.$totalPriceBeforeDiscount.classList.remove("hidden"); 11526 this.$totalPrice.innerHTML = `$${totalPrice.toLocaleString("en-US", { 11527 minimumFractionDigits: 0, 11528 maximumFractionDigits: 0 11529 })}`; 11530 this.$totalPriceBeforeDiscount.innerHTML = `$${totalPriceBeforeDiscount.toLocaleString("en-US", { 11531 minimumFractionDigits: 0, 11532 maximumFractionDigits: 0 11533 })}`; 11534 break; 11535 } 11536 this.updateBookDemoButtonUrl(); 11537 } 11538 updateBookDemoButtonUrl() { 11539 const $selectedPlanRadio = document.querySelector(".js-pricing-radio:checked"); 11540 const selectedPlan = $selectedPlanRadio.dataset.plan; 11541 const $selectedPlanSelectedAddOns = document.querySelectorAll(`.js-pricing-add-ons[data-plan="${selectedPlan}"] .js-pricing-add-on-checkbox:checked`); 11542 const addOns = []; 11543 const query = []; 11544 $selectedPlanSelectedAddOns.forEach(($selectedPlanSelectedAddOn) => { 11545 addOns.push($selectedPlanSelectedAddOn.value); 11546 }); 11547 const params = { 11548 "demo_request_intent___add_ons": addOns.join(", "), 11549 "demo_request_intent___billing_frequency": this.urlHashes.frequency, 11550 "demo_request_intent___plan": selectedPlan, 11551 "demo_request_intent___product": window.site.meta.permalink 11552 }; 11553 for (var key in params) { 11554 if (params[key]) { 11555 query.push(`${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`); 11556 } 11557 } 11558 this.$bookDemoButton.href = `/book-a-demo/${query.length ? "?" + query.join("&") : ""}`; 11559 } 11560 loadUrlHash() { 11561 const url = new URL(window.location.href); 11562 const hash = url.hash.replace("#/", "").split("/");
11563 const keys = Object.keys(this.urlHashes); 11564 keys.forEach((key) => { 11565 const index = hash.indexOf(key); 11566 if (index === -1) { 11567 return; 11568 } 11569 this.urlHashes[key] = hash[index + 1]; 11570 }); 11571 this.$plans.forEach(($plan) => { 11572 if ($plan.dataset.plan === this.urlHashes.plan) { 11573 const $planRadio = $plan.querySelector(".js-pricing-radio"); 11574 $planRadio.checked = true; 11575 this.handlePlanChange($plan); 11576 } 11577 }); 11578 this.$billingFrequencyRadioRadios.forEach(($billingFrequencyRadio) => { 11579 if ($billingFrequencyRadio.value === this.urlHashes.frequency) { 11580 $billingFrequencyRadio.checked = true; 11581 this.handleBillingFrequencyChange({ target: $billingFrequencyRadio }); 11582 } 11583 }); 11584 } 11585 updateUrlHash() { 11586 const url = new URL(window.location.href); 11587 const keys = Object.keys(this.urlHashes); 11588 let hash = ""; 11589 keys.forEach((key) => { 11590 if (!this.urlHashes[key]) { 11591 return; 11592 } 11593 hash += `/${key}/${this.urlHashes[key]}`; 11594 }); 11595 url.hash = hash; 11596 window.history.replaceState({}, "", url); 11597 } 11598 scrollCurrentMenuLinkIntoView() { 11599 if (!this.$currentMenuLink) return;
11600 const { left: currentLinkLeft, width: currentLinkWidth } = this.$currentMenuLink.getBoundingClientRect(); 11601 const { width: menuWidth } = this.$menu.getBoundingClientRect(); 11602 this.$menu.scrollLeft = currentLinkLeft + currentLinkWidth / 2 - menuWidth / 2; 11603 } 11604 } 11605 class ProductDemo { 11606 constructor() { 11607 const $els = document.querySelectorAll(".js-product-demo"); 11608 $els.forEach(($el) => new Demo$1($el)); 11609 } 11610 } 11611 let Demo$1 = class Demo { 11612 constructor($el) { 11613 this.$el = $el; 11614 this.$buttons = this.$el.querySelectorAll(".js-product-demo-button"); 11615 this.$panels = this.$el.querySelectorAll(".js-product-demo-panel"); 11616 this.$buttons.forEach(($button, index) => { 11617 $button.addEventListener("click", (e) => this.handleClick(e, index)); 11618 }); 11619 } 11620 handleClick(e, index) { 11621 var _a, _b, _c; 11622 e.preventDefault(); 11623 this.$panels.forEach(($panel) => $panel.classList.remove("is-active")); 11624 this.$buttons.forEach(($button) => $button.classList.remove("is-active")); 11625 (_a = this.$panels[index]) == null ? void 0 : _a.classList.add("is-active"); 11626 (_b = this.$buttons[index]) == null ? void 0 : _b.classList.add("is-active"); 11627 if (window.innerWidth < 1024) { 11628 (_c = this.$buttons[index]) == null ? void 0 : _c.scrollIntoView({ 11629 behavior: "smooth" 11630 }); 11631 } 11632 } 11633 }; 11634 class ProductFeaturedIntegrations { 11635 constructor() { 11636 const $els = document.querySelectorAll(".js-product-featured-ingtegrations"); 11637 $els.forEach(($el) => new Carousel$c($el)); 11638 } 11639 } 11640 let Carousel$c = class Carousel { 11641 constructor($el) { 11642 this.$el = $el; 11643 this.$carousel = $el.querySelector(".js-product-featured-ingtegrations-carousel"); 11644 this.$prevBtn = $el.querySelector(".js-product-featured-ingtegrations-carousel-prev-btn"); 11645 this.$nextBtn = $el.querySelector(".js-product-featured-ingtegrations-carousel-next-btn"); 11646 this.$tabs = this.$el.querySelectorAll(".js-product-featured-ingtegrations-tab"); 11647 this.$backgrounds = this.$el.querySelectorAll(".js-product-featured-integrations-background-text"); 11648 this.activeClass = "is-active"; 11649 this.flickity = new Flickity(this.$carousel, { 11650 prevNextButtons: false, 11651 pageDots: false, 11652 wrapAround: true, 11653 imagesLoaded: true 11654 }); 11655 this.flickity.on("select", this.onSelect.bind(this)); 11656 this.$prevBtn.addEventListener("click", this.handlePrevClick.bind(this)); 11657 this.$nextBtn.addEventListener("click", this.handleNextClick.bind(this)); 11658 this.$tabs.forEach(($tab, index) => { 11659 $tab.addEventListener("click", this.goToSlide.bind(this, $tab, index)); 11660 }); 11661 } 11662 handlePrevClick() { 11663 this.flickity.previous(); 11664 } 11665 handleNextClick() { 11666 this.flickity.next(); 11667 } 11668 goToSlide($tab, index = 0) { 11669 if (!this.flickity || !$tab) return; 11670 this.$tabs.forEach(($tab2) => $tab2.classList.remove(this.activeClass)); 11671 $tab.classList.add(this.activeClass); 11672 this.flickity.select(index); 11673 } 11674 onSelect(index) { 11675 var _a, _b; 11676 this.$tabs.forEach(($tab) => $tab.classList.remove(this.activeClass)); 11677 (_a = this.$tabs[index]) == null ? void 0 : _a.classList.add(this.activeClass); 11678 this.$backgrounds.forEach(($background) => $background.classList.remove(this.activeClass)); 11679 (_b = this.$backgrounds[index]) == null ? void 0 : _b.classList.add(this.activeClass); 11680 } 11681 }; 11682 class ProductHero { 11683 constructor() { 11684 this.$el = document.querySelector(".js-product-hero-carousel"); 11685 if (!this.$el) return; 11686 this.totalSlides = this.$el.querySelectorAll(".js-product-hero-carousel-slide").length; 11687 this.init(); 11688 window.addEventListener("resize", this.onResize.bind(this)); 11689 } 11690 init() { 11691 if (window.innerWidth < 1024) { 11692 this.initCarousel(); 11693 return; 11694 } else { 11695 if (this.totalSlides > 3) { 11696 this.initCarousel(); 11697 } else { 11698 this.destroyCarousel(); 11699 this.$el.classList.add("no-carousel"); 11700 } 11701 } 11702 } 11703 onResize() { 11704 this.init(); 11705 }
11706 initCarousel() { 11707 this.carousel = new Flickity(this.$el, { 11708 autoPlay: 4500, 11709 cellAlign: "left", 11710 imagesLoaded: true, 11711 pageDots: true, 11712 pauseAutoPlayOnHover: true, 11713 prevNextButtons: false, 11714 contain: true, 11715 wrapAround: true 11716 }); 11717 } 11718 destroyCarousel() { 11719 if (this.carousel) { 11720 this.carousel.destroy(); 11721 } 11722 } 11723 } 11724 class ProductImageGallery { 11725 constructor() { 11726 this.$els = document.querySelectorAll(".js-product-image-gallery"); 11727 this.activeClass = "is-active"; 11728 this.$els.forEach(($el) => { 11729 const $buttons = $el.querySelectorAll(".js-product-image-gallery-button"); 11730 const $images = $el.querySelectorAll(".js-product-image-gallery-image"); 11731 const $carousel = $el.querySelector(".js-product-image-gallery-carousel"); 11732 const mobileCarousel = new MobileCarousel($carousel, { 11733 maxWidth: 768 11734 }); 11735 if (mobileCarousel.carousel) { 11736 mobileCarousel.carousel.on("select", (index) => { 11737 $buttons.forEach(($button) => $button.classList.remove(this.activeClass)); 11738 $buttons[index].classList.add(this.activeClass); 11739 }); 11740 } 11741 const clickHandler = ($button, index) => { 11742 $buttons.forEach(($button2) => $button2.classList.remove(this.activeClass)); 11743 $images.forEach(($image) => $image.classList.remove(this.activeClass)); 11744 $button.classList.add(this.activeClass); 11745 $images[index].classList.add(this.activeClass); 11746 if (mobileCarousel.carousel) { 11747 mobileCarousel.carousel.select(index); 11748 } 11749 }; 11750 $buttons.forEach(($button, index) => { 11751 $button.addEventListener("click", () => clickHandler($button, index)); 11752 }); 11753 }); 11754 } 11755 } 11756 class ProductUpdatesHighlights { 11757 constructor() { 11758 const $els = document.querySelectorAll(".js-product-updates-highlights-carousel"); 11759 $els.forEach(($el) => new Carousel$b($el)); 11760 } 11761 } 11762 let Carousel$b = class Carousel { 11763 constructor($el) { 11764 var _a, _b; 11765 this.$el = $el; 11766 this.flickity = new Flickity($el.querySelector(".js-carousel"), { 11767 imagesLoaded: true, 11768 prevNextButtons: false, 11769 pageDots: false, 11770 contain: "true", 11771 cellAlign: "left", 11772 groupCells: true, 11773 wrapAround: true 11774 }); 11775 (_a = $el.querySelector(".js-next")) == null ? void 0 : _a.addEventListener("click", () => { 11776 this.flickity.next(); 11777 }); 11778 (_b = $el.querySelector(".js-prev")) == null ? void 0 : _b.addEventListener("click", () => { 11779 this.flickity.previous(); 11780 }); 11781 } 11782 }; 11783 class ProductUpdatesAll { 11784 constructor() { 11785 this.$el = document.querySelector(".js-product-updates-all"); 11786 if (!this.$el) { 11787 return; 11788 } 11789 this.$topicSelect = document.querySelector(".js-product-updates-all-topic-select2"); 11790 this.$topicSelect2 = jQuery(".js-product-updates-all-topic-select2-default").select2(); 11791 const select2 = jQuery(this.$topicSelect).select2({ 11792 theme: "okendo", 11793 closeOnSelect: false, 11794 placeholder: "All topics" 11795 }); 11796 select2.on("change", this.filterByTopic.bind(this)); 11797 this.$loadMoreButton = document.querySelector(".js-product-updates-load-more"); 11798 this.totalPosts = document.querySelector(".js-product-updates-all").dataset.numberOfReleases; 11799 this.perPage = 10; 11800 this.showedPosts = this.perPage; 11801 this.topics = []; 11802 this.$loadMoreButton.addEventListener("click", this.loadMore.bind(this)); 11803 this.showPosts(); 11804 this.openPermalink(); 11805 } 11806 openPermalink() { 11807 const urlParams = new URLSearchParams(window.location.search); 11808 const topics = urlParams.get("topics"); 11809 if (topics) { 11810 jQuery(this.$topicSelect).val(topics.split(",")).trigger("change"); 11811 } 11812 } 11813 updatePermalink(topics) { 11814 var queryParams = new URLSearchParams(window.location.search); 11815 queryParams.set("topics", topics); 11816 history.replaceState(null, null, "?" + queryParams.toString()); 11817 } 11818 filterByTopic(e) { 11819 this.topics = jQuery(this.$topicSelect).select2("data").map((t2) => t2.id); 11820 this.updatePermalink(this.topics); 11821 this.showPosts(); 11822 }
11823 loadMore() { 11824 this.showedPosts += this.perPage; 11825 this.showPosts(); 11826 } 11827 showPosts() { 11828 let postCount = 0; 11829 let totalPosts = 0; 11830 const posts = document.querySelectorAll(".js-product-updates-all-posts > div.js-post"); 11831 document.querySelectorAll(".js-month").forEach((month) => month.classList.add("hidden")); 11832 for (const post of posts) { 11833 const inPage = postCount < this.showedPosts; 11834 const topics = JSON.parse(post.dataset.topics); 11835 const inTopic = this.topics.length === 0 || this.topics.some((item) => topics.includes(item)); 11836 const show = inPage && inTopic; 11837 post.classList.toggle("hidden", !show); 11838 if (show) { 11839 postCount++; 11840 document.querySelector(post.dataset.month).classList.remove("hidden"); 11841 } 11842 if (inTopic) { 11843 totalPosts++; 11844 } 11845 } 11846 this.$loadMoreButton.classList.toggle("hidden", postCount >= totalPosts); 11847 document.querySelector(".js-product-updates-all-posts").classList.toggle("done", postCount >= totalPosts); 11848 } 11849 } 11850 class RelatedCustomerStories { 11851 constructor() { 11852 const $els = document.querySelectorAll(".js-related-customer-stories-carousel"); 11853 $els.forEach(($el) => new Carousel$a($el)); 11854 } 11855 } 11856 let Carousel$a = class Carousel { 11857 constructor($el) { 11858 this.$el = $el; 11859 this.$carousel = this.$el.querySelector(".js-related-customer-stories-carousel-carousel"); 11860 this.flickity = new Flickity(this.$carousel, { 11861 imagesLoaded: true, 11862 prevNextButtons: false, 11863 pageDots: true, 11864 contain: "true", 11865 cellAlign: "left", 11866 groupCells: true 11867 }); 11868 } 11869 }; 11870 class ResourcesCarousel { 11871 constructor() { 11872 const $els = document.querySelectorAll(".js-resources-carousel"); 11873 $els.forEach(($el) => new Carousel$9($el)); 11874 } 11875 } 11876 let Carousel$9 = class Carousel { 11877 constructor($el) { 11878 this.$el = $el; 11879 this.$carousel = this.$el.querySelector(".js-resources-carousel-carousel"); 11880 this.flickity = new Flickity(this.$carousel, { 11881 imagesLoaded: true, 11882 prevNextButtons: false, 11883 pageDots: true, 11884 contain: "true", 11885 cellAlign: "left", 11886 groupCells: true 11887 }); 11888 } 11889 }; 11890 class SocialProof { 11891 constructor() { 11892 this.$el = document.querySelector(".js-social-proof-animation"); 11893 if (!this.$el) return; 11894 this.progress = 0; 11895 this.$steps = document.querySelectorAll(".js-social-proof-step"); 11896 this.$progress = document.querySelector(".js-social-proof-animation-progress"); 11897 this.$mobileLabels = document.querySelectorAll(".js-social-proof-mobile-label"); 11898 window.addEventListener(videoLoaded, (e) => { 11899 const $parent = e.detail.el.parentElement; 11900 if ($parent.classList.contains("js-social-proof-animation")) { 11901 this.$video = $parent.querySelector("video"); 11902 const interval = setInterval(() => { 11903 if (this.$video.readyState > 0) { 11904 this.watcher = requestAnimationFrame(() => this.updateProgress()); 11905 clearInterval(interval); 11906 } 11907 }, 200); 11908 } 11909 }); 11910 } 11911 updateProgress() { 11912 const progress = this.$video.currentTime / this.$video.duration * 100; 11913 this.$progress.style.width = `${progress}%`;
11914 this.$mobileLabels.forEach(($label) => { 11915 $label.classList.remove("is-active"); 11916 }); 11917 if (progress < 1) { 11918 this.$steps.forEach(($step) => { 11919 $step.classList.remove("is-active"); 11920 }); 11921 } 11922 if (progress > 0 && progress < 25) { 11923 this.$steps[0].classList.add("is-active"); 11924 this.$mobileLabels[0].classList.add("is-active"); 11925 } 11926 if (progress > 25 && progress < 55) { 11927 this.$steps[1].classList.add("is-active"); 11928 this.$mobileLabels[1].classList.add("is-active"); 11929 } 11930 if (progress > 55 && progress < 85) { 11931 this.$steps[2].classList.add("is-active"); 11932 this.$mobileLabels[2].classList.add("is-active"); 11933 } 11934 if (progress > 85) { 11935 this.$steps[3].classList.add("is-active"); 11936 this.$mobileLabels[3].classList.add("is-active"); 11937 } 11938 this.watcher = requestAnimationFrame(() => this.updateProgress()); 11939 } 11940 } 11941 class SocialProofBoxes { 11942 constructor() { 11943 this.progress = 0; 11944 this.$boxes = document.querySelector(".js-social-proof-boxes");
11945 this.boxesCarousel = new MobileCarousel(this.$boxes); 11946 } 11947 } 11948 class TabbedContent { 11949 constructor() { 11950 this.$els = document.querySelectorAll(".js-tabbed-content"); 11951 this.$els.forEach(($el) => { 11952 const $buttons = $el.querySelectorAll(".js-tabbed-content-tab-button"); 11953 const $contents = $el.querySelectorAll(".js-tabbed-content-tab-content"); 11954 const $videosContainer = $el.querySelector(".js-tabbed-content-videos"); 11955 if ($videosContainer) { 11956 const $videoWrappers = $videosContainer.querySelectorAll(".js-tabbed-content-video-wrapper"); 11957 new MobileCarousel($videosContainer); 11958 $videoWrappers.forEach(($videoWrapper) => new Video($videoWrapper)); 11959 } 11960 $buttons.forEach(($button, buttonIndex) => new Tab({ 11961 $buttons, 11962 $contents, 11963 buttonIndex 11964 })); 11965 }); 11966 } 11967 } 11968 class Tab { 11969 constructor(options) { 11970 this.$buttons = options.$buttons; 11971 this.$contents = options.$contents; 11972 this.buttonIndex = options.buttonIndex; 11973 this.$selectedButton = this.$buttons[this.buttonIndex]; 11974 this.$selectedContent = this.$contents[this.buttonIndex]; 11975 this.activeClass = "is-active"; 11976 this.$selectedButton.addEventListener("click", (e) => this.handleButtonClick(e)); 11977 } 11978 handleButtonClick(e) { 11979 e.preventDefault(); 11980 this.$buttons.forEach(($button) => { 11981 $button.classList.remove(this.activeClass); 11982 }); 11983 this.$selectedButton.classList.add(this.activeClass); 11984 this.$contents.forEach(($content, contentIndex) => { 11985 $content.setAttribute("aria-hidden", "true"); 11986 $content.classList.remove(this.activeClass); 11987 }); 11988 this.$selectedContent.classList.add(this.activeClass); 11989 this.$selectedContent.setAttribute("aria-hidden", "false"); 11990 const t2 = setTimeout(() => { 11991 window.dispatchEvent(new Event("resize")); 11992 clearTimeout(t2); 11993 }, 0); 11994 } 11995 } 11996 class Video { 11997 constructor($el) { 11998 this.$el = $el; 11999 this.playingClass = "is-playing"; 12000 this.$playButton = this.$el.querySelector(".js-tabbed-content-video-button"); 12001 this.$pauseButton = this.$el.querySelector(".js-tabbed-content-video-pause"); 12002 this.$playButton.addEventListener("click", this.handlePlayButton.bind(this)); 12003 this.$pauseButton.addEventListener("click", this.handlePauseButton.bind(this)); 12004 } 12005 handlePlayButton(e) { 12006 e.preventDefault(); 12007 e.stopPropagation(); 12008 const $button = e.currentTarget; 12009 const $placeholderImage = $button.parentElement.querySelector(".js-tabbed-content-placeholder-image"); 12010 const $video = $button.parentElement.querySelector(".js-tabbed-content-video"); 12011 $video.addEventListener("ended", (event) => { 12012 $placeholderImage.classList.remove(this.playingClass); 12013 this.$pauseButton.classList.remove(this.playingClass); 12014 $button.classList.remove(this.playingClass); 12015 }); 12016 $placeholderImage.classList.add(this.playingClass); 12017 $button.classList.add(this.playingClass); 12018 this.$pauseButton.classList.add(this.playingClass); 12019 $video.play(); 12020 } 12021 handlePauseButton(e) { 12022 e.preventDefault(); 12023 e.stopPropagation(); 12024 const $button = e.currentTarget; 12025 const $placeholderImage = $button.parentElement.querySelector(".js-tabbed-content-placeholder-image"); 12026 const $video = $button.parentElement.querySelector(".js-tabbed-content-video"); 12027 this.$playButton.classList.remove(this.playingClass); 12028 $placeholderImage.classList.remove(this.playingClass); 12029 $button.classList.remove(this.playingClass); 12030 $video.pause(); 12031 $video.currentTime = 0; 12032 $video.load(); 12033 } 12034 } 12035 class TimelineCarousel { 12036 constructor() { 12037 this.$el = document.querySelector(".js-timeline"); 12038 if (!this.$el) return; 12039 this.$carousel = this.$el.querySelector(".js-timeline-carousel"); 12040 this.$nextButton = this.$el.querySelector(".js-timeline-next"); 12041 this.$previousButton = this.$el.querySelector(".js-timeline-prev"); 12042 this.$yearsButtons = this.$el.querySelectorAll(".js-timeline-year"); 12043 this.$yearMobile = this.$el.querySelector(".js-timeline-year-mobile"); 12044 this.carousel = new Flickity(this.$carousel, { 12045 imagesLoaded: true,
12046 prevNextButtons: false, 12047 pageDots: false, 12048 contain: true 12049 }); 12050 this.carousel.on("select", this.onSelect.bind(this)); 12051 this.$nextButton.addEventListener("click", this.onNext.bind(this)); 12052 this.$previousButton.addEventListener("click", this.onPrev.bind(this)); 12053 this.$yearsButtons.forEach(($button, index) => { 12054 $button.addEventListener("click", this.onYearClick.bind(this, $button, index)); 12055 }); 12056 } 12057 onSelect() { 12058 this.clearAllYears(); 12059 this.$yearsButtons[this.carousel.selectedIndex].classList.add("is-active"); 12060 this.$yearMobile.innerHTML = this.carousel.selectedElement.dataset.year; 12061 } 12062 onNext() { 12063 this.carousel.next(); 12064 } 12065 onPrev() { 12066 this.carousel.previous(); 12067 } 12068 clearAllYears() { 12069 this.$yearsButtons.forEach(($year) => $year.classList.remove("is-active")); 12070 } 12071 onYearClick($button, index) { 12072 this.clearAllYears(); 12073 this.carousel.select(index); 12074 } 12075 } 12076 class WatchOurDemos { 12077 constructor() { 12078 const $els = document.querySelectorAll(".js-watch-our-demos"); 12079 $els.forEach(($el) => new Demo($el)); 12080 } 12081 } 12082 class Demo { 12083 constructor($el) { 12084 this.$el = $el; 12085 this.$buttons = this.$el.querySelectorAll(".js-watch-our-demos-button"); 12086 this.$panels = this.$el.querySelectorAll(".js-watch-our-demos-panel"); 12087 this.$iframes = this.$el.querySelectorAll("iframe"); 12088 this.$buttons.forEach(($button, index) => { 12089 $button.addEventListener("click", (e) => this.handleClick(e, index)); 12090 }); 12091 } 12092 stopVideos() { 12093 this.$iframes.forEach(($iframe) => { 12094 $iframe.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', "*"); 12095 }); 12096 } 12097 handleClick(e, index) { 12098 var _a, _b, _c; 12099 e.preventDefault(); 12100 this.stopVideos(); 12101 this.$panels.forEach(($panel) => $panel.classList.remove("is-active")); 12102 this.$buttons.forEach(($button) => $button.classList.remove("is-active")); 12103 (_a = this.$panels[index]) == null ? void 0 : _a.classList.add("is-active"); 12104 (_b = this.$buttons[index]) == null ? void 0 : _b.classList.add("is-active"); 12105 if (window.innerWidth < 1024) { 12106 (_c = this.$buttons[index]) == null ? void 0 : _c.scrollIntoView({ 12107 behavior: "smooth" 12108 }); 12109 } 12110 } 12111 } 12112 class WebinarsCarousel { 12113 constructor() { 12114 const $els = document.querySelectorAll(".js-webinars-carousel"); 12115 $els.forEach(($el) => new Carousel$8($el)); 12116 } 12117 } 12118 let Carousel$8 = class Carousel { 12119 constructor($el) { 12120 this.$el = $el; 12121 this.$carousel = this.$el.querySelector(".js-webinars-carousel-carousel"); 12122 this.flickity = new Flickity(this.$carousel, { 12123 imagesLoaded: true, 12124 prevNextButtons: false, 12125 pageDots: true, 12126 contain: "true", 12127 cellAlign: "left", 12128 groupCells: true 12129 }); 12130 } 12131 }; 12132 class WhatsNew { 12133 constructor() { 12134 const $els = document.querySelectorAll(".js-whats-new"); 12135 $els.forEach(($el) => new Carousel$7($el)); 12136 } 12137 } 12138 let Carousel$7 = class Carousel { 12139 constructor($el) { 12140 this.$el = $el; 12141 this.$carousel = this.$el.querySelector(".js-whats-new-carousel"); 12142 this.flickity = new Flickity(this.$carousel, { 12143 imagesLoaded: true, 12144 prevNextButtons: false, 12145 pageDots: true, 12146 contain: "true", 12147 cellAlign: "left", 12148 groupCells: false 12149 }); 12150 } 12151 }; 12152 class WYSIWYG { 12153 constructor() { 12154 this.$header = document.querySelector(".js-header"); 12155 this.$tableOfContentsLinks = document.querySelectorAll(".js-toc-link"); 12156 this.$tableOfContentsLinks.forEach(($link) => { 12157 $link.addEventListener("click", (e) => { 12158 e.preventDefault(); 12159 this.onTableOfContentsLinkClick($link); 12160 }); 12161 }); 12162 } 12163 onTableOfContentsLinkClick($link) { 12164 const offset = this.$header.offsetHeight; 12165 const gap = 20; 12166 window.scrollTo({ 12167 behavior: "smooth", 12168 top: document.querySelector($link.getAttribute("href")).getBoundingClientRect().top - document.body.getBoundingClientRect().top - offset - gap 12169 }); 12170 } 12171 } 12172 class HeroVideoInline { 12173 constructor() { 12174 const $els = document.querySelectorAll(".js-hero-video-inline");
12175 $els.forEach(($el) => new Carousel$6($el)); 12176 } 12177 } 12178 let Carousel$6 = class Carousel { 12179 constructor($el) { 12180 $el.querySelector(".js-play-video").addEventListener("click", (e) => { 12181 e.preventDefault(); 12182 $el.querySelector(".js-headshot").classList.add("md:hidden"); 12183 $el.querySelector(".js-poster").classList.add("hidden"); 12184 $el.querySelector(".js-video").classList.remove("hidden"); 12185 $el.querySelector(".js-video").firstChild.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', "*"); 12186 }); 12187 } 12188 playVideo(e) { 12189 e.preventDefault(); 12190 } 12191 }; 12192 class VideoTestimonials { 12193 constructor() { 12194 const $els = document.querySelectorAll(".js-video-testimonials .js-video-card"); 12195 $els.forEach(($el) => new Carousel$5($el)); 12196 } 12197 } 12198 let Carousel$5 = class Carousel { 12199 constructor($el) { 12200 $el.querySelector(".js-play").addEventListener("click", (e) => { 12201 e.preventDefault(); 12202 $el.querySelector(".js-play").classList.add("hidden"); 12203 $el.querySelector(".js-poster").classList.add("hidden"); 12204 $el.querySelector(".js-video").classList.remove("hidden"); 12205 $el.querySelector(".js-pause").classList.remove("hidden"); 12206 $el.querySelector(".js-video").play(); 12207 }); 12208 $el.querySelector(".js-video").addEventListener("ended", () => { 12209 $el.querySelector(".js-play").classList.remove("hidden"); 12210 $el.querySelector(".js-poster").classList.remove("hidden"); 12211 $el.querySelector(".js-video").classList.add("hidden"); 12212 $el.querySelector(".js-pause").classList.add("hidden"); 12213 }); 12214 $el.querySelector(".js-pause").addEventListener("click", (e) => { 12215 e.preventDefault(); 12216 $el.querySelector(".js-play").classList.remove("hidden"); 12217 $el.querySelector(".js-poster").classList.remove("hidden"); 12218 $el.querySelector(".js-video").classList.add("hidden"); 12219 $el.querySelector(".js-pause").classList.add("hidden"); 12220 $el.querySelector(".js-video").pause(); 12221 }); 12222 } 12223 }; 12224 class KeyTakeaways { 12225 constructor() { 12226 const $els = document.querySelectorAll(".js-key-takeaways"); 12227 $els.forEach(($el) => new Carousel$4($el)); 12228 } 12229 } 12230 let Carousel$4 = class Carousel { 12231 constructor($el) { 12232 this.flickity = new Flickity($el.querySelector(".js-carousel"), { 12233 imagesLoaded: true, 12234 prevNextButtons: false, 12235 pageDots: false, 12236 contain: "true", 12237 cellAlign: "center", 12238 groupCells: true 12239 }); 12240 $el.querySelector(".js-next").addEventListener("click", (e) => { 12241 e.preventDefault(); 12242 this.flickity.next(); 12243 }); 12244 $el.querySelector(".js-prev").addEventListener("click", (e) => { 12245 e.preventDefault(); 12246 this.flickity.previous(); 12247 }); 12248 } 12249 }; 12250 function _assertThisInitialized(self2) { 12251 if (self2 === void 0) { 12252 throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); 12253 } 12254 return self2; 12255 } 12256 function _inheritsLoose(subClass, superClass) { 12257 subClass.prototype = Object.create(superClass.prototype); 12258 subClass.prototype.constructor = subClass; 12259 subClass.__proto__ = superClass; 12260 } 12261 /*! 12262 * GSAP 3.12.5 12263 * https://gsap.com 12264 * 12265 * @license Copyright 2008-2024, GreenSock. All rights reserved. 12266 * Subject to the terms at https://gsap.com/standard-license or for 12267 * Club GSAP members, the agreement issued with that membership. 12268 * @author: Jack Doyle, [email protected] 12269 */ 12270 var _config = { 12271 autoSleep: 120, 12272 force3D: "auto", 12273 nullTargetWarn: 1, 12274 units: { 12275 lineHeight: "" 12276 } 12277 }, _defaults$1 = { 12278 duration: 0.5, 12279 overwrite: false, 12280 delay: 0 12281 }, _suppressOverwrites$1, _reverting$1, _context$2, _bigNum$1 = 1e8, _tinyNum = 1 / _bigNum$1, _2PI = Math.PI * 2, _HALF_PI = _2PI / 4, _gsID = 0, _sqrt = Math.sqrt, _cos = Math.cos, _sin = Math.sin, _isString$1 = function _isString2(value) { 12282 return typeof value === "string"; 12283 }, _isFunction$1 = function _isFunction2(value) { 12284 return typeof value === "function"; 12285 }, _isNumber$1 = function _isNumber2(value) { 12286 return typeof value === "number"; 12287 }, _isUndefined = function _isUndefined2(value) { 12288 return typeof value === "undefined"; 12289 }, _isObject$1 = function _isObject2(value) { 12290 return typeof value === "object"; 12291 }, _isNotFalse = function _isNotFalse2(value) { 12292 return value !== false; 12293 }, _windowExists$2 = function _windowExists2() { 12294 return typeof window !== "undefined"; 12295 }, _isFuncOrString = function _isFuncOrString2(value) { 12296 return _isFunction$1(value) || _isString$1(value); 12297 }, _isTypedArray = typeof ArrayBuffer === "function" && ArrayBuffer.isView || function() { 12298 }, _isArray = Array.isArray, _strictNumExp = /(?:-?\.?\d|\.)+/gi, _numExp = /[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/g, _numWithUnitExp = /[-+=.]*\d+[.e-]*\d*[a-z%]*/g, _complexStringNumExp = /[-+=.]*\d+\.?\d*(?:e-|e\+)?\d*/gi, _relExp = /[+-]=-?[.\d]+/, _delimitedValueExp = /[^,'"\[\]\s]+/gi, _unitExp = /^[+\-=e\s\d]*\d+[.\d]*([a-z]*|%)\s*$/i, _globalTimeline, _win$3, _c
vendor: 23,264 bytes, lines 12298-12770
12298oreInitted$2, _doc$3, _globals = {}, _installScope = {}, _coreReady, _install = function _install2(scope) { 12299 return (_installScope = _merge(scope, _globals)) && gsap$2; 12300 }, _missingPlugin = function _missingPlugin2(property, value) { 12301 return console.warn("Invalid property", property, "set to", value, "Missing plugin? gsap.registerPlugin()"); 12302 }, _warn = function _warn2(message, suppress) { 12303 return !suppress && console.warn(message); 12304 }, _addGlobal = function _addGlobal2(name, obj) { 12305 return name && (_globals[name] = obj) && _installScope && (_installScope[name] = obj) || _globals; 12306 }, _emptyFunc = function _emptyFunc2() { 12307 return 0; 12308 }, _startAtRevertConfig = { 12309 suppressEvents: true, 12310 isStart: true, 12311 kill: false 12312 }, _revertConfigNoKill = { 12313 suppressEvents: true, 12314 kill: false 12315 }, _revertConfig = { 12316 suppressEvents: true 12317 }, _reservedProps = {}, _lazyTweens = [], _lazyLookup = {}, _lastRenderedFrame, _plugins = {}, _effects = {}, _nextGCFrame = 30, _harnessPlugins = [], _callbackNames = "", _harness = function _harness2(targets) { 12318 var target = targets[0], harnessPlugin, i2; 12319 _isObject$1(target) || _isFunction$1(target) || (targets = [targets]); 12320 if (!(harnessPlugin = (target._gsap || {}).harness)) { 12321 i2 = _harnessPlugins.length; 12322 while (i2-- && !_harnessPlugins[i2].targetTest(target)) { 12323 } 12324 harnessPlugin = _harnessPlugins[i2]; 12325 } 12326 i2 = targets.length; 12327 while (i2--) { 12328 targets[i2] && (targets[i2]._gsap || (targets[i2]._gsap = new GSCache(targets[i2], harnessPlugin))) || targets.splice(i2, 1); 12329 } 12330 return targets; 12331 }, _getCache = function _getCache2(target) { 12332 return target._gsap || _harness(toArray(target))[0]._gsap; 12333 }, _getProperty = function _getProperty2(target, property, v) { 12334 return (v = target[property]) && _isFunction$1(v) ? target[property]() : _isUndefined(v) && target.getAttribute && target.getAttribute(property) || v; 12335 }, _forEachName = function _forEachName2(names, func) { 12336 return (names = names.split(",")).forEach(func) || names; 12337 }, _round$1 = function _round2(value) { 12338 return Math.round(value * 1e5) / 1e5 || 0; 12339 }, _roundPrecise = function _roundPrecise2(value) { 12340 return Math.round(value * 1e7) / 1e7 || 0; 12341 }, _parseRelative = function _parseRelative2(start, value) { 12342 var operator = value.charAt(0), end = parseFloat(value.substr(2)); 12343 start = parseFloat(start); 12344 return operator === "+" ? start + end : operator === "-" ? start - end : operator === "*" ? start * end : start / end; 12345 }, _arrayContainsAny = function _arrayContainsAny2(toSearch, toFind) { 12346 var l = toFind.length, i2 = 0; 12347 for (; toSearch.indexOf(toFind[i2]) < 0 && ++i2 < l; ) { 12348 } 12349 return i2 < l; 12350 }, _lazyRender = function _lazyRender2() { 12351 var l = _lazyTweens.length, a = _lazyTweens.slice(0), i2, tween; 12352 _lazyLookup = {}; 12353 _lazyTweens.length = 0; 12354 for (i2 = 0; i2 < l; i2++) { 12355 tween = a[i2]; 12356 tween && tween._lazy && (tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0); 12357 } 12358 }, _lazySafeRender = function _lazySafeRender2(animation, time, suppressEvents, force) { 12359 _lazyTweens.length && !_reverting$1 && _lazyRender(); 12360 animation.render(time, suppressEvents, _reverting$1 && time < 0 && (animation._initted || animation._startAt)); 12361 _lazyTweens.length && !_reverting$1 && _lazyRender(); 12362 }, _numericIfPossible = function _numericIfPossible2(value) { 12363 var n = parseFloat(value); 12364 return (n || n === 0) && (value + "").match(_delimitedValueExp).length < 2 ? n : _isString$1(value) ? value.trim() : value; 12365 }, _passThrough$1 = function _passThrough2(p) { 12366 return p; 12367 }, _setDefaults$1 = function _setDefaults2(obj, defaults2) { 12368 for (var p in defaults2) { 12369 p in obj || (obj[p] = defaults2[p]); 12370 } 12371 return obj; 12372 }, _setKeyframeDefaults = function _setKeyframeDefaults2(excludeDuration) { 12373 return function(obj, defaults2) { 12374 for (var p in defaults2) { 12375 p in obj || p === "duration" && excludeDuration || p === "ease" || (obj[p] = defaults2[p]); 12376 } 12377 }; 12378 }, _merge = function _merge2(base, toMerge) { 12379 for (var p in toMerge) { 12380 base[p] = toMerge[p]; 12381 } 12382 return base; 12383 }, _mergeDeep = function _mergeDeep2(base, toMerge) { 12384 for (var p in toMerge) { 12385 p !== "__proto__" && p !== "constructor" && p !== "prototype" && (base[p] = _isObject$1(toMerge[p]) ? _mergeDeep2(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p]); 12386 } 12387 return base; 12388 }, _copyExcluding = function _copyExcluding2(obj, excluding) { 12389 var copy = {}, p; 12390 for (p in obj) { 12391 p in excluding || (copy[p] = obj[p]); 12392 } 12393 return copy; 12394 }, _inheritDefaults = function _inheritDefaults2(vars) { 12395 var parent = vars.parent || _globalTimeline, func = vars.keyframes ? _setKeyframeDefaults(_isArray(vars.keyframes)) : _setDefaults$1; 12396 if (_isNotFalse(vars.inherit)) { 12397 while (parent) { 12398 func(vars, parent.vars.defaults); 12399 parent = parent.parent || parent._dp; 12400 } 12401 } 12402 return vars; 12403 }, _arraysMatch = function _arraysMatch2(a1, a2) { 12404 var i2 = a1.length, match = i2 === a2.length; 12405 while (match && i2-- && a1[i2] === a2[i2]) { 12406 } 12407 return i2 < 0; 12408 }, _addLinkedListItem = function _addLinkedListItem2(parent, child, firstProp, lastProp, sortBy) { 12409 var prev = parent[lastProp], t2; 12410 if (sortBy) { 12411 t2 = child[sortBy]; 12412 while (prev && prev[sortBy] > t2) { 12413 prev = prev._prev; 12414 } 12415 } 12416 if (prev) { 12417 child._next = prev._next; 12418 prev._next = child; 12419 } else { 12420 child._next = parent[firstProp]; 12421 parent[firstProp] = child; 12422 } 12423 if (child._next) { 12424 child._next._prev = child; 12425 } else { 12426 parent[lastProp] = child; 12427 } 12428 child._prev = prev; 12429 child.parent = child._dp = parent; 12430 return child; 12431 }, _removeLinkedListItem = function _removeLinkedListItem2(parent, child, firstProp, lastProp) { 12432 if (firstProp === void 0) { 12433 firstProp = "_first"; 12434 } 12435 if (lastProp === void 0) { 12436 lastProp = "_last"; 12437 } 12438 var prev = child._prev, next = child._next; 12439 if (prev) { 12440 prev._next = next; 12441 } else if (parent[firstProp] === child) { 12442 parent[firstProp] = next; 12443 } 12444 if (next) { 12445 next._prev = prev; 12446 } else if (parent[lastProp] === child) { 12447 parent[lastProp] = prev; 12448 } 12449 child._next = child._prev = child.parent = null; 12450 }, _removeFromParent = function _removeFromParent2(child, onlyIfParentHasAutoRemove) { 12451 child.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren) && child.parent.remove && child.parent.remove(child); 12452 child._act = 0; 12453 }, _uncache = function _uncache2(animation, child) { 12454 if (animation && (!child || child._end > animation._dur || child._start < 0)) { 12455 var a = animation; 12456 while (a) { 12457 a._dirty = 1; 12458 a = a.parent; 12459 } 12460 } 12461 return animation; 12462 }, _recacheAncestors = function _recacheAncestors2(animation) { 12463 var parent = animation.parent; 12464 while (parent && parent.parent) { 12465 parent._dirty = 1; 12466 parent.totalDuration(); 12467 parent = parent.parent; 12468 } 12469 return animation; 12470 }, _rewindStartAt = function _rewindStartAt2(tween, totalTime, suppressEvents, force) { 12471 return tween._startAt && (_reverting$1 ? tween._startAt.revert(_revertConfigNoKill) : tween.vars.immediateRender && !tween.vars.autoRevert || tween._startAt.render(totalTime, true, force)); 12472 }, _hasNoPausedAncestors = function _hasNoPausedAncestors2(animation) { 12473 return !animation || animation._ts && _hasNoPausedAncestors2(animation.parent); 12474 }, _elapsedCycleDuration = function _elapsedCycleDuration2(animation) { 12475 return animation._repeat ? _animationCycle(animation._tTime, animation = animation.duration() + animation._rDelay) * animation : 0; 12476 }, _animationCycle = function _animationCycle2(tTime, cycleDuration) { 12477 var whole = Math.floor(tTime /= cycleDuration); 12478 return tTime && whole === tTime ? whole - 1 : whole; 12479 }, _parentToChildTotalTime = function _parentToChildTotalTime2(parentTime, child) { 12480 return (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : child._dirty ? child.totalDuration() : child._tDur); 12481 }, _setEnd = function _setEnd2(animation) { 12482 return animation._end = _roundPrecise(animation._start + (animation._tDur / Math.abs(animation._ts || animation._rts || _tinyNum) || 0)); 12483 }, _alignPlayhead = function _alignPlayhead2(animation, totalTime) { 12484 var parent = animation._dp; 12485 if (parent && parent.smoothChildTiming && animation._ts) { 12486 animation._start = _roundPrecise(parent._time - (animation._ts > 0 ? totalTime / animation._ts : ((animation._dirty ? animation.totalDuration() : animation._tDur) - totalTime) / -animation._ts)); 12487 _setEnd(animation); 12488 parent._dirty || _uncache(parent, animation); 12489 } 12490 return animation; 12491 }, _postAddChecks = function _postAddChecks2(timeline, child) { 12492 var t2; 12493 if (child._time || !child._dur && child._initted || child._start < timeline._time && (child._dur || !child.add)) { 12494 t2 = _parentToChildTotalTime(timeline.rawTime(), child); 12495 if (!child._dur || _clamp$1(0, child.totalDuration(), t2) - child._tTime > _tinyNum) { 12496 child.render(t2, true); 12497 } 12498 } 12499 if (_uncache(timeline, child)._dp && timeline._initted && timeline._time >= timeline._dur && timeline._ts) { 12500 if (timeline._dur < timeline.duration()) { 12501 t2 = timeline; 12502 while (t2._dp) { 12503 t2.rawTime() >= 0 && t2.totalTime(t2._tTime); 12504 t2 = t2._dp; 12505 } 12506 } 12507 timeline._zTime = -1e-8; 12508 } 12509 }, _addToTimeline = function _addToTimeline2(timeline, child, position, skipChecks) { 12510 child.parent && _removeFromParent(child); 12511 child._start = _roundPrecise((_isNumber$1(position) ? position : position || timeline !== _globalTimeline ? _parsePosition$1(timeline, position, child) : timeline._time) + child._delay); 12512 child._end = _roundPrecise(child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0)); 12513 _addLinkedListItem(timeline, child, "_first", "_last", timeline._sort ? "_start" : 0); 12514 _isFromOrFromStart(child) || (timeline._recent = child); 12515 skipChecks || _postAddChecks(timeline, child); 12516 timeline._ts < 0 && _alignPlayhead(timeline, timeline._tTime); 12517 return timeline; 12518 }, _scrollTrigger = function _scrollTrigger2(animation, trigger) { 12519 return (_globals.ScrollTrigger || _missingPlugin("scrollTrigger", trigger)) && _globals.ScrollTrigger.create(trigger, animation); 12520 }, _attemptInitTween = function _attemptInitTween2(tween, time, force, suppressEvents, tTime) { 12521 _initTween(tween, time, tTime); 12522 if (!tween._initted) { 12523 return 1; 12524 } 12525 if (!force && tween._pt && !_reverting$1 && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) { 12526 _lazyTweens.push(tween); 12527 tween._lazy = [tTime, suppressEvents]; 12528 return 1; 12529 } 12530 }, _parentPlayheadIsBeforeStart = function _parentPlayheadIsBeforeStart2(_ref) { 12531 var parent = _ref.parent; 12532 return parent && parent._ts && parent._initted && !parent._lock && (parent.rawTime() < 0 || _parentPlayheadIsBeforeStart2(parent)); 12533 }, _isFromOrFromStart = function _isFromOrFromStart2(_ref2) { 12534 var data = _ref2.data; 12535 return data === "isFromStart" || data === "isStart"; 12536 }, _renderZeroDurationTween = function _renderZeroDurationTween2(tween, totalTime, suppressEvents, force) { 12537 var prevRatio = tween.ratio, ratio = totalTime < 0 || !totalTime && (!tween._start && _parentPlayheadIsBeforeStart(tween) && !(!tween._initted && _isFromOrFromStart(tween)) || (tween._ts < 0 || tween._dp._ts < 0) && !_isFromOrFromStart(tween)) ? 0 : 1, repeatDelay = tween._rDelay, tTime = 0, pt, iteration, prevIteration; 12538 if (repeatDelay && tween._repeat) { 12539 tTime = _clamp$1(0, tween._tDur, totalTime); 12540 iteration = _animationCycle(tTime, repeatDelay); 12541 tween._yoyo && iteration & 1 && (ratio = 1 - ratio); 12542 if (iteration !== _animationCycle(tween._tTime, repeatDelay)) { 12543 prevRatio = 1 - ratio; 12544 tween.vars.repeatRefresh && tween._initted && tween.invalidate(); 12545 } 12546 } 12547 if (ratio !== prevRatio || _reverting$1 || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) { 12548 if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents, tTime)) { 12549 return; 12550 } 12551 prevIteration = tween._zTime; 12552 tween._zTime = totalTime || (suppressEvents ? _tinyNum : 0); 12553 suppressEvents || (suppressEvents = totalTime && !prevIteration); 12554 tween.ratio = ratio; 12555 tween._from && (ratio = 1 - ratio); 12556 tween._time = 0; 12557 tween._tTime = tTime; 12558 pt = tween._pt; 12559 while (pt) { 12560 pt.r(ratio, pt.d); 12561 pt = pt._next; 12562 } 12563 totalTime < 0 && _rewindStartAt(tween, totalTime, suppressEvents, true); 12564 tween._onUpdate && !suppressEvents && _callback$1(tween, "onUpdate"); 12565 tTime && tween._repeat && !suppressEvents && tween.parent && _callback$1(tween, "onRepeat"); 12566 if ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) { 12567 ratio && _removeFromParent(tween, 1); 12568 if (!suppressEvents && !_reverting$1) { 12569 _callback$1(tween, ratio ? "onComplete" : "onReverseComplete", true); 12570 tween._prom && tween._prom(); 12571 } 12572 } 12573 } else if (!tween._zTime) { 12574 tween._zTime = totalTime; 12575 } 12576 }, _findNextPauseTween = function _findNextPauseTween2(animation, prevTime, time) { 12577 var child; 12578 if (time > prevTime) { 12579 child = animation._first; 12580 while (child && child._start <= time) { 12581 if (child.data === "isPause" && child._start > prevTime) { 12582 return child; 12583 } 12584 child = child._next; 12585 } 12586 } else { 12587 child = animation._last; 12588 while (child && child._start >= time) { 12589 if (child.data === "isPause" && child._start < prevTime) { 12590 return child; 12591 } 12592 child = child._prev; 12593 } 12594 } 12595 }, _setDuration = function _setDuration2(animation, duration, skipUncache, leavePlayhead) { 12596 var repeat = animation._repeat, dur = _roundPrecise(duration) || 0, totalProgress = animation._tTime / animation._tDur; 12597 totalProgress && !leavePlayhead && (animation._time *= dur / animation._dur); 12598 animation._dur = dur; 12599 animation._tDur = !repeat ? dur : repeat < 0 ? 1e10 : _roundPrecise(dur * (repeat + 1) + animation._rDelay * repeat); 12600 totalProgress > 0 && !leavePlayhead && _alignPlayhead(animation, animation._tTime = animation._tDur * totalProgress); 12601 animation.parent && _setEnd(animation); 12602 skipUncache || _uncache(animation.parent, animation); 12603 return animation; 12604 }, _onUpdateTotalDuration = function _onUpdateTotalDuration2(animation) { 12605 return animation instanceof Timeline ? _uncache(animation) : _setDuration(animation, animation._dur); 12606 }, _zeroPosition = { 12607 _start: 0, 12608 endTime: _emptyFunc, 12609 totalDuration: _emptyFunc 12610 }, _parsePosition$1 = function _parsePosition2(animation, position, percentAnimation) { 12611 var labels = animation.labels, recent = animation._recent || _zeroPosition, clippedDuration = animation.duration() >= _bigNum$1 ? recent.endTime(false) : animation._dur, i2, offset, isPercent; 12612 if (_isString$1(position) && (isNaN(position) || position in labels)) { 12613 offset = position.charAt(0); 12614 isPercent = position.substr(-1) === "%"; 12615 i2 = position.indexOf("="); 12616 if (offset === "<" || offset === ">") { 12617 i2 >= 0 && (position = position.replace(/=/, "")); 12618 return (offset === "<" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0) * (isPercent ? (i2 < 0 ? recent : percentAnimation).totalDuration() / 100 : 1); 12619 } 12620 if (i2 < 0) { 12621 position in labels || (labels[position] = clippedDuration); 12622 return labels[position]; 12623 } 12624 offset = parseFloat(position.charAt(i2 - 1) + position.substr(i2 + 1)); 12625 if (isPercent && percentAnimation) { 12626 offset = offset / 100 * (_isArray(percentAnimation) ? percentAnimation[0] : percentAnimation).totalDuration(); 12627 } 12628 return i2 > 1 ? _parsePosition2(animation, position.substr(0, i2 - 1), percentAnimation) + offset : clippedDuration + offset; 12629 } 12630 return position == null ? clippedDuration : +position; 12631 }, _createTweenType = function _createTweenType2(type, params, timeline) { 12632 var isLegacy = _isNumber$1(params[1]), varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1), vars = params[varsIndex], irVars, parent; 12633 isLegacy && (vars.duration = params[1]); 12634 vars.parent = timeline; 12635 if (type) { 12636 irVars = vars; 12637 parent = timeline; 12638 while (parent && !("immediateRender" in irVars)) { 12639 irVars = parent.vars.defaults || {}; 12640 parent = _isNotFalse(parent.vars.inherit) && parent.parent; 12641 } 12642 vars.immediateRender = _isNotFalse(irVars.immediateRender); 12643 type < 2 ? vars.runBackwards = 1 : vars.startAt = params[varsIndex - 1]; 12644 } 12645 return new Tween(params[0], vars, params[varsIndex + 1]); 12646 }, _conditionalReturn = function _conditionalReturn2(value, func) { 12647 return value || value === 0 ? func(value) : func; 12648 }, _clamp$1 = function _clamp2(min, max, value) { 12649 return value < min ? min : value > max ? max : value; 12650 }, getUnit = function getUnit2(value, v) { 12651 return !_isString$1(value) || !(v = _unitExp.exec(value)) ? "" : v[1]; 12652 }, clamp = function clamp2(min, max, value) { 12653 return _conditionalReturn(value, function(v) { 12654 return _clamp$1(min, max, v); 12655 }); 12656 }, _slice = [].slice, _isArrayLike = function _isArrayLike2(value, nonEmpty) { 12657 return value && _isObject$1(value) && "length" in value && (!nonEmpty && !value.length || value.length - 1 in value && _isObject$1(value[0])) && !value.nodeType && value !== _win$3; 12658 }, _flatten = function _flatten2(ar, leaveStrings, accumulator) { 12659 if (accumulator === void 0) { 12660 accumulator = []; 12661 } 12662 return ar.forEach(function(value) { 12663 var _accumulator; 12664 return _isString$1(value) && !leaveStrings || _isArrayLike(value, 1) ? (_accumulator = accumulator).push.apply(_accumulator, toArray(value)) : accumulator.push(value); 12665 }) || accumulator; 12666 }, toArray = function toArray2(value, scope, leaveStrings) { 12667 return _context$2 && !scope && _context$2.selector ? _context$2.selector(value) : _isString$1(value) && !leaveStrings && (_coreInitted$2 || !_wake()) ? _slice.call((scope || _doc$3).querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : []; 12668 }, selector = function selector2(value) { 12669 value = toArray(value)[0] || _warn("Invalid scope") || {}; 12670 return function(v) { 12671 var el = value.current || value.nativeElement || value; 12672 return toArray(v, el.querySelectorAll ? el : el === value ? _warn("Invalid scope") || _doc$3.createElement("div") : value); 12673 }; 12674 }, shuffle = function shuffle2(a) { 12675 return a.sort(function() { 12676 return 0.5 - Math.random(); 12677 }); 12678 }, distribute = function distribute2(v) { 12679 if (_isFunction$1(v)) { 12680 return v; 12681 } 12682 var vars = _isObject$1(v) ? v : { 12683 each: v 12684 }, ease = _parseEase(vars.ease), from = vars.from || 0, base = parseFloat(vars.base) || 0, cache = {}, isDecimal = from > 0 && from < 1, ratios = isNaN(from) || isDecimal, axis = vars.axis, ratioX = from, ratioY = from; 12685 if (_isString$1(from)) { 12686 ratioX = ratioY = { 12687 center: 0.5, 12688 edges: 0.5, 12689 end: 1 12690 }[from] || 0; 12691 } else if (!isDecimal && ratios) { 12692 ratioX = from[0]; 12693 ratioY = from[1]; 12694 } 12695 return function(i2, target, a) { 12696 var l = (a || vars).length, distances = cache[l], originX, originY, x, y, d, j, max, min, wrapAt; 12697 if (!distances) { 12698 wrapAt = vars.grid === "auto" ? 0 : (vars.grid || [1, _bigNum$1])[1]; 12699 if (!wrapAt) { 12700 max = -1e8; 12701 while (max < (max = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) { 12702 } 12703 wrapAt < l && wrapAt--; 12704 } 12705 distances = cache[l] = []; 12706 originX = ratios ? Math.min(wrapAt, l) * ratioX - 0.5 : from % wrapAt; 12707 originY = wrapAt === _bigNum$1 ? 0 : ratios ? l * ratioY / wrapAt - 0.5 : from / wrapAt | 0; 12708 max = 0; 12709 min = _bigNum$1; 12710 for (j = 0; j < l; j++) { 12711 x = j % wrapAt - originX; 12712 y = originY - (j / wrapAt | 0); 12713 distances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs(axis === "y" ? y : x); 12714 d > max && (max = d); 12715 d < min && (min = d); 12716 } 12717 from === "random" && shuffle(distances); 12718 distances.max = max - min; 12719 distances.min = min; 12720 distances.v = l = (parseFloat(vars.amount) || parseFloat(vars.each) * (wrapAt > l ? l - 1 : !axis ? Math.max(wrapAt, l / wrapAt) : axis === "y" ? l / wrapAt : wrapAt) || 0) * (from === "edges" ? -1 : 1); 12721 distances.b = l < 0 ? base - l : base; 12722 distances.u = getUnit(vars.amount || vars.each) || 0; 12723 ease = ease && l < 0 ? _invertEase(ease) : ease; 12724 } 12725 l = (distances[i2] - distances.min) / distances.max || 0; 12726 return _roundPrecise(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u; 12727 }; 12728 }, _roundModifier = function _roundModifier2(v) { 12729 var p = Math.pow(10, ((v + "").split(".")[1] || "").length); 12730 return function(raw) { 12731 var n = _roundPrecise(Math.round(parseFloat(raw) / v) * v * p); 12732 return (n - n % 1) / p + (_isNumber$1(raw) ? 0 : getUnit(raw)); 12733 }; 12734 }, snap = function snap2(snapTo, value) { 12735 var isArray2 = _isArray(snapTo), radius, is2D; 12736 if (!isArray2 && _isObject$1(snapTo)) { 12737 radius = isArray2 = snapTo.radius || _bigNum$1; 12738 if (snapTo.values) { 12739 snapTo = toArray(snapTo.values); 12740 if (is2D = !_isNumber$1(snapTo[0])) { 12741 radius *= radius; 12742 } 12743 } else { 12744 snapTo = _roundModifier(snapTo.increment); 12745 } 12746 } 12747 return _conditionalReturn(value, !isArray2 ? _roundModifier(snapTo) : _isFunction$1(snapTo) ? function(raw) { 12748 is2D = snapTo(raw); 12749 return Math.abs(is2D - raw) <= radius ? is2D : raw; 12750 } : function(raw) { 12751 var x = parseFloat(is2D ? raw.x : raw), y = parseFloat(is2D ? raw.y : 0), min = _bigNum$1, closest = 0, i2 = snapTo.length, dx, dy; 12752 while (i2--) { 12753 if (is2D) { 12754 dx = snapTo[i2].x - x; 12755 dy = snapTo[i2].y - y; 12756 dx = dx * dx + dy * dy; 12757 } else { 12758 dx = Math.abs(snapTo[i2] - x); 12759 } 12760 if (dx < min) { 12761 min = dx; 12762 closest = i2; 12763 } 12764 } 12765 closest = !radius || min <= radius ? snapTo[closest] : raw; 12766 return is2D || closest === raw || _isNumber$1(raw) ? closest : closest + getUnit(raw); 12767 }); 12768 }, random = function random2(min, max, roundingIncrement, returnFunction) { 12769 return _conditionalReturn(_isArray(min) ? !max : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, function() { 12770 return _isArray(min) ? min[~~(Math.random() * min.length)] : (roundingIncrement = roundingIncrement || 1e
vendor: 4,833 bytes, lines 12770-12882
12770-5) && (returnFunction = roundingIncrement < 1 ? Math.pow(10, (roundingIncrement + "").length - 2) : 1) && Math.floor(Math.round((min - roundingIncrement / 2 + Math.random() * (max - min + roundingIncrement * 0.99)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction; 12771 }); 12772 }, pipe = function pipe2() { 12773 for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) { 12774 functions[_key] = arguments[_key]; 12775 } 12776 return function(value) { 12777 return functions.reduce(function(v, f) { 12778 return f(v); 12779 }, value); 12780 }; 12781 }, unitize = function unitize2(func, unit) { 12782 return function(value) { 12783 return func(parseFloat(value)) + (unit || getUnit(value)); 12784 }; 12785 }, normalize = function normalize2(min, max, value) { 12786 return mapRange(min, max, 0, 1, value); 12787 }, _wrapArray = function _wrapArray2(a, wrapper, value) { 12788 return _conditionalReturn(value, function(index) { 12789 return a[~~wrapper(index)]; 12790 }); 12791 }, wrap = function wrap2(min, max, value) { 12792 var range = max - min; 12793 return _isArray(min) ? _wrapArray(min, wrap2(0, min.length), max) : _conditionalReturn(value, function(value2) { 12794 return (range + (value2 - min) % range) % range + min; 12795 }); 12796 }, wrapYoyo = function wrapYoyo2(min, max, value) { 12797 var range = max - min, total = range * 2; 12798 return _isArray(min) ? _wrapArray(min, wrapYoyo2(0, min.length - 1), max) : _conditionalReturn(value, function(value2) { 12799 value2 = (total + (value2 - min) % total) % total || 0; 12800 return min + (value2 > range ? total - value2 : value2); 12801 }); 12802 }, _replaceRandom = function _replaceRandom2(value) { 12803 var prev = 0, s = "", i2, nums, end, isArray2; 12804 while (~(i2 = value.indexOf("random(", prev))) { 12805 end = value.indexOf(")", i2); 12806 isArray2 = value.charAt(i2 + 7) === "["; 12807 nums = value.substr(i2 + 7, end - i2 - 7).match(isArray2 ? _delimitedValueExp : _strictNumExp); 12808 s += value.substr(prev, i2 - prev) + random(isArray2 ? nums : +nums[0], isArray2 ? 0 : +nums[1], +nums[2] || 1e-5); 12809 prev = end + 1; 12810 } 12811 return s + value.substr(prev, value.length - prev); 12812 }, mapRange = function mapRange2(inMin, inMax, outMin, outMax, value) { 12813 var inRange = inMax - inMin, outRange = outMax - outMin; 12814 return _conditionalReturn(value, function(value2) { 12815 return outMin + ((value2 - inMin) / inRange * outRange || 0); 12816 }); 12817 }, interpolate = function interpolate2(start, end, progress, mutate) { 12818 var func = isNaN(start + end) ? 0 : function(p2) { 12819 return (1 - p2) * start + p2 * end; 12820 }; 12821 if (!func) { 12822 var isString2 = _isString$1(start), master = {}, p, i2, interpolators, l, il; 12823 progress === true && (mutate = 1) && (progress = null); 12824 if (isString2) { 12825 start = { 12826 p: start 12827 }; 12828 end = { 12829 p: end 12830 }; 12831 } else if (_isArray(start) && !_isArray(end)) { 12832 interpolators = []; 12833 l = start.length; 12834 il = l - 2; 12835 for (i2 = 1; i2 < l; i2++) { 12836 interpolators.push(interpolate2(start[i2 - 1], start[i2])); 12837 } 12838 l--; 12839 func = function func2(p2) { 12840 p2 *= l; 12841 var i3 = Math.min(il, ~~p2); 12842 return interpolators[i3](p2 - i3); 12843 }; 12844 progress = end; 12845 } else if (!mutate) { 12846 start = _merge(_isArray(start) ? [] : {}, start); 12847 } 12848 if (!interpolators) { 12849 for (p in end) { 12850 _addPropTween.call(master, start, p, "get", end[p]); 12851 } 12852 func = function func2(p2) { 12853 return _renderPropTweens(p2, master) || (isString2 ? start.p : start); 12854 }; 12855 } 12856 } 12857 return _conditionalReturn(progress, func); 12858 }, _getLabelInDirection = function _getLabelInDirection2(timeline, fromTime, backward) { 12859 var labels = timeline.labels, min = _bigNum$1, p, distance, label; 12860 for (p in labels) { 12861 distance = labels[p] - fromTime; 12862 if (distance < 0 === !!backward && distance && min > (distance = Math.abs(distance))) { 12863 label = p; 12864 min = distance; 12865 } 12866 } 12867 return label; 12868 }, _callback$1 = function _callback2(animation, type, executeLazyFirst) { 12869 var v = animation.vars, callback = v[type], prevContext = _context$2, context = animation._ctx, params, scope, result; 12870 if (!callback) { 12871 return; 12872 } 12873 params = v[type + "Params"]; 12874 scope = v.callbackScope || animation; 12875 executeLazyFirst && _lazyTweens.length && _lazyRender(); 12876 context && (_context$2 = context); 12877 result = params ? callback.apply(scope, params) : callback.call(scope); 12878 _context$2 = prevContext; 12879 return result; 12880 }, _interrupt = function _interrupt2(animation) { 12881 _removeFromParent(animation); 12882 animation.scrollTrigger && animation.scrollTrigger.kill(!!_reverting$1);
vendor: 16,808 bytes, lines 12883-13309
12883 animation.progress() < 1 && _callback$1(animation, "onInterrupt"); 12884 return animation; 12885 }, _quickTween, _registerPluginQueue = [], _createPlugin = function _createPlugin2(config) { 12886 if (!config) return; 12887 config = !config.name && config["default"] || config; 12888 if (_windowExists$2() || config.headless) { 12889 var name = config.name, isFunc = _isFunction$1(config), Plugin = name && !isFunc && config.init ? function() { 12890 this._props = []; 12891 } : config, instanceDefaults = { 12892 init: _emptyFunc, 12893 render: _renderPropTweens, 12894 add: _addPropTween, 12895 kill: _killPropTweensOf, 12896 modifier: _addPluginModifier, 12897 rawVars: 0 12898 }, statics = { 12899 targetTest: 0, 12900 get: 0, 12901 getSetter: _getSetter, 12902 aliases: {}, 12903 register: 0 12904 }; 12905 _wake(); 12906 if (config !== Plugin) { 12907 if (_plugins[name]) { 12908 return; 12909 } 12910 _setDefaults$1(Plugin, _setDefaults$1(_copyExcluding(config, instanceDefaults), statics)); 12911 _merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config, statics))); 12912 _plugins[Plugin.prop = name] = Plugin; 12913 if (config.targetTest) { 12914 _harnessPlugins.push(Plugin); 12915 _reservedProps[name] = 1; 12916 } 12917 name = (name === "css" ? "CSS" : name.charAt(0).toUpperCase() + name.substr(1)) + "Plugin"; 12918 } 12919 _addGlobal(name, Plugin); 12920 config.register && config.register(gsap$2, Plugin, PropTween); 12921 } else { 12922 _registerPluginQueue.push(config); 12923 } 12924 }, _255 = 255, _colorLookup = { 12925 aqua: [0, _255, _255], 12926 lime: [0, _255, 0], 12927 silver: [192, 192, 192], 12928 black: [0, 0, 0], 12929 maroon: [128, 0, 0], 12930 teal: [0, 128, 128], 12931 blue: [0, 0, _255], 12932 navy: [0, 0, 128], 12933 white: [_255, _255, _255], 12934 olive: [128, 128, 0], 12935 yellow: [_255, _255, 0], 12936 orange: [_255, 165, 0], 12937 gray: [128, 128, 128], 12938 purple: [128, 0, 128], 12939 green: [0, 128, 0], 12940 red: [_255, 0, 0], 12941 pink: [_255, 192, 203], 12942 cyan: [0, _255, _255], 12943 transparent: [_255, _255, _255, 0] 12944 }, _hue = function _hue2(h, m1, m2) { 12945 h += h < 0 ? 1 : h > 1 ? -1 : 0; 12946 return (h * 6 < 1 ? m1 + (m2 - m1) * h * 6 : h < 0.5 ? m2 : h * 3 < 2 ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * _255 + 0.5 | 0; 12947 }, splitColor = function splitColor2(v, toHSL, forceAlpha) { 12948 var a = !v ? _colorLookup.black : _isNumber$1(v) ? [v >> 16, v >> 8 & _255, v & _255] : 0, r, g, b, h, s, l, max, min, d, wasHSL; 12949 if (!a) { 12950 if (v.substr(-1) === ",") { 12951 v = v.substr(0, v.length - 1); 12952 } 12953 if (_colorLookup[v]) { 12954 a = _colorLookup[v]; 12955 } else if (v.charAt(0) === "#") { 12956 if (v.length < 6) { 12957 r = v.charAt(1); 12958 g = v.charAt(2); 12959 b = v.charAt(3); 12960 v = "#" + r + r + g + g + b + b + (v.length === 5 ? v.charAt(4) + v.charAt(4) : ""); 12961 } 12962 if (v.length === 9) { 12963 a = parseInt(v.substr(1, 6), 16); 12964 return [a >> 16, a >> 8 & _255, a & _255, parseInt(v.substr(7), 16) / 255]; 12965 } 12966 v = parseInt(v.substr(1), 16); 12967 a = [v >> 16, v >> 8 & _255, v & _255]; 12968 } else if (v.substr(0, 3) === "hsl") { 12969 a = wasHSL = v.match(_strictNumExp); 12970 if (!toHSL) { 12971 h = +a[0] % 360 / 360; 12972 s = +a[1] / 100; 12973 l = +a[2] / 100; 12974 g = l <= 0.5 ? l * (s + 1) : l + s - l * s; 12975 r = l * 2 - g; 12976 a.length > 3 && (a[3] *= 1); 12977 a[0] = _hue(h + 1 / 3, r, g); 12978 a[1] = _hue(h, r, g); 12979 a[2] = _hue(h - 1 / 3, r, g); 12980 } else if (~v.indexOf("=")) { 12981 a = v.match(_numExp); 12982 forceAlpha && a.length < 4 && (a[3] = 1); 12983 return a; 12984 } 12985 } else { 12986 a = v.match(_strictNumExp) || _colorLookup.transparent; 12987 } 12988 a = a.map(Number); 12989 } 12990 if (toHSL && !wasHSL) { 12991 r = a[0] / _255; 12992 g = a[1] / _255; 12993 b = a[2] / _255; 12994 max = Math.max(r, g, b); 12995 min = Math.min(r, g, b); 12996 l = (max + min) / 2; 12997 if (max === min) { 12998 h = s = 0; 12999 } else { 13000 d = max - min; 13001 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 13002 h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4; 13003 h *= 60; 13004 } 13005 a[0] = ~~(h + 0.5); 13006 a[1] = ~~(s * 100 + 0.5); 13007 a[2] = ~~(l * 100 + 0.5); 13008 } 13009 forceAlpha && a.length < 4 && (a[3] = 1); 13010 return a; 13011 }, _colorOrderData = function _colorOrderData2(v) { 13012 var values = [], c = [], i2 = -1; 13013 v.split(_colorExp).forEach(function(v2) { 13014 var a = v2.match(_numWithUnitExp) || []; 13015 values.push.apply(values, a); 13016 c.push(i2 += a.length + 1); 13017 }); 13018 values.c = c; 13019 return values; 13020 }, _formatColors = function _formatColors2(s, toHSL, orderMatchData) { 13021 var result = "", colors2 = (s + result).match(_colorExp), type = toHSL ? "hsla(" : "rgba(", i2 = 0, c, shell, d, l; 13022 if (!colors2) { 13023 return s; 13024 } 13025 colors2 = colors2.map(function(color2) { 13026 return (color2 = splitColor(color2, toHSL, 1)) && type + (toHSL ? color2[0] + "," + color2[1] + "%," + color2[2] + "%," + color2[3] : color2.join(",")) + ")"; 13027 }); 13028 if (orderMatchData) { 13029 d = _colorOrderData(s); 13030 c = orderMatchData.c; 13031 if (c.join(result) !== d.c.join(result)) { 13032 shell = s.replace(_colorExp, "1").split(_numWithUnitExp); 13033 l = shell.length - 1; 13034 for (; i2 < l; i2++) { 13035 result += shell[i2] + (~c.indexOf(i2) ? colors2.shift() || type + "0,0,0,0)" : (d.length ? d : colors2.length ? colors2 : orderMatchData).shift()); 13036 } 13037 } 13038 } 13039 if (!shell) { 13040 shell = s.split(_colorExp); 13041 l = shell.length - 1; 13042 for (; i2 < l; i2++) { 13043 result += shell[i2] + colors2[i2]; 13044 } 13045 } 13046 return result + shell[l]; 13047 }, _colorExp = function() { 13048 var s = "(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3,4}){1,2}\\b", p; 13049 for (p in _colorLookup) { 13050 s += "|" + p + "\\b"; 13051 } 13052 return new RegExp(s + ")", "gi"); 13053 }(), _hslExp = /hsl[a]?\(/, _colorStringFilter = function _colorStringFilter2(a) { 13054 var combined = a.join(" "), toHSL; 13055 _colorExp.lastIndex = 0; 13056 if (_colorExp.test(combined)) { 13057 toHSL = _hslExp.test(combined); 13058 a[1] = _formatColors(a[1], toHSL); 13059 a[0] = _formatColors(a[0], toHSL, _colorOrderData(a[1])); 13060 return true; 13061 } 13062 }, _tickerActive, _ticker = function() { 13063 var _getTime2 = Date.now, _lagThreshold = 500, _adjustedLag = 33, _startTime = _getTime2(), _lastUpdate = _startTime, _gap = 1e3 / 240, _nextTime = _gap, _listeners2 = [], _id, _req, _raf, _self, _delta, _i2, _tick = function _tick2(v) { 13064 var elapsed = _getTime2() - _lastUpdate, manual = v === true, overlap, dispatch, time, frame; 13065 (elapsed > _lagThreshold || elapsed < 0) && (_startTime += elapsed - _adjustedLag); 13066 _lastUpdate += elapsed; 13067 time = _lastUpdate - _startTime; 13068 overlap = time - _nextTime; 13069 if (overlap > 0 || manual) { 13070 frame = ++_self.frame; 13071 _delta = time - _self.time * 1e3; 13072 _self.time = time = time / 1e3; 13073 _nextTime += overlap + (overlap >= _gap ? 4 : _gap - overlap); 13074 dispatch = 1; 13075 } 13076 manual || (_id = _req(_tick2)); 13077 if (dispatch) { 13078 for (_i2 = 0; _i2 < _listeners2.length; _i2++) { 13079 _listeners2[_i2](time, _delta, frame, v); 13080 } 13081 } 13082 }; 13083 _self = { 13084 time: 0, 13085 frame: 0, 13086 tick: function tick() { 13087 _tick(true); 13088 }, 13089 deltaRatio: function deltaRatio(fps) { 13090 return _delta / (1e3 / (fps || 60)); 13091 }, 13092 wake: function wake() { 13093 if (_coreReady) { 13094 if (!_coreInitted$2 && _windowExists$2()) { 13095 _win$3 = _coreInitted$2 = window; 13096 _doc$3 = _win$3.document || {}; 13097 _globals.gsap = gsap$2; 13098 (_win$3.gsapVersions || (_win$3.gsapVersions = [])).push(gsap$2.version); 13099 _install(_installScope || _win$3.GreenSockGlobals || !_win$3.gsap && _win$3 || {}); 13100 _registerPluginQueue.forEach(_createPlugin); 13101 } 13102 _raf = typeof requestAnimationFrame !== "undefined" && requestAnimationFrame; 13103 _id && _self.sleep(); 13104 _req = _raf || function(f) { 13105 return setTimeout(f, _nextTime - _self.time * 1e3 + 1 | 0); 13106 }; 13107 _tickerActive = 1; 13108 _tick(2); 13109 } 13110 }, 13111 sleep: function sleep() { 13112 (_raf ? cancelAnimationFrame : clearTimeout)(_id); 13113 _tickerActive = 0; 13114 _req = _emptyFunc; 13115 }, 13116 lagSmoothing: function lagSmoothing(threshold, adjustedLag) { 13117 _lagThreshold = threshold || Infinity; 13118 _adjustedLag = Math.min(adjustedLag || 33, _lagThreshold); 13119 }, 13120 fps: function fps(_fps) { 13121 _gap = 1e3 / (_fps || 240); 13122 _nextTime = _self.time * 1e3 + _gap; 13123 }, 13124 add: function add(callback, once, prioritize) { 13125 var func = once ? function(t2, d, f, v) { 13126 callback(t2, d, f, v); 13127 _self.remove(func); 13128 } : callback; 13129 _self.remove(callback); 13130 _listeners2[prioritize ? "unshift" : "push"](func); 13131 _wake(); 13132 return func; 13133 }, 13134 remove: function remove(callback, i2) { 13135 ~(i2 = _listeners2.indexOf(callback)) && _listeners2.splice(i2, 1) && _i2 >= i2 && _i2--; 13136 }, 13137 _listeners: _listeners2 13138 }; 13139 return _self; 13140 }(), _wake = function _wake2() { 13141 return !_tickerActive && _ticker.wake(); 13142 }, _easeMap = {}, _customEaseExp = /^[\d.\-M][\d.\-,\s]/, _quotesExp = /["']/g, _parseObjectInString = function _parseObjectInString2(value) { 13143 var obj = {}, split = value.substr(1, value.length - 3).split(":"), key = split[0], i2 = 1, l = split.length, index, val, parsedVal; 13144 for (; i2 < l; i2++) { 13145 val = split[i2]; 13146 index = i2 !== l - 1 ? val.lastIndexOf(",") : val.length; 13147 parsedVal = val.substr(0, index); 13148 obj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, "").trim() : +parsedVal; 13149 key = val.substr(index + 1).trim(); 13150 } 13151 return obj; 13152 }, _valueInParentheses = function _valueInParentheses2(value) { 13153 var open = value.indexOf("(") + 1, close = value.indexOf(")"), nested = value.indexOf("(", open); 13154 return value.substring(open, ~nested && nested < close ? value.indexOf(")", close + 1) : close); 13155 }, _configEaseFromString = function _configEaseFromString2(name) { 13156 var split = (name + "").split("("), ease = _easeMap[split[0]]; 13157 return ease && split.length > 1 && ease.config ? ease.config.apply(null, ~name.indexOf("{") ? [_parseObjectInString(split[1])] : _valueInParentheses(name).split(",").map(_numericIfPossible)) : _easeMap._CE && _customEaseExp.test(name) ? _easeMap._CE("", name) : ease; 13158 }, _invertEase = function _invertEase2(ease) { 13159 return function(p) { 13160 return 1 - ease(1 - p); 13161 }; 13162 }, _propagateYoyoEase = function _propagateYoyoEase2(timeline, isYoyo) { 13163 var child = timeline._first, ease; 13164 while (child) { 13165 if (child instanceof Timeline) { 13166 _propagateYoyoEase2(child, isYoyo); 13167 } else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) { 13168 if (child.timeline) { 13169 _propagateYoyoEase2(child.timeline, isYoyo); 13170 } else { 13171 ease = child._ease; 13172 child._ease = child._yEase; 13173 child._yEase = ease; 13174 child._yoyo = isYoyo; 13175 } 13176 } 13177 child = child._next; 13178 } 13179 }, _parseEase = function _parseEase2(ease, defaultEase) { 13180 return !ease ? defaultEase : (_isFunction$1(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase; 13181 }, _insertEase = function _insertEase2(names, easeIn, easeOut, easeInOut) { 13182 if (easeOut === void 0) { 13183 easeOut = function easeOut2(p) { 13184 return 1 - easeIn(1 - p); 13185 }; 13186 } 13187 if (easeInOut === void 0) { 13188 easeInOut = function easeInOut2(p) { 13189 return p < 0.5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2; 13190 }; 13191 } 13192 var ease = { 13193 easeIn, 13194 easeOut, 13195 easeInOut 13196 }, lowercaseName; 13197 _forEachName(names, function(name) { 13198 _easeMap[name] = _globals[name] = ease; 13199 _easeMap[lowercaseName = name.toLowerCase()] = easeOut; 13200 for (var p in ease) { 13201 _easeMap[lowercaseName + (p === "easeIn" ? ".in" : p === "easeOut" ? ".out" : ".inOut")] = _easeMap[name + "." + p] = ease[p]; 13202 } 13203 }); 13204 return ease; 13205 }, _easeInOutFromOut = function _easeInOutFromOut2(easeOut) { 13206 return function(p) { 13207 return p < 0.5 ? (1 - easeOut(1 - p * 2)) / 2 : 0.5 + easeOut((p - 0.5) * 2) / 2; 13208 }; 13209 }, _configElastic = function _configElastic2(type, amplitude, period) { 13210 var p1 = amplitude >= 1 ? amplitude : 1, p2 = (period || (type ? 0.3 : 0.45)) / (amplitude < 1 ? amplitude : 1), p3 = p2 / _2PI * (Math.asin(1 / p1) || 0), easeOut = function easeOut2(p) { 13211 return p === 1 ? 1 : p1 * Math.pow(2, -10 * p) * _sin((p - p3) * p2) + 1; 13212 }, ease = type === "out" ? easeOut : type === "in" ? function(p) { 13213 return 1 - easeOut(1 - p); 13214 } : _easeInOutFromOut(easeOut); 13215 p2 = _2PI / p2; 13216 ease.config = function(amplitude2, period2) { 13217 return _configElastic2(type, amplitude2, period2); 13218 }; 13219 return ease; 13220 }, _configBack = function _configBack2(type, overshoot) { 13221 if (overshoot === void 0) { 13222 overshoot = 1.70158; 13223 } 13224 var easeOut = function easeOut2(p) { 13225 return p ? --p * p * ((overshoot + 1) * p + overshoot) + 1 : 0; 13226 }, ease = type === "out" ? easeOut : type === "in" ? function(p) { 13227 return 1 - easeOut(1 - p); 13228 } : _easeInOutFromOut(easeOut); 13229 ease.config = function(overshoot2) { 13230 return _configBack2(type, overshoot2); 13231 }; 13232 return ease; 13233 }; 13234 _forEachName("Linear,Quad,Cubic,Quart,Quint,Strong", function(name, i2) { 13235 var power = i2 < 5 ? i2 + 1 : i2; 13236 _insertEase(name + ",Power" + (power - 1), i2 ? function(p) { 13237 return Math.pow(p, power); 13238 } : function(p) { 13239 return p; 13240 }, function(p) { 13241 return 1 - Math.pow(1 - p, power); 13242 }, function(p) { 13243 return p < 0.5 ? Math.pow(p * 2, power) / 2 : 1 - Math.pow((1 - p) * 2, power) / 2; 13244 }); 13245 }); 13246 _easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn; 13247 _insertEase("Elastic", _configElastic("in"), _configElastic("out"), _configElastic()); 13248 (function(n, c) { 13249 var n1 = 1 / c, n2 = 2 * n1, n3 = 2.5 * n1, easeOut = function easeOut2(p) { 13250 return p < n1 ? n * p * p : p < n2 ? n * Math.pow(p - 1.5 / c, 2) + 0.75 : p < n3 ? n * (p -= 2.25 / c) * p + 0.9375 : n * Math.pow(p - 2.625 / c, 2) + 0.984375; 13251 }; 13252 _insertEase("Bounce", function(p) { 13253 return 1 - easeOut(1 - p); 13254 }, easeOut); 13255 })(7.5625, 2.75); 13256 _insertEase("Expo", function(p) { 13257 return p ? Math.pow(2, 10 * (p - 1)) : 0; 13258 }); 13259 _insertEase("Circ", function(p) { 13260 return -(_sqrt(1 - p * p) - 1); 13261 }); 13262 _insertEase("Sine", function(p) { 13263 return p === 1 ? 1 : -_cos(p * _HALF_PI) + 1; 13264 }); 13265 _insertEase("Back", _configBack("in"), _configBack("out"), _configBack()); 13266 _easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = { 13267 config: function config(steps, immediateStart) { 13268 if (steps === void 0) { 13269 steps = 1; 13270 } 13271 var p1 = 1 / steps, p2 = steps + (immediateStart ? 0 : 1), p3 = immediateStart ? 1 : 0, max = 1 - _tinyNum; 13272 return function(p) { 13273 return ((p2 * _clamp$1(0, max, p) | 0) + p3) * p1; 13274 }; 13275 } 13276 }; 13277 _defaults$1.ease = _easeMap["quad.out"]; 13278 _forEachName("onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt", function(name) { 13279 return _callbackNames += name + "," + name + "Params,"; 13280 }); 13281 var GSCache = function GSCache2(target, harness) { 13282 this.id = _gsID++; 13283 target._gsap = this; 13284 this.target = target; 13285 this.harness = harness; 13286 this.get = harness ? harness.get : _getProperty; 13287 this.set = harness ? harness.getSetter : _getSetter; 13288 }; 13289 var Animation = /* @__PURE__ */ function() { 13290 function Animation2(vars) { 13291 this.vars = vars; 13292 this._delay = +vars.delay || 0; 13293 if (this._repeat = vars.repeat === Infinity ? -2 : vars.repeat || 0) { 13294 this._rDelay = vars.repeatDelay || 0; 13295 this._yoyo = !!vars.yoyo || !!vars.yoyoEase; 13296 } 13297 this._ts = 1; 13298 _setDuration(this, +vars.duration, 1, 1); 13299 this.data = vars.data; 13300 if (_context$2) { 13301 this._ctx = _context$2; 13302 _context$2.data.push(this); 13303 } 13304 _tickerActive || _ticker.wake(); 13305 } 13306 var _proto = Animation2.prototype; 13307 _proto.delay = function delay(value) { 13308 if (value || value === 0) { 13309 this.parent && this.parent.smoothChildTiming && this.startTime(this._start + value - this._delay);
vendor: 16,240 bytes, lines 13310-13685
13310 this._delay = value; 13311 return this; 13312 } 13313 return this._delay; 13314 }; 13315 _proto.duration = function duration(value) { 13316 return arguments.length ? this.totalDuration(this._repeat > 0 ? value + (value + this._rDelay) * this._repeat : value) : this.totalDuration() && this._dur; 13317 }; 13318 _proto.totalDuration = function totalDuration(value) { 13319 if (!arguments.length) { 13320 return this._tDur; 13321 } 13322 this._dirty = 0; 13323 return _setDuration(this, this._repeat < 0 ? value : (value - this._repeat * this._rDelay) / (this._repeat + 1)); 13324 }; 13325 _proto.totalTime = function totalTime(_totalTime, suppressEvents) { 13326 _wake(); 13327 if (!arguments.length) { 13328 return this._tTime; 13329 } 13330 var parent = this._dp; 13331 if (parent && parent.smoothChildTiming && this._ts) { 13332 _alignPlayhead(this, _totalTime); 13333 !parent._dp || parent.parent || _postAddChecks(parent, this); 13334 while (parent && parent.parent) { 13335 if (parent.parent._time !== parent._start + (parent._ts >= 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) { 13336 parent.totalTime(parent._tTime, true); 13337 } 13338 parent = parent.parent; 13339 } 13340 if (!this.parent && this._dp.autoRemoveChildren && (this._ts > 0 && _totalTime < this._tDur || this._ts < 0 && _totalTime > 0 || !this._tDur && !_totalTime)) { 13341 _addToTimeline(this._dp, this, this._start - this._delay); 13342 } 13343 } 13344 if (this._tTime !== _totalTime || !this._dur && !suppressEvents || this._initted && Math.abs(this._zTime) === _tinyNum || !_totalTime && !this._initted && (this.add || this._ptLookup)) { 13345 this._ts || (this._pTime = _totalTime); 13346 _lazySafeRender(this, _totalTime, suppressEvents); 13347 } 13348 return this; 13349 }; 13350 _proto.time = function time(value, suppressEvents) { 13351 return arguments.length ? this.totalTime(Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % (this._dur + this._rDelay) || (value ? this._dur : 0), suppressEvents) : this._time; 13352 }; 13353 _proto.totalProgress = function totalProgress(value, suppressEvents) { 13354 return arguments.length ? this.totalTime(this.totalDuration() * value, suppressEvents) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.rawTime() > 0 ? 1 : 0; 13355 }; 13356 _proto.progress = function progress(value, suppressEvents) { 13357 return arguments.length ? this.totalTime(this.duration() * (this._yoyo && !(this.iteration() & 1) ? 1 - value : value) + _elapsedCycleDuration(this), suppressEvents) : this.duration() ? Math.min(1, this._time / this._dur) : this.rawTime() > 0 ? 1 : 0; 13358 }; 13359 _proto.iteration = function iteration(value, suppressEvents) { 13360 var cycleDuration = this.duration() + this._rDelay; 13361 return arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1; 13362 }; 13363 _proto.timeScale = function timeScale(value, suppressEvents) { 13364 if (!arguments.length) { 13365 return this._rts === -1e-8 ? 0 : this._rts; 13366 } 13367 if (this._rts === value) { 13368 return this; 13369 } 13370 var tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime; 13371 this._rts = +value || 0; 13372 this._ts = this._ps || value === -1e-8 ? 0 : this._rts; 13373 this.totalTime(_clamp$1(-Math.abs(this._delay), this._tDur, tTime), suppressEvents !== false); 13374 _setEnd(this); 13375 return _recacheAncestors(this); 13376 }; 13377 _proto.paused = function paused(value) { 13378 if (!arguments.length) { 13379 return this._ps; 13380 } 13381 if (this._ps !== value) { 13382 this._ps = value; 13383 if (value) { 13384 this._pTime = this._tTime || Math.max(-this._delay, this.rawTime()); 13385 this._ts = this._act = 0; 13386 } else { 13387 _wake(); 13388 this._ts = this._rts; 13389 this.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, this.progress() === 1 && Math.abs(this._zTime) !== _tinyNum && (this._tTime -= _tinyNum)); 13390 } 13391 } 13392 return this; 13393 }; 13394 _proto.startTime = function startTime(value) { 13395 if (arguments.length) { 13396 this._start = value; 13397 var parent = this.parent || this._dp; 13398 parent && (parent._sort || !this.parent) && _addToTimeline(parent, this, value - this._delay); 13399 return this; 13400 } 13401 return this._start; 13402 }; 13403 _proto.endTime = function endTime(includeRepeats) { 13404 return this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts || 1); 13405 }; 13406 _proto.rawTime = function rawTime(wrapRepeats) { 13407 var parent = this.parent || this._dp; 13408 return !parent ? this._tTime : wrapRepeats && (!this._ts || this._repeat && this._time && this.totalProgress() < 1) ? this._tTime % (this._dur + this._rDelay) : !this._ts ? this._tTime : _parentToChildTotalTime(parent.rawTime(wrapRepeats), this); 13409 }; 13410 _proto.revert = function revert(config) { 13411 if (config === void 0) { 13412 config = _revertConfig; 13413 } 13414 var prevIsReverting = _reverting$1; 13415 _reverting$1 = config; 13416 if (this._initted || this._startAt) { 13417 this.timeline && this.timeline.revert(config); 13418 this.totalTime(-0.01, config.suppressEvents); 13419 } 13420 this.data !== "nested" && config.kill !== false && this.kill(); 13421 _reverting$1 = prevIsReverting; 13422 return this; 13423 }; 13424 _proto.globalTime = function globalTime(rawTime) { 13425 var animation = this, time = arguments.length ? rawTime : animation.rawTime(); 13426 while (animation) { 13427 time = animation._start + time / (Math.abs(animation._ts) || 1); 13428 animation = animation._dp; 13429 } 13430 return !this.parent && this._sat ? this._sat.globalTime(rawTime) : time; 13431 }; 13432 _proto.repeat = function repeat(value) { 13433 if (arguments.length) { 13434 this._repeat = value === Infinity ? -2 : value; 13435 return _onUpdateTotalDuration(this); 13436 } 13437 return this._repeat === -2 ? Infinity : this._repeat; 13438 }; 13439 _proto.repeatDelay = function repeatDelay(value) { 13440 if (arguments.length) { 13441 var time = this._time; 13442 this._rDelay = value; 13443 _onUpdateTotalDuration(this); 13444 return time ? this.time(time) : this; 13445 } 13446 return this._rDelay; 13447 }; 13448 _proto.yoyo = function yoyo(value) { 13449 if (arguments.length) { 13450 this._yoyo = value; 13451 return this; 13452 } 13453 return this._yoyo; 13454 }; 13455 _proto.seek = function seek(position, suppressEvents) { 13456 return this.totalTime(_parsePosition$1(this, position), _isNotFalse(suppressEvents)); 13457 }; 13458 _proto.restart = function restart(includeDelay, suppressEvents) { 13459 return this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents)); 13460 }; 13461 _proto.play = function play(from, suppressEvents) { 13462 from != null && this.seek(from, suppressEvents); 13463 return this.reversed(false).paused(false); 13464 }; 13465 _proto.reverse = function reverse(from, suppressEvents) { 13466 from != null && this.seek(from || this.totalDuration(), suppressEvents); 13467 return this.reversed(true).paused(false); 13468 }; 13469 _proto.pause = function pause(atTime, suppressEvents) { 13470 atTime != null && this.seek(atTime, suppressEvents); 13471 return this.paused(true); 13472 }; 13473 _proto.resume = function resume() { 13474 return this.paused(false); 13475 }; 13476 _proto.reversed = function reversed(value) { 13477 if (arguments.length) { 13478 !!value !== this.reversed() && this.timeScale(-this._rts || (value ? -1e-8 : 0)); 13479 return this; 13480 } 13481 return this._rts < 0; 13482 }; 13483 _proto.invalidate = function invalidate() { 13484 this._initted = this._act = 0; 13485 this._zTime = -1e-8; 13486 return this; 13487 }; 13488 _proto.isActive = function isActive() { 13489 var parent = this.parent || this._dp, start = this._start, rawTime; 13490 return !!(!parent || this._ts && this._initted && parent.isActive() && (rawTime = parent.rawTime(true)) >= start && rawTime < this.endTime(true) - _tinyNum); 13491 }; 13492 _proto.eventCallback = function eventCallback(type, callback, params) { 13493 var vars = this.vars; 13494 if (arguments.length > 1) { 13495 if (!callback) { 13496 delete vars[type]; 13497 } else { 13498 vars[type] = callback; 13499 params && (vars[type + "Params"] = params); 13500 type === "onUpdate" && (this._onUpdate = callback); 13501 } 13502 return this; 13503 } 13504 return vars[type]; 13505 }; 13506 _proto.then = function then(onFulfilled) { 13507 var self2 = this; 13508 return new Promise(function(resolve) { 13509 var f = _isFunction$1(onFulfilled) ? onFulfilled : _passThrough$1, _resolve = function _resolve2() { 13510 var _then = self2.then; 13511 self2.then = null; 13512 _isFunction$1(f) && (f = f(self2)) && (f.then || f === self2) && (self2.then = _then); 13513 resolve(f); 13514 self2.then = _then; 13515 }; 13516 if (self2._initted && self2.totalProgress() === 1 && self2._ts >= 0 || !self2._tTime && self2._ts < 0) { 13517 _resolve(); 13518 } else { 13519 self2._prom = _resolve; 13520 } 13521 }); 13522 }; 13523 _proto.kill = function kill() { 13524 _interrupt(this); 13525 }; 13526 return Animation2; 13527 }(); 13528 _setDefaults$1(Animation.prototype, { 13529 _time: 0, 13530 _start: 0, 13531 _end: 0, 13532 _tTime: 0, 13533 _tDur: 0, 13534 _dirty: 0, 13535 _repeat: 0, 13536 _yoyo: false, 13537 parent: null, 13538 _initted: false, 13539 _rDelay: 0, 13540 _ts: 1, 13541 _dp: 0, 13542 ratio: 0, 13543 _zTime: -1e-8, 13544 _prom: 0, 13545 _ps: false, 13546 _rts: 1 13547 }); 13548 var Timeline = /* @__PURE__ */ function(_Animation) { 13549 _inheritsLoose(Timeline2, _Animation); 13550 function Timeline2(vars, position) { 13551 var _this; 13552 if (vars === void 0) { 13553 vars = {}; 13554 } 13555 _this = _Animation.call(this, vars) || this; 13556 _this.labels = {}; 13557 _this.smoothChildTiming = !!vars.smoothChildTiming; 13558 _this.autoRemoveChildren = !!vars.autoRemoveChildren; 13559 _this._sort = _isNotFalse(vars.sortChildren); 13560 _globalTimeline && _addToTimeline(vars.parent || _globalTimeline, _assertThisInitialized(_this), position); 13561 vars.reversed && _this.reverse(); 13562 vars.paused && _this.paused(true); 13563 vars.scrollTrigger && _scrollTrigger(_assertThisInitialized(_this), vars.scrollTrigger); 13564 return _this; 13565 } 13566 var _proto2 = Timeline2.prototype; 13567 _proto2.to = function to(targets, vars, position) { 13568 _createTweenType(0, arguments, this); 13569 return this; 13570 }; 13571 _proto2.from = function from(targets, vars, position) { 13572 _createTweenType(1, arguments, this); 13573 return this; 13574 }; 13575 _proto2.fromTo = function fromTo(targets, fromVars, toVars, position) { 13576 _createTweenType(2, arguments, this); 13577 return this; 13578 }; 13579 _proto2.set = function set(targets, vars, position) { 13580 vars.duration = 0; 13581 vars.parent = this; 13582 _inheritDefaults(vars).repeatDelay || (vars.repeat = 0); 13583 vars.immediateRender = !!vars.immediateRender; 13584 new Tween(targets, vars, _parsePosition$1(this, position), 1); 13585 return this; 13586 }; 13587 _proto2.call = function call(callback, params, position) { 13588 return _addToTimeline(this, Tween.delayedCall(0, callback, params), position); 13589 }; 13590 _proto2.staggerTo = function staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) { 13591 vars.duration = duration; 13592 vars.stagger = vars.stagger || stagger; 13593 vars.onComplete = onCompleteAll; 13594 vars.onCompleteParams = onCompleteAllParams; 13595 vars.parent = this; 13596 new Tween(targets, vars, _parsePosition$1(this, position)); 13597 return this; 13598 }; 13599 _proto2.staggerFrom = function staggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) { 13600 vars.runBackwards = 1; 13601 _inheritDefaults(vars).immediateRender = _isNotFalse(vars.immediateRender); 13602 return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams); 13603 }; 13604 _proto2.staggerFromTo = function staggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) { 13605 toVars.startAt = fromVars; 13606 _inheritDefaults(toVars).immediateRender = _isNotFalse(toVars.immediateRender); 13607 return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams); 13608 }; 13609 _proto2.render = function render(totalTime, suppressEvents, force) { 13610 var prevTime = this._time, tDur = this._dirty ? this.totalDuration() : this._tDur, dur = this._dur, tTime = totalTime <= 0 ? 0 : _roundPrecise(totalTime), crossingStart = this._zTime < 0 !== totalTime < 0 && (this._initted || !dur), time, child, next, iteration, cycleDuration, prevPaused, pauseTween, timeScale, prevStart, prevIteration, yoyo, isYoyo; 13611 this !== _globalTimeline && tTime > tDur && totalTime >= 0 && (tTime = tDur); 13612 if (tTime !== this._tTime || force || crossingStart) { 13613 if (prevTime !== this._time && dur) { 13614 tTime += this._time - prevTime; 13615 totalTime += this._time - prevTime; 13616 } 13617 time = tTime; 13618 prevStart = this._start; 13619 timeScale = this._ts; 13620 prevPaused = !timeScale; 13621 if (crossingStart) { 13622 dur || (prevTime = this._zTime); 13623 (totalTime || !suppressEvents) && (this._zTime = totalTime); 13624 } 13625 if (this._repeat) { 13626 yoyo = this._yoyo; 13627 cycleDuration = dur + this._rDelay; 13628 if (this._repeat < -1 && totalTime < 0) { 13629 return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force); 13630 } 13631 time = _roundPrecise(tTime % cycleDuration); 13632 if (tTime === tDur) { 13633 iteration = this._repeat; 13634 time = dur; 13635 } else { 13636 iteration = ~~(tTime / cycleDuration); 13637 if (iteration && iteration === tTime / cycleDuration) { 13638 time = dur; 13639 iteration--; 13640 } 13641 time > dur && (time = dur); 13642 } 13643 prevIteration = _animationCycle(this._tTime, cycleDuration); 13644 !prevTime && this._tTime && prevIteration !== iteration && this._tTime - prevIteration * cycleDuration - this._dur <= 0 && (prevIteration = iteration); 13645 if (yoyo && iteration & 1) { 13646 time = dur - time; 13647 isYoyo = 1; 13648 } 13649 if (iteration !== prevIteration && !this._lock) { 13650 var rewinding = yoyo && prevIteration & 1, doesWrap = rewinding === (yoyo && iteration & 1); 13651 iteration < prevIteration && (rewinding = !rewinding); 13652 prevTime = rewinding ? 0 : tTime % dur ? dur : tTime; 13653 this._lock = 1; 13654 this.render(prevTime || (isYoyo ? 0 : _roundPrecise(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0; 13655 this._tTime = tTime; 13656 !suppressEvents && this.parent && _callback$1(this, "onRepeat"); 13657 this.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1); 13658 if (prevTime && prevTime !== this._time || prevPaused !== !this._ts || this.vars.onRepeat && !this.parent && !this._act) { 13659 return this; 13660 } 13661 dur = this._dur; 13662 tDur = this._tDur; 13663 if (doesWrap) { 13664 this._lock = 2; 13665 prevTime = rewinding ? dur : -1e-4; 13666 this.render(prevTime, true); 13667 this.vars.repeatRefresh && !isYoyo && this.invalidate(); 13668 } 13669 this._lock = 0; 13670 if (!this._ts && !prevPaused) { 13671 return this; 13672 } 13673 _propagateYoyoEase(this, isYoyo); 13674 } 13675 } 13676 if (this._hasPause && !this._forcing && this._lock < 2) { 13677 pauseTween = _findNextPauseTween(this, _roundPrecise(prevTime), _roundPrecise(time)); 13678 if (pauseTween) { 13679 tTime -= time - (time = pauseTween._start); 13680 } 13681 } 13682 this._tTime = tTime; 13683 this._time = time; 13684 this._act = !timeScale; 13685 if (!this._initted) {
vendor: 2,423 bytes, lines 13686-13741
13686 this._onUpdate = this.vars.onUpdate; 13687 this._initted = 1; 13688 this._zTime = totalTime; 13689 prevTime = 0; 13690 } 13691 if (!prevTime && time && !suppressEvents && !iteration) { 13692 _callback$1(this, "onStart"); 13693 if (this._tTime !== tTime) { 13694 return this; 13695 } 13696 } 13697 if (time >= prevTime && totalTime >= 0) { 13698 child = this._first; 13699 while (child) { 13700 next = child._next; 13701 if ((child._act || time >= child._start) && child._ts && pauseTween !== child) { 13702 if (child.parent !== this) { 13703 return this.render(totalTime, suppressEvents, force); 13704 } 13705 child.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force); 13706 if (time !== this._time || !this._ts && !prevPaused) { 13707 pauseTween = 0; 13708 next && (tTime += this._zTime = -1e-8); 13709 break; 13710 } 13711 } 13712 child = next; 13713 } 13714 } else { 13715 child = this._last; 13716 var adjustedTime = totalTime < 0 ? totalTime : time; 13717 while (child) { 13718 next = child._prev; 13719 if ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) { 13720 if (child.parent !== this) { 13721 return this.render(totalTime, suppressEvents, force); 13722 } 13723 child.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force || _reverting$1 && (child._initted || child._startAt)); 13724 if (time !== this._time || !this._ts && !prevPaused) { 13725 pauseTween = 0; 13726 next && (tTime += this._zTime = adjustedTime ? -1e-8 : _tinyNum); 13727 break; 13728 } 13729 } 13730 child = next; 13731 } 13732 } 13733 if (pauseTween && !suppressEvents) { 13734 this.pause(); 13735 pauseTween.render(time >= prevTime ? 0 : -1e-8)._zTime = time >= prevTime ? 1 : -1; 13736 if (this._ts) { 13737 this._start = prevStart; 13738 _setEnd(this); 13739 return this.render(totalTime, suppressEvents, force); 13740 } 13741 }
vendor: 7,936 bytes, lines 13742-13949
13742 this._onUpdate && !suppressEvents && _callback$1(this, "onUpdate", true); 13743 if (tTime === tDur && this._tTime >= this.totalDuration() || !tTime && prevTime) { 13744 if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) { 13745 if (!this._lock) { 13746 (totalTime || !dur) && (tTime === tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); 13747 if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime || !tDur)) { 13748 _callback$1(this, tTime === tDur && totalTime >= 0 ? "onComplete" : "onReverseComplete", true); 13749 this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom(); 13750 } 13751 } 13752 } 13753 } 13754 } 13755 return this; 13756 }; 13757 _proto2.add = function add(child, position) { 13758 var _this2 = this; 13759 _isNumber$1(position) || (position = _parsePosition$1(this, position, child)); 13760 if (!(child instanceof Animation)) { 13761 if (_isArray(child)) { 13762 child.forEach(function(obj) { 13763 return _this2.add(obj, position); 13764 }); 13765 return this; 13766 } 13767 if (_isString$1(child)) { 13768 return this.addLabel(child, position); 13769 } 13770 if (_isFunction$1(child)) { 13771 child = Tween.delayedCall(0, child); 13772 } else { 13773 return this; 13774 } 13775 } 13776 return this !== child ? _addToTimeline(this, child, position) : this; 13777 }; 13778 _proto2.getChildren = function getChildren(nested, tweens, timelines, ignoreBeforeTime) { 13779 if (nested === void 0) { 13780 nested = true; 13781 } 13782 if (tweens === void 0) { 13783 tweens = true; 13784 } 13785 if (timelines === void 0) { 13786 timelines = true; 13787 } 13788 if (ignoreBeforeTime === void 0) { 13789 ignoreBeforeTime = -1e8; 13790 } 13791 var a = [], child = this._first; 13792 while (child) { 13793 if (child._start >= ignoreBeforeTime) { 13794 if (child instanceof Tween) { 13795 tweens && a.push(child); 13796 } else { 13797 timelines && a.push(child); 13798 nested && a.push.apply(a, child.getChildren(true, tweens, timelines)); 13799 } 13800 } 13801 child = child._next; 13802 } 13803 return a; 13804 }; 13805 _proto2.getById = function getById(id) { 13806 var animations = this.getChildren(1, 1, 1), i2 = animations.length; 13807 while (i2--) { 13808 if (animations[i2].vars.id === id) { 13809 return animations[i2]; 13810 } 13811 } 13812 }; 13813 _proto2.remove = function remove(child) { 13814 if (_isString$1(child)) { 13815 return this.removeLabel(child); 13816 } 13817 if (_isFunction$1(child)) { 13818 return this.killTweensOf(child); 13819 } 13820 _removeLinkedListItem(this, child); 13821 if (child === this._recent) { 13822 this._recent = this._last; 13823 } 13824 return _uncache(this); 13825 }; 13826 _proto2.totalTime = function totalTime(_totalTime2, suppressEvents) { 13827 if (!arguments.length) { 13828 return this._tTime; 13829 } 13830 this._forcing = 1; 13831 if (!this._dp && this._ts) { 13832 this._start = _roundPrecise(_ticker.time - (this._ts > 0 ? _totalTime2 / this._ts : (this.totalDuration() - _totalTime2) / -this._ts)); 13833 } 13834 _Animation.prototype.totalTime.call(this, _totalTime2, suppressEvents); 13835 this._forcing = 0; 13836 return this; 13837 }; 13838 _proto2.addLabel = function addLabel(label, position) { 13839 this.labels[label] = _parsePosition$1(this, position); 13840 return this; 13841 }; 13842 _proto2.removeLabel = function removeLabel(label) { 13843 delete this.labels[label]; 13844 return this; 13845 }; 13846 _proto2.addPause = function addPause(position, callback, params) { 13847 var t2 = Tween.delayedCall(0, callback || _emptyFunc, params); 13848 t2.data = "isPause"; 13849 this._hasPause = 1; 13850 return _addToTimeline(this, t2, _parsePosition$1(this, position)); 13851 }; 13852 _proto2.removePause = function removePause(position) { 13853 var child = this._first; 13854 position = _parsePosition$1(this, position); 13855 while (child) { 13856 if (child._start === position && child.data === "isPause") { 13857 _removeFromParent(child); 13858 } 13859 child = child._next; 13860 } 13861 }; 13862 _proto2.killTweensOf = function killTweensOf(targets, props, onlyActive) { 13863 var tweens = this.getTweensOf(targets, onlyActive), i2 = tweens.length; 13864 while (i2--) { 13865 _overwritingTween !== tweens[i2] && tweens[i2].kill(targets, props); 13866 } 13867 return this; 13868 }; 13869 _proto2.getTweensOf = function getTweensOf(targets, onlyActive) { 13870 var a = [], parsedTargets = toArray(targets), child = this._first, isGlobalTime = _isNumber$1(onlyActive), children; 13871 while (child) { 13872 if (child instanceof Tween) { 13873 if (_arrayContainsAny(child._targets, parsedTargets) && (isGlobalTime ? (!_overwritingTween || child._initted && child._ts) && child.globalTime(0) <= onlyActive && child.globalTime(child.totalDuration()) > onlyActive : !onlyActive || child.isActive())) { 13874 a.push(child); 13875 } 13876 } else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) { 13877 a.push.apply(a, children); 13878 } 13879 child = child._next; 13880 } 13881 return a; 13882 }; 13883 _proto2.tweenTo = function tweenTo(position, vars) { 13884 vars = vars || {}; 13885 var tl = this, endTime = _parsePosition$1(tl, position), _vars = vars, startAt = _vars.startAt, _onStart = _vars.onStart, onStartParams = _vars.onStartParams, immediateRender = _vars.immediateRender, initted, tween = Tween.to(tl, _setDefaults$1({ 13886 ease: vars.ease || "none", 13887 lazy: false, 13888 immediateRender: false, 13889 time: endTime, 13890 overwrite: "auto", 13891 duration: vars.duration || Math.abs((endTime - (startAt && "time" in startAt ? startAt.time : tl._time)) / tl.timeScale()) || _tinyNum, 13892 onStart: function onStart() { 13893 tl.pause(); 13894 if (!initted) { 13895 var duration = vars.duration || Math.abs((endTime - (startAt && "time" in startAt ? startAt.time : tl._time)) / tl.timeScale()); 13896 tween._dur !== duration && _setDuration(tween, duration, 0, 1).render(tween._time, true, true); 13897 initted = 1; 13898 } 13899 _onStart && _onStart.apply(tween, onStartParams || []); 13900 } 13901 }, vars)); 13902 return immediateRender ? tween.render(0) : tween; 13903 }; 13904 _proto2.tweenFromTo = function tweenFromTo(fromPosition, toPosition, vars) { 13905 return this.tweenTo(toPosition, _setDefaults$1({ 13906 startAt: { 13907 time: _parsePosition$1(this, fromPosition) 13908 } 13909 }, vars)); 13910 }; 13911 _proto2.recent = function recent() { 13912 return this._recent; 13913 }; 13914 _proto2.nextLabel = function nextLabel(afterTime) { 13915 if (afterTime === void 0) { 13916 afterTime = this._time; 13917 } 13918 return _getLabelInDirection(this, _parsePosition$1(this, afterTime)); 13919 }; 13920 _proto2.previousLabel = function previousLabel(beforeTime) { 13921 if (beforeTime === void 0) { 13922 beforeTime = this._time; 13923 } 13924 return _getLabelInDirection(this, _parsePosition$1(this, beforeTime), 1); 13925 }; 13926 _proto2.currentLabel = function currentLabel(value) { 13927 return arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum); 13928 }; 13929 _proto2.shiftChildren = function shiftChildren(amount, adjustLabels, ignoreBeforeTime) { 13930 if (ignoreBeforeTime === void 0) { 13931 ignoreBeforeTime = 0; 13932 } 13933 var child = this._first, labels = this.labels, p; 13934 while (child) { 13935 if (child._start >= ignoreBeforeTime) { 13936 child._start += amount; 13937 child._end += amount; 13938 } 13939 child = child._next; 13940 } 13941 if (adjustLabels) { 13942 for (p in labels) { 13943 if (labels[p] >= ignoreBeforeTime) { 13944 labels[p] += amount; 13945 } 13946 } 13947 } 13948 return _uncache(this); 13949 };
vendor: 7,521 bytes, lines 13950-14124
13950 _proto2.invalidate = function invalidate(soft) { 13951 var child = this._first; 13952 this._lock = 0; 13953 while (child) { 13954 child.invalidate(soft); 13955 child = child._next; 13956 } 13957 return _Animation.prototype.invalidate.call(this, soft); 13958 }; 13959 _proto2.clear = function clear(includeLabels) { 13960 if (includeLabels === void 0) { 13961 includeLabels = true; 13962 } 13963 var child = this._first, next; 13964 while (child) { 13965 next = child._next; 13966 this.remove(child); 13967 child = next; 13968 } 13969 this._dp && (this._time = this._tTime = this._pTime = 0); 13970 includeLabels && (this.labels = {}); 13971 return _uncache(this); 13972 }; 13973 _proto2.totalDuration = function totalDuration(value) { 13974 var max = 0, self2 = this, child = self2._last, prevStart = _bigNum$1, prev, start, parent; 13975 if (arguments.length) { 13976 return self2.timeScale((self2._repeat < 0 ? self2.duration() : self2.totalDuration()) / (self2.reversed() ? -value : value)); 13977 } 13978 if (self2._dirty) { 13979 parent = self2.parent; 13980 while (child) { 13981 prev = child._prev; 13982 child._dirty && child.totalDuration(); 13983 start = child._start; 13984 if (start > prevStart && self2._sort && child._ts && !self2._lock) { 13985 self2._lock = 1; 13986 _addToTimeline(self2, child, start - child._delay, 1)._lock = 0; 13987 } else { 13988 prevStart = start; 13989 } 13990 if (start < 0 && child._ts) { 13991 max -= start; 13992 if (!parent && !self2._dp || parent && parent.smoothChildTiming) { 13993 self2._start += start / self2._ts; 13994 self2._time -= start; 13995 self2._tTime -= start; 13996 } 13997 self2.shiftChildren(-start, false, -Infinity); 13998 prevStart = 0; 13999 } 14000 child._end > max && child._ts && (max = child._end); 14001 child = prev; 14002 } 14003 _setDuration(self2, self2 === _globalTimeline && self2._time > max ? self2._time : max, 1, 1); 14004 self2._dirty = 0; 14005 } 14006 return self2._tDur; 14007 }; 14008 Timeline2.updateRoot = function updateRoot(time) { 14009 if (_globalTimeline._ts) { 14010 _lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline)); 14011 _lastRenderedFrame = _ticker.frame; 14012 } 14013 if (_ticker.frame >= _nextGCFrame) { 14014 _nextGCFrame += _config.autoSleep || 120; 14015 var child = _globalTimeline._first; 14016 if (!child || !child._ts) { 14017 if (_config.autoSleep && _ticker._listeners.length < 2) { 14018 while (child && !child._ts) { 14019 child = child._next; 14020 } 14021 child || _ticker.sleep(); 14022 } 14023 } 14024 } 14025 }; 14026 return Timeline2; 14027 }(Animation); 14028 _setDefaults$1(Timeline.prototype, { 14029 _lock: 0, 14030 _hasPause: 0, 14031 _forcing: 0 14032 }); 14033 var _addComplexStringPropTween = function _addComplexStringPropTween2(target, prop, start, end, setter, stringFilter, funcParam) { 14034 var pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter), index = 0, matchIndex = 0, result, startNums, color2, endNum, chunk, startNum, hasRandom, a; 14035 pt.b = start; 14036 pt.e = end; 14037 start += ""; 14038 end += ""; 14039 if (hasRandom = ~end.indexOf("random(")) { 14040 end = _replaceRandom(end); 14041 } 14042 if (stringFilter) { 14043 a = [start, end]; 14044 stringFilter(a, target, prop); 14045 start = a[0]; 14046 end = a[1]; 14047 } 14048 startNums = start.match(_complexStringNumExp) || []; 14049 while (result = _complexStringNumExp.exec(end)) { 14050 endNum = result[0]; 14051 chunk = end.substring(index, result.index); 14052 if (color2) { 14053 color2 = (color2 + 1) % 5; 14054 } else if (chunk.substr(-5) === "rgba(") { 14055 color2 = 1; 14056 } 14057 if (endNum !== startNums[matchIndex++]) { 14058 startNum = parseFloat(startNums[matchIndex - 1]) || 0; 14059 pt._pt = { 14060 _next: pt._pt, 14061 p: chunk || matchIndex === 1 ? chunk : ",", 14062 //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case. 14063 s: startNum, 14064 c: endNum.charAt(1) === "=" ? _parseRelative(startNum, endNum) - startNum : parseFloat(endNum) - startNum, 14065 m: color2 && color2 < 4 ? Math.round : 0 14066 }; 14067 index = _complexStringNumExp.lastIndex; 14068 } 14069 } 14070 pt.c = index < end.length ? end.substring(index, end.length) : ""; 14071 pt.fp = funcParam; 14072 if (_relExp.test(end) || hasRandom) { 14073 pt.e = 0; 14074 } 14075 this._pt = pt; 14076 return pt; 14077 }, _addPropTween = function _addPropTween2(target, prop, start, end, index, targets, modifier, stringFilter, funcParam, optional) { 14078 _isFunction$1(end) && (end = end(index || 0, target, targets)); 14079 var currentValue = target[prop], parsedStart = start !== "get" ? start : !_isFunction$1(currentValue) ? currentValue : funcParam ? target[prop.indexOf("set") || !_isFunction$1(target["get" + prop.substr(3)]) ? prop : "get" + prop.substr(3)](funcParam) : target[prop](), setter = !_isFunction$1(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc, pt; 14080 if (_isString$1(end)) { 14081 if (~end.indexOf("random(")) { 14082 end = _replaceRandom(end); 14083 } 14084 if (end.charAt(1) === "=") { 14085 pt = _parseRelative(parsedStart, end) + (getUnit(parsedStart) || 0); 14086 if (pt || pt === 0) { 14087 end = pt; 14088 } 14089 } 14090 } 14091 if (!optional || parsedStart !== end || _forceAllPropTweens) { 14092 if (!isNaN(parsedStart * end) && end !== "") { 14093 pt = new PropTween(this._pt, target, prop, +parsedStart || 0, end - (parsedStart || 0), typeof currentValue === "boolean" ? _renderBoolean : _renderPlain, 0, setter); 14094 funcParam && (pt.fp = funcParam); 14095 modifier && pt.modifier(modifier, this, target); 14096 return this._pt = pt; 14097 } 14098 !currentValue && !(prop in target) && _missingPlugin(prop, end); 14099 return _addComplexStringPropTween.call(this, target, prop, parsedStart, end, setter, stringFilter || _config.stringFilter, funcParam); 14100 } 14101 }, _processVars = function _processVars2(vars, index, target, targets, tween) { 14102 _isFunction$1(vars) && (vars = _parseFuncOrString(vars, tween, index, target, targets)); 14103 if (!_isObject$1(vars) || vars.style && vars.nodeType || _isArray(vars) || _isTypedArray(vars)) { 14104 return _isString$1(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars; 14105 } 14106 var copy = {}, p; 14107 for (p in vars) { 14108 copy[p] = _parseFuncOrString(vars[p], tween, index, target, targets); 14109 } 14110 return copy; 14111 }, _checkPlugin = function _checkPlugin2(property, vars, tween, index, target, targets) { 14112 var plugin, pt, ptLookup, i2; 14113 if (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) { 14114 tween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority); 14115 if (tween !== _quickTween) { 14116 ptLookup = tween._ptLookup[tween._targets.indexOf(target)]; 14117 i2 = plugin._props.length; 14118 while (i2--) { 14119 ptLookup[plugin._props[i2]] = pt; 14120 } 14121 } 14122 } 14123 return plugin; 14124 }, _overwritingTween, _forceAllPropTweens, _initTween = function _initTween2
vendor: 4,191 bytes, lines 14124-14187
14124(tween, time, tTime) { 14125 var vars = tween.vars, ease = vars.ease, startAt = vars.startAt, immediateRender = vars.immediateRender, lazy = vars.lazy, onUpdate = vars.onUpdate, runBackwards = vars.runBackwards, yoyoEase = vars.yoyoEase, keyframes = vars.keyframes, autoRevert = vars.autoRevert, dur = tween._dur, prevStartAt = tween._startAt, targets = tween._targets, parent = tween.parent, fullTargets = parent && parent.data === "nested" ? parent.vars.targets : targets, autoOverwrite = tween._overwrite === "auto" && !_suppressOverwrites$1, tl = tween.timeline, cleanVars, i2, p, pt, target, hasPriority, gsData, harness, plugin, ptLookup, index, harnessVars, overwritten; 14126 tl && (!keyframes || !ease) && (ease = "none"); 14127 tween._ease = _parseEase(ease, _defaults$1.ease); 14128 tween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults$1.ease)) : 0; 14129 if (yoyoEase && tween._yoyo && !tween._repeat) { 14130 yoyoEase = tween._yEase; 14131 tween._yEase = tween._ease; 14132 tween._ease = yoyoEase; 14133 } 14134 tween._from = !tl && !!vars.runBackwards; 14135 if (!tl || keyframes && !vars.stagger) { 14136 harness = targets[0] ? _getCache(targets[0]).harness : 0; 14137 harnessVars = harness && vars[harness.prop]; 14138 cleanVars = _copyExcluding(vars, _reservedProps); 14139 if (prevStartAt) { 14140 prevStartAt._zTime < 0 && prevStartAt.progress(1); 14141 time < 0 && runBackwards && immediateRender && !autoRevert ? prevStartAt.render(-1, true) : prevStartAt.revert(runBackwards && dur ? _revertConfigNoKill : _startAtRevertConfig); 14142 prevStartAt._lazy = 0; 14143 } 14144 if (startAt) { 14145 _removeFromParent(tween._startAt = Tween.set(targets, _setDefaults$1({ 14146 data: "isStart", 14147 overwrite: false, 14148 parent, 14149 immediateRender: true, 14150 lazy: !prevStartAt && _isNotFalse(lazy), 14151 startAt: null, 14152 delay: 0, 14153 onUpdate: onUpdate && function() { 14154 return _callback$1(tween, "onUpdate"); 14155 }, 14156 stagger: 0 14157 }, startAt))); 14158 tween._startAt._dp = 0; 14159 tween._startAt._sat = tween; 14160 time < 0 && (_reverting$1 || !immediateRender && !autoRevert) && tween._startAt.revert(_revertConfigNoKill); 14161 if (immediateRender) { 14162 if (dur && time <= 0 && tTime <= 0) { 14163 time && (tween._zTime = time); 14164 return; 14165 } 14166 } 14167 } else if (runBackwards && dur) { 14168 if (!prevStartAt) { 14169 time && (immediateRender = false); 14170 p = _setDefaults$1({ 14171 overwrite: false, 14172 data: "isFromStart", 14173 //we tag the tween with as "isFromStart" so that if [inside a plugin] we need to only do something at the very END of a tween, we have a way of identifying this tween as merely the one that's setting the beginning values for a "from()" tween. For example, clearProps in CSSPlugin should only get applied at the very END of a tween and without this tag, from(...{height:100, clearProps:"height", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in. 14174 lazy: immediateRender && !prevStartAt && _isNotFalse(lazy), 14175 immediateRender, 14176 //zero-duration tweens render immediately by default, but if we're not specifically instructed to render this tween immediately, we should skip this and merely _init() to record the starting values (rendering them immediately would push them to completion which is wasteful in that case - we'd have to render(-1) immediately after) 14177 stagger: 0, 14178 parent 14179 //ensures that nested tweens that had a stagger are handled properly, like gsap.from(".class", {y: gsap.utils.wrap([-100,100]), stagger: 0.5}) 14180 }, cleanVars); 14181 harnessVars && (p[harness.prop] = harnessVars); 14182 _removeFromParent(tween._startAt = Tween.set(targets, p)); 14183 tween._startAt._dp = 0; 14184 tween._startAt._sat = tween; 14185 time < 0 && (_reverting$1 ? tween._startAt.revert(_revertConfigNoKill) : tween._startAt.render(-1, true)); 14186 tween._zTime = time; 14187 if (!immediateRender) {
vendor: 9,637 bytes, lines 14188-14406
14188 _initTween2(tween._startAt, _tinyNum, _tinyNum); 14189 } else if (!time) { 14190 return; 14191 } 14192 } 14193 } 14194 tween._pt = tween._ptCache = 0; 14195 lazy = dur && _isNotFalse(lazy) || lazy && !dur; 14196 for (i2 = 0; i2 < targets.length; i2++) { 14197 target = targets[i2]; 14198 gsData = target._gsap || _harness(targets)[i2]._gsap; 14199 tween._ptLookup[i2] = ptLookup = {}; 14200 _lazyLookup[gsData.id] && _lazyTweens.length && _lazyRender(); 14201 index = fullTargets === targets ? i2 : fullTargets.indexOf(target); 14202 if (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) { 14203 tween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority); 14204 plugin._props.forEach(function(name) { 14205 ptLookup[name] = pt; 14206 }); 14207 plugin.priority && (hasPriority = 1); 14208 } 14209 if (!harness || harnessVars) { 14210 for (p in cleanVars) { 14211 if (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) { 14212 plugin.priority && (hasPriority = 1); 14213 } else { 14214 ptLookup[p] = pt = _addPropTween.call(tween, target, p, "get", cleanVars[p], index, fullTargets, 0, vars.stringFilter); 14215 } 14216 } 14217 } 14218 tween._op && tween._op[i2] && tween.kill(target, tween._op[i2]); 14219 if (autoOverwrite && tween._pt) { 14220 _overwritingTween = tween; 14221 _globalTimeline.killTweensOf(target, ptLookup, tween.globalTime(time)); 14222 overwritten = !tween.parent; 14223 _overwritingTween = 0; 14224 } 14225 tween._pt && lazy && (_lazyLookup[gsData.id] = 1); 14226 } 14227 hasPriority && _sortPropTweensByPriority(tween); 14228 tween._onInit && tween._onInit(tween); 14229 } 14230 tween._onUpdate = onUpdate; 14231 tween._initted = (!tween._op || tween._pt) && !overwritten; 14232 keyframes && time <= 0 && tl.render(_bigNum$1, true, true); 14233 }, _updatePropTweens = function _updatePropTweens2(tween, property, value, start, startIsRelative, ratio, time, skipRecursion) { 14234 var ptCache = (tween._pt && tween._ptCache || (tween._ptCache = {}))[property], pt, rootPT, lookup, i2; 14235 if (!ptCache) { 14236 ptCache = tween._ptCache[property] = []; 14237 lookup = tween._ptLookup; 14238 i2 = tween._targets.length; 14239 while (i2--) { 14240 pt = lookup[i2][property]; 14241 if (pt && pt.d && pt.d._pt) { 14242 pt = pt.d._pt; 14243 while (pt && pt.p !== property && pt.fp !== property) { 14244 pt = pt._next; 14245 } 14246 } 14247 if (!pt) { 14248 _forceAllPropTweens = 1; 14249 tween.vars[property] = "+=0"; 14250 _initTween(tween, time); 14251 _forceAllPropTweens = 0; 14252 return skipRecursion ? _warn(property + " not eligible for reset") : 1; 14253 } 14254 ptCache.push(pt); 14255 } 14256 } 14257 i2 = ptCache.length; 14258 while (i2--) { 14259 rootPT = ptCache[i2]; 14260 pt = rootPT._pt || rootPT; 14261 pt.s = (start || start === 0) && !startIsRelative ? start : pt.s + (start || 0) + ratio * pt.c; 14262 pt.c = value - pt.s; 14263 rootPT.e && (rootPT.e = _round$1(value) + getUnit(rootPT.e)); 14264 rootPT.b && (rootPT.b = pt.s + getUnit(rootPT.b)); 14265 } 14266 }, _addAliasesToVars = function _addAliasesToVars2(targets, vars) { 14267 var harness = targets[0] ? _getCache(targets[0]).harness : 0, propertyAliases = harness && harness.aliases, copy, p, i2, aliases; 14268 if (!propertyAliases) { 14269 return vars; 14270 } 14271 copy = _merge({}, vars); 14272 for (p in propertyAliases) { 14273 if (p in copy) { 14274 aliases = propertyAliases[p].split(","); 14275 i2 = aliases.length; 14276 while (i2--) { 14277 copy[aliases[i2]] = copy[p]; 14278 } 14279 } 14280 } 14281 return copy; 14282 }, _parseKeyframe = function _parseKeyframe2(prop, obj, allProps, easeEach) { 14283 var ease = obj.ease || easeEach || "power1.inOut", p, a; 14284 if (_isArray(obj)) { 14285 a = allProps[prop] || (allProps[prop] = []); 14286 obj.forEach(function(value, i2) { 14287 return a.push({ 14288 t: i2 / (obj.length - 1) * 100, 14289 v: value, 14290 e: ease 14291 }); 14292 }); 14293 } else { 14294 for (p in obj) { 14295 a = allProps[p] || (allProps[p] = []); 14296 p === "ease" || a.push({ 14297 t: parseFloat(prop), 14298 v: obj[p], 14299 e: ease 14300 }); 14301 } 14302 } 14303 }, _parseFuncOrString = function _parseFuncOrString2(value, tween, i2, target, targets) { 14304 return _isFunction$1(value) ? value.call(tween, i2, target, targets) : _isString$1(value) && ~value.indexOf("random(") ? _replaceRandom(value) : value; 14305 }, _staggerTweenProps = _callbackNames + "repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase,autoRevert", _staggerPropsToSkip = {}; 14306 _forEachName(_staggerTweenProps + ",id,stagger,delay,duration,paused,scrollTrigger", function(name) { 14307 return _staggerPropsToSkip[name] = 1; 14308 }); 14309 var Tween = /* @__PURE__ */ function(_Animation2) { 14310 _inheritsLoose(Tween2, _Animation2); 14311 function Tween2(targets, vars, position, skipInherit) { 14312 var _this3; 14313 if (typeof vars === "number") { 14314 position.duration = vars; 14315 vars = position; 14316 position = null; 14317 } 14318 _this3 = _Animation2.call(this, skipInherit ? vars : _inheritDefaults(vars)) || this; 14319 var _this3$vars = _this3.vars, duration = _this3$vars.duration, delay = _this3$vars.delay, immediateRender = _this3$vars.immediateRender, stagger = _this3$vars.stagger, overwrite = _this3$vars.overwrite, keyframes = _this3$vars.keyframes, defaults2 = _this3$vars.defaults, scrollTrigger = _this3$vars.scrollTrigger, yoyoEase = _this3$vars.yoyoEase, parent = vars.parent || _globalTimeline, parsedTargets = (_isArray(targets) || _isTypedArray(targets) ? _isNumber$1(targets[0]) : "length" in vars) ? [targets] : toArray(targets), tl, i2, copy, l, p, curTarget, staggerFunc, staggerVarsToMerge; 14320 _this3._targets = parsedTargets.length ? _harness(parsedTargets) : _warn("GSAP target " + targets + " not found. https://gsap.com", !_config.nullTargetWarn) || []; 14321 _this3._ptLookup = []; 14322 _this3._overwrite = overwrite; 14323 if (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) { 14324 vars = _this3.vars; 14325 tl = _this3.timeline = new Timeline({ 14326 data: "nested", 14327 defaults: defaults2 || {}, 14328 targets: parent && parent.data === "nested" ? parent.vars.targets : parsedTargets 14329 }); 14330 tl.kill(); 14331 tl.parent = tl._dp = _assertThisInitialized(_this3); 14332 tl._start = 0; 14333 if (stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) { 14334 l = parsedTargets.length; 14335 staggerFunc = stagger && distribute(stagger); 14336 if (_isObject$1(stagger)) { 14337 for (p in stagger) { 14338 if (~_staggerTweenProps.indexOf(p)) { 14339 staggerVarsToMerge || (staggerVarsToMerge = {}); 14340 staggerVarsToMerge[p] = stagger[p]; 14341 } 14342 } 14343 } 14344 for (i2 = 0; i2 < l; i2++) { 14345 copy = _copyExcluding(vars, _staggerPropsToSkip); 14346 copy.stagger = 0; 14347 yoyoEase && (copy.yoyoEase = yoyoEase); 14348 staggerVarsToMerge && _merge(copy, staggerVarsToMerge); 14349 curTarget = parsedTargets[i2]; 14350 copy.duration = +_parseFuncOrString(duration, _assertThisInitialized(_this3), i2, curTarget, parsedTargets); 14351 copy.delay = (+_parseFuncOrString(delay, _assertThisInitialized(_this3), i2, curTarget, parsedTargets) || 0) - _this3._delay; 14352 if (!stagger && l === 1 && copy.delay) { 14353 _this3._delay = delay = copy.delay; 14354 _this3._start += delay; 14355 copy.delay = 0; 14356 } 14357 tl.to(curTarget, copy, staggerFunc ? staggerFunc(i2, curTarget, parsedTargets) : 0); 14358 tl._ease = _easeMap.none; 14359 } 14360 tl.duration() ? duration = delay = 0 : _this3.timeline = 0; 14361 } else if (keyframes) { 14362 _inheritDefaults(_setDefaults$1(tl.vars.defaults, { 14363 ease: "none" 14364 })); 14365 tl._ease = _parseEase(keyframes.ease || vars.ease || "none"); 14366 var time = 0, a, kf, v; 14367 if (_isArray(keyframes)) { 14368 keyframes.forEach(function(frame) { 14369 return tl.to(parsedTargets, frame, ">"); 14370 }); 14371 tl.duration(); 14372 } else { 14373 copy = {}; 14374 for (p in keyframes) { 14375 p === "ease" || p === "easeEach" || _parseKeyframe(p, keyframes[p], copy, keyframes.easeEach); 14376 } 14377 for (p in copy) { 14378 a = copy[p].sort(function(a2, b) { 14379 return a2.t - b.t; 14380 }); 14381 time = 0; 14382 for (i2 = 0; i2 < a.length; i2++) { 14383 kf = a[i2]; 14384 v = { 14385 ease: kf.e, 14386 duration: (kf.t - (i2 ? a[i2 - 1].t : 0)) / 100 * duration 14387 }; 14388 v[p] = kf.v; 14389 tl.to(parsedTargets, v, time); 14390 time += v.duration; 14391 } 14392 } 14393 tl.duration() < duration && tl.to({}, { 14394 duration: duration - tl.duration() 14395 }); 14396 } 14397 } 14398 duration || _this3.duration(duration = tl.duration()); 14399 } else { 14400 _this3.timeline = 0; 14401 } 14402 if (overwrite === true && !_suppressOverwrites$1) { 14403 _overwritingTween = _assertThisInitialized(_this3); 14404 _globalTimeline.killTweensOf(parsedTargets); 14405 _overwritingTween = 0; 14406 }
vendor: 9,376 bytes, lines 14407-14623
14407 _addToTimeline(parent, _assertThisInitialized(_this3), position); 14408 vars.reversed && _this3.reverse(); 14409 vars.paused && _this3.paused(true); 14410 if (immediateRender || !duration && !keyframes && _this3._start === _roundPrecise(parent._time) && _isNotFalse(immediateRender) && _hasNoPausedAncestors(_assertThisInitialized(_this3)) && parent.data !== "nested") { 14411 _this3._tTime = -1e-8; 14412 _this3.render(Math.max(0, -delay) || 0); 14413 } 14414 scrollTrigger && _scrollTrigger(_assertThisInitialized(_this3), scrollTrigger); 14415 return _this3; 14416 } 14417 var _proto3 = Tween2.prototype; 14418 _proto3.render = function render(totalTime, suppressEvents, force) { 14419 var prevTime = this._time, tDur = this._tDur, dur = this._dur, isNegative = totalTime < 0, tTime = totalTime > tDur - _tinyNum && !isNegative ? tDur : totalTime < _tinyNum ? 0 : totalTime, time, pt, iteration, cycleDuration, prevIteration, isYoyo, ratio, timeline, yoyoEase; 14420 if (!dur) { 14421 _renderZeroDurationTween(this, totalTime, suppressEvents, force); 14422 } else if (tTime !== this._tTime || !totalTime || force || !this._initted && this._tTime || this._startAt && this._zTime < 0 !== isNegative) { 14423 time = tTime; 14424 timeline = this.timeline; 14425 if (this._repeat) { 14426 cycleDuration = dur + this._rDelay; 14427 if (this._repeat < -1 && isNegative) { 14428 return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force); 14429 } 14430 time = _roundPrecise(tTime % cycleDuration); 14431 if (tTime === tDur) { 14432 iteration = this._repeat; 14433 time = dur; 14434 } else { 14435 iteration = ~~(tTime / cycleDuration); 14436 if (iteration && iteration === _roundPrecise(tTime / cycleDuration)) { 14437 time = dur; 14438 iteration--; 14439 } 14440 time > dur && (time = dur); 14441 } 14442 isYoyo = this._yoyo && iteration & 1; 14443 if (isYoyo) { 14444 yoyoEase = this._yEase; 14445 time = dur - time; 14446 } 14447 prevIteration = _animationCycle(this._tTime, cycleDuration); 14448 if (time === prevTime && !force && this._initted && iteration === prevIteration) { 14449 this._tTime = tTime; 14450 return this; 14451 } 14452 if (iteration !== prevIteration) { 14453 timeline && this._yEase && _propagateYoyoEase(timeline, isYoyo); 14454 if (this.vars.repeatRefresh && !isYoyo && !this._lock && this._time !== cycleDuration && this._initted) { 14455 this._lock = force = 1; 14456 this.render(_roundPrecise(cycleDuration * iteration), true).invalidate()._lock = 0; 14457 } 14458 } 14459 } 14460 if (!this._initted) { 14461 if (_attemptInitTween(this, isNegative ? totalTime : time, force, suppressEvents, tTime)) { 14462 this._tTime = 0; 14463 return this; 14464 } 14465 if (prevTime !== this._time && !(force && this.vars.repeatRefresh && iteration !== prevIteration)) { 14466 return this; 14467 } 14468 if (dur !== this._dur) { 14469 return this.render(totalTime, suppressEvents, force); 14470 } 14471 } 14472 this._tTime = tTime; 14473 this._time = time; 14474 if (!this._act && this._ts) { 14475 this._act = 1; 14476 this._lazy = 0; 14477 } 14478 this.ratio = ratio = (yoyoEase || this._ease)(time / dur); 14479 if (this._from) { 14480 this.ratio = ratio = 1 - ratio; 14481 } 14482 if (time && !prevTime && !suppressEvents && !iteration) { 14483 _callback$1(this, "onStart"); 14484 if (this._tTime !== tTime) { 14485 return this; 14486 } 14487 } 14488 pt = this._pt; 14489 while (pt) { 14490 pt.r(ratio, pt.d); 14491 pt = pt._next; 14492 } 14493 timeline && timeline.render(totalTime < 0 ? totalTime : timeline._dur * timeline._ease(time / this._dur), suppressEvents, force) || this._startAt && (this._zTime = totalTime); 14494 if (this._onUpdate && !suppressEvents) { 14495 isNegative && _rewindStartAt(this, totalTime, suppressEvents, force); 14496 _callback$1(this, "onUpdate"); 14497 } 14498 this._repeat && iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent && _callback$1(this, "onRepeat"); 14499 if ((tTime === this._tDur || !tTime) && this._tTime === tTime) { 14500 isNegative && !this._onUpdate && _rewindStartAt(this, totalTime, true, true); 14501 (totalTime || !dur) && (tTime === this._tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); 14502 if (!suppressEvents && !(isNegative && !prevTime) && (tTime || prevTime || isYoyo)) { 14503 _callback$1(this, tTime === tDur ? "onComplete" : "onReverseComplete", true); 14504 this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom(); 14505 } 14506 } 14507 } 14508 return this; 14509 }; 14510 _proto3.targets = function targets() { 14511 return this._targets; 14512 }; 14513 _proto3.invalidate = function invalidate(soft) { 14514 (!soft || !this.vars.runBackwards) && (this._startAt = 0); 14515 this._pt = this._op = this._onUpdate = this._lazy = this.ratio = 0; 14516 this._ptLookup = []; 14517 this.timeline && this.timeline.invalidate(soft); 14518 return _Animation2.prototype.invalidate.call(this, soft); 14519 }; 14520 _proto3.resetTo = function resetTo(property, value, start, startIsRelative, skipRecursion) { 14521 _tickerActive || _ticker.wake(); 14522 this._ts || this.play(); 14523 var time = Math.min(this._dur, (this._dp._time - this._start) * this._ts), ratio; 14524 this._initted || _initTween(this, time); 14525 ratio = this._ease(time / this._dur); 14526 if (_updatePropTweens(this, property, value, start, startIsRelative, ratio, time, skipRecursion)) { 14527 return this.resetTo(property, value, start, startIsRelative, 1); 14528 } 14529 _alignPlayhead(this, 0); 14530 this.parent || _addLinkedListItem(this._dp, this, "_first", "_last", this._dp._sort ? "_start" : 0); 14531 return this.render(0); 14532 }; 14533 _proto3.kill = function kill(targets, vars) { 14534 if (vars === void 0) { 14535 vars = "all"; 14536 } 14537 if (!targets && (!vars || vars === "all")) { 14538 this._lazy = this._pt = 0; 14539 return this.parent ? _interrupt(this) : this; 14540 } 14541 if (this.timeline) { 14542 var tDur = this.timeline.totalDuration(); 14543 this.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true)._first || _interrupt(this); 14544 this.parent && tDur !== this.timeline.totalDuration() && _setDuration(this, this._dur * this.timeline._tDur / tDur, 0, 1); 14545 return this; 14546 } 14547 var parsedTargets = this._targets, killingTargets = targets ? toArray(targets) : parsedTargets, propTweenLookup = this._ptLookup, firstPT = this._pt, overwrittenProps, curLookup, curOverwriteProps, props, p, pt, i2; 14548 if ((!vars || vars === "all") && _arraysMatch(parsedTargets, killingTargets)) { 14549 vars === "all" && (this._pt = 0); 14550 return _interrupt(this); 14551 } 14552 overwrittenProps = this._op = this._op || []; 14553 if (vars !== "all") { 14554 if (_isString$1(vars)) { 14555 p = {}; 14556 _forEachName(vars, function(name) { 14557 return p[name] = 1; 14558 }); 14559 vars = p; 14560 } 14561 vars = _addAliasesToVars(parsedTargets, vars); 14562 } 14563 i2 = parsedTargets.length; 14564 while (i2--) { 14565 if (~killingTargets.indexOf(parsedTargets[i2])) { 14566 curLookup = propTweenLookup[i2]; 14567 if (vars === "all") { 14568 overwrittenProps[i2] = vars; 14569 props = curLookup; 14570 curOverwriteProps = {}; 14571 } else { 14572 curOverwriteProps = overwrittenProps[i2] = overwrittenProps[i2] || {}; 14573 props = vars; 14574 } 14575 for (p in props) { 14576 pt = curLookup && curLookup[p]; 14577 if (pt) { 14578 if (!("kill" in pt.d) || pt.d.kill(p) === true) { 14579 _removeLinkedListItem(this, pt, "_pt"); 14580 } 14581 delete curLookup[p]; 14582 } 14583 if (curOverwriteProps !== "all") { 14584 curOverwriteProps[p] = 1; 14585 } 14586 } 14587 } 14588 } 14589 this._initted && !this._pt && firstPT && _interrupt(this); 14590 return this; 14591 }; 14592 Tween2.to = function to(targets, vars) { 14593 return new Tween2(targets, vars, arguments[2]); 14594 }; 14595 Tween2.from = function from(targets, vars) { 14596 return _createTweenType(1, arguments); 14597 }; 14598 Tween2.delayedCall = function delayedCall(delay, callback, params, scope) { 14599 return new Tween2(callback, 0, { 14600 immediateRender: false, 14601 lazy: false, 14602 overwrite: false, 14603 delay, 14604 onComplete: callback, 14605 onReverseComplete: callback, 14606 onCompleteParams: params, 14607 onReverseCompleteParams: params, 14608 callbackScope: scope 14609 }); 14610 }; 14611 Tween2.fromTo = function fromTo(targets, fromVars, toVars) { 14612 return _createTweenType(2, arguments); 14613 }; 14614 Tween2.set = function set(targets, vars) { 14615 vars.duration = 0; 14616 vars.repeatDelay || (vars.repeat = 0); 14617 return new Tween2(targets, vars); 14618 }; 14619 Tween2.killTweensOf = function killTweensOf(targets, props, onlyActive) { 14620 return _globalTimeline.killTweensOf(targets, props, onlyActive); 14621 }; 14622 return Tween2; 14623 }
vendor: 15,399 bytes, lines 14623-15038
14623(Animation); 14624 _setDefaults$1(Tween.prototype, { 14625 _targets: [], 14626 _lazy: 0, 14627 _startAt: 0, 14628 _op: 0, 14629 _onInit: 0 14630 }); 14631 _forEachName("staggerTo,staggerFrom,staggerFromTo", function(name) { 14632 Tween[name] = function() { 14633 var tl = new Timeline(), params = _slice.call(arguments, 0); 14634 params.splice(name === "staggerFromTo" ? 5 : 4, 0, 0); 14635 return tl[name].apply(tl, params); 14636 }; 14637 }); 14638 var _setterPlain = function _setterPlain2(target, property, value) { 14639 return target[property] = value; 14640 }, _setterFunc = function _setterFunc2(target, property, value) { 14641 return target[property](value); 14642 }, _setterFuncWithParam = function _setterFuncWithParam2(target, property, value, data) { 14643 return target[property](data.fp, value); 14644 }, _setterAttribute = function _setterAttribute2(target, property, value) { 14645 return target.setAttribute(property, value); 14646 }, _getSetter = function _getSetter2(target, property) { 14647 return _isFunction$1(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain; 14648 }, _renderPlain = function _renderPlain2(ratio, data) { 14649 return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1e6) / 1e6, data); 14650 }, _renderBoolean = function _renderBoolean2(ratio, data) { 14651 return data.set(data.t, data.p, !!(data.s + data.c * ratio), data); 14652 }, _renderComplexString = function _renderComplexString2(ratio, data) { 14653 var pt = data._pt, s = ""; 14654 if (!ratio && data.b) { 14655 s = data.b; 14656 } else if (ratio === 1 && data.e) { 14657 s = data.e; 14658 } else { 14659 while (pt) { 14660 s = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : Math.round((pt.s + pt.c * ratio) * 1e4) / 1e4) + s; 14661 pt = pt._next; 14662 } 14663 s += data.c; 14664 } 14665 data.set(data.t, data.p, s, data); 14666 }, _renderPropTweens = function _renderPropTweens2(ratio, data) { 14667 var pt = data._pt; 14668 while (pt) { 14669 pt.r(ratio, pt.d); 14670 pt = pt._next; 14671 } 14672 }, _addPluginModifier = function _addPluginModifier2(modifier, tween, target, property) { 14673 var pt = this._pt, next; 14674 while (pt) { 14675 next = pt._next; 14676 pt.p === property && pt.modifier(modifier, tween, target); 14677 pt = next; 14678 } 14679 }, _killPropTweensOf = function _killPropTweensOf2(property) { 14680 var pt = this._pt, hasNonDependentRemaining, next; 14681 while (pt) { 14682 next = pt._next; 14683 if (pt.p === property && !pt.op || pt.op === property) { 14684 _removeLinkedListItem(this, pt, "_pt"); 14685 } else if (!pt.dep) { 14686 hasNonDependentRemaining = 1; 14687 } 14688 pt = next; 14689 } 14690 return !hasNonDependentRemaining; 14691 }, _setterWithModifier = function _setterWithModifier2(target, property, value, data) { 14692 data.mSet(target, property, data.m.call(data.tween, value, data.mt), data); 14693 }, _sortPropTweensByPriority = function _sortPropTweensByPriority2(parent) { 14694 var pt = parent._pt, next, pt2, first, last; 14695 while (pt) { 14696 next = pt._next; 14697 pt2 = first; 14698 while (pt2 && pt2.pr > pt.pr) { 14699 pt2 = pt2._next; 14700 } 14701 if (pt._prev = pt2 ? pt2._prev : last) { 14702 pt._prev._next = pt; 14703 } else { 14704 first = pt; 14705 } 14706 if (pt._next = pt2) { 14707 pt2._prev = pt; 14708 } else { 14709 last = pt; 14710 } 14711 pt = next; 14712 } 14713 parent._pt = first; 14714 }; 14715 var PropTween = /* @__PURE__ */ function() { 14716 function PropTween2(next, target, prop, start, change, renderer, data, setter, priority) { 14717 this.t = target; 14718 this.s = start; 14719 this.c = change; 14720 this.p = prop; 14721 this.r = renderer || _renderPlain; 14722 this.d = data || this; 14723 this.set = setter || _setterPlain; 14724 this.pr = priority || 0; 14725 this._next = next; 14726 if (next) { 14727 next._prev = this; 14728 } 14729 } 14730 var _proto4 = PropTween2.prototype; 14731 _proto4.modifier = function modifier(func, tween, target) { 14732 this.mSet = this.mSet || this.set; 14733 this.set = _setterWithModifier; 14734 this.m = func; 14735 this.mt = target; 14736 this.tween = tween; 14737 }; 14738 return PropTween2; 14739 }(); 14740 _forEachName(_callbackNames + "parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger", function(name) { 14741 return _reservedProps[name] = 1; 14742 }); 14743 _globals.TweenMax = _globals.TweenLite = Tween; 14744 _globals.TimelineLite = _globals.TimelineMax = Timeline; 14745 _globalTimeline = new Timeline({ 14746 sortChildren: false, 14747 defaults: _defaults$1, 14748 autoRemoveChildren: true, 14749 id: "root", 14750 smoothChildTiming: true 14751 }); 14752 _config.stringFilter = _colorStringFilter; 14753 var _media = [], _listeners$1 = {}, _emptyArray$1 = [], _lastMediaTime = 0, _contextID = 0, _dispatch$1 = function _dispatch2(type) { 14754 return (_listeners$1[type] || _emptyArray$1).map(function(f) { 14755 return f(); 14756 }); 14757 }, _onMediaChange = function _onMediaChange2() { 14758 var time = Date.now(), matches = []; 14759 if (time - _lastMediaTime > 2) { 14760 _dispatch$1("matchMediaInit"); 14761 _media.forEach(function(c) { 14762 var queries = c.queries, conditions = c.conditions, match, p, anyMatch, toggled; 14763 for (p in queries) { 14764 match = _win$3.matchMedia(queries[p]).matches; 14765 match && (anyMatch = 1); 14766 if (match !== conditions[p]) { 14767 conditions[p] = match; 14768 toggled = 1; 14769 } 14770 } 14771 if (toggled) { 14772 c.revert(); 14773 anyMatch && matches.push(c); 14774 } 14775 }); 14776 _dispatch$1("matchMediaRevert"); 14777 matches.forEach(function(c) { 14778 return c.onMatch(c, function(func) { 14779 return c.add(null, func); 14780 }); 14781 }); 14782 _lastMediaTime = time; 14783 _dispatch$1("matchMedia"); 14784 } 14785 }; 14786 var Context = /* @__PURE__ */ function() { 14787 function Context2(func, scope) { 14788 this.selector = scope && selector(scope); 14789 this.data = []; 14790 this._r = []; 14791 this.isReverted = false; 14792 this.id = _contextID++; 14793 func && this.add(func); 14794 } 14795 var _proto5 = Context2.prototype; 14796 _proto5.add = function add(name, func, scope) { 14797 if (_isFunction$1(name)) { 14798 scope = func; 14799 func = name; 14800 name = _isFunction$1; 14801 } 14802 var self2 = this, f = function f2() { 14803 var prev = _context$2, prevSelector = self2.selector, result; 14804 prev && prev !== self2 && prev.data.push(self2); 14805 scope && (self2.selector = selector(scope)); 14806 _context$2 = self2; 14807 result = func.apply(self2, arguments); 14808 _isFunction$1(result) && self2._r.push(result); 14809 _context$2 = prev; 14810 self2.selector = prevSelector; 14811 self2.isReverted = false; 14812 return result; 14813 }; 14814 self2.last = f; 14815 return name === _isFunction$1 ? f(self2, function(func2) { 14816 return self2.add(null, func2); 14817 }) : name ? self2[name] = f : f; 14818 }; 14819 _proto5.ignore = function ignore(func) { 14820 var prev = _context$2; 14821 _context$2 = null; 14822 func(this); 14823 _context$2 = prev; 14824 }; 14825 _proto5.getTweens = function getTweens() { 14826 var a = []; 14827 this.data.forEach(function(e) { 14828 return e instanceof Context2 ? a.push.apply(a, e.getTweens()) : e instanceof Tween && !(e.parent && e.parent.data === "nested") && a.push(e); 14829 }); 14830 return a; 14831 }; 14832 _proto5.clear = function clear() { 14833 this._r.length = this.data.length = 0; 14834 }; 14835 _proto5.kill = function kill(revert, matchMedia) { 14836 var _this4 = this; 14837 if (revert) { 14838 (function() { 14839 var tweens = _this4.getTweens(), i3 = _this4.data.length, t2; 14840 while (i3--) { 14841 t2 = _this4.data[i3]; 14842 if (t2.data === "isFlip") { 14843 t2.revert(); 14844 t2.getChildren(true, true, false).forEach(function(tween) { 14845 return tweens.splice(tweens.indexOf(tween), 1); 14846 }); 14847 } 14848 } 14849 tweens.map(function(t3) { 14850 return { 14851 g: t3._dur || t3._delay || t3._sat && !t3._sat.vars.immediateRender ? t3.globalTime(0) : -Infinity, 14852 t: t3 14853 }; 14854 }).sort(function(a, b) { 14855 return b.g - a.g || -Infinity; 14856 }).forEach(function(o) { 14857 return o.t.revert(revert); 14858 }); 14859 i3 = _this4.data.length; 14860 while (i3--) { 14861 t2 = _this4.data[i3]; 14862 if (t2 instanceof Timeline) { 14863 if (t2.data !== "nested") { 14864 t2.scrollTrigger && t2.scrollTrigger.revert(); 14865 t2.kill(); 14866 } 14867 } else { 14868 !(t2 instanceof Tween) && t2.revert && t2.revert(revert); 14869 } 14870 } 14871 _this4._r.forEach(function(f) { 14872 return f(revert, _this4); 14873 }); 14874 _this4.isReverted = true; 14875 })(); 14876 } else { 14877 this.data.forEach(function(e) { 14878 return e.kill && e.kill(); 14879 }); 14880 } 14881 this.clear(); 14882 if (matchMedia) { 14883 var i2 = _media.length; 14884 while (i2--) { 14885 _media[i2].id === this.id && _media.splice(i2, 1); 14886 } 14887 } 14888 }; 14889 _proto5.revert = function revert(config) { 14890 this.kill(config || {}); 14891 }; 14892 return Context2; 14893 }(); 14894 var MatchMedia = /* @__PURE__ */ function() { 14895 function MatchMedia2(scope) { 14896 this.contexts = []; 14897 this.scope = scope; 14898 _context$2 && _context$2.data.push(this); 14899 } 14900 var _proto6 = MatchMedia2.prototype; 14901 _proto6.add = function add(conditions, func, scope) { 14902 _isObject$1(conditions) || (conditions = { 14903 matches: conditions 14904 }); 14905 var context = new Context(0, scope || this.scope), cond = context.conditions = {}, mq, p, active; 14906 _context$2 && !context.selector && (context.selector = _context$2.selector); 14907 this.contexts.push(context); 14908 func = context.add("onMatch", func); 14909 context.queries = conditions; 14910 for (p in conditions) { 14911 if (p === "all") { 14912 active = 1; 14913 } else { 14914 mq = _win$3.matchMedia(conditions[p]); 14915 if (mq) { 14916 _media.indexOf(context) < 0 && _media.push(context); 14917 (cond[p] = mq.matches) && (active = 1); 14918 mq.addListener ? mq.addListener(_onMediaChange) : mq.addEventListener("change", _onMediaChange); 14919 } 14920 } 14921 } 14922 active && func(context, function(f) { 14923 return context.add(null, f); 14924 }); 14925 return this; 14926 }; 14927 _proto6.revert = function revert(config) { 14928 this.kill(config || {}); 14929 }; 14930 _proto6.kill = function kill(revert) { 14931 this.contexts.forEach(function(c) { 14932 return c.kill(revert, true); 14933 }); 14934 }; 14935 return MatchMedia2; 14936 }(); 14937 var _gsap = { 14938 registerPlugin: function registerPlugin() { 14939 for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { 14940 args[_key2] = arguments[_key2]; 14941 } 14942 args.forEach(function(config) { 14943 return _createPlugin(config); 14944 }); 14945 }, 14946 timeline: function timeline(vars) { 14947 return new Timeline(vars); 14948 }, 14949 getTweensOf: function getTweensOf(targets, onlyActive) { 14950 return _globalTimeline.getTweensOf(targets, onlyActive); 14951 }, 14952 getProperty: function getProperty(target, property, unit, uncache) { 14953 _isString$1(target) && (target = toArray(target)[0]); 14954 var getter = _getCache(target || {}).get, format = unit ? _passThrough$1 : _numericIfPossible; 14955 unit === "native" && (unit = ""); 14956 return !target ? target : !property ? function(property2, unit2, uncache2) { 14957 return format((_plugins[property2] && _plugins[property2].get || getter)(target, property2, unit2, uncache2)); 14958 } : format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache)); 14959 }, 14960 quickSetter: function quickSetter(target, property, unit) { 14961 target = toArray(target); 14962 if (target.length > 1) { 14963 var setters = target.map(function(t2) { 14964 return gsap$2.quickSetter(t2, property, unit); 14965 }), l = setters.length; 14966 return function(value) { 14967 var i2 = l; 14968 while (i2--) { 14969 setters[i2](value); 14970 } 14971 }; 14972 } 14973 target = target[0] || {}; 14974 var Plugin = _plugins[property], cache = _getCache(target), p = cache.harness && (cache.harness.aliases || {})[property] || property, setter = Plugin ? function(value) { 14975 var p2 = new Plugin(); 14976 _quickTween._pt = 0; 14977 p2.init(target, unit ? value + unit : value, _quickTween, 0, [target]); 14978 p2.render(1, p2); 14979 _quickTween._pt && _renderPropTweens(1, _quickTween); 14980 } : cache.set(target, p); 14981 return Plugin ? setter : function(value) { 14982 return setter(target, p, unit ? value + unit : value, cache, 1); 14983 }; 14984 }, 14985 quickTo: function quickTo(target, property, vars) { 14986 var _merge2; 14987 var tween = gsap$2.to(target, _merge((_merge2 = {}, _merge2[property] = "+=0.1", _merge2.paused = true, _merge2), vars || {})), func = function func2(value, start, startIsRelative) { 14988 return tween.resetTo(property, value, start, startIsRelative); 14989 }; 14990 func.tween = tween; 14991 return func; 14992 }, 14993 isTweening: function isTweening(targets) { 14994 return _globalTimeline.getTweensOf(targets, true).length > 0; 14995 }, 14996 defaults: function defaults2(value) { 14997 value && value.ease && (value.ease = _parseEase(value.ease, _defaults$1.ease)); 14998 return _mergeDeep(_defaults$1, value || {}); 14999 }, 15000 config: function config(value) { 15001 return _mergeDeep(_config, value || {}); 15002 }, 15003 registerEffect: function registerEffect(_ref3) { 15004 var name = _ref3.name, effect = _ref3.effect, plugins = _ref3.plugins, defaults2 = _ref3.defaults, extendTimeline = _ref3.extendTimeline; 15005 (plugins || "").split(",").forEach(function(pluginName) { 15006 return pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + " effect requires " + pluginName + " plugin."); 15007 }); 15008 _effects[name] = function(targets, vars, tl) { 15009 return effect(toArray(targets), _setDefaults$1(vars || {}, defaults2), tl); 15010 }; 15011 if (extendTimeline) { 15012 Timeline.prototype[name] = function(targets, vars, position) { 15013 return this.add(_effects[name](targets, _isObject$1(vars) ? vars : (position = vars) && {}, this), position); 15014 }; 15015 } 15016 }, 15017 registerEase: function registerEase(name, ease) { 15018 _easeMap[name] = _parseEase(ease); 15019 }, 15020 parseEase: function parseEase(ease, defaultEase) { 15021 return arguments.length ? _parseEase(ease, defaultEase) : _easeMap; 15022 }, 15023 getById: function getById(id) { 15024 return _globalTimeline.getById(id); 15025 }, 15026 exportRoot: function exportRoot(vars, includeDelayedCalls) { 15027 if (vars === void 0) { 15028 vars = {}; 15029 } 15030 var tl = new Timeline(vars), child, next; 15031 tl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming); 15032 _globalTimeline.remove(tl); 15033 tl._dp = 0; 15034 tl._time = tl._tTime = _globalTimeline._time; 15035 child = _globalTimeline._first; 15036 while (child) { 15037 next = child._next; 15038 if (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {
vendor: 2,335 bytes, lines 15039-15126
15039 _addToTimeline(tl, child, child._start - child._delay); 15040 } 15041 child = next; 15042 } 15043 _addToTimeline(_globalTimeline, tl, 0); 15044 return tl; 15045 }, 15046 context: function context(func, scope) { 15047 return func ? new Context(func, scope) : _context$2; 15048 }, 15049 matchMedia: function matchMedia(scope) { 15050 return new MatchMedia(scope); 15051 }, 15052 matchMediaRefresh: function matchMediaRefresh() { 15053 return _media.forEach(function(c) { 15054 var cond = c.conditions, found, p; 15055 for (p in cond) { 15056 if (cond[p]) { 15057 cond[p] = false; 15058 found = 1; 15059 } 15060 } 15061 found && c.revert(); 15062 }) || _onMediaChange(); 15063 }, 15064 addEventListener: function addEventListener(type, callback) { 15065 var a = _listeners$1[type] || (_listeners$1[type] = []); 15066 ~a.indexOf(callback) || a.push(callback); 15067 }, 15068 removeEventListener: function removeEventListener(type, callback) { 15069 var a = _listeners$1[type], i2 = a && a.indexOf(callback); 15070 i2 >= 0 && a.splice(i2, 1); 15071 }, 15072 utils: { 15073 wrap, 15074 wrapYoyo, 15075 distribute, 15076 random, 15077 snap, 15078 normalize, 15079 getUnit, 15080 clamp, 15081 splitColor, 15082 toArray, 15083 selector, 15084 mapRange, 15085 pipe, 15086 unitize, 15087 interpolate, 15088 shuffle 15089 }, 15090 install: _install, 15091 effects: _effects, 15092 ticker: _ticker, 15093 updateRoot: Timeline.updateRoot, 15094 plugins: _plugins, 15095 globalTimeline: _globalTimeline, 15096 core: { 15097 PropTween, 15098 globals: _addGlobal, 15099 Tween, 15100 Timeline, 15101 Animation, 15102 getCache: _getCache, 15103 _removeLinkedListItem, 15104 reverting: function reverting() { 15105 return _reverting$1; 15106 }, 15107 context: function context(toAdd) { 15108 if (toAdd && _context$2) { 15109 _context$2.data.push(toAdd); 15110 toAdd._ctx = _context$2; 15111 } 15112 return _context$2; 15113 }, 15114 suppressOverwrites: function suppressOverwrites(value) { 15115 return _suppressOverwrites$1 = value; 15116 } 15117 } 15118 }; 15119 _forEachName("to,from,fromTo,delayedCall,set,killTweensOf", function(name) { 15120 return _gsap[name] = Tween[name]; 15121 }); 15122 _ticker.add(Timeline.updateRoot); 15123 _quickTween = _gsap.to({}, { 15124 duration: 0 15125 }); 15126 var _getPluginPropTween = function _getPluginPropTween2(plugin, prop
vendor: 9,530 bytes, lines 15126-15350
15126) { 15127 var pt = plugin._pt; 15128 while (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) { 15129 pt = pt._next; 15130 } 15131 return pt; 15132 }, _addModifiers = function _addModifiers2(tween, modifiers) { 15133 var targets = tween._targets, p, i2, pt; 15134 for (p in modifiers) { 15135 i2 = targets.length; 15136 while (i2--) { 15137 pt = tween._ptLookup[i2][p]; 15138 if (pt && (pt = pt.d)) { 15139 if (pt._pt) { 15140 pt = _getPluginPropTween(pt, p); 15141 } 15142 pt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i2], p); 15143 } 15144 } 15145 } 15146 }, _buildModifierPlugin = function _buildModifierPlugin2(name, modifier) { 15147 return { 15148 name, 15149 rawVars: 1, 15150 //don't pre-process function-based values or "random()" strings. 15151 init: function init(target, vars, tween) { 15152 tween._onInit = function(tween2) { 15153 var temp, p; 15154 if (_isString$1(vars)) { 15155 temp = {}; 15156 _forEachName(vars, function(name2) { 15157 return temp[name2] = 1; 15158 }); 15159 vars = temp; 15160 } 15161 if (modifier) { 15162 temp = {}; 15163 for (p in vars) { 15164 temp[p] = modifier(vars[p]); 15165 } 15166 vars = temp; 15167 } 15168 _addModifiers(tween2, vars); 15169 }; 15170 } 15171 }; 15172 }; 15173 var gsap$2 = _gsap.registerPlugin({ 15174 name: "attr", 15175 init: function init(target, vars, tween, index, targets) { 15176 var p, pt, v; 15177 this.tween = tween; 15178 for (p in vars) { 15179 v = target.getAttribute(p) || ""; 15180 pt = this.add(target, "setAttribute", (v || 0) + "", vars[p], index, targets, 0, 0, p); 15181 pt.op = p; 15182 pt.b = v; 15183 this._props.push(p); 15184 } 15185 }, 15186 render: function render(ratio, data) { 15187 var pt = data._pt; 15188 while (pt) { 15189 _reverting$1 ? pt.set(pt.t, pt.p, pt.b, pt) : pt.r(ratio, pt.d); 15190 pt = pt._next; 15191 } 15192 } 15193 }, { 15194 name: "endArray", 15195 init: function init(target, value) { 15196 var i2 = value.length; 15197 while (i2--) { 15198 this.add(target, i2, target[i2] || 0, value[i2], 0, 0, 0, 0, 0, 1); 15199 } 15200 } 15201 }, _buildModifierPlugin("roundProps", _roundModifier), _buildModifierPlugin("modifiers"), _buildModifierPlugin("snap", snap)) || _gsap; 15202 Tween.version = Timeline.version = gsap$2.version = "3.12.5"; 15203 _coreReady = 1; 15204 _windowExists$2() && _wake(); 15205 _easeMap.Power0; 15206 _easeMap.Power1; 15207 _easeMap.Power2; 15208 _easeMap.Power3; 15209 _easeMap.Power4; 15210 _easeMap.Linear; 15211 _easeMap.Quad; 15212 _easeMap.Cubic; 15213 _easeMap.Quart; 15214 _easeMap.Quint; 15215 _easeMap.Strong; 15216 _easeMap.Elastic; 15217 _easeMap.Back; 15218 _easeMap.SteppedEase; 15219 _easeMap.Bounce; 15220 _easeMap.Sine; 15221 _easeMap.Expo; 15222 _easeMap.Circ; 15223 /*! 15224 * CSSPlugin 3.12.5 15225 * https://gsap.com 15226 * 15227 * Copyright 2008-2024, GreenSock. All rights reserved. 15228 * Subject to the terms at https://gsap.com/standard-license or for 15229 * Club GSAP members, the agreement issued with that membership. 15230 * @author: Jack Doyle, [email protected] 15231 */ 15232 var _win$2, _doc$2, _docElement, _pluginInitted, _tempDiv, _recentSetterPlugin, _reverting, _windowExists$1 = function _windowExists2() { 15233 return typeof window !== "undefined"; 15234 }, _transformProps = {}, _RAD2DEG = 180 / Math.PI, _DEG2RAD = Math.PI / 180, _atan2 = Math.atan2, _bigNum = 1e8, _capsExp$1 = /([A-Z])/g, _horizontalExp = /(left|right|width|margin|padding|x)/i, _complexExp = /[\s,\(]\S/, _propertyAliases = { 15235 autoAlpha: "opacity,visibility", 15236 scale: "scaleX,scaleY", 15237 alpha: "opacity" 15238 }, _renderCSSProp = function _renderCSSProp2(ratio, data) { 15239 return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1e4) / 1e4 + data.u, data); 15240 }, _renderPropWithEnd = function _renderPropWithEnd2(ratio, data) { 15241 return data.set(data.t, data.p, ratio === 1 ? data.e : Math.round((data.s + data.c * ratio) * 1e4) / 1e4 + data.u, data); 15242 }, _renderCSSPropWithBeginning = function _renderCSSPropWithBeginning2(ratio, data) { 15243 return data.set(data.t, data.p, ratio ? Math.round((data.s + data.c * ratio) * 1e4) / 1e4 + data.u : data.b, data); 15244 }, _renderRoundedCSSProp = function _renderRoundedCSSProp2(ratio, data) { 15245 var value = data.s + data.c * ratio; 15246 data.set(data.t, data.p, ~~(value + (value < 0 ? -0.5 : 0.5)) + data.u, data); 15247 }, _renderNonTweeningValue = function _renderNonTweeningValue2(ratio, data) { 15248 return data.set(data.t, data.p, ratio ? data.e : data.b, data); 15249 }, _renderNonTweeningValueOnlyAtEnd = function _renderNonTweeningValueOnlyAtEnd2(ratio, data) { 15250 return data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data); 15251 }, _setterCSSStyle = function _setterCSSStyle2(target, property, value) { 15252 return target.style[property] = value; 15253 }, _setterCSSProp = function _setterCSSProp2(target, property, value) { 15254 return target.style.setProperty(property, value); 15255 }, _setterTransform = function _setterTransform2(target, property, value) { 15256 return target._gsap[property] = value; 15257 }, _setterScale = function _setterScale2(target, property, value) { 15258 return target._gsap.scaleX = target._gsap.scaleY = value; 15259 }, _setterScaleWithRender = function _setterScaleWithRender2(target, property, value, data, ratio) { 15260 var cache = target._gsap; 15261 cache.scaleX = cache.scaleY = value; 15262 cache.renderTransform(ratio, cache); 15263 }, _setterTransformWithRender = function _setterTransformWithRender2(target, property, value, data, ratio) { 15264 var cache = target._gsap; 15265 cache[property] = value; 15266 cache.renderTransform(ratio, cache); 15267 }, _transformProp$1 = "transform", _transformOriginProp = _transformProp$1 + "Origin", _saveStyle = function _saveStyle2(property, isNotCSS) { 15268 var _this = this; 15269 var target = this.target, style = target.style, cache = target._gsap; 15270 if (property in _transformProps && style) { 15271 this.tfm = this.tfm || {}; 15272 if (property !== "transform") { 15273 property = _propertyAliases[property] || property; 15274 ~property.indexOf(",") ? property.split(",").forEach(function(a) { 15275 return _this.tfm[a] = _get(target, a); 15276 }) : this.tfm[property] = cache.x ? cache[property] : _get(target, property); 15277 property === _transformOriginProp && (this.tfm.zOrigin = cache.zOrigin); 15278 } else { 15279 return _propertyAliases.transform.split(",").forEach(function(p) { 15280 return _saveStyle2.call(_this, p, isNotCSS); 15281 }); 15282 } 15283 if (this.props.indexOf(_transformProp$1) >= 0) { 15284 return; 15285 } 15286 if (cache.svg) { 15287 this.svgo = target.getAttribute("data-svg-origin"); 15288 this.props.push(_transformOriginProp, isNotCSS, ""); 15289 } 15290 property = _transformProp$1; 15291 } 15292 (style || isNotCSS) && this.props.push(property, isNotCSS, style[property]); 15293 }, _removeIndependentTransforms = function _removeIndependentTransforms2(style) { 15294 if (style.translate) { 15295 style.removeProperty("translate"); 15296 style.removeProperty("scale"); 15297 style.removeProperty("rotate"); 15298 } 15299 }, _revertStyle = function _revertStyle2() { 15300 var props = this.props, target = this.target, style = target.style, cache = target._gsap, i2, p; 15301 for (i2 = 0; i2 < props.length; i2 += 3) { 15302 props[i2 + 1] ? target[props[i2]] = props[i2 + 2] : props[i2 + 2] ? style[props[i2]] = props[i2 + 2] : style.removeProperty(props[i2].substr(0, 2) === "--" ? props[i2] : props[i2].replace(_capsExp$1, "-$1").toLowerCase()); 15303 } 15304 if (this.tfm) { 15305 for (p in this.tfm) { 15306 cache[p] = this.tfm[p]; 15307 } 15308 if (cache.svg) { 15309 cache.renderTransform(); 15310 target.setAttribute("data-svg-origin", this.svgo || ""); 15311 } 15312 i2 = _reverting(); 15313 if ((!i2 || !i2.isStart) && !style[_transformProp$1]) { 15314 _removeIndependentTransforms(style); 15315 if (cache.zOrigin && style[_transformOriginProp]) { 15316 style[_transformOriginProp] += " " + cache.zOrigin + "px"; 15317 cache.zOrigin = 0; 15318 cache.renderTransform(); 15319 } 15320 cache.uncache = 1; 15321 } 15322 } 15323 }, _getStyleSaver = function _getStyleSaver2(target, properties) { 15324 var saver = { 15325 target, 15326 props: [], 15327 revert: _revertStyle, 15328 save: _saveStyle 15329 }; 15330 target._gsap || gsap$2.core.getCache(target); 15331 properties && properties.split(",").forEach(function(p) { 15332 return saver.save(p); 15333 }); 15334 return saver; 15335 }, _supports3D, _createElement = function _createElement2(type, ns) { 15336 var e = _doc$2.createElementNS ? _doc$2.createElementNS((ns || "http://www.w3.org/1999/xhtml").replace(/^https/, "http"), type) : _doc$2.createElement(type); 15337 return e && e.style ? e : _doc$2.createElement(type); 15338 }, _getComputedProperty = function _getComputedProperty2(target, property, skipPrefixFallback) { 15339 var cs = getComputedStyle(target); 15340 return cs[property] || cs.getPropertyValue(property.replace(_capsExp$1, "-$1").toLowerCase()) || cs.getPropertyValue(property) || !skipPrefixFallback && _getComputedProperty2(target, _checkPropPrefix(property) || property, 1) || ""; 15341 }, _prefixes = "O,Moz,ms,Ms,Webkit".split(","), _checkPropPrefix = function _checkPropPrefix2(property, element, preferPrefix) { 15342 var e = element || _tempDiv, s = e.style, i2 = 5; 15343 if (property in s && !preferPrefix) { 15344 return property; 15345 } 15346 property = property.charAt(0).toUpperCase() + property.substr(1); 15347 while (i2-- && !(_prefixes[i2] + property in s)) { 15348 } 15349 return i2 < 0 ? null : (i2 === 3 ? "ms" : i2 >= 0 ? _prefixes[i2] : "") + property; 15350 }
15350, _initCore$1 = function _initCore2() { 15351 if (_windowExists$1() && window.document) { 15352 _win$2 = window; 15353 _doc$2 = _win$2.document; 15354 _docElement = _doc$2.documentElement; 15355 _tempDiv = _createElement("div") || { 15356 style: {} 15357 }; 15358 _createElement("div"); 15359 _transformProp$1 = _checkPropPrefix(_transformProp$1); 15360 _transformOriginProp = _transformProp$1 + "Origin"; 15361 _tempDiv.style.cssText = "border-width:0;line-height:0;position:absolute;padding:0"; 15362 _supports3D = !!_checkPropPrefix("perspective"); 15363 _reverting = gsap$2.core.reverting; 15364 _pluginInitted = 1; 15365 } 15366 }, _getBBoxHack = function _getBBoxHack2(swapIfPossible) { 15367 var svg = _createElement("svg", this.ownerSVGElement && this.ownerSVGElement.getAttribute("xmlns") || "http://www.w3.org/2000/svg"), oldParent = this.parentNode, oldSibling = this.nextSibling, oldCSS = this.style.cssText, bbox; 15368 _docElement.appendChild(svg); 15369 svg.appendChild(this); 15370 this.style.display = "block"; 15371 if (swapIfPossible) { 15372 try { 15373 bbox = this.getBBox(); 15374 this._gsapBBox = this.getBBox; 15375 this.getBBox = _getBBoxHack2; 15376 } catch (e) { 15377 } 15378 } else if (this._gsapBBox) { 15379 bbox = this._gsapBBox(); 15380 } 15381 if (oldParent) { 15382 if (oldSibling) { 15383 oldParent.insertBefore(this, oldSibling); 15384 } else { 15385 oldParent.appendChild(this); 15386 } 15387 } 15388 _docElement.removeChild(svg); 15389 this.style.cssText = oldCSS; 15390 return bbox; 15391 }, _getAttributeFallbacks = function _getAttributeFallbacks2(target, attributesArray) { 15392 var i2 = attributesArray.length; 15393 while (i2--) { 15394 if (target.hasAttribute(attributesArray[i2])) { 15395 return target.getAttribute(attributesArray[i2]); 15396 } 15397 } 15398 }, _getBBox = function _getBBox2(target) { 15399 var bounds; 15400 try { 15401 bounds = target.getBBox(); 15402 } catch (error) { 15403 bounds = _getBBoxHack.call(target, true); 15404 } 15405 bounds && (bounds.width || bounds.height) || target.getBBox === _getBBoxHack || (bounds = _getBBoxHack.call(target, true)); 15406 return bounds && !bounds.width && !bounds.x && !bounds.y ? { 15407 x: +_getAttributeFallbacks(target, ["x", "cx", "x1"]) || 0, 15408 y: +_getAttributeFallbacks(target, ["y", "cy", "y1"]) || 0, 15409 width: 0, 15410 height: 0 15411 } : bounds; 15412 }, _isSVG = function _isSVG2(e) { 15413 return !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e)); 15414 }, _removeProperty = function _removeProperty2(target, property) { 15415 if (property) { 15416 var style = target.style, first2Chars; 15417 if (property in _transformProps && property !== _transformOriginProp) { 15418 property = _transformProp$1; 15419 } 15420 if (style.removeProperty) { 15421 first2Chars = property.substr(0, 2); 15422 if (first2Chars === "ms" || property.substr(0, 6) === "webkit") { 15423 property = "-" + property; 15424 } 15425 style.removeProperty(first2Chars === "--" ? property : property.replace(_capsExp$1, "-$1").toLowerCase()); 15426 } else { 15427 style.removeAttribute(property); 15428 } 15429 } 15430 }, _addNonTweeningPT = function _addNonTweeningPT2(plugin, target, property, beginning, end, onlySetAtEnd) { 15431 var pt = new PropTween(plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue); 15432 plugin._pt = pt; 15433 pt.b = beginning; 15434 pt.e = end; 15435 plugin._props.push(property); 15436 return pt; 15437 }, _nonConvertibleUnits = { 15438 deg: 1, 15439 rad: 1, 15440 turn: 1 15441 }, _nonStandardLayouts = { 15442 grid: 1, 15443 flex: 1 15444 }, _convertToUnit = function _convertToUnit2(target, property, value, unit) { 15445 var curValue = parseFloat(value) || 0, curUnit = (value + "").trim().substr((curValue + "").length) || "px", style = _tempDiv.style, horizontal = _horizontalExp.test(property), isRootSVG = target.tagName.toLowerCase() === "svg", measureProperty = (isRootSVG ? "client" : "offset") + (horizontal ? "Width" : "Height"), amount = 100, toPixels = unit === "px", toPercent = unit === "%", px, parent, cache, isSVG; 15446 if (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) { 15447 return curValue; 15448 } 15449 curUnit !== "px" && !toPixels && (curValue = _convertToUnit2(target, property, value, "px")); 15450 isSVG = target.getCTM && _isSVG(target); 15451 if ((toPercent || curUnit === "%") && (_transformProps[property] || ~property.indexOf("adius"))) { 15452 px = isSVG ? target.getBBox()[horizontal ? "width" : "height"] : target[measureProperty];
vendor: 5,086 bytes, lines 15453-15561
15453 return _round$1(toPercent ? curValue / px * amount : curValue / 100 * px); 15454 } 15455 style[horizontal ? "width" : "height"] = amount + (toPixels ? curUnit : unit); 15456 parent = ~property.indexOf("adius") || unit === "em" && target.appendChild && !isRootSVG ? target : target.parentNode; 15457 if (isSVG) { 15458 parent = (target.ownerSVGElement || {}).parentNode; 15459 } 15460 if (!parent || parent === _doc$2 || !parent.appendChild) { 15461 parent = _doc$2.body; 15462 } 15463 cache = parent._gsap; 15464 if (cache && toPercent && cache.width && horizontal && cache.time === _ticker.time && !cache.uncache) { 15465 return _round$1(curValue / cache.width * amount); 15466 } else { 15467 if (toPercent && (property === "height" || property === "width")) { 15468 var v = target.style[property]; 15469 target.style[property] = amount + unit; 15470 px = target[measureProperty]; 15471 v ? target.style[property] = v : _removeProperty(target, property); 15472 } else { 15473 (toPercent || curUnit === "%") && !_nonStandardLayouts[_getComputedProperty(parent, "display")] && (style.position = _getComputedProperty(target, "position")); 15474 parent === target && (style.position = "static"); 15475 parent.appendChild(_tempDiv); 15476 px = _tempDiv[measureProperty]; 15477 parent.removeChild(_tempDiv); 15478 style.position = "absolute"; 15479 } 15480 if (horizontal && toPercent) { 15481 cache = _getCache(parent); 15482 cache.time = _ticker.time; 15483 cache.width = parent[measureProperty]; 15484 } 15485 } 15486 return _round$1(toPixels ? px * curValue / amount : px && curValue ? amount / px * curValue : 0); 15487 }, _get = function _get2(target, property, unit, uncache) { 15488 var value; 15489 _pluginInitted || _initCore$1(); 15490 if (property in _propertyAliases && property !== "transform") { 15491 property = _propertyAliases[property]; 15492 if (~property.indexOf(",")) { 15493 property = property.split(",")[0]; 15494 } 15495 } 15496 if (_transformProps[property] && property !== "transform") { 15497 value = _parseTransform(target, uncache); 15498 value = property !== "transformOrigin" ? value[property] : value.svg ? value.origin : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + " " + value.zOrigin + "px"; 15499 } else { 15500 value = target.style[property]; 15501 if (!value || value === "auto" || uncache || ~(value + "").indexOf("calc(")) { 15502 value = _specialProps[property] && _specialProps[property](target, property, unit) || _getComputedProperty(target, property) || _getProperty(target, property) || (property === "opacity" ? 1 : 0); 15503 } 15504 } 15505 return unit && !~(value + "").trim().indexOf(" ") ? _convertToUnit(target, property, value, unit) + unit : value; 15506 }, _tweenComplexCSSString = function _tweenComplexCSSString2(target, prop, start, end) { 15507 if (!start || start === "none") { 15508 var p = _checkPropPrefix(prop, target, 1), s = p && _getComputedProperty(target, p, 1); 15509 if (s && s !== start) { 15510 prop = p; 15511 start = s; 15512 } else if (prop === "borderColor") { 15513 start = _getComputedProperty(target, "borderTopColor"); 15514 } 15515 } 15516 var pt = new PropTween(this._pt, target.style, prop, 0, 1, _renderComplexString), index = 0, matchIndex = 0, a, result, startValues, startNum, color2, startValue, endValue, endNum, chunk, endUnit, startUnit, endValues; 15517 pt.b = start; 15518 pt.e = end; 15519 start += ""; 15520 end += ""; 15521 if (end === "auto") { 15522 startValue = target.style[prop]; 15523 target.style[prop] = end; 15524 end = _getComputedProperty(target, prop) || end; 15525 startValue ? target.style[prop] = startValue : _removeProperty(target, prop); 15526 } 15527 a = [start, end]; 15528 _colorStringFilter(a); 15529 start = a[0]; 15530 end = a[1]; 15531 startValues = start.match(_numWithUnitExp) || []; 15532 endValues = end.match(_numWithUnitExp) || []; 15533 if (endValues.length) { 15534 while (result = _numWithUnitExp.exec(end)) { 15535 endValue = result[0]; 15536 chunk = end.substring(index, result.index); 15537 if (color2) { 15538 color2 = (color2 + 1) % 5; 15539 } else if (chunk.substr(-5) === "rgba(" || chunk.substr(-5) === "hsla(") { 15540 color2 = 1; 15541 } 15542 if (endValue !== (startValue = startValues[matchIndex++] || "")) { 15543 startNum = parseFloat(startValue) || 0; 15544 startUnit = startValue.substr((startNum + "").length); 15545 endValue.charAt(1) === "=" && (endValue = _parseRelative(startNum, endValue) + startUnit); 15546 endNum = parseFloat(endValue); 15547 endUnit = endValue.substr((endNum + "").length); 15548 index = _numWithUnitExp.lastIndex - endUnit.length; 15549 if (!endUnit) { 15550 endUnit = endUnit || _config.units[prop] || startUnit; 15551 if (index === end.length) { 15552 end += endUnit; 15553 pt.e += endUnit; 15554 } 15555 } 15556 if (startUnit !== endUnit) { 15557 startNum = _convertToUnit(target, prop, startValue, endUnit) || 0; 15558 } 15559 pt._pt = { 15560 _next: pt._pt, 15561 p: chunk || matchIndex === 1 ? chunk : ",",
vendor: 4,374 bytes, lines 15562-15676
15562 //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case. 15563 s: startNum, 15564 c: endNum - startNum, 15565 m: color2 && color2 < 4 || prop === "zIndex" ? Math.round : 0 15566 }; 15567 } 15568 } 15569 pt.c = index < end.length ? end.substring(index, end.length) : ""; 15570 } else { 15571 pt.r = prop === "display" && end === "none" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue; 15572 } 15573 _relExp.test(end) && (pt.e = 0); 15574 this._pt = pt; 15575 return pt; 15576 }, _keywordToPercent = { 15577 top: "0%", 15578 bottom: "100%", 15579 left: "0%", 15580 right: "100%", 15581 center: "50%" 15582 }, _convertKeywordsToPercentages = function _convertKeywordsToPercentages2(value) { 15583 var split = value.split(" "), x = split[0], y = split[1] || "50%"; 15584 if (x === "top" || x === "bottom" || y === "left" || y === "right") { 15585 value = x; 15586 x = y; 15587 y = value; 15588 } 15589 split[0] = _keywordToPercent[x] || x; 15590 split[1] = _keywordToPercent[y] || y; 15591 return split.join(" "); 15592 }, _renderClearProps = function _renderClearProps2(ratio, data) { 15593 if (data.tween && data.tween._time === data.tween._dur) { 15594 var target = data.t, style = target.style, props = data.u, cache = target._gsap, prop, clearTransforms, i2; 15595 if (props === "all" || props === true) { 15596 style.cssText = ""; 15597 clearTransforms = 1; 15598 } else { 15599 props = props.split(","); 15600 i2 = props.length; 15601 while (--i2 > -1) { 15602 prop = props[i2]; 15603 if (_transformProps[prop]) { 15604 clearTransforms = 1; 15605 prop = prop === "transformOrigin" ? _transformOriginProp : _transformProp$1; 15606 } 15607 _removeProperty(target, prop); 15608 } 15609 } 15610 if (clearTransforms) { 15611 _removeProperty(target, _transformProp$1); 15612 if (cache) { 15613 cache.svg && target.removeAttribute("transform"); 15614 _parseTransform(target, 1); 15615 cache.uncache = 1; 15616 _removeIndependentTransforms(style); 15617 } 15618 } 15619 } 15620 }, _specialProps = { 15621 clearProps: function clearProps(plugin, target, property, endValue, tween) { 15622 if (tween.data !== "isFromStart") { 15623 var pt = plugin._pt = new PropTween(plugin._pt, target, property, 0, 0, _renderClearProps); 15624 pt.u = endValue; 15625 pt.pr = -10; 15626 pt.tween = tween; 15627 plugin._props.push(property); 15628 return 1; 15629 } 15630 } 15631 /* className feature (about 0.4kb gzipped). 15632 , className(plugin, target, property, endValue, tween) { 15633 let _renderClassName = (ratio, data) => { 15634 data.css.render(ratio, data.css); 15635 if (!ratio || ratio === 1) { 15636 let inline = data.rmv, 15637 target = data.t, 15638 p; 15639 target.setAttribute("class", ratio ? data.e : data.b); 15640 for (p in inline) { 15641 _removeProperty(target, p); 15642 } 15643 } 15644 }, 15645 _getAllStyles = (target) => { 15646 let styles = {}, 15647 computed = getComputedStyle(target), 15648 p; 15649 for (p in computed) { 15650 if (isNaN(p) && p !== "cssText" && p !== "length") { 15651 styles[p] = computed[p]; 15652 } 15653 } 15654 _setDefaults(styles, _parseTransform(target, 1)); 15655 return styles; 15656 }, 15657 startClassList = target.getAttribute("class"), 15658 style = target.style, 15659 cssText = style.cssText, 15660 cache = target._gsap, 15661 classPT = cache.classPT, 15662 inlineToRemoveAtEnd = {}, 15663 data = {t:target, plugin:plugin, rmv:inlineToRemoveAtEnd, b:startClassList, e:(endValue.charAt(1) !== "=") ? endValue : startClassList.replace(new RegExp("(?:\\s|^)" + endValue.substr(2) + "(?![\\w-])"), "") + ((endValue.charAt(0) === "+") ? " " + endValue.substr(2) : "")}, 15664 changingVars = {}, 15665 startVars = _getAllStyles(target), 15666 transformRelated = /(transform|perspective)/i, 15667 endVars, p; 15668 if (classPT) { 15669 classPT.r(1, classPT.d); 15670 _removeLinkedListItem(classPT.d.plugin, classPT, "_pt"); 15671 } 15672 target.setAttribute("class", data.e); 15673 endVars = _getAllStyles(target, true); 15674 target.setAttribute("class", startClassList); 15675 for (p in endVars) { 15676 if (endVars[p] !== startVars[p] && !transformRelated.test(p)) {
15677 changingVars[p] = endVars[p]; 15678 if (!style[p] && style[p] !== "0") { 15679 inlineToRemoveAtEnd[p] = 1; 15680 } 15681 } 15682 } 15683 cache.classPT = plugin._pt = new PropTween(plugin._pt, target, "className", 0, 0, _renderClassName, data, 0, -11); 15684 if (style.cssText !== cssText) { //only apply if things change. Otherwise, in cases like a background-image that's pulled dynamically, it could cause a refresh. See https://gsap.com/forums/topic/20368-possible-gsap-bug-switching-classnames-in-chrome/. 15685 style.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity). 15686 } 15687 _parseTransform(target, true); //to clear the caching of transforms 15688 data.css = new gsap.plugins.css(); 15689 data.css.init(target, changingVars, tween); 15690 plugin._props.push(...data.css._props); 15691 return 1; 15692 } 15693 */ 15694 }, _identity2DMatrix = [1, 0, 0, 1, 0, 0], _rotationalProperties = {}, _isNullTransform = function _isNullTransform2(value) { 15695 return value === "matrix(1, 0, 0, 1, 0, 0)" || value === "none" || !value; 15696 }, _getComputedTransformMatrixAsArray = function _getComputedTransformMatrixAsArray2(target) { 15697 var matrixString = _getComputedProperty(target, _transformProp$1); 15698 return _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_numExp).map(_round$1); 15699 }, _getMatrix = function _getMatrix2(target, force2D) { 15700 var cache = target._gsap || _getCache(target), style = target.style, matrix = _getComputedTransformMatrixAsArray(target), parent, nextSibling, temp, addedToDOM; 15701 if (cache.svg && target.getAttribute("transform")) { 15702 temp = target.transform.baseVal.consolidate().matrix; 15703 matrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f]; 15704 return matrix.join(",") === "1,0,0,1,0,0" ? _identity2DMatrix : matrix; 15705 } else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) { 15706 temp = style.display; 15707 style.display = "block"; 15708 parent = target.parentNode; 15709 if (!parent || !target.offsetParent) { 15710 addedToDOM = 1; 15711 nextSibling = target.nextElementSibling; 15712 _docElement.appendChild(target); 15713 } 15714 matrix = _getComputedTransformMatrixAsArray(target); 15715 temp ? style.display = temp : _removeProperty(target, "display"); 15716 if (addedToDOM) { 15717 nextSibling ? parent.insertBefore(target, nextSibling) : parent ? parent.appendChild(target) : _docElement.removeChild(target); 15718 } 15719 } 15720 return force2D && matrix.length > 6 ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix; 15721 }, _applySVGOrigin = function _applySVGOrigin2(target, origin2, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) { 15722 var cache = target._gsap, matrix = matrixArray || _getMatrix(target, true), xOriginOld = cache.xOrigin || 0, yOriginOld = cache.yOrigin || 0, xOffsetOld = cache.xOffset || 0, yOffsetOld = cache.yOffset || 0, a = matrix[0], b = matrix[1], c = matrix[2], d = matrix[3], tx = matrix[4], ty = matrix[5], originSplit = origin2.split(" "), xOrigin = parseFloat(originSplit[0]) || 0, yOrigin = parseFloat(originSplit[1]) || 0, bounds, determinant, x, y; 15723 if (!originIsAbsolute) { 15724 bounds = _getBBox(target); 15725 xOrigin = bounds.x + (~originSplit[0].indexOf("%") ? xOrigin / 100 * boun
vendor: 12,239 bytes, lines 15725-15990
15725ds.width : xOrigin); 15726 yOrigin = bounds.y + (~(originSplit[1] || originSplit[0]).indexOf("%") ? yOrigin / 100 * bounds.height : yOrigin); 15727 } else if (matrix !== _identity2DMatrix && (determinant = a * d - b * c)) { 15728 x = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + (c * ty - d * tx) / determinant; 15729 y = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - (a * ty - b * tx) / determinant; 15730 xOrigin = x; 15731 yOrigin = y; 15732 } 15733 if (smooth || smooth !== false && cache.smooth) { 15734 tx = xOrigin - xOriginOld; 15735 ty = yOrigin - yOriginOld; 15736 cache.xOffset = xOffsetOld + (tx * a + ty * c) - tx; 15737 cache.yOffset = yOffsetOld + (tx * b + ty * d) - ty; 15738 } else { 15739 cache.xOffset = cache.yOffset = 0; 15740 } 15741 cache.xOrigin = xOrigin; 15742 cache.yOrigin = yOrigin; 15743 cache.smooth = !!smooth; 15744 cache.origin = origin2; 15745 cache.originIsAbsolute = !!originIsAbsolute; 15746 target.style[_transformOriginProp] = "0px 0px"; 15747 if (pluginToAddPropTweensTo) { 15748 _addNonTweeningPT(pluginToAddPropTweensTo, cache, "xOrigin", xOriginOld, xOrigin); 15749 _addNonTweeningPT(pluginToAddPropTweensTo, cache, "yOrigin", yOriginOld, yOrigin); 15750 _addNonTweeningPT(pluginToAddPropTweensTo, cache, "xOffset", xOffsetOld, cache.xOffset); 15751 _addNonTweeningPT(pluginToAddPropTweensTo, cache, "yOffset", yOffsetOld, cache.yOffset); 15752 } 15753 target.setAttribute("data-svg-origin", xOrigin + " " + yOrigin); 15754 }, _parseTransform = function _parseTransform2(target, uncache) { 15755 var cache = target._gsap || new GSCache(target); 15756 if ("x" in cache && !uncache && !cache.uncache) { 15757 return cache; 15758 } 15759 var style = target.style, invertedScaleX = cache.scaleX < 0, px = "px", deg = "deg", cs = getComputedStyle(target), origin2 = _getComputedProperty(target, _transformOriginProp) || "0", x, y, z, scaleX, scaleY, rotation, rotationX, rotationY, skewX, skewY, perspective, xOrigin, yOrigin, matrix, angle, cos, sin, a, b, c, d, a12, a22, t1, t2, t3, a13, a23, a33, a42, a43, a32; 15760 x = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0; 15761 scaleX = scaleY = 1; 15762 cache.svg = !!(target.getCTM && _isSVG(target)); 15763 if (cs.translate) { 15764 if (cs.translate !== "none" || cs.scale !== "none" || cs.rotate !== "none") { 15765 style[_transformProp$1] = (cs.translate !== "none" ? "translate3d(" + (cs.translate + " 0 0").split(" ").slice(0, 3).join(", ") + ") " : "") + (cs.rotate !== "none" ? "rotate(" + cs.rotate + ") " : "") + (cs.scale !== "none" ? "scale(" + cs.scale.split(" ").join(",") + ") " : "") + (cs[_transformProp$1] !== "none" ? cs[_transformProp$1] : ""); 15766 } 15767 style.scale = style.rotate = style.translate = "none"; 15768 } 15769 matrix = _getMatrix(target, cache.svg); 15770 if (cache.svg) { 15771 if (cache.uncache) { 15772 t2 = target.getBBox(); 15773 origin2 = cache.xOrigin - t2.x + "px " + (cache.yOrigin - t2.y) + "px"; 15774 t1 = ""; 15775 } else { 15776 t1 = !uncache && target.getAttribute("data-svg-origin"); 15777 } 15778 _applySVGOrigin(target, t1 || origin2, !!t1 || cache.originIsAbsolute, cache.smooth !== false, matrix); 15779 } 15780 xOrigin = cache.xOrigin || 0; 15781 yOrigin = cache.yOrigin || 0; 15782 if (matrix !== _identity2DMatrix) { 15783 a = matrix[0]; 15784 b = matrix[1]; 15785 c = matrix[2]; 15786 d = matrix[3]; 15787 x = a12 = matrix[4]; 15788 y = a22 = matrix[5]; 15789 if (matrix.length === 6) { 15790 scaleX = Math.sqrt(a * a + b * b); 15791 scaleY = Math.sqrt(d * d + c * c); 15792 rotation = a || b ? _atan2(b, a) * _RAD2DEG : 0; 15793 skewX = c || d ? _atan2(c, d) * _RAD2DEG + rotation : 0; 15794 skewX && (scaleY *= Math.abs(Math.cos(skewX * _DEG2RAD))); 15795 if (cache.svg) { 15796 x -= xOrigin - (xOrigin * a + yOrigin * c); 15797 y -= yOrigin - (xOrigin * b + yOrigin * d); 15798 } 15799 } else { 15800 a32 = matrix[6]; 15801 a42 = matrix[7]; 15802 a13 = matrix[8]; 15803 a23 = matrix[9]; 15804 a33 = matrix[10]; 15805 a43 = matrix[11]; 15806 x = matrix[12]; 15807 y = matrix[13]; 15808 z = matrix[14]; 15809 angle = _atan2(a32, a33); 15810 rotationX = angle * _RAD2DEG; 15811 if (angle) { 15812 cos = Math.cos(-angle); 15813 sin = Math.sin(-angle); 15814 t1 = a12 * cos + a13 * sin; 15815 t2 = a22 * cos + a23 * sin; 15816 t3 = a32 * cos + a33 * sin; 15817 a13 = a12 * -sin + a13 * cos; 15818 a23 = a22 * -sin + a23 * cos; 15819 a33 = a32 * -sin + a33 * cos; 15820 a43 = a42 * -sin + a43 * cos; 15821 a12 = t1; 15822 a22 = t2; 15823 a32 = t3; 15824 } 15825 angle = _atan2(-c, a33); 15826 rotationY = angle * _RAD2DEG; 15827 if (angle) { 15828 cos = Math.cos(-angle); 15829 sin = Math.sin(-angle); 15830 t1 = a * cos - a13 * sin; 15831 t2 = b * cos - a23 * sin; 15832 t3 = c * cos - a33 * sin; 15833 a43 = d * sin + a43 * cos; 15834 a = t1; 15835 b = t2; 15836 c = t3; 15837 } 15838 angle = _atan2(b, a); 15839 rotation = angle * _RAD2DEG; 15840 if (angle) { 15841 cos = Math.cos(angle); 15842 sin = Math.sin(angle); 15843 t1 = a * cos + b * sin; 15844 t2 = a12 * cos + a22 * sin; 15845 b = b * cos - a * sin; 15846 a22 = a22 * cos - a12 * sin; 15847 a = t1; 15848 a12 = t2; 15849 } 15850 if (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) { 15851 rotationX = rotation = 0; 15852 rotationY = 180 - rotationY; 15853 } 15854 scaleX = _round$1(Math.sqrt(a * a + b * b + c * c)); 15855 scaleY = _round$1(Math.sqrt(a22 * a22 + a32 * a32)); 15856 angle = _atan2(a12, a22); 15857 skewX = Math.abs(angle) > 2e-4 ? angle * _RAD2DEG : 0; 15858 perspective = a43 ? 1 / (a43 < 0 ? -a43 : a43) : 0; 15859 } 15860 if (cache.svg) { 15861 t1 = target.getAttribute("transform"); 15862 cache.forceCSS = target.setAttribute("transform", "") || !_isNullTransform(_getComputedProperty(target, _transformProp$1)); 15863 t1 && target.setAttribute("transform", t1); 15864 } 15865 } 15866 if (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) { 15867 if (invertedScaleX) { 15868 scaleX *= -1; 15869 skewX += rotation <= 0 ? 180 : -180; 15870 rotation += rotation <= 0 ? 180 : -180; 15871 } else { 15872 scaleY *= -1; 15873 skewX += skewX <= 0 ? 180 : -180; 15874 } 15875 } 15876 uncache = uncache || cache.uncache; 15877 cache.x = x - ((cache.xPercent = x && (!uncache && cache.xPercent || (Math.round(target.offsetWidth / 2) === Math.round(-x) ? -50 : 0))) ? target.offsetWidth * cache.xPercent / 100 : 0) + px; 15878 cache.y = y - ((cache.yPercent = y && (!uncache && cache.yPercent || (Math.round(target.offsetHeight / 2) === Math.round(-y) ? -50 : 0))) ? target.offsetHeight * cache.yPercent / 100 : 0) + px; 15879 cache.z = z + px; 15880 cache.scaleX = _round$1(scaleX); 15881 cache.scaleY = _round$1(scaleY); 15882 cache.rotation = _round$1(rotation) + deg; 15883 cache.rotationX = _round$1(rotationX) + deg; 15884 cache.rotationY = _round$1(rotationY) + deg; 15885 cache.skewX = skewX + deg; 15886 cache.skewY = skewY + deg; 15887 cache.transformPerspective = perspective + px; 15888 if (cache.zOrigin = parseFloat(origin2.split(" ")[2]) || !uncache && cache.zOrigin || 0) { 15889 style[_transformOriginProp] = _firstTwoOnly(origin2); 15890 } 15891 cache.xOffset = cache.yOffset = 0; 15892 cache.force3D = _config.force3D; 15893 cache.renderTransform = cache.svg ? _renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms; 15894 cache.uncache = 0; 15895 return cache; 15896 }, _firstTwoOnly = function _firstTwoOnly2(value) { 15897 return (value = value.split(" "))[0] + " " + value[1]; 15898 }, _addPxTranslate = function _addPxTranslate2(target, start, value) { 15899 var unit = getUnit(start); 15900 return _round$1(parseFloat(start) + parseFloat(_convertToUnit(target, "x", value + "px", unit))) + unit; 15901 }, _renderNon3DTransforms = function _renderNon3DTransforms2(ratio, cache) { 15902 cache.z = "0px"; 15903 cache.rotationY = cache.rotationX = "0deg"; 15904 cache.force3D = 0; 15905 _renderCSSTransforms(ratio, cache); 15906 }, _zeroDeg = "0deg", _zeroPx = "0px", _endParenthesis = ") ", _renderCSSTransforms = function _renderCSSTransforms2(ratio, cache) { 15907 var _ref = cache || this, xPercent = _ref.xPercent, yPercent = _ref.yPercent, x = _ref.x, y = _ref.y, z = _ref.z, rotation = _ref.rotation, rotationY = _ref.rotationY, rotationX = _ref.rotationX, skewX = _ref.skewX, skewY = _ref.skewY, scaleX = _ref.scaleX, scaleY = _ref.scaleY, transformPerspective = _ref.transformPerspective, force3D = _ref.force3D, target = _ref.target, zOrigin = _ref.zOrigin, transforms = "", use3D = force3D === "auto" && ratio && ratio !== 1 || force3D === true; 15908 if (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) { 15909 var angle = parseFloat(rotationY) * _DEG2RAD, a13 = Math.sin(angle), a33 = Math.cos(angle), cos; 15910 angle = parseFloat(rotationX) * _DEG2RAD; 15911 cos = Math.cos(angle); 15912 x = _addPxTranslate(target, x, a13 * cos * -zOrigin); 15913 y = _addPxTranslate(target, y, -Math.sin(angle) * -zOrigin); 15914 z = _addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin); 15915 } 15916 if (transformPerspective !== _zeroPx) { 15917 transforms += "perspective(" + transformPerspective + _endParenthesis; 15918 } 15919 if (xPercent || yPercent) { 15920 transforms += "translate(" + xPercent + "%, " + yPercent + "%) "; 15921 } 15922 if (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) { 15923 transforms += z !== _zeroPx || use3D ? "translate3d(" + x + ", " + y + ", " + z + ") " : "translate(" + x + ", " + y + _endParenthesis; 15924 } 15925 if (rotation !== _zeroDeg) { 15926 transforms += "rotate(" + rotation + _endParenthesis; 15927 } 15928 if (rotationY !== _zeroDeg) { 15929 transforms += "rotateY(" + rotationY + _endParenthesis; 15930 } 15931 if (rotationX !== _zeroDeg) { 15932 transforms += "rotateX(" + rotationX + _endParenthesis; 15933 } 15934 if (skewX !== _zeroDeg || skewY !== _zeroDeg) { 15935 transforms += "skew(" + skewX + ", " + skewY + _endParenthesis; 15936 } 15937 if (scaleX !== 1 || scaleY !== 1) { 15938 transforms += "scale(" + scaleX + ", " + scaleY + _endParenthesis; 15939 } 15940 target.style[_transformProp$1] = transforms || "translate(0, 0)"; 15941 }, _renderSVGTransforms = function _renderSVGTransforms2(ratio, cache) { 15942 var _ref2 = cache || this, xPercent = _ref2.xPercent, yPercent = _ref2.yPercent, x = _ref2.x, y = _ref2.y, rotation = _ref2.rotation, skewX = _ref2.skewX, skewY = _ref2.skewY, scaleX = _ref2.scaleX, scaleY = _ref2.scaleY, target = _ref2.target, xOrigin = _ref2.xOrigin, yOrigin = _ref2.yOrigin, xOffset = _ref2.xOffset, yOffset = _ref2.yOffset, forceCSS = _ref2.forceCSS, tx = parseFloat(x), ty = parseFloat(y), a11, a21, a12, a22, temp; 15943 rotation = parseFloat(rotation); 15944 skewX = parseFloat(skewX); 15945 skewY = parseFloat(skewY); 15946 if (skewY) { 15947 skewY = parseFloat(skewY); 15948 skewX += skewY; 15949 rotation += skewY; 15950 } 15951 if (rotation || skewX) { 15952 rotation *= _DEG2RAD; 15953 skewX *= _DEG2RAD; 15954 a11 = Math.cos(rotation) * scaleX; 15955 a21 = Math.sin(rotation) * scaleX; 15956 a12 = Math.sin(rotation - skewX) * -scaleY; 15957 a22 = Math.cos(rotation - skewX) * scaleY; 15958 if (skewX) { 15959 skewY *= _DEG2RAD; 15960 temp = Math.tan(skewX - skewY); 15961 temp = Math.sqrt(1 + temp * temp); 15962 a12 *= temp; 15963 a22 *= temp; 15964 if (skewY) { 15965 temp = Math.tan(skewY); 15966 temp = Math.sqrt(1 + temp * temp); 15967 a11 *= temp; 15968 a21 *= temp; 15969 } 15970 } 15971 a11 = _round$1(a11); 15972 a21 = _round$1(a21); 15973 a12 = _round$1(a12); 15974 a22 = _round$1(a22); 15975 } else { 15976 a11 = scaleX; 15977 a22 = scaleY; 15978 a21 = a12 = 0; 15979 } 15980 if (tx && !~(x + "").indexOf("px") || ty && !~(y + "").indexOf("px")) { 15981 tx = _convertToUnit(target, "x", x, "px"); 15982 ty = _convertToUnit(target, "y", y, "px"); 15983 } 15984 if (xOrigin || yOrigin || xOffset || yOffset) { 15985 tx = _round$1(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset); 15986 ty = _round$1(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset); 15987 } 15988 if (xPercent || yPercent) { 15989 temp = target.getBBox(); 15990 tx = _round$1(tx + xPercent / 100 * temp.width);
vendor: 7,134 bytes, lines 15991-16141
15991 ty = _round$1(ty + yPercent / 100 * temp.height); 15992 } 15993 temp = "matrix(" + a11 + "," + a21 + "," + a12 + "," + a22 + "," + tx + "," + ty + ")"; 15994 target.setAttribute("transform", temp); 15995 forceCSS && (target.style[_transformProp$1] = temp); 15996 }, _addRotationalPropTween = function _addRotationalPropTween2(plugin, target, property, startNum, endValue) { 15997 var cap = 360, isString2 = _isString$1(endValue), endNum = parseFloat(endValue) * (isString2 && ~endValue.indexOf("rad") ? _RAD2DEG : 1), change = endNum - startNum, finalValue = startNum + change + "deg", direction, pt; 15998 if (isString2) { 15999 direction = endValue.split("_")[1]; 16000 if (direction === "short") { 16001 change %= cap; 16002 if (change !== change % (cap / 2)) { 16003 change += change < 0 ? cap : -360; 16004 } 16005 } 16006 if (direction === "cw" && change < 0) { 16007 change = (change + cap * _bigNum) % cap - ~~(change / cap) * cap; 16008 } else if (direction === "ccw" && change > 0) { 16009 change = (change - cap * _bigNum) % cap - ~~(change / cap) * cap; 16010 } 16011 } 16012 plugin._pt = pt = new PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd); 16013 pt.e = finalValue; 16014 pt.u = "deg"; 16015 plugin._props.push(property); 16016 return pt; 16017 }, _assign = function _assign2(target, source) { 16018 for (var p in source) { 16019 target[p] = source[p]; 16020 } 16021 return target; 16022 }, _addRawTransformPTs = function _addRawTransformPTs2(plugin, transforms, target) { 16023 var startCache = _assign({}, target._gsap), exclude = "perspective,force3D,transformOrigin,svgOrigin", style = target.style, endCache, p, startValue, endValue, startNum, endNum, startUnit, endUnit; 16024 if (startCache.svg) { 16025 startValue = target.getAttribute("transform"); 16026 target.setAttribute("transform", ""); 16027 style[_transformProp$1] = transforms; 16028 endCache = _parseTransform(target, 1); 16029 _removeProperty(target, _transformProp$1); 16030 target.setAttribute("transform", startValue); 16031 } else { 16032 startValue = getComputedStyle(target)[_transformProp$1]; 16033 style[_transformProp$1] = transforms; 16034 endCache = _parseTransform(target, 1); 16035 style[_transformProp$1] = startValue; 16036 } 16037 for (p in _transformProps) { 16038 startValue = startCache[p]; 16039 endValue = endCache[p]; 16040 if (startValue !== endValue && exclude.indexOf(p) < 0) { 16041 startUnit = getUnit(startValue); 16042 endUnit = getUnit(endValue); 16043 startNum = startUnit !== endUnit ? _convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue); 16044 endNum = parseFloat(endValue); 16045 plugin._pt = new PropTween(plugin._pt, endCache, p, startNum, endNum - startNum, _renderCSSProp); 16046 plugin._pt.u = endUnit || 0; 16047 plugin._props.push(p); 16048 } 16049 } 16050 _assign(endCache, startCache); 16051 }; 16052 _forEachName("padding,margin,Width,Radius", function(name, index) { 16053 var t2 = "Top", r = "Right", b = "Bottom", l = "Left", props = (index < 3 ? [t2, r, b, l] : [t2 + l, t2 + r, b + r, b + l]).map(function(side) { 16054 return index < 2 ? name + side : "border" + side + name; 16055 }); 16056 _specialProps[index > 1 ? "border" + name : name] = function(plugin, target, property, endValue, tween) { 16057 var a, vars; 16058 if (arguments.length < 4) { 16059 a = props.map(function(prop) { 16060 return _get(plugin, prop, property); 16061 }); 16062 vars = a.join(" "); 16063 return vars.split(a[0]).length === 5 ? a[0] : vars; 16064 } 16065 a = (endValue + "").split(" "); 16066 vars = {}; 16067 props.forEach(function(prop, i2) { 16068 return vars[prop] = a[i2] = a[i2] || a[(i2 - 1) / 2 | 0]; 16069 }); 16070 plugin.init(target, vars, tween); 16071 }; 16072 }); 16073 var CSSPlugin = { 16074 name: "css", 16075 register: _initCore$1, 16076 targetTest: function targetTest(target) { 16077 return target.style && target.nodeType; 16078 }, 16079 init: function init(target, vars, tween, index, targets) { 16080 var props = this._props, style = target.style, startAt = tween.vars.startAt, startValue, endValue, endNum, startNum, type, specialProp, p, startUnit, endUnit, relative, isTransformRelated, transformPropTween, cache, smooth, hasPriority, inlineProps; 16081 _pluginInitted || _initCore$1(); 16082 this.styles = this.styles || _getStyleSaver(target); 16083 inlineProps = this.styles.props; 16084 this.tween = tween; 16085 for (p in vars) { 16086 if (p === "autoRound") { 16087 continue; 16088 } 16089 endValue = vars[p]; 16090 if (_plugins[p] && _checkPlugin(p, vars, tween, index, target, targets)) { 16091 continue; 16092 } 16093 type = typeof endValue; 16094 specialProp = _specialProps[p]; 16095 if (type === "function") { 16096 endValue = endValue.call(tween, index, target, targets); 16097 type = typeof endValue; 16098 } 16099 if (type === "string" && ~endValue.indexOf("random(")) { 16100 endValue = _replaceRandom(endValue); 16101 } 16102 if (specialProp) { 16103 specialProp(this, target, p, endValue, tween) && (hasPriority = 1); 16104 } else if (p.substr(0, 2) === "--") { 16105 startValue = (getComputedStyle(target).getPropertyValue(p) + "").trim(); 16106 endValue += ""; 16107 _colorExp.lastIndex = 0; 16108 if (!_colorExp.test(startValue)) { 16109 startUnit = getUnit(startValue); 16110 endUnit = getUnit(endValue); 16111 } 16112 endUnit ? startUnit !== endUnit && (startValue = _convertToUnit(target, p, startValue, endUnit) + endUnit) : startUnit && (endValue += startUnit); 16113 this.add(style, "setProperty", startValue, endValue, index, targets, 0, 0, p); 16114 props.push(p); 16115 inlineProps.push(p, 0, style[p]); 16116 } else if (type !== "undefined") { 16117 if (startAt && p in startAt) { 16118 startValue = typeof startAt[p] === "function" ? startAt[p].call(tween, index, target, targets) : startAt[p]; 16119 _isString$1(startValue) && ~startValue.indexOf("random(") && (startValue = _replaceRandom(startValue)); 16120 getUnit(startValue + "") || startValue === "auto" || (startValue += _config.units[p] || getUnit(_get(target, p)) || ""); 16121 (startValue + "").charAt(1) === "=" && (startValue = _get(target, p)); 16122 } else { 16123 startValue = _get(target, p); 16124 } 16125 startNum = parseFloat(startValue); 16126 relative = type === "string" && endValue.charAt(1) === "=" && endValue.substr(0, 2); 16127 relative && (endValue = endValue.substr(2)); 16128 endNum = parseFloat(endValue); 16129 if (p in _propertyAliases) { 16130 if (p === "autoAlpha") { 16131 if (startNum === 1 && _get(target, "visibility") === "hidden" && endNum) { 16132 startNum = 0; 16133 } 16134 inlineProps.push("visibility", 0, style.visibility); 16135 _addNonTweeningPT(this, style, "visibility", startNum ? "inherit" : "hidden", endNum ? "inherit" : "hidden", !endNum); 16136 } 16137 if (p !== "scale" && p !== "transform") { 16138 p = _propertyAliases[p]; 16139 ~p.indexOf(",") && (p = p.split(",")[0]); 16140 } 16141 }
vendor: 5,037 bytes, lines 16142-16236
16142 isTransformRelated = p in _transformProps; 16143 if (isTransformRelated) { 16144 this.styles.save(p); 16145 if (!transformPropTween) { 16146 cache = target._gsap; 16147 cache.renderTransform && !vars.parseTransform || _parseTransform(target, vars.parseTransform); 16148 smooth = vars.smoothOrigin !== false && cache.smooth; 16149 transformPropTween = this._pt = new PropTween(this._pt, style, _transformProp$1, 0, 1, cache.renderTransform, cache, 0, -1); 16150 transformPropTween.dep = 1; 16151 } 16152 if (p === "scale") { 16153 this._pt = new PropTween(this._pt, cache, "scaleY", cache.scaleY, (relative ? _parseRelative(cache.scaleY, relative + endNum) : endNum) - cache.scaleY || 0, _renderCSSProp); 16154 this._pt.u = 0; 16155 props.push("scaleY", p); 16156 p += "X"; 16157 } else if (p === "transformOrigin") { 16158 inlineProps.push(_transformOriginProp, 0, style[_transformOriginProp]); 16159 endValue = _convertKeywordsToPercentages(endValue); 16160 if (cache.svg) { 16161 _applySVGOrigin(target, endValue, 0, smooth, 0, this); 16162 } else { 16163 endUnit = parseFloat(endValue.split(" ")[2]) || 0; 16164 endUnit !== cache.zOrigin && _addNonTweeningPT(this, cache, "zOrigin", cache.zOrigin, endUnit); 16165 _addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue)); 16166 } 16167 continue; 16168 } else if (p === "svgOrigin") { 16169 _applySVGOrigin(target, endValue, 1, smooth, 0, this); 16170 continue; 16171 } else if (p in _rotationalProperties) { 16172 _addRotationalPropTween(this, cache, p, startNum, relative ? _parseRelative(startNum, relative + endValue) : endValue); 16173 continue; 16174 } else if (p === "smoothOrigin") { 16175 _addNonTweeningPT(this, cache, "smooth", cache.smooth, endValue); 16176 continue; 16177 } else if (p === "force3D") { 16178 cache[p] = endValue; 16179 continue; 16180 } else if (p === "transform") { 16181 _addRawTransformPTs(this, endValue, target); 16182 continue; 16183 } 16184 } else if (!(p in style)) { 16185 p = _checkPropPrefix(p) || p; 16186 } 16187 if (isTransformRelated || (endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && p in style) { 16188 startUnit = (startValue + "").substr((startNum + "").length); 16189 endNum || (endNum = 0); 16190 endUnit = getUnit(endValue) || (p in _config.units ? _config.units[p] : startUnit); 16191 startUnit !== endUnit && (startNum = _convertToUnit(target, p, startValue, endUnit)); 16192 this._pt = new PropTween(this._pt, isTransformRelated ? cache : style, p, startNum, (relative ? _parseRelative(startNum, relative + endNum) : endNum) - startNum, !isTransformRelated && (endUnit === "px" || p === "zIndex") && vars.autoRound !== false ? _renderRoundedCSSProp : _renderCSSProp); 16193 this._pt.u = endUnit || 0; 16194 if (startUnit !== endUnit && endUnit !== "%") { 16195 this._pt.b = startValue; 16196 this._pt.r = _renderCSSPropWithBeginning; 16197 } 16198 } else if (!(p in style)) { 16199 if (p in target) { 16200 this.add(target, p, startValue || target[p], relative ? relative + endValue : endValue, index, targets); 16201 } else if (p !== "parseTransform") { 16202 _missingPlugin(p, endValue); 16203 continue; 16204 } 16205 } else { 16206 _tweenComplexCSSString.call(this, target, p, startValue, relative ? relative + endValue : endValue); 16207 } 16208 isTransformRelated || (p in style ? inlineProps.push(p, 0, style[p]) : inlineProps.push(p, 1, startValue || target[p])); 16209 props.push(p); 16210 } 16211 } 16212 hasPriority && _sortPropTweensByPriority(this); 16213 }, 16214 render: function render(ratio, data) { 16215 if (data.tween._time || !_reverting()) { 16216 var pt = data._pt; 16217 while (pt) { 16218 pt.r(ratio, pt.d); 16219 pt = pt._next; 16220 } 16221 } else { 16222 data.styles.revert(); 16223 } 16224 }, 16225 get: _get, 16226 aliases: _propertyAliases, 16227 getSetter: function getSetter(target, property, plugin) { 16228 var p = _propertyAliases[property]; 16229 p && p.indexOf(",") < 0 && (property = p); 16230 return property in _transformProps && property !== _transformOriginProp && (target._gsap.x || _get(target, "x")) ? plugin && _recentSetterPlugin === plugin ? property === "scale" ? _setterScale : _setterTransform : (_recentSetterPlugin = plugin || {}) && (property === "scale" ? _setterScaleWithRender : _setterTransformWithRender) : target.style && !_isUndefined(target.style[property]) ? _setterCSSStyle : ~property.indexOf("-") ? _setterCSSProp : _getSetter(target, property); 16231 }, 16232 core: { 16233 _removeProperty, 16234 _getMatrix 16235 } 16236 };
vendor: 6,103 bytes, lines 16237-16359
16237 gsap$2.utils.checkPrefix = _checkPropPrefix; 16238 gsap$2.core.getStyleSaver = _getStyleSaver; 16239 (function(positionAndScale, rotation, others, aliases) { 16240 var all2 = _forEachName(positionAndScale + "," + rotation + "," + others, function(name) { 16241 _transformProps[name] = 1; 16242 }); 16243 _forEachName(rotation, function(name) { 16244 _config.units[name] = "deg"; 16245 _rotationalProperties[name] = 1; 16246 }); 16247 _propertyAliases[all2[13]] = positionAndScale + "," + rotation; 16248 _forEachName(aliases, function(name) { 16249 var split = name.split(":"); 16250 _propertyAliases[split[1]] = all2[split[0]]; 16251 }); 16252 })("x,y,z,scale,scaleX,scaleY,xPercent,yPercent", "rotation,rotationX,rotationY,skewX,skewY", "transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective", "0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY"); 16253 _forEachName("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective", function(name) { 16254 _config.units[name] = "px"; 16255 }); 16256 gsap$2.registerPlugin(CSSPlugin); 16257 var gsapWithCSS = gsap$2.registerPlugin(CSSPlugin) || gsap$2; 16258 gsapWithCSS.core.Tween; 16259 function _defineProperties(target, props) { 16260 for (var i2 = 0; i2 < props.length; i2++) { 16261 var descriptor = props[i2]; 16262 descriptor.enumerable = descriptor.enumerable || false; 16263 descriptor.configurable = true; 16264 if ("value" in descriptor) descriptor.writable = true; 16265 Object.defineProperty(target, descriptor.key, descriptor); 16266 } 16267 } 16268 function _createClass(Constructor, protoProps, staticProps) { 16269 if (protoProps) _defineProperties(Constructor.prototype, protoProps); 16270 return Constructor; 16271 } 16272 /*! 16273 * Observer 3.12.5 16274 * https://gsap.com 16275 * 16276 * @license Copyright 2008-2024, GreenSock. All rights reserved. 16277 * Subject to the terms at https://gsap.com/standard-license or for 16278 * Club GSAP members, the agreement issued with that membership. 16279 * @author: Jack Doyle, [email protected] 16280 */ 16281 var gsap$1, _coreInitted$1, _win$1, _doc$1, _docEl$1, _body$1, _isTouch, _pointerType, ScrollTrigger$1, _root$1, _normalizer$1, _eventTypes, _context$1, _getGSAP$1 = function _getGSAP2() { 16282 return gsap$1 || typeof window !== "undefined" && (gsap$1 = window.gsap) && gsap$1.registerPlugin && gsap$1; 16283 }, _startup$1 = 1, _observers = [], _scrollers = [], _proxies = [], _getTime$1 = Date.now, _bridge = function _bridge2(name, value) { 16284 return value; 16285 }, _integrate = function _integrate2() { 16286 var core2 = ScrollTrigger$1.core, data = core2.bridge || {}, scrollers = core2._scrollers, proxies = core2._proxies; 16287 scrollers.push.apply(scrollers, _scrollers); 16288 proxies.push.apply(proxies, _proxies); 16289 _scrollers = scrollers; 16290 _proxies = proxies; 16291 _bridge = function _bridge2(name, value) { 16292 return data[name](value); 16293 }; 16294 }, _getProxyProp = function _getProxyProp2(element, property) { 16295 return ~_proxies.indexOf(element) && _proxies[_proxies.indexOf(element) + 1][property]; 16296 }, _isViewport$1 = function _isViewport2(el) { 16297 return !!~_root$1.indexOf(el); 16298 }, _addListener$1 = function _addListener2(element, type, func, passive, capture) { 16299 return element.addEventListener(type, func, { 16300 passive: passive !== false, 16301 capture: !!capture 16302 }); 16303 }, _removeListener$1 = function _removeListener2(element, type, func, capture) { 16304 return element.removeEventListener(type, func, !!capture); 16305 }, _scrollLeft = "scrollLeft", _scrollTop = "scrollTop", _onScroll$1 = function _onScroll2() { 16306 return _normalizer$1 && _normalizer$1.isPressed || _scrollers.cache++; 16307 }, _scrollCacheFunc = function _scrollCacheFunc2(f, doNotCache) { 16308 var cachingFunc = function cachingFunc2(value) { 16309 if (value || value === 0) { 16310 _startup$1 && (_win$1.history.scrollRestoration = "manual"); 16311 var isNormalizing = _normalizer$1 && _normalizer$1.isPressed; 16312 value = cachingFunc2.v = Math.round(value) || (_normalizer$1 && _normalizer$1.iOS ? 1 : 0); 16313 f(value); 16314 cachingFunc2.cacheID = _scrollers.cache; 16315 isNormalizing && _bridge("ss", value); 16316 } else if (doNotCache || _scrollers.cache !== cachingFunc2.cacheID || _bridge("ref")) { 16317 cachingFunc2.cacheID = _scrollers.cache; 16318 cachingFunc2.v = f(); 16319 } 16320 return cachingFunc2.v + cachingFunc2.offset; 16321 }; 16322 cachingFunc.offset = 0; 16323 return f && cachingFunc; 16324 }, _horizontal = { 16325 s: _scrollLeft, 16326 p: "left", 16327 p2: "Left", 16328 os: "right", 16329 os2: "Right", 16330 d: "width", 16331 d2: "Width", 16332 a: "x", 16333 sc: _scrollCacheFunc(function(value) { 16334 return arguments.length ? _win$1.scrollTo(value, _vertical.sc()) : _win$1.pageXOffset || _doc$1[_scrollLeft] || _docEl$1[_scrollLeft] || _body$1[_scrollLeft] || 0; 16335 }) 16336 }, _vertical = { 16337 s: _scrollTop, 16338 p: "top", 16339 p2: "Top", 16340 os: "bottom", 16341 os2: "Bottom", 16342 d: "height", 16343 d2: "Height", 16344 a: "y", 16345 op: _horizontal, 16346 sc: _scrollCacheFunc(function(value) { 16347 return arguments.length ? _win$1.scrollTo(_horizontal.sc(), value) : _win$1.pageYOffset || _doc$1[_scrollTop] || _docEl$1[_scrollTop] || _body$1[_scrollTop] || 0; 16348 }) 16349 }, _getTarget = function _getTarget2(t2, self2) { 16350 return (self2 && self2._ctx && self2._ctx.selector || gsap$1.utils.toArray)(t2)[0] || (typeof t2 === "string" && gsap$1.config().nullTargetWarn !== false ? console.warn("Element not found:", t2) : null); 16351 }, _getScrollFunc = function _getScrollFunc2(element, _ref) { 16352 var s = _ref.s, sc = _ref.sc; 16353 _isViewport$1(element) && (element = _doc$1.scrollingElement || _docEl$1); 16354 var i2 = _scrollers.indexOf(element), offset = sc === _vertical.sc ? 1 : 2; 16355 !~i2 && (i2 = _scrollers.push(element) - 1); 16356 _scrollers[i2 + offset] || _addListener$1(element, "scroll", _onScroll$1); 16357 var prev = _scrollers[i2 + offset], func = prev || (_scrollers[i2 + offset] = _scrollCacheFunc(_getProxyProp(element, s), true) || (_isViewport$1(element) ? sc : _scrollCacheFunc(function(value) { 16358 return arguments.length ? element[s] = value : element[s]; 16359 }
vendor: 6,109 bytes, lines 16359-16451
16359))); 16360 func.target = element; 16361 prev || (func.smooth = gsap$1.getProperty(element, "scrollBehavior") === "smooth"); 16362 return func; 16363 }, _getVelocityProp = function _getVelocityProp2(value, minTimeRefresh, useDelta) { 16364 var v1 = value, v2 = value, t1 = _getTime$1(), t2 = t1, min = minTimeRefresh || 50, dropToZeroTime = Math.max(500, min * 3), update = function update2(value2, force) { 16365 var t3 = _getTime$1(); 16366 if (force || t3 - t1 > min) { 16367 v2 = v1; 16368 v1 = value2; 16369 t2 = t1; 16370 t1 = t3; 16371 } else if (useDelta) { 16372 v1 += value2; 16373 } else { 16374 v1 = v2 + (value2 - v2) / (t3 - t2) * (t1 - t2); 16375 } 16376 }, reset = function reset2() { 16377 v2 = v1 = useDelta ? 0 : v1; 16378 t2 = t1 = 0; 16379 }, getVelocity = function getVelocity2(latestValue) { 16380 var tOld = t2, vOld = v2, t3 = _getTime$1(); 16381 (latestValue || latestValue === 0) && latestValue !== v1 && update(latestValue); 16382 return t1 === t2 || t3 - t2 > dropToZeroTime ? 0 : (v1 + (useDelta ? vOld : -vOld)) / ((useDelta ? t3 : t1) - tOld) * 1e3; 16383 }; 16384 return { 16385 update, 16386 reset, 16387 getVelocity 16388 }; 16389 }, _getEvent = function _getEvent2(e, preventDefault) { 16390 preventDefault && !e._gsapAllow && e.preventDefault(); 16391 return e.changedTouches ? e.changedTouches[0] : e; 16392 }, _getAbsoluteMax = function _getAbsoluteMax2(a) { 16393 var max = Math.max.apply(Math, a), min = Math.min.apply(Math, a); 16394 return Math.abs(max) >= Math.abs(min) ? max : min; 16395 }, _setScrollTrigger = function _setScrollTrigger2() { 16396 ScrollTrigger$1 = gsap$1.core.globals().ScrollTrigger; 16397 ScrollTrigger$1 && ScrollTrigger$1.core && _integrate(); 16398 }, _initCore = function _initCore2(core2) { 16399 gsap$1 = core2 || _getGSAP$1(); 16400 if (!_coreInitted$1 && gsap$1 && typeof document !== "undefined" && document.body) { 16401 _win$1 = window; 16402 _doc$1 = document; 16403 _docEl$1 = _doc$1.documentElement; 16404 _body$1 = _doc$1.body; 16405 _root$1 = [_win$1, _doc$1, _docEl$1, _body$1]; 16406 gsap$1.utils.clamp; 16407 _context$1 = gsap$1.core.context || function() { 16408 }; 16409 _pointerType = "onpointerenter" in _body$1 ? "pointer" : "mouse"; 16410 _isTouch = Observer.isTouch = _win$1.matchMedia && _win$1.matchMedia("(hover: none), (pointer: coarse)").matches ? 1 : "ontouchstart" in _win$1 || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0 ? 2 : 0; 16411 _eventTypes = Observer.eventTypes = ("ontouchstart" in _docEl$1 ? "touchstart,touchmove,touchcancel,touchend" : !("onpointerdown" in _docEl$1) ? "mousedown,mousemove,mouseup,mouseup" : "pointerdown,pointermove,pointercancel,pointerup").split(","); 16412 setTimeout(function() { 16413 return _startup$1 = 0; 16414 }, 500); 16415 _setScrollTrigger(); 16416 _coreInitted$1 = 1; 16417 } 16418 return _coreInitted$1; 16419 }; 16420 _horizontal.op = _vertical; 16421 _scrollers.cache = 0; 16422 var Observer = /* @__PURE__ */ function() { 16423 function Observer2(vars) { 16424 this.init(vars); 16425 } 16426 var _proto = Observer2.prototype; 16427 _proto.init = function init(vars) { 16428 _coreInitted$1 || _initCore(gsap$1) || console.warn("Please gsap.registerPlugin(Observer)"); 16429 ScrollTrigger$1 || _setScrollTrigger(); 16430 var tolerance = vars.tolerance, dragMinimum = vars.dragMinimum, type = vars.type, target = vars.target, lineHeight = vars.lineHeight, debounce = vars.debounce, preventDefault = vars.preventDefault, onStop = vars.onStop, onStopDelay = vars.onStopDelay, ignore = vars.ignore, wheelSpeed = vars.wheelSpeed, event = vars.event, onDragStart = vars.onDragStart, onDragEnd = vars.onDragEnd, onDrag = vars.onDrag, onPress = vars.onPress, onRelease = vars.onRelease, onRight = vars.onRight, onLeft = vars.onLeft, onUp = vars.onUp, onDown = vars.onDown, onChangeX = vars.onChangeX, onChangeY = vars.onChangeY, onChange = vars.onChange, onToggleX = vars.onToggleX, onToggleY = vars.onToggleY, onHover = vars.onHover, onHoverEnd = vars.onHoverEnd, onMove = vars.onMove, ignoreCheck = vars.ignoreCheck, isNormalizer = vars.isNormalizer, onGestureStart = vars.onGestureStart, onGestureEnd = vars.onGestureEnd, onWheel = vars.onWheel, onEnable = vars.onEnable, onDisable = vars.onDisable, onClick = vars.onClick, scrollSpeed = vars.scrollSpeed, capture = vars.capture, allowClicks = vars.allowClicks, lockAxis = vars.lockAxis, onLockAxis = vars.onLockAxis; 16431 this.target = target = _getTarget(target) || _docEl$1; 16432 this.vars = vars; 16433 ignore && (ignore = gsap$1.utils.toArray(ignore)); 16434 tolerance = tolerance || 1e-9; 16435 dragMinimum = dragMinimum || 0; 16436 wheelSpeed = wheelSpeed || 1; 16437 scrollSpeed = scrollSpeed || 1; 16438 type = type || "wheel,touch,pointer"; 16439 debounce = debounce !== false; 16440 lineHeight || (lineHeight = parseFloat(_win$1.getComputedStyle(_body$1).lineHeight) || 22); 16441 var id, onStopDelayedCall, dragged, moved, wheeled, locked, axis, self2 = this, prevDeltaX = 0, prevDeltaY = 0, passive = vars.passive || !preventDefault, scrollFuncX = _getScrollFunc(target, _horizontal), scrollFuncY = _getScrollFunc(target, _vertical), scrollX = scrollFuncX(), scrollY = scrollFuncY(), limitToTouch = ~type.indexOf("touch") && !~type.indexOf("pointer") && _eventTypes[0] === "pointerdown", isViewport = _isViewport$1(target), ownerDoc = target.ownerDocument || _doc$1, deltaX = [0, 0, 0], deltaY = [0, 0, 0], onClickTime = 0, clickCapture = function clickCapture2() { 16442 return onClickTime = _getTime$1(); 16443 }, _ignoreCheck = function _ignoreCheck2(e, isPointerOrTouch) { 16444 return (self2.event = e) && ignore && ~ignore.indexOf(e.target) || isPointerOrTouch && limitToTouch && e.pointerType !== "touch" || ignoreCheck && ignoreCheck(e, isPointerOrTouch); 16445 }, onStopFunc = function onStopFunc2() { 16446 self2._vx.reset(); 16447 self2._vy.reset(); 16448 onStopDelayedCall.pause(); 16449 onStop && onStop(self2); 16450 }, update = function update2() { 16451 var dx = self2.deltaX = _getAbsoluteMax(deltaX), dy = self2.deltaY = _getAbsoluteMax(deltaY), changedX = Math.abs(dx) >= tolerance, changedY = Math.abs(dy) >= tolerance;
vendor: 9,529 bytes, lines 16452-16654
16452 onChange && (changedX || changedY) && onChange(self2, dx, dy, deltaX, deltaY); 16453 if (changedX) { 16454 onRight && self2.deltaX > 0 && onRight(self2); 16455 onLeft && self2.deltaX < 0 && onLeft(self2); 16456 onChangeX && onChangeX(self2); 16457 onToggleX && self2.deltaX < 0 !== prevDeltaX < 0 && onToggleX(self2); 16458 prevDeltaX = self2.deltaX; 16459 deltaX[0] = deltaX[1] = deltaX[2] = 0; 16460 } 16461 if (changedY) { 16462 onDown && self2.deltaY > 0 && onDown(self2); 16463 onUp && self2.deltaY < 0 && onUp(self2); 16464 onChangeY && onChangeY(self2); 16465 onToggleY && self2.deltaY < 0 !== prevDeltaY < 0 && onToggleY(self2); 16466 prevDeltaY = self2.deltaY; 16467 deltaY[0] = deltaY[1] = deltaY[2] = 0; 16468 } 16469 if (moved || dragged) { 16470 onMove && onMove(self2); 16471 if (dragged) { 16472 onDrag(self2); 16473 dragged = false; 16474 } 16475 moved = false; 16476 } 16477 locked && !(locked = false) && onLockAxis && onLockAxis(self2); 16478 if (wheeled) { 16479 onWheel(self2); 16480 wheeled = false; 16481 } 16482 id = 0; 16483 }, onDelta = function onDelta2(x, y, index) { 16484 deltaX[index] += x; 16485 deltaY[index] += y; 16486 self2._vx.update(x); 16487 self2._vy.update(y); 16488 debounce ? id || (id = requestAnimationFrame(update)) : update(); 16489 }, onTouchOrPointerDelta = function onTouchOrPointerDelta2(x, y) { 16490 if (lockAxis && !axis) { 16491 self2.axis = axis = Math.abs(x) > Math.abs(y) ? "x" : "y"; 16492 locked = true; 16493 } 16494 if (axis !== "y") { 16495 deltaX[2] += x; 16496 self2._vx.update(x, true); 16497 } 16498 if (axis !== "x") { 16499 deltaY[2] += y; 16500 self2._vy.update(y, true); 16501 } 16502 debounce ? id || (id = requestAnimationFrame(update)) : update(); 16503 }, _onDrag = function _onDrag2(e) { 16504 if (_ignoreCheck(e, 1)) { 16505 return; 16506 } 16507 e = _getEvent(e, preventDefault); 16508 var x = e.clientX, y = e.clientY, dx = x - self2.x, dy = y - self2.y, isDragging = self2.isDragging; 16509 self2.x = x; 16510 self2.y = y; 16511 if (isDragging || Math.abs(self2.startX - x) >= dragMinimum || Math.abs(self2.startY - y) >= dragMinimum) { 16512 onDrag && (dragged = true); 16513 isDragging || (self2.isDragging = true); 16514 onTouchOrPointerDelta(dx, dy); 16515 isDragging || onDragStart && onDragStart(self2); 16516 } 16517 }, _onPress = self2.onPress = function(e) { 16518 if (_ignoreCheck(e, 1) || e && e.button) { 16519 return; 16520 } 16521 self2.axis = axis = null; 16522 onStopDelayedCall.pause(); 16523 self2.isPressed = true; 16524 e = _getEvent(e); 16525 prevDeltaX = prevDeltaY = 0; 16526 self2.startX = self2.x = e.clientX; 16527 self2.startY = self2.y = e.clientY; 16528 self2._vx.reset(); 16529 self2._vy.reset(); 16530 _addListener$1(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, passive, true); 16531 self2.deltaX = self2.deltaY = 0; 16532 onPress && onPress(self2); 16533 }, _onRelease = self2.onRelease = function(e) { 16534 if (_ignoreCheck(e, 1)) { 16535 return; 16536 } 16537 _removeListener$1(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true); 16538 var isTrackingDrag = !isNaN(self2.y - self2.startY), wasDragging = self2.isDragging, isDragNotClick = wasDragging && (Math.abs(self2.x - self2.startX) > 3 || Math.abs(self2.y - self2.startY) > 3), eventData = _getEvent(e); 16539 if (!isDragNotClick && isTrackingDrag) { 16540 self2._vx.reset(); 16541 self2._vy.reset(); 16542 if (preventDefault && allowClicks) { 16543 gsap$1.delayedCall(0.08, function() { 16544 if (_getTime$1() - onClickTime > 300 && !e.defaultPrevented) { 16545 if (e.target.click) { 16546 e.target.click(); 16547 } else if (ownerDoc.createEvent) { 16548 var syntheticEvent = ownerDoc.createEvent("MouseEvents"); 16549 syntheticEvent.initMouseEvent("click", true, true, _win$1, 1, eventData.screenX, eventData.screenY, eventData.clientX, eventData.clientY, false, false, false, false, 0, null); 16550 e.target.dispatchEvent(syntheticEvent); 16551 } 16552 } 16553 }); 16554 } 16555 } 16556 self2.isDragging = self2.isGesturing = self2.isPressed = false; 16557 onStop && wasDragging && !isNormalizer && onStopDelayedCall.restart(true); 16558 onDragEnd && wasDragging && onDragEnd(self2); 16559 onRelease && onRelease(self2, isDragNotClick); 16560 }, _onGestureStart = function _onGestureStart2(e) { 16561 return e.touches && e.touches.length > 1 && (self2.isGesturing = true) && onGestureStart(e, self2.isDragging); 16562 }, _onGestureEnd = function _onGestureEnd2() { 16563 return (self2.isGesturing = false) || onGestureEnd(self2); 16564 }, onScroll = function onScroll2(e) { 16565 if (_ignoreCheck(e)) { 16566 return; 16567 } 16568 var x = scrollFuncX(), y = scrollFuncY(); 16569 onDelta((x - scrollX) * scrollSpeed, (y - scrollY) * scrollSpeed, 1); 16570 scrollX = x; 16571 scrollY = y; 16572 onStop && onStopDelayedCall.restart(true); 16573 }, _onWheel = function _onWheel2(e) { 16574 if (_ignoreCheck(e)) { 16575 return; 16576 } 16577 e = _getEvent(e, preventDefault); 16578 onWheel && (wheeled = true); 16579 var multiplier = (e.deltaMode === 1 ? lineHeight : e.deltaMode === 2 ? _win$1.innerHeight : 1) * wheelSpeed; 16580 onDelta(e.deltaX * multiplier, e.deltaY * multiplier, 0); 16581 onStop && !isNormalizer && onStopDelayedCall.restart(true); 16582 }, _onMove = function _onMove2(e) { 16583 if (_ignoreCheck(e)) { 16584 return; 16585 } 16586 var x = e.clientX, y = e.clientY, dx = x - self2.x, dy = y - self2.y; 16587 self2.x = x; 16588 self2.y = y; 16589 moved = true; 16590 onStop && onStopDelayedCall.restart(true); 16591 (dx || dy) && onTouchOrPointerDelta(dx, dy); 16592 }, _onHover = function _onHover2(e) { 16593 self2.event = e; 16594 onHover(self2); 16595 }, _onHoverEnd = function _onHoverEnd2(e) { 16596 self2.event = e; 16597 onHoverEnd(self2); 16598 }, _onClick = function _onClick2(e) { 16599 return _ignoreCheck(e) || _getEvent(e, preventDefault) && onClick(self2); 16600 }; 16601 onStopDelayedCall = self2._dc = gsap$1.delayedCall(onStopDelay || 0.25, onStopFunc).pause(); 16602 self2.deltaX = self2.deltaY = 0; 16603 self2._vx = _getVelocityProp(0, 50, true); 16604 self2._vy = _getVelocityProp(0, 50, true); 16605 self2.scrollX = scrollFuncX; 16606 self2.scrollY = scrollFuncY; 16607 self2.isDragging = self2.isGesturing = self2.isPressed = false; 16608 _context$1(this); 16609 self2.enable = function(e) { 16610 if (!self2.isEnabled) { 16611 _addListener$1(isViewport ? ownerDoc : target, "scroll", _onScroll$1); 16612 type.indexOf("scroll") >= 0 && _addListener$1(isViewport ? ownerDoc : target, "scroll", onScroll, passive, capture); 16613 type.indexOf("wheel") >= 0 && _addListener$1(target, "wheel", _onWheel, passive, capture); 16614 if (type.indexOf("touch") >= 0 && _isTouch || type.indexOf("pointer") >= 0) { 16615 _addListener$1(target, _eventTypes[0], _onPress, passive, capture); 16616 _addListener$1(ownerDoc, _eventTypes[2], _onRelease); 16617 _addListener$1(ownerDoc, _eventTypes[3], _onRelease); 16618 allowClicks && _addListener$1(target, "click", clickCapture, true, true); 16619 onClick && _addListener$1(target, "click", _onClick); 16620 onGestureStart && _addListener$1(ownerDoc, "gesturestart", _onGestureStart); 16621 onGestureEnd && _addListener$1(ownerDoc, "gestureend", _onGestureEnd); 16622 onHover && _addListener$1(target, _pointerType + "enter", _onHover); 16623 onHoverEnd && _addListener$1(target, _pointerType + "leave", _onHoverEnd); 16624 onMove && _addListener$1(target, _pointerType + "move", _onMove); 16625 } 16626 self2.isEnabled = true; 16627 e && e.type && _onPress(e); 16628 onEnable && onEnable(self2); 16629 } 16630 return self2; 16631 }; 16632 self2.disable = function() { 16633 if (self2.isEnabled) { 16634 _observers.filter(function(o) { 16635 return o !== self2 && _isViewport$1(o.target); 16636 }).length || _removeListener$1(isViewport ? ownerDoc : target, "scroll", _onScroll$1); 16637 if (self2.isPressed) { 16638 self2._vx.reset(); 16639 self2._vy.reset(); 16640 _removeListener$1(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true); 16641 } 16642 _removeListener$1(isViewport ? ownerDoc : target, "scroll", onScroll, capture); 16643 _removeListener$1(target, "wheel", _onWheel, capture); 16644 _removeListener$1(target, _eventTypes[0], _onPress, capture); 16645 _removeListener$1(ownerDoc, _eventTypes[2], _onRelease); 16646 _removeListener$1(ownerDoc, _eventTypes[3], _onRelease); 16647 _removeListener$1(target, "click", clickCapture, true); 16648 _removeListener$1(target, "click", _onClick); 16649 _removeListener$1(ownerDoc, "gesturestart", _onGestureStart); 16650 _removeListener$1(ownerDoc, "gestureend", _onGestureEnd); 16651 _removeListener$1(target, _pointerType + "enter", _onHover); 16652 _removeListener$1(target, _pointerType + "leave", _onHoverEnd); 16653 _removeListener$1(target, _pointerType + "move", _onMove); 16654 self2.isEnabled = self2.isPressed = self2.isDragging = false;
vendor: 5,490 bytes, lines 16655-16768
16655 onDisable && onDisable(self2); 16656 } 16657 }; 16658 self2.kill = self2.revert = function() { 16659 self2.disable(); 16660 var i2 = _observers.indexOf(self2); 16661 i2 >= 0 && _observers.splice(i2, 1); 16662 _normalizer$1 === self2 && (_normalizer$1 = 0); 16663 }; 16664 _observers.push(self2); 16665 isNormalizer && _isViewport$1(target) && (_normalizer$1 = self2); 16666 self2.enable(event); 16667 }; 16668 _createClass(Observer2, [{ 16669 key: "velocityX", 16670 get: function get() { 16671 return this._vx.getVelocity(); 16672 } 16673 }, { 16674 key: "velocityY", 16675 get: function get() { 16676 return this._vy.getVelocity(); 16677 } 16678 }]); 16679 return Observer2; 16680 }(); 16681 Observer.version = "3.12.5"; 16682 Observer.create = function(vars) { 16683 return new Observer(vars); 16684 }; 16685 Observer.register = _initCore; 16686 Observer.getAll = function() { 16687 return _observers.slice(); 16688 }; 16689 Observer.getById = function(id) { 16690 return _observers.filter(function(o) { 16691 return o.vars.id === id; 16692 })[0]; 16693 }; 16694 _getGSAP$1() && gsap$1.registerPlugin(Observer); 16695 /*! 16696 * ScrollTrigger 3.12.5 16697 * https://gsap.com 16698 * 16699 * @license Copyright 2008-2024, GreenSock. All rights reserved. 16700 * Subject to the terms at https://gsap.com/standard-license or for 16701 * Club GSAP members, the agreement issued with that membership. 16702 * @author: Jack Doyle, [email protected] 16703 */ 16704 var gsap, _coreInitted, _win, _doc, _docEl, _body, _root, _resizeDelay, _toArray, _clamp, _time2, _syncInterval, _refreshing, _pointerIsDown, _transformProp, _i, _prevWidth, _prevHeight, _autoRefresh, _sort, _suppressOverwrites, _ignoreResize, _normalizer, _ignoreMobileResize, _baseScreenHeight, _baseScreenWidth, _fixIOSBug, _context, _scrollRestoration, _div100vh, _100vh, _isReverted, _clampingMax, _limitCallbacks, _startup = 1, _getTime = Date.now, _time1 = _getTime(), _lastScrollTime = 0, _enabled = 0, _parseClamp = function _parseClamp2(value, type, self2) { 16705 var clamp2 = _isString(value) && (value.substr(0, 6) === "clamp(" || value.indexOf("max") > -1); 16706 self2["_" + type + "Clamp"] = clamp2; 16707 return clamp2 ? value.substr(6, value.length - 7) : value; 16708 }, _keepClamp = function _keepClamp2(value, clamp2) { 16709 return clamp2 && (!_isString(value) || value.substr(0, 6) !== "clamp(") ? "clamp(" + value + ")" : value; 16710 }, _rafBugFix = function _rafBugFix2() { 16711 return _enabled && requestAnimationFrame(_rafBugFix2); 16712 }, _pointerDownHandler = function _pointerDownHandler2() { 16713 return _pointerIsDown = 1; 16714 }, _pointerUpHandler = function _pointerUpHandler2() { 16715 return _pointerIsDown = 0; 16716 }, _passThrough = function _passThrough2(v) { 16717 return v; 16718 }, _round = function _round2(value) { 16719 return Math.round(value * 1e5) / 1e5 || 0; 16720 }, _windowExists = function _windowExists2() { 16721 return typeof window !== "undefined"; 16722 }, _getGSAP = function _getGSAP2() { 16723 return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap; 16724 }, _isViewport = function _isViewport2(e) { 16725 return !!~_root.indexOf(e); 16726 }, _getViewportDimension = function _getViewportDimension2(dimensionProperty) { 16727 return (dimensionProperty === "Height" ? _100vh : _win["inner" + dimensionProperty]) || _docEl["client" + dimensionProperty] || _body["client" + dimensionProperty]; 16728 }, _getBoundsFunc = function _getBoundsFunc2(element) { 16729 return _getProxyProp(element, "getBoundingClientRect") || (_isViewport(element) ? function() { 16730 _winOffsets.width = _win.innerWidth; 16731 _winOffsets.height = _100vh; 16732 return _winOffsets; 16733 } : function() { 16734 return _getBounds(element); 16735 }); 16736 }, _getSizeFunc = function _getSizeFunc2(scroller, isViewport, _ref) { 16737 var d = _ref.d, d2 = _ref.d2, a = _ref.a; 16738 return (a = _getProxyProp(scroller, "getBoundingClientRect")) ? function() { 16739 return a()[d]; 16740 } : function() { 16741 return (isViewport ? _getViewportDimension(d2) : scroller["client" + d2]) || 0; 16742 }; 16743 }, _getOffsetsFunc = function _getOffsetsFunc2(element, isViewport) { 16744 return !isViewport || ~_proxies.indexOf(element) ? _getBoundsFunc(element) : function() { 16745 return _winOffsets; 16746 }; 16747 }, _maxScroll = function _maxScroll2(element, _ref2) { 16748 var s = _ref2.s, d2 = _ref2.d2, d = _ref2.d, a = _ref2.a; 16749 return Math.max(0, (s = "scroll" + d2) && (a = _getProxyProp(element, s)) ? a() - _getBoundsFunc(element)()[d] : _isViewport(element) ? (_docEl[s] || _body[s]) - _getViewportDimension(d2) : element[s] - element["offset" + d2]); 16750 }, _iterateAutoRefresh = function _iterateAutoRefresh2(func, events) { 16751 for (var i2 = 0; i2 < _autoRefresh.length; i2 += 3) { 16752 (!events || ~events.indexOf(_autoRefresh[i2 + 1])) && func(_autoRefresh[i2], _autoRefresh[i2 + 1], _autoRefresh[i2 + 2]); 16753 } 16754 }, _isString = function _isString2(value) { 16755 return typeof value === "string"; 16756 }, _isFunction = function _isFunction2(value) { 16757 return typeof value === "function"; 16758 }, _isNumber = function _isNumber2(value) { 16759 return typeof value === "number"; 16760 }, _isObject = function _isObject2(value) { 16761 return typeof value === "object"; 16762 }, _endAnimation = function _endAnimation2(animation, reversed, pause) { 16763 return animation && animation.progress(reversed ? 0 : 1) && pause && animation.pause(); 16764 }, _callback = function _callback2(self2, func) { 16765 if (self2.enabled) { 16766 var result = self2._ctx ? self2._ctx.add(function() { 16767 return func(self2); 16768 }) : func(self2);
vendor: 6,046 bytes, lines 16769-16897
16769 result && result.totalTime && (self2.callbackAnimation = result); 16770 } 16771 }, _abs = Math.abs, _left = "left", _top = "top", _right = "right", _bottom = "bottom", _width = "width", _height = "height", _Right = "Right", _Left = "Left", _Top = "Top", _Bottom = "Bottom", _padding = "padding", _margin = "margin", _Width = "Width", _Height = "Height", _px = "px", _getComputedStyle = function _getComputedStyle2(element) { 16772 return _win.getComputedStyle(element); 16773 }, _makePositionable = function _makePositionable2(element) { 16774 var position = _getComputedStyle(element).position; 16775 element.style.position = position === "absolute" || position === "fixed" ? position : "relative"; 16776 }, _setDefaults = function _setDefaults2(obj, defaults2) { 16777 for (var p in defaults2) { 16778 p in obj || (obj[p] = defaults2[p]); 16779 } 16780 return obj; 16781 }, _getBounds = function _getBounds2(element, withoutTransforms) { 16782 var tween = withoutTransforms && _getComputedStyle(element)[_transformProp] !== "matrix(1, 0, 0, 1, 0, 0)" && gsap.to(element, { 16783 x: 0, 16784 y: 0, 16785 xPercent: 0, 16786 yPercent: 0, 16787 rotation: 0, 16788 rotationX: 0, 16789 rotationY: 0, 16790 scale: 1, 16791 skewX: 0, 16792 skewY: 0 16793 }).progress(1), bounds = element.getBoundingClientRect(); 16794 tween && tween.progress(0).kill(); 16795 return bounds; 16796 }, _getSize = function _getSize2(element, _ref3) { 16797 var d2 = _ref3.d2; 16798 return element["offset" + d2] || element["client" + d2] || 0; 16799 }, _getLabelRatioArray = function _getLabelRatioArray2(timeline) { 16800 var a = [], labels = timeline.labels, duration = timeline.duration(), p; 16801 for (p in labels) { 16802 a.push(labels[p] / duration); 16803 } 16804 return a; 16805 }, _getClosestLabel = function _getClosestLabel2(animation) { 16806 return function(value) { 16807 return gsap.utils.snap(_getLabelRatioArray(animation), value); 16808 }; 16809 }, _snapDirectional = function _snapDirectional2(snapIncrementOrArray) { 16810 var snap2 = gsap.utils.snap(snapIncrementOrArray), a = Array.isArray(snapIncrementOrArray) && snapIncrementOrArray.slice(0).sort(function(a2, b) { 16811 return a2 - b; 16812 }); 16813 return a ? function(value, direction, threshold) { 16814 if (threshold === void 0) { 16815 threshold = 1e-3; 16816 } 16817 var i2; 16818 if (!direction) { 16819 return snap2(value); 16820 } 16821 if (direction > 0) { 16822 value -= threshold; 16823 for (i2 = 0; i2 < a.length; i2++) { 16824 if (a[i2] >= value) { 16825 return a[i2]; 16826 } 16827 } 16828 return a[i2 - 1]; 16829 } else { 16830 i2 = a.length; 16831 value += threshold; 16832 while (i2--) { 16833 if (a[i2] <= value) { 16834 return a[i2]; 16835 } 16836 } 16837 } 16838 return a[0]; 16839 } : function(value, direction, threshold) { 16840 if (threshold === void 0) { 16841 threshold = 1e-3; 16842 } 16843 var snapped = snap2(value); 16844 return !direction || Math.abs(snapped - value) < threshold || snapped - value < 0 === direction < 0 ? snapped : snap2(direction < 0 ? value - snapIncrementOrArray : value + snapIncrementOrArray); 16845 }; 16846 }, _getLabelAtDirection = function _getLabelAtDirection2(timeline) { 16847 return function(value, st) { 16848 return _snapDirectional(_getLabelRatioArray(timeline))(value, st.direction); 16849 }; 16850 }, _multiListener = function _multiListener2(func, element, types, callback) { 16851 return types.split(",").forEach(function(type) { 16852 return func(element, type, callback); 16853 }); 16854 }, _addListener = function _addListener2(element, type, func, nonPassive, capture) { 16855 return element.addEventListener(type, func, { 16856 passive: !nonPassive, 16857 capture: !!capture 16858 }); 16859 }, _removeListener = function _removeListener2(element, type, func, capture) { 16860 return element.removeEventListener(type, func, !!capture); 16861 }, _wheelListener = function _wheelListener2(func, el, scrollFunc) { 16862 scrollFunc = scrollFunc && scrollFunc.wheelHandler; 16863 if (scrollFunc) { 16864 func(el, "wheel", scrollFunc); 16865 func(el, "touchmove", scrollFunc); 16866 } 16867 }, _markerDefaults = { 16868 startColor: "green", 16869 endColor: "red", 16870 indent: 0, 16871 fontSize: "16px", 16872 fontWeight: "normal" 16873 }, _defaults = { 16874 toggleActions: "play", 16875 anticipatePin: 0 16876 }, _keywords = { 16877 top: 0, 16878 left: 0, 16879 center: 0.5, 16880 bottom: 1, 16881 right: 1 16882 }, _offsetToPx = function _offsetToPx2(value, size) { 16883 if (_isString(value)) { 16884 var eqIndex = value.indexOf("="), relative = ~eqIndex ? +(value.charAt(eqIndex - 1) + 1) * parseFloat(value.substr(eqIndex + 1)) : 0; 16885 if (~eqIndex) { 16886 value.indexOf("%") > eqIndex && (relative *= size / 100); 16887 value = value.substr(0, eqIndex - 1); 16888 } 16889 value = relative + (value in _keywords ? _keywords[value] * size : ~value.indexOf("%") ? parseFloat(value) * size / 100 : parseFloat(value) || 0); 16890 } 16891 return value; 16892 }, _createMarker = function _createMarker2(type, name, container, direction, _ref4, offset, matchWidthEl, containerAnimation) { 16893 var startColor = _ref4.startColor, endColor = _ref4.endColor, fontSize = _ref4.fontSize, indent = _ref4.indent, fontWeight = _ref4.fontWeight; 16894 var e = _doc.createElement("div"), useFixedPosition = _isViewport(container) || _getProxyProp(container, "pinType") === "fixed", isScroller = type.indexOf("scroller") !== -1, parent = useFixedPosition ? _body : container, isStart = type.indexOf("start") !== -1, color2 = isStart ? startColor : endColor, css = "border-color:" + color2 + ";font-size:" + fontSize + ";color:" + color2 + ";font-weight:" + fontWeight + ";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;"; 16895 css += "position:" + ((isScroller || containerAnimation) && useFixedPosition ? "fixed;" : "absolute;"); 16896 (isScroller || containerAnimation || !useFixedPosition) && (css += (direction === _vertical ? _right : _bottom) + ":" + (offset + parseFloat(indent)) + "px;"); 16897 matchWidthEl && (css += "box-sizing:border-box;text-align:left;
vendor: 15,246 bytes, lines 16897-17231
16897width:" + matchWidthEl.offsetWidth + "px;"); 16898 e._isStart = isStart; 16899 e.setAttribute("class", "gsap-marker-" + type + (name ? " marker-" + name : "")); 16900 e.style.cssText = css; 16901 e.innerText = name || name === 0 ? type + "-" + name : type; 16902 parent.children[0] ? parent.insertBefore(e, parent.children[0]) : parent.appendChild(e); 16903 e._offset = e["offset" + direction.op.d2]; 16904 _positionMarker(e, 0, direction, isStart); 16905 return e; 16906 }, _positionMarker = function _positionMarker2(marker, start, direction, flipped) { 16907 var vars = { 16908 display: "block" 16909 }, side = direction[flipped ? "os2" : "p2"], oppositeSide = direction[flipped ? "p2" : "os2"]; 16910 marker._isFlipped = flipped; 16911 vars[direction.a + "Percent"] = flipped ? -100 : 0; 16912 vars[direction.a] = flipped ? "1px" : 0; 16913 vars["border" + side + _Width] = 1; 16914 vars["border" + oppositeSide + _Width] = 0; 16915 vars[direction.p] = start + "px"; 16916 gsap.set(marker, vars); 16917 }, _triggers = [], _ids = {}, _rafID, _sync = function _sync2() { 16918 return _getTime() - _lastScrollTime > 34 && (_rafID || (_rafID = requestAnimationFrame(_updateAll))); 16919 }, _onScroll = function _onScroll2() { 16920 if (!_normalizer || !_normalizer.isPressed || _normalizer.startX > _body.clientWidth) { 16921 _scrollers.cache++; 16922 if (_normalizer) { 16923 _rafID || (_rafID = requestAnimationFrame(_updateAll)); 16924 } else { 16925 _updateAll(); 16926 } 16927 _lastScrollTime || _dispatch("scrollStart"); 16928 _lastScrollTime = _getTime(); 16929 } 16930 }, _setBaseDimensions = function _setBaseDimensions2() { 16931 _baseScreenWidth = _win.innerWidth; 16932 _baseScreenHeight = _win.innerHeight; 16933 }, _onResize = function _onResize2() { 16934 _scrollers.cache++; 16935 !_refreshing && !_ignoreResize && !_doc.fullscreenElement && !_doc.webkitFullscreenElement && (!_ignoreMobileResize || _baseScreenWidth !== _win.innerWidth || Math.abs(_win.innerHeight - _baseScreenHeight) > _win.innerHeight * 0.25) && _resizeDelay.restart(true); 16936 }, _listeners = {}, _emptyArray = [], _softRefresh = function _softRefresh2() { 16937 return _removeListener(ScrollTrigger, "scrollEnd", _softRefresh2) || _refreshAll(true); 16938 }, _dispatch = function _dispatch2(type) { 16939 return _listeners[type] && _listeners[type].map(function(f) { 16940 return f(); 16941 }) || _emptyArray; 16942 }, _savedStyles = [], _revertRecorded = function _revertRecorded2(media) { 16943 for (var i2 = 0; i2 < _savedStyles.length; i2 += 5) { 16944 if (!media || _savedStyles[i2 + 4] && _savedStyles[i2 + 4].query === media) { 16945 _savedStyles[i2].style.cssText = _savedStyles[i2 + 1]; 16946 _savedStyles[i2].getBBox && _savedStyles[i2].setAttribute("transform", _savedStyles[i2 + 2] || ""); 16947 _savedStyles[i2 + 3].uncache = 1; 16948 } 16949 } 16950 }, _revertAll = function _revertAll2(kill, media) { 16951 var trigger; 16952 for (_i = 0; _i < _triggers.length; _i++) { 16953 trigger = _triggers[_i]; 16954 if (trigger && (!media || trigger._ctx === media)) { 16955 if (kill) { 16956 trigger.kill(1); 16957 } else { 16958 trigger.revert(true, true); 16959 } 16960 } 16961 } 16962 _isReverted = true; 16963 media && _revertRecorded(media); 16964 media || _dispatch("revert"); 16965 }, _clearScrollMemory = function _clearScrollMemory2(scrollRestoration, force) { 16966 _scrollers.cache++; 16967 (force || !_refreshingAll) && _scrollers.forEach(function(obj) { 16968 return _isFunction(obj) && obj.cacheID++ && (obj.rec = 0); 16969 }); 16970 _isString(scrollRestoration) && (_win.history.scrollRestoration = _scrollRestoration = scrollRestoration); 16971 }, _refreshingAll, _refreshID = 0, _queueRefreshID, _queueRefreshAll = function _queueRefreshAll2() { 16972 if (_queueRefreshID !== _refreshID) { 16973 var id = _queueRefreshID = _refreshID; 16974 requestAnimationFrame(function() { 16975 return id === _refreshID && _refreshAll(true); 16976 }); 16977 } 16978 }, _refresh100vh = function _refresh100vh2() { 16979 _body.appendChild(_div100vh); 16980 _100vh = !_normalizer && _div100vh.offsetHeight || _win.innerHeight; 16981 _body.removeChild(_div100vh); 16982 }, _hideAllMarkers = function _hideAllMarkers2(hide) { 16983 return _toArray(".gsap-marker-start, .gsap-marker-end, .gsap-marker-scroller-start, .gsap-marker-scroller-end").forEach(function(el) { 16984 return el.style.display = hide ? "none" : "block"; 16985 }); 16986 }, _refreshAll = function _refreshAll2(force, skipRevert) { 16987 if (_lastScrollTime && !force && !_isReverted) { 16988 _addListener(ScrollTrigger, "scrollEnd", _softRefresh); 16989 return; 16990 } 16991 _refresh100vh(); 16992 _refreshingAll = ScrollTrigger.isRefreshing = true; 16993 _scrollers.forEach(function(obj) { 16994 return _isFunction(obj) && ++obj.cacheID && (obj.rec = obj()); 16995 }); 16996 var refreshInits = _dispatch("refreshInit"); 16997 _sort && ScrollTrigger.sort(); 16998 skipRevert || _revertAll(); 16999 _scrollers.forEach(function(obj) { 17000 if (_isFunction(obj)) { 17001 obj.smooth && (obj.target.style.scrollBehavior = "auto"); 17002 obj(0); 17003 } 17004 }); 17005 _triggers.slice(0).forEach(function(t2) { 17006 return t2.refresh(); 17007 }); 17008 _isReverted = false; 17009 _triggers.forEach(function(t2) { 17010 if (t2._subPinOffset && t2.pin) { 17011 var prop = t2.vars.horizontal ? "offsetWidth" : "offsetHeight", original = t2.pin[prop]; 17012 t2.revert(true, 1); 17013 t2.adjustPinSpacing(t2.pin[prop] - original); 17014 t2.refresh(); 17015 } 17016 }); 17017 _clampingMax = 1; 17018 _hideAllMarkers(true); 17019 _triggers.forEach(function(t2) { 17020 var max = _maxScroll(t2.scroller, t2._dir), endClamp = t2.vars.end === "max" || t2._endClamp && t2.end > max, startClamp = t2._startClamp && t2.start >= max; 17021 (endClamp || startClamp) && t2.setPositions(startClamp ? max - 1 : t2.start, endClamp ? Math.max(startClamp ? max : t2.start + 1, max) : t2.end, true); 17022 }); 17023 _hideAllMarkers(false); 17024 _clampingMax = 0; 17025 refreshInits.forEach(function(result) { 17026 return result && result.render && result.render(-1); 17027 }); 17028 _scrollers.forEach(function(obj) { 17029 if (_isFunction(obj)) { 17030 obj.smooth && requestAnimationFrame(function() { 17031 return obj.target.style.scrollBehavior = "smooth"; 17032 }); 17033 obj.rec && obj(obj.rec); 17034 } 17035 }); 17036 _clearScrollMemory(_scrollRestoration, 1); 17037 _resizeDelay.pause(); 17038 _refreshID++; 17039 _refreshingAll = 2; 17040 _updateAll(2); 17041 _triggers.forEach(function(t2) { 17042 return _isFunction(t2.vars.onRefresh) && t2.vars.onRefresh(t2); 17043 }); 17044 _refreshingAll = ScrollTrigger.isRefreshing = false; 17045 _dispatch("refresh"); 17046 }, _lastScroll = 0, _direction = 1, _primary, _updateAll = function _updateAll2(force) { 17047 if (force === 2 || !_refreshingAll && !_isReverted) { 17048 ScrollTrigger.isUpdating = true; 17049 _primary && _primary.update(0); 17050 var l = _triggers.length, time = _getTime(), recordVelocity = time - _time1 >= 50, scroll = l && _triggers[0].scroll(); 17051 _direction = _lastScroll > scroll ? -1 : 1; 17052 _refreshingAll || (_lastScroll = scroll); 17053 if (recordVelocity) { 17054 if (_lastScrollTime && !_pointerIsDown && time - _lastScrollTime > 200) { 17055 _lastScrollTime = 0; 17056 _dispatch("scrollEnd"); 17057 } 17058 _time2 = _time1; 17059 _time1 = time; 17060 } 17061 if (_direction < 0) { 17062 _i = l; 17063 while (_i-- > 0) { 17064 _triggers[_i] && _triggers[_i].update(0, recordVelocity); 17065 } 17066 _direction = 1; 17067 } else { 17068 for (_i = 0; _i < l; _i++) { 17069 _triggers[_i] && _triggers[_i].update(0, recordVelocity); 17070 } 17071 } 17072 ScrollTrigger.isUpdating = false; 17073 } 17074 _rafID = 0; 17075 }, _propNamesToCopy = [_left, _top, _bottom, _right, _margin + _Bottom, _margin + _Right, _margin + _Top, _margin + _Left, "display", "flexShrink", "float", "zIndex", "gridColumnStart", "gridColumnEnd", "gridRowStart", "gridRowEnd", "gridArea", "justifySelf", "alignSelf", "placeSelf", "order"], _stateProps = _propNamesToCopy.concat([_width, _height, "boxSizing", "max" + _Width, "max" + _Height, "position", _margin, _padding, _padding + _Top, _padding + _Right, _padding + _Bottom, _padding + _Left]), _swapPinOut = function _swapPinOut2(pin, spacer, state) { 17076 _setState(state); 17077 var cache = pin._gsap; 17078 if (cache.spacerIsNative) { 17079 _setState(cache.spacerState); 17080 } else if (pin._gsap.swappedIn) { 17081 var parent = spacer.parentNode; 17082 if (parent) { 17083 parent.insertBefore(pin, spacer); 17084 parent.removeChild(spacer); 17085 } 17086 } 17087 pin._gsap.swappedIn = false; 17088 }, _swapPinIn = function _swapPinIn2(pin, spacer, cs, spacerState) { 17089 if (!pin._gsap.swappedIn) { 17090 var i2 = _propNamesToCopy.length, spacerStyle = spacer.style, pinStyle = pin.style, p; 17091 while (i2--) { 17092 p = _propNamesToCopy[i2]; 17093 spacerStyle[p] = cs[p]; 17094 } 17095 spacerStyle.position = cs.position === "absolute" ? "absolute" : "relative"; 17096 cs.display === "inline" && (spacerStyle.display = "inline-block"); 17097 pinStyle[_bottom] = pinStyle[_right] = "auto"; 17098 spacerStyle.flexBasis = cs.flexBasis || "auto"; 17099 spacerStyle.overflow = "visible"; 17100 spacerStyle.boxSizing = "border-box"; 17101 spacerStyle[_width] = _getSize(pin, _horizontal) + _px; 17102 spacerStyle[_height] = _getSize(pin, _vertical) + _px; 17103 spacerStyle[_padding] = pinStyle[_margin] = pinStyle[_top] = pinStyle[_left] = "0"; 17104 _setState(spacerState); 17105 pinStyle[_width] = pinStyle["max" + _Width] = cs[_width]; 17106 pinStyle[_height] = pinStyle["max" + _Height] = cs[_height]; 17107 pinStyle[_padding] = cs[_padding]; 17108 if (pin.parentNode !== spacer) { 17109 pin.parentNode.insertBefore(spacer, pin); 17110 spacer.appendChild(pin); 17111 } 17112 pin._gsap.swappedIn = true; 17113 } 17114 }, _capsExp = /([A-Z])/g, _setState = function _setState2(state) { 17115 if (state) { 17116 var style = state.t.style, l = state.length, i2 = 0, p, value; 17117 (state.t._gsap || gsap.core.getCache(state.t)).uncache = 1; 17118 for (; i2 < l; i2 += 2) { 17119 value = state[i2 + 1]; 17120 p = state[i2]; 17121 if (value) { 17122 style[p] = value; 17123 } else if (style[p]) { 17124 style.removeProperty(p.replace(_capsExp, "-$1").toLowerCase()); 17125 } 17126 } 17127 } 17128 }, _getState = function _getState2(element) { 17129 var l = _stateProps.length, style = element.style, state = [], i2 = 0; 17130 for (; i2 < l; i2++) { 17131 state.push(_stateProps[i2], style[_stateProps[i2]]); 17132 } 17133 state.t = element; 17134 return state; 17135 }, _copyState = function _copyState2(state, override, omitOffsets) { 17136 var result = [], l = state.length, i2 = omitOffsets ? 8 : 0, p; 17137 for (; i2 < l; i2 += 2) { 17138 p = state[i2]; 17139 result.push(p, p in override ? override[p] : state[i2 + 1]); 17140 } 17141 result.t = state.t; 17142 return result; 17143 }, _winOffsets = { 17144 left: 0, 17145 top: 0 17146 }, _parsePosition = function _parsePosition2(value, trigger, scrollerSize, direction, scroll, marker, markerScroller, self2, scrollerBounds, borderWidth, useFixedPosition, scrollerMax, containerAnimation, clampZeroProp) { 17147 _isFunction(value) && (value = value(self2)); 17148 if (_isString(value) && value.substr(0, 3) === "max") { 17149 value = scrollerMax + (value.charAt(4) === "=" ? _offsetToPx("0" + value.substr(3), scrollerSize) : 0); 17150 } 17151 var time = containerAnimation ? containerAnimation.time() : 0, p1, p2, element; 17152 containerAnimation && containerAnimation.seek(0); 17153 isNaN(value) || (value = +value); 17154 if (!_isNumber(value)) { 17155 _isFunction(trigger) && (trigger = trigger(self2)); 17156 var offsets = (value || "0").split(" "), bounds, localOffset, globalOffset, display; 17157 element = _getTarget(trigger, self2) || _body; 17158 bounds = _getBounds(element) || {}; 17159 if ((!bounds || !bounds.left && !bounds.top) && _getComputedStyle(element).display === "none") { 17160 display = element.style.display; 17161 element.style.display = "block"; 17162 bounds = _getBounds(element); 17163 display ? element.style.display = display : element.style.removeProperty("display"); 17164 } 17165 localOffset = _offsetToPx(offsets[0], bounds[direction.d]); 17166 globalOffset = _offsetToPx(offsets[1] || "0", scrollerSize); 17167 value = bounds[direction.p] - scrollerBounds[direction.p] - borderWidth + localOffset + scroll - globalOffset; 17168 markerScroller && _positionMarker(markerScroller, globalOffset, direction, scrollerSize - globalOffset < 20 || markerScroller._isStart && globalOffset > 20); 17169 scrollerSize -= scrollerSize - globalOffset; 17170 } else { 17171 containerAnimation && (value = gsap.utils.mapRange(containerAnimation.scrollTrigger.start, containerAnimation.scrollTrigger.end, 0, scrollerMax, value)); 17172 markerScroller && _positionMarker(markerScroller, scrollerSize, direction, true); 17173 } 17174 if (clampZeroProp) { 17175 self2[clampZeroProp] = value || -1e-3; 17176 value < 0 && (value = 0); 17177 } 17178 if (marker) { 17179 var position = value + scrollerSize, isStart = marker._isStart; 17180 p1 = "scroll" + direction.d2; 17181 _positionMarker(marker, position, direction, isStart && position > 20 || !isStart && (useFixedPosition ? Math.max(_body[p1], _docEl[p1]) : marker.parentNode[p1]) <= position + 1); 17182 if (useFixedPosition) { 17183 scrollerBounds = _getBounds(markerScroller); 17184 useFixedPosition && (marker.style[direction.op.p] = scrollerBounds[direction.op.p] - direction.op.m - marker._offset + _px); 17185 } 17186 } 17187 if (containerAnimation && element) { 17188 p1 = _getBounds(element); 17189 containerAnimation.seek(scrollerMax); 17190 p2 = _getBounds(element); 17191 containerAnimation._caScrollDist = p1[direction.p] - p2[direction.p]; 17192 value = value / containerAnimation._caScrollDist * scrollerMax; 17193 } 17194 containerAnimation && containerAnimation.seek(time); 17195 return containerAnimation ? value : Math.round(value); 17196 }, _prefixExp = /(webkit|moz|length|cssText|inset)/i, _reparent = function _reparent2(element, parent, top, left) { 17197 if (element.parentNode !== parent) { 17198 var style = element.style, p, cs; 17199 if (parent === _body) { 17200 element._stOrig = style.cssText; 17201 cs = _getComputedStyle(element); 17202 for (p in cs) { 17203 if (!+p && !_prefixExp.test(p) && cs[p] && typeof style[p] === "string" && p !== "0") { 17204 style[p] = cs[p]; 17205 } 17206 } 17207 style.top = top; 17208 style.left = left; 17209 } else { 17210 style.cssText = element._stOrig; 17211 } 17212 gsap.core.getCache(element).uncache = 1; 17213 parent.appendChild(element); 17214 } 17215 }, _interruptionTracker = function _interruptionTracker2(getValueFunc, initialValue, onInterrupt) { 17216 var last1 = initialValue, last2 = last1; 17217 return function(value) { 17218 var current = Math.round(getValueFunc()); 17219 if (current !== last1 && current !== last2 && Math.abs(current - last1) > 3 && Math.abs(current - last2) > 3) { 17220 value = current; 17221 onInterrupt && onInterrupt(); 17222 } 17223 last2 = last1; 17224 last1 = value; 17225 return value; 17226 }; 17227 }, _shiftMarker = function _shiftMarker2(marker, direction, value) { 17228 var vars = {}; 17229 vars[direction.p] = "+=" + value; 17230 gsap.set(marker, vars); 17231 }, _getTweenCreator = function _getTweenCreator2(scroller, direction) {
vendor: 4,394 bytes, lines 17232-17287
17232 var getScroll = _getScrollFunc(scroller, direction), prop = "_scroll" + direction.p2, getTween = function getTween2(scrollTo, vars, initialValue, change1, change2) { 17233 var tween = getTween2.tween, onComplete = vars.onComplete, modifiers = {}; 17234 initialValue = initialValue || getScroll(); 17235 var checkForInterruption = _interruptionTracker(getScroll, initialValue, function() { 17236 tween.kill(); 17237 getTween2.tween = 0; 17238 }); 17239 change2 = change1 && change2 || 0; 17240 change1 = change1 || scrollTo - initialValue; 17241 tween && tween.kill(); 17242 vars[prop] = scrollTo; 17243 vars.inherit = false; 17244 vars.modifiers = modifiers; 17245 modifiers[prop] = function() { 17246 return checkForInterruption(initialValue + change1 * tween.ratio + change2 * tween.ratio * tween.ratio); 17247 }; 17248 vars.onUpdate = function() { 17249 _scrollers.cache++; 17250 getTween2.tween && _updateAll(); 17251 }; 17252 vars.onComplete = function() { 17253 getTween2.tween = 0; 17254 onComplete && onComplete.call(tween); 17255 }; 17256 tween = getTween2.tween = gsap.to(scroller, vars); 17257 return tween; 17258 }; 17259 scroller[prop] = getScroll; 17260 getScroll.wheelHandler = function() { 17261 return getTween.tween && getTween.tween.kill() && (getTween.tween = 0); 17262 }; 17263 _addListener(scroller, "wheel", getScroll.wheelHandler); 17264 ScrollTrigger.isTouch && _addListener(scroller, "touchmove", getScroll.wheelHandler); 17265 return getTween; 17266 }; 17267 var ScrollTrigger = /* @__PURE__ */ function() { 17268 function ScrollTrigger2(vars, animation) { 17269 _coreInitted || ScrollTrigger2.register(gsap) || console.warn("Please gsap.registerPlugin(ScrollTrigger)"); 17270 _context(this); 17271 this.init(vars, animation); 17272 } 17273 var _proto = ScrollTrigger2.prototype; 17274 _proto.init = function init(vars, animation) { 17275 this.progress = this.start = 0; 17276 this.vars && this.kill(true, true); 17277 if (!_enabled) { 17278 this.update = this.refresh = this.kill = _passThrough; 17279 return; 17280 } 17281 vars = _setDefaults(_isString(vars) || _isNumber(vars) || vars.nodeType ? { 17282 trigger: vars 17283 } : vars, _defaults); 17284 var _vars = vars, onUpdate = _vars.onUpdate, toggleClass = _vars.toggleClass, id = _vars.id, onToggle = _vars.onToggle, onRefresh = _vars.onRefresh, scrub = _vars.scrub, trigger = _vars.trigger, pin = _vars.pin, pinSpacing = _vars.pinSpacing, invalidateOnRefresh = _vars.invalidateOnRefresh, anticipatePin = _vars.anticipatePin, onScrubComplete = _vars.onScrubComplete, onSnapComplete = _vars.onSnapComplete, once = _vars.once, snap2 = _vars.snap, pinReparent = _vars.pinReparent, pinSpacer = _vars.pinSpacer, containerAnimation = _vars.containerAnimation, fastScrollEnd = _vars.fastScrollEnd, preventOverlaps = _vars.preventOverlaps, direction = vars.horizontal || vars.containerAnimation && vars.horizontal !== false ? _horizontal : _vertical, isToggle = !scrub && scrub !== 0, scroller = _getTarget(vars.scroller || _win), scrollerCache = gsap.core.getCache(scroller), isViewport = _isViewport(scroller), useFixedPosition = ("pinType" in vars ? vars.pinType : _getProxyProp(scroller, "pinType") || isViewport && "fixed") === "fixed", callbacks = [vars.onEnter, vars.onLeave, vars.onEnterBack, vars.onLeaveBack], toggleActions = isToggle && vars.toggleActions.split(" "), markers = "markers" in vars ? vars.markers : _defaults.markers, borderWidth = isViewport ? 0 : parseFloat(_getComputedStyle(scroller)["border" + direction.p2 + _Width]) || 0, self2 = this, onRefreshInit = vars.onRefreshInit && function() { 17285 return vars.onRefreshInit(self2); 17286 }, getScrollerSize = _getSizeFunc(scroller, isViewport, direction), getScrollerOffsets = _getOffsetsFunc(scroller, isViewport), lastSnap = 0, lastRefresh = 0, prevProgress = 0, scrollFunc = _getScrollFunc(scroller, direction), tweenTo, pinCache, snapFunc, scroll1, scroll2, start, end, markerStart, markerEnd, markerStartTrigger, markerEndTrigger, markerVars, executingOnRefresh, change, pinOriginalState, pinActiveState, pinState, spacer, offset, pinGetter, pinSetter, pinStart, pinChange, spacingStart, spacerState, markerStartSetter, pinMoves, markerEndSetter, cs, snap1, snap22, scrubTween, scrubSmooth, snapDurClamp, snapDelayedCall, prevScroll, prevAnimProgress, caMarkerSetter, customRevertReturn; 17287 self2._startClamp = self2._endClamp = false;
vendor: 4,506 bytes, lines 17288-17369
17288 self2._dir = direction; 17289 anticipatePin *= 45; 17290 self2.scroller = scroller; 17291 self2.scroll = containerAnimation ? containerAnimation.time.bind(containerAnimation) : scrollFunc; 17292 scroll1 = scrollFunc(); 17293 self2.vars = vars; 17294 animation = animation || vars.animation; 17295 if ("refreshPriority" in vars) { 17296 _sort = 1; 17297 vars.refreshPriority === -9999 && (_primary = self2); 17298 } 17299 scrollerCache.tweenScroll = scrollerCache.tweenScroll || { 17300 top: _getTweenCreator(scroller, _vertical), 17301 left: _getTweenCreator(scroller, _horizontal) 17302 }; 17303 self2.tweenTo = tweenTo = scrollerCache.tweenScroll[direction.p]; 17304 self2.scrubDuration = function(value) { 17305 scrubSmooth = _isNumber(value) && value; 17306 if (!scrubSmooth) { 17307 scrubTween && scrubTween.progress(1).kill(); 17308 scrubTween = 0; 17309 } else { 17310 scrubTween ? scrubTween.duration(value) : scrubTween = gsap.to(animation, { 17311 ease: "expo", 17312 totalProgress: "+=0", 17313 inherit: false, 17314 duration: scrubSmooth, 17315 paused: true, 17316 onComplete: function onComplete() { 17317 return onScrubComplete && onScrubComplete(self2); 17318 } 17319 }); 17320 } 17321 }; 17322 if (animation) { 17323 animation.vars.lazy = false; 17324 animation._initted && !self2.isReverted || animation.vars.immediateRender !== false && vars.immediateRender !== false && animation.duration() && animation.render(0, true, true); 17325 self2.animation = animation.pause(); 17326 animation.scrollTrigger = self2; 17327 self2.scrubDuration(scrub); 17328 snap1 = 0; 17329 id || (id = animation.vars.id); 17330 } 17331 if (snap2) { 17332 if (!_isObject(snap2) || snap2.push) { 17333 snap2 = { 17334 snapTo: snap2 17335 }; 17336 } 17337 "scrollBehavior" in _body.style && gsap.set(isViewport ? [_body, _docEl] : scroller, { 17338 scrollBehavior: "auto" 17339 }); 17340 _scrollers.forEach(function(o) { 17341 return _isFunction(o) && o.target === (isViewport ? _doc.scrollingElement || _docEl : scroller) && (o.smooth = false); 17342 }); 17343 snapFunc = _isFunction(snap2.snapTo) ? snap2.snapTo : snap2.snapTo === "labels" ? _getClosestLabel(animation) : snap2.snapTo === "labelsDirectional" ? _getLabelAtDirection(animation) : snap2.directional !== false ? function(value, st) { 17344 return _snapDirectional(snap2.snapTo)(value, _getTime() - lastRefresh < 500 ? 0 : st.direction); 17345 } : gsap.utils.snap(snap2.snapTo); 17346 snapDurClamp = snap2.duration || { 17347 min: 0.1, 17348 max: 2 17349 }; 17350 snapDurClamp = _isObject(snapDurClamp) ? _clamp(snapDurClamp.min, snapDurClamp.max) : _clamp(snapDurClamp, snapDurClamp); 17351 snapDelayedCall = gsap.delayedCall(snap2.delay || scrubSmooth / 2 || 0.1, function() { 17352 var scroll = scrollFunc(), refreshedRecently = _getTime() - lastRefresh < 500, tween = tweenTo.tween; 17353 if ((refreshedRecently || Math.abs(self2.getVelocity()) < 10) && !tween && !_pointerIsDown && lastSnap !== scroll) { 17354 var progress = (scroll - start) / change, totalProgress = animation && !isToggle ? animation.totalProgress() : progress, velocity = refreshedRecently ? 0 : (totalProgress - snap22) / (_getTime() - _time2) * 1e3 || 0, change1 = gsap.utils.clamp(-progress, 1 - progress, _abs(velocity / 2) * velocity / 0.185), naturalEnd = progress + (snap2.inertia === false ? 0 : change1), endValue, endScroll, _snap = snap2, onStart = _snap.onStart, _onInterrupt = _snap.onInterrupt, _onComplete = _snap.onComplete; 17355 endValue = snapFunc(naturalEnd, self2); 17356 _isNumber(endValue) || (endValue = naturalEnd); 17357 endScroll = Math.round(start + endValue * change); 17358 if (scroll <= end && scroll >= start && endScroll !== scroll) { 17359 if (tween && !tween._initted && tween.data <= _abs(endScroll - scroll)) { 17360 return; 17361 } 17362 if (snap2.inertia === false) { 17363 change1 = endValue - progress; 17364 } 17365 tweenTo(endScroll, { 17366 duration: snapDurClamp(_abs(Math.max(_abs(naturalEnd - totalProgress), _abs(endValue - totalProgress)) * 0.185 / velocity / 0.05 || 0)), 17367 ease: snap2.ease || "power3", 17368 data: _abs(endScroll - scroll), 17369 // record the distance so that if another snap tween occurs (conflict) we
vendor: 4,212 bytes, lines 17369-17447
17369can prioritize the closest snap. 17370 onInterrupt: function onInterrupt() { 17371 return snapDelayedCall.restart(true) && _onInterrupt && _onInterrupt(self2); 17372 }, 17373 onComplete: function onComplete() { 17374 self2.update(); 17375 lastSnap = scrollFunc(); 17376 if (animation) { 17377 scrubTween ? scrubTween.resetTo("totalProgress", endValue, animation._tTime / animation._tDur) : animation.progress(endValue); 17378 } 17379 snap1 = snap22 = animation && !isToggle ? animation.totalProgress() : self2.progress; 17380 onSnapComplete && onSnapComplete(self2); 17381 _onComplete && _onComplete(self2); 17382 } 17383 }, scroll, change1 * change, endScroll - scroll - change1 * change); 17384 onStart && onStart(self2, tweenTo.tween); 17385 } 17386 } else if (self2.isActive && lastSnap !== scroll) { 17387 snapDelayedCall.restart(true); 17388 } 17389 }).pause(); 17390 } 17391 id && (_ids[id] = self2); 17392 trigger = self2.trigger = _getTarget(trigger || pin !== true && pin); 17393 customRevertReturn = trigger && trigger._gsap && trigger._gsap.stRevert; 17394 customRevertReturn && (customRevertReturn = customRevertReturn(self2)); 17395 pin = pin === true ? trigger : _getTarget(pin); 17396 _isString(toggleClass) && (toggleClass = { 17397 targets: trigger, 17398 className: toggleClass 17399 }); 17400 if (pin) { 17401 pinSpacing === false || pinSpacing === _margin || (pinSpacing = !pinSpacing && pin.parentNode && pin.parentNode.style && _getComputedStyle(pin.parentNode).display === "flex" ? false : _padding); 17402 self2.pin = pin; 17403 pinCache = gsap.core.getCache(pin); 17404 if (!pinCache.spacer) { 17405 if (pinSpacer) { 17406 pinSpacer = _getTarget(pinSpacer); 17407 pinSpacer && !pinSpacer.nodeType && (pinSpacer = pinSpacer.current || pinSpacer.nativeElement); 17408 pinCache.spacerIsNative = !!pinSpacer; 17409 pinSpacer && (pinCache.spacerState = _getState(pinSpacer)); 17410 } 17411 pinCache.spacer = spacer = pinSpacer || _doc.createElement("div"); 17412 spacer.classList.add("pin-spacer"); 17413 id && spacer.classList.add("pin-spacer-" + id); 17414 pinCache.pinState = pinOriginalState = _getState(pin); 17415 } else { 17416 pinOriginalState = pinCache.pinState; 17417 } 17418 vars.force3D !== false && gsap.set(pin, { 17419 force3D: true 17420 }); 17421 self2.spacer = spacer = pinCache.spacer; 17422 cs = _getComputedStyle(pin); 17423 spacingStart = cs[pinSpacing + direction.os2]; 17424 pinGetter = gsap.getProperty(pin); 17425 pinSetter = gsap.quickSetter(pin, direction.a, _px); 17426 _swapPinIn(pin, spacer, cs); 17427 pinState = _getState(pin); 17428 } 17429 if (markers) { 17430 markerVars = _isObject(markers) ? _setDefaults(markers, _markerDefaults) : _markerDefaults; 17431 markerStartTrigger = _createMarker("scroller-start", id, scroller, direction, markerVars, 0); 17432 markerEndTrigger = _createMarker("scroller-end", id, scroller, direction, markerVars, 0, markerStartTrigger); 17433 offset = markerStartTrigger["offset" + direction.op.d2]; 17434 var content = _getTarget(_getProxyProp(scroller, "content") || scroller); 17435 markerStart = this.markerStart = _createMarker("start", id, content, direction, markerVars, offset, 0, containerAnimation); 17436 markerEnd = this.markerEnd = _createMarker("end", id, content, direction, markerVars, offset, 0, containerAnimation); 17437 containerAnimation && (caMarkerSetter = gsap.quickSetter([markerStart, markerEnd], direction.a, _px)); 17438 if (!useFixedPosition && !(_proxies.length && _getProxyProp(scroller, "fixedMarkers") === true)) { 17439 _makePositionable(isViewport ? _body : scroller); 17440 gsap.set([markerStartTrigger, markerEndTrigger], { 17441 force3D: true 17442 }); 17443 markerStartSetter = gsap.quickSetter(markerStartTrigger, direction.a, _px); 17444 markerEndSetter = gsap.quickSetter(markerEndTrigger, direction.a, _px); 17445 } 17446 } 17447 if (containerAnimation) {
vendor: 5,707 bytes, lines 17448-17550
17448 var oldOnUpdate = containerAnimation.vars.onUpdate, oldParams = containerAnimation.vars.onUpdateParams; 17449 containerAnimation.eventCallback("onUpdate", function() { 17450 self2.update(0, 0, 1); 17451 oldOnUpdate && oldOnUpdate.apply(containerAnimation, oldParams || []); 17452 }); 17453 } 17454 self2.previous = function() { 17455 return _triggers[_triggers.indexOf(self2) - 1]; 17456 }; 17457 self2.next = function() { 17458 return _triggers[_triggers.indexOf(self2) + 1]; 17459 }; 17460 self2.revert = function(revert, temp) { 17461 if (!temp) { 17462 return self2.kill(true); 17463 } 17464 var r = revert !== false || !self2.enabled, prevRefreshing = _refreshing; 17465 if (r !== self2.isReverted) { 17466 if (r) { 17467 prevScroll = Math.max(scrollFunc(), self2.scroll.rec || 0); 17468 prevProgress = self2.progress; 17469 prevAnimProgress = animation && animation.progress(); 17470 } 17471 markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function(m) { 17472 return m.style.display = r ? "none" : "block"; 17473 }); 17474 if (r) { 17475 _refreshing = self2; 17476 self2.update(r); 17477 } 17478 if (pin && (!pinReparent || !self2.isActive)) { 17479 if (r) { 17480 _swapPinOut(pin, spacer, pinOriginalState); 17481 } else { 17482 _swapPinIn(pin, spacer, _getComputedStyle(pin), spacerState); 17483 } 17484 } 17485 r || self2.update(r); 17486 _refreshing = prevRefreshing; 17487 self2.isReverted = r; 17488 } 17489 }; 17490 self2.refresh = function(soft, force, position, pinOffset) { 17491 if ((_refreshing || !self2.enabled) && !force) { 17492 return; 17493 } 17494 if (pin && soft && _lastScrollTime) { 17495 _addListener(ScrollTrigger2, "scrollEnd", _softRefresh); 17496 return; 17497 } 17498 !_refreshingAll && onRefreshInit && onRefreshInit(self2); 17499 _refreshing = self2; 17500 if (tweenTo.tween && !position) { 17501 tweenTo.tween.kill(); 17502 tweenTo.tween = 0; 17503 } 17504 scrubTween && scrubTween.pause(); 17505 invalidateOnRefresh && animation && animation.revert({ 17506 kill: false 17507 }).invalidate(); 17508 self2.isReverted || self2.revert(true, true); 17509 self2._subPinOffset = false; 17510 var size = getScrollerSize(), scrollerBounds = getScrollerOffsets(), max = containerAnimation ? containerAnimation.duration() : _maxScroll(scroller, direction), isFirstRefresh = change <= 0.01, offset2 = 0, otherPinOffset = pinOffset || 0, parsedEnd = _isObject(position) ? position.end : vars.end, parsedEndTrigger = vars.endTrigger || trigger, parsedStart = _isObject(position) ? position.start : vars.start || (vars.start === 0 || !trigger ? 0 : pin ? "0 0" : "0 100%"), pinnedContainer = self2.pinnedContainer = vars.pinnedContainer && _getTarget(vars.pinnedContainer, self2), triggerIndex = trigger && Math.max(0, _triggers.indexOf(self2)) || 0, i2 = triggerIndex, cs2, bounds, scroll, isVertical, override, curTrigger, curPin, oppositeScroll, initted, revertedPins, forcedOverflow, markerStartOffset, markerEndOffset; 17511 if (markers && _isObject(position)) { 17512 markerStartOffset = gsap.getProperty(markerStartTrigger, direction.p); 17513 markerEndOffset = gsap.getProperty(markerEndTrigger, direction.p); 17514 } 17515 while (i2--) { 17516 curTrigger = _triggers[i2]; 17517 curTrigger.end || curTrigger.refresh(0, 1) || (_refreshing = self2); 17518 curPin = curTrigger.pin; 17519 if (curPin && (curPin === trigger || curPin === pin || curPin === pinnedContainer) && !curTrigger.isReverted) { 17520 revertedPins || (revertedPins = []); 17521 revertedPins.unshift(curTrigger); 17522 curTrigger.revert(true, true); 17523 } 17524 if (curTrigger !== _triggers[i2]) { 17525 triggerIndex--; 17526 i2--; 17527 } 17528 } 17529 _isFunction(parsedStart) && (parsedStart = parsedStart(self2)); 17530 parsedStart = _parseClamp(parsedStart, "start", self2); 17531 start = _parsePosition(parsedStart, trigger, size, direction, scrollFunc(), markerStart, markerStartTrigger, self2, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation, self2._startClamp && "_startClamp") || (pin ? -1e-3 : 0); 17532 _isFunction(parsedEnd) && (parsedEnd = parsedEnd(self2)); 17533 if (_isString(parsedEnd) && !parsedEnd.indexOf("+=")) { 17534 if (~parsedEnd.indexOf(" ")) { 17535 parsedEnd = (_isString(parsedStart) ? parsedStart.split(" ")[0] : "") + parsedEnd; 17536 } else { 17537 offset2 = _offsetToPx(parsedEnd.substr(2), size); 17538 parsedEnd = _isString(parsedStart) ? parsedStart : (containerAnimation ? gsap.utils.mapRange(0, containerAnimation.duration(), containerAnimation.scrollTrigger.start, containerAnimation.scrollTrigger.end, start) : start) + offset2; 17539 parsedEndTrigger = trigger; 17540 } 17541 } 17542 parsedEnd = _parseClamp(parsedEnd, "end", self2); 17543 end = Math.max(start, _parsePosition(parsedEnd || (parsedEndTrigger ? "100% 0" : max), parsedEndTrigger, size, direction, scrollFunc() + offset2, markerEnd, markerEndTrigger, self2, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation, self2._endClamp && "_endClamp")) || -1e-3; 17544 offset2 = 0; 17545 i2 = triggerIndex; 17546 while (i2--) { 17547 curTrigger = _triggers[i2]; 17548 curPin = curTrigger.pin; 17549 if (curPin && curTrigger.start - curTrigger._pinPush <= start && !containerAnimation && curTrigger.end > 0) { 17550 cs2 = curTrigger.end - (self2._startClamp ? Math.max(0, curTr
vendor: 33,972 bytes, lines 17550-18256
17550igger.start) : curTrigger.start); 17551 if ((curPin === trigger && curTrigger.start - curTrigger._pinPush < start || curPin === pinnedContainer) && isNaN(parsedStart)) { 17552 offset2 += cs2 * (1 - curTrigger.progress); 17553 } 17554 curPin === pin && (otherPinOffset += cs2); 17555 } 17556 } 17557 start += offset2; 17558 end += offset2; 17559 self2._startClamp && (self2._startClamp += offset2); 17560 if (self2._endClamp && !_refreshingAll) { 17561 self2._endClamp = end || -1e-3; 17562 end = Math.min(end, _maxScroll(scroller, direction)); 17563 } 17564 change = end - start || (start -= 0.01) && 1e-3; 17565 if (isFirstRefresh) { 17566 prevProgress = gsap.utils.clamp(0, 1, gsap.utils.normalize(start, end, prevScroll)); 17567 } 17568 self2._pinPush = otherPinOffset; 17569 if (markerStart && offset2) { 17570 cs2 = {}; 17571 cs2[direction.a] = "+=" + offset2; 17572 pinnedContainer && (cs2[direction.p] = "-=" + scrollFunc()); 17573 gsap.set([markerStart, markerEnd], cs2); 17574 } 17575 if (pin && !(_clampingMax && self2.end >= _maxScroll(scroller, direction))) { 17576 cs2 = _getComputedStyle(pin); 17577 isVertical = direction === _vertical; 17578 scroll = scrollFunc(); 17579 pinStart = parseFloat(pinGetter(direction.a)) + otherPinOffset; 17580 if (!max && end > 1) { 17581 forcedOverflow = (isViewport ? _doc.scrollingElement || _docEl : scroller).style; 17582 forcedOverflow = { 17583 style: forcedOverflow, 17584 value: forcedOverflow["overflow" + direction.a.toUpperCase()] 17585 }; 17586 if (isViewport && _getComputedStyle(_body)["overflow" + direction.a.toUpperCase()] !== "scroll") { 17587 forcedOverflow.style["overflow" + direction.a.toUpperCase()] = "scroll"; 17588 } 17589 } 17590 _swapPinIn(pin, spacer, cs2); 17591 pinState = _getState(pin); 17592 bounds = _getBounds(pin, true); 17593 oppositeScroll = useFixedPosition && _getScrollFunc(scroller, isVertical ? _horizontal : _vertical)(); 17594 if (pinSpacing) { 17595 spacerState = [pinSpacing + direction.os2, change + otherPinOffset + _px]; 17596 spacerState.t = spacer; 17597 i2 = pinSpacing === _padding ? _getSize(pin, direction) + change + otherPinOffset : 0; 17598 if (i2) { 17599 spacerState.push(direction.d, i2 + _px); 17600 spacer.style.flexBasis !== "auto" && (spacer.style.flexBasis = i2 + _px); 17601 } 17602 _setState(spacerState); 17603 if (pinnedContainer) { 17604 _triggers.forEach(function(t2) { 17605 if (t2.pin === pinnedContainer && t2.vars.pinSpacing !== false) { 17606 t2._subPinOffset = true; 17607 } 17608 }); 17609 } 17610 useFixedPosition && scrollFunc(prevScroll); 17611 } else { 17612 i2 = _getSize(pin, direction); 17613 i2 && spacer.style.flexBasis !== "auto" && (spacer.style.flexBasis = i2 + _px); 17614 } 17615 if (useFixedPosition) { 17616 override = { 17617 top: bounds.top + (isVertical ? scroll - start : oppositeScroll) + _px, 17618 left: bounds.left + (isVertical ? oppositeScroll : scroll - start) + _px, 17619 boxSizing: "border-box", 17620 position: "fixed" 17621 }; 17622 override[_width] = override["max" + _Width] = Math.ceil(bounds.width) + _px; 17623 override[_height] = override["max" + _Height] = Math.ceil(bounds.height) + _px; 17624 override[_margin] = override[_margin + _Top] = override[_margin + _Right] = override[_margin + _Bottom] = override[_margin + _Left] = "0"; 17625 override[_padding] = cs2[_padding]; 17626 override[_padding + _Top] = cs2[_padding + _Top]; 17627 override[_padding + _Right] = cs2[_padding + _Right]; 17628 override[_padding + _Bottom] = cs2[_padding + _Bottom]; 17629 override[_padding + _Left] = cs2[_padding + _Left]; 17630 pinActiveState = _copyState(pinOriginalState, override, pinReparent); 17631 _refreshingAll && scrollFunc(0); 17632 } 17633 if (animation) { 17634 initted = animation._initted; 17635 _suppressOverwrites(1); 17636 animation.render(animation.duration(), true, true); 17637 pinChange = pinGetter(direction.a) - pinStart + change + otherPinOffset; 17638 pinMoves = Math.abs(change - pinChange) > 1; 17639 useFixedPosition && pinMoves && pinActiveState.splice(pinActiveState.length - 2, 2); 17640 animation.render(0, true, true); 17641 initted || animation.invalidate(true); 17642 animation.parent || animation.totalTime(animation.totalTime()); 17643 _suppressOverwrites(0); 17644 } else { 17645 pinChange = change; 17646 } 17647 forcedOverflow && (forcedOverflow.value ? forcedOverflow.style["overflow" + direction.a.toUpperCase()] = forcedOverflow.value : forcedOverflow.style.removeProperty("overflow-" + direction.a)); 17648 } else if (trigger && scrollFunc() && !containerAnimation) { 17649 bounds = trigger.parentNode; 17650 while (bounds && bounds !== _body) { 17651 if (bounds._pinOffset) { 17652 start -= bounds._pinOffset; 17653 end -= bounds._pinOffset; 17654 } 17655 bounds = bounds.parentNode; 17656 } 17657 } 17658 revertedPins && revertedPins.forEach(function(t2) { 17659 return t2.revert(false, true); 17660 }); 17661 self2.start = start; 17662 self2.end = end; 17663 scroll1 = scroll2 = _refreshingAll ? prevScroll : scrollFunc(); 17664 if (!containerAnimation && !_refreshingAll) { 17665 scroll1 < prevScroll && scrollFunc(prevScroll); 17666 self2.scroll.rec = 0; 17667 } 17668 self2.revert(false, true); 17669 lastRefresh = _getTime(); 17670 if (snapDelayedCall) { 17671 lastSnap = -1; 17672 snapDelayedCall.restart(true); 17673 } 17674 _refreshing = 0; 17675 animation && isToggle && (animation._initted || prevAnimProgress) && animation.progress() !== prevAnimProgress && animation.progress(prevAnimProgress || 0, true).render(animation.time(), true, true); 17676 if (isFirstRefresh || prevProgress !== self2.progress || containerAnimation || invalidateOnRefresh) { 17677 animation && !isToggle && animation.totalProgress(containerAnimation && start < -1e-3 && !prevProgress ? gsap.utils.normalize(start, end, 0) : prevProgress, true); 17678 self2.progress = isFirstRefresh || (scroll1 - start) / change === prevProgress ? 0 : prevProgress; 17679 } 17680 pin && pinSpacing && (spacer._pinOffset = Math.round(self2.progress * pinChange)); 17681 scrubTween && scrubTween.invalidate(); 17682 if (!isNaN(markerStartOffset)) { 17683 markerStartOffset -= gsap.getProperty(markerStartTrigger, direction.p); 17684 markerEndOffset -= gsap.getProperty(markerEndTrigger, direction.p); 17685 _shiftMarker(markerStartTrigger, direction, markerStartOffset); 17686 _shiftMarker(markerStart, direction, markerStartOffset - (pinOffset || 0)); 17687 _shiftMarker(markerEndTrigger, direction, markerEndOffset); 17688 _shiftMarker(markerEnd, direction, markerEndOffset - (pinOffset || 0)); 17689 } 17690 isFirstRefresh && !_refreshingAll && self2.update(); 17691 if (onRefresh && !_refreshingAll && !executingOnRefresh) { 17692 executingOnRefresh = true; 17693 onRefresh(self2); 17694 executingOnRefresh = false; 17695 } 17696 }; 17697 self2.getVelocity = function() { 17698 return (scrollFunc() - scroll2) / (_getTime() - _time2) * 1e3 || 0; 17699 }; 17700 self2.endAnimation = function() { 17701 _endAnimation(self2.callbackAnimation); 17702 if (animation) { 17703 scrubTween ? scrubTween.progress(1) : !animation.paused() ? _endAnimation(animation, animation.reversed()) : isToggle || _endAnimation(animation, self2.direction < 0, 1); 17704 } 17705 }; 17706 self2.labelToScroll = function(label) { 17707 return animation && animation.labels && (start || self2.refresh() || start) + animation.labels[label] / animation.duration() * change || 0; 17708 }; 17709 self2.getTrailing = function(name) { 17710 var i2 = _triggers.indexOf(self2), a = self2.direction > 0 ? _triggers.slice(0, i2).reverse() : _triggers.slice(i2 + 1); 17711 return (_isString(name) ? a.filter(function(t2) { 17712 return t2.vars.preventOverlaps === name; 17713 }) : a).filter(function(t2) { 17714 return self2.direction > 0 ? t2.end <= start : t2.start >= end; 17715 }); 17716 }; 17717 self2.update = function(reset, recordVelocity, forceFake) { 17718 if (containerAnimation && !forceFake && !reset) { 17719 return; 17720 } 17721 var scroll = _refreshingAll === true ? prevScroll : self2.scroll(), p = reset ? 0 : (scroll - start) / change, clipped = p < 0 ? 0 : p > 1 ? 1 : p || 0, prevProgress2 = self2.progress, isActive, wasActive, toggleState, action, stateChanged, toggled, isAtMax, isTakingAction; 17722 if (recordVelocity) { 17723 scroll2 = scroll1; 17724 scroll1 = containerAnimation ? scrollFunc() : scroll; 17725 if (snap2) { 17726 snap22 = snap1; 17727 snap1 = animation && !isToggle ? animation.totalProgress() : clipped; 17728 } 17729 } 17730 if (anticipatePin && pin && !_refreshing && !_startup && _lastScrollTime) { 17731 if (!clipped && start < scroll + (scroll - scroll2) / (_getTime() - _time2) * anticipatePin) { 17732 clipped = 1e-4; 17733 } else if (clipped === 1 && end > scroll + (scroll - scroll2) / (_getTime() - _time2) * anticipatePin) { 17734 clipped = 0.9999; 17735 } 17736 } 17737 if (clipped !== prevProgress2 && self2.enabled) { 17738 isActive = self2.isActive = !!clipped && clipped < 1; 17739 wasActive = !!prevProgress2 && prevProgress2 < 1; 17740 toggled = isActive !== wasActive; 17741 stateChanged = toggled || !!clipped !== !!prevProgress2; 17742 self2.direction = clipped > prevProgress2 ? 1 : -1; 17743 self2.progress = clipped; 17744 if (stateChanged && !_refreshing) { 17745 toggleState = clipped && !prevProgress2 ? 0 : clipped === 1 ? 1 : prevProgress2 === 1 ? 2 : 3; 17746 if (isToggle) { 17747 action = !toggled && toggleActions[toggleState + 1] !== "none" && toggleActions[toggleState + 1] || toggleActions[toggleState]; 17748 isTakingAction = animation && (action === "complete" || action === "reset" || action in animation); 17749 } 17750 } 17751 preventOverlaps && (toggled || isTakingAction) && (isTakingAction || scrub || !animation) && (_isFunction(preventOverlaps) ? preventOverlaps(self2) : self2.getTrailing(preventOverlaps).forEach(function(t2) { 17752 return t2.endAnimation(); 17753 })); 17754 if (!isToggle) { 17755 if (scrubTween && !_refreshing && !_startup) { 17756 scrubTween._dp._time - scrubTween._start !== scrubTween._time && scrubTween.render(scrubTween._dp._time - scrubTween._start); 17757 if (scrubTween.resetTo) { 17758 scrubTween.resetTo("totalProgress", clipped, animation._tTime / animation._tDur); 17759 } else { 17760 scrubTween.vars.totalProgress = clipped; 17761 scrubTween.invalidate().restart(); 17762 } 17763 } else if (animation) { 17764 animation.totalProgress(clipped, !!(_refreshing && (lastRefresh || reset))); 17765 } 17766 } 17767 if (pin) { 17768 reset && pinSpacing && (spacer.style[pinSpacing + direction.os2] = spacingStart); 17769 if (!useFixedPosition) { 17770 pinSetter(_round(pinStart + pinChange * clipped)); 17771 } else if (stateChanged) { 17772 isAtMax = !reset && clipped > prevProgress2 && end + 1 > scroll && scroll + 1 >= _maxScroll(scroller, direction); 17773 if (pinReparent) { 17774 if (!reset && (isActive || isAtMax)) { 17775 var bounds = _getBounds(pin, true), _offset = scroll - start; 17776 _reparent(pin, _body, bounds.top + (direction === _vertical ? _offset : 0) + _px, bounds.left + (direction === _vertical ? 0 : _offset) + _px); 17777 } else { 17778 _reparent(pin, spacer); 17779 } 17780 } 17781 _setState(isActive || isAtMax ? pinActiveState : pinState); 17782 pinMoves && clipped < 1 && isActive || pinSetter(pinStart + (clipped === 1 && !isAtMax ? pinChange : 0)); 17783 } 17784 } 17785 snap2 && !tweenTo.tween && !_refreshing && !_startup && snapDelayedCall.restart(true); 17786 toggleClass && (toggled || once && clipped && (clipped < 1 || !_limitCallbacks)) && _toArray(toggleClass.targets).forEach(function(el) { 17787 return el.classList[isActive || once ? "add" : "remove"](toggleClass.className); 17788 }); 17789 onUpdate && !isToggle && !reset && onUpdate(self2); 17790 if (stateChanged && !_refreshing) { 17791 if (isToggle) { 17792 if (isTakingAction) { 17793 if (action === "complete") { 17794 animation.pause().totalProgress(1); 17795 } else if (action === "reset") { 17796 animation.restart(true).pause(); 17797 } else if (action === "restart") { 17798 animation.restart(true); 17799 } else { 17800 animation[action](); 17801 } 17802 } 17803 onUpdate && onUpdate(self2); 17804 } 17805 if (toggled || !_limitCallbacks) { 17806 onToggle && toggled && _callback(self2, onToggle); 17807 callbacks[toggleState] && _callback(self2, callbacks[toggleState]); 17808 once && (clipped === 1 ? self2.kill(false, 1) : callbacks[toggleState] = 0); 17809 if (!toggled) { 17810 toggleState = clipped === 1 ? 1 : 3; 17811 callbacks[toggleState] && _callback(self2, callbacks[toggleState]); 17812 } 17813 } 17814 if (fastScrollEnd && !isActive && Math.abs(self2.getVelocity()) > (_isNumber(fastScrollEnd) ? fastScrollEnd : 2500)) { 17815 _endAnimation(self2.callbackAnimation); 17816 scrubTween ? scrubTween.progress(1) : _endAnimation(animation, action === "reverse" ? 1 : !clipped, 1); 17817 } 17818 } else if (isToggle && onUpdate && !_refreshing) { 17819 onUpdate(self2); 17820 } 17821 } 17822 if (markerEndSetter) { 17823 var n = containerAnimation ? scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0) : scroll; 17824 markerStartSetter(n + (markerStartTrigger._isFlipped ? 1 : 0)); 17825 markerEndSetter(n); 17826 } 17827 caMarkerSetter && caMarkerSetter(-scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0)); 17828 }; 17829 self2.enable = function(reset, refresh) { 17830 if (!self2.enabled) { 17831 self2.enabled = true; 17832 _addListener(scroller, "resize", _onResize); 17833 isViewport || _addListener(scroller, "scroll", _onScroll); 17834 onRefreshInit && _addListener(ScrollTrigger2, "refreshInit", onRefreshInit); 17835 if (reset !== false) { 17836 self2.progress = prevProgress = 0; 17837 scroll1 = scroll2 = lastSnap = scrollFunc(); 17838 } 17839 refresh !== false && self2.refresh(); 17840 } 17841 }; 17842 self2.getTween = function(snap3) { 17843 return snap3 && tweenTo ? tweenTo.tween : scrubTween; 17844 }; 17845 self2.setPositions = function(newStart, newEnd, keepClamp, pinOffset) { 17846 if (containerAnimation) { 17847 var st = containerAnimation.scrollTrigger, duration = containerAnimation.duration(), _change = st.end - st.start; 17848 newStart = st.start + _change * newStart / duration; 17849 newEnd = st.start + _change * newEnd / duration; 17850 } 17851 self2.refresh(false, false, { 17852 start: _keepClamp(newStart, keepClamp && !!self2._startClamp), 17853 end: _keepClamp(newEnd, keepClamp && !!self2._endClamp) 17854 }, pinOffset); 17855 self2.update(); 17856 }; 17857 self2.adjustPinSpacing = function(amount) { 17858 if (spacerState && amount) { 17859 var i2 = spacerState.indexOf(direction.d) + 1; 17860 spacerState[i2] = parseFloat(spacerState[i2]) + amount + _px; 17861 spacerState[1] = parseFloat(spacerState[1]) + amount + _px; 17862 _setState(spacerState); 17863 } 17864 }; 17865 self2.disable = function(reset, allowAnimation) { 17866 if (self2.enabled) { 17867 reset !== false && self2.revert(true, true); 17868 self2.enabled = self2.isActive = false; 17869 allowAnimation || scrubTween && scrubTween.pause(); 17870 prevScroll = 0; 17871 pinCache && (pinCache.uncache = 1); 17872 onRefreshInit && _removeListener(ScrollTrigger2, "refreshInit", onRefreshInit); 17873 if (snapDelayedCall) { 17874 snapDelayedCall.pause(); 17875 tweenTo.tween && tweenTo.tween.kill() && (tweenTo.tween = 0); 17876 } 17877 if (!isViewport) { 17878 var i2 = _triggers.length; 17879 while (i2--) { 17880 if (_triggers[i2].scroller === scroller && _triggers[i2] !== self2) { 17881 return; 17882 } 17883 } 17884 _removeListener(scroller, "resize", _onResize); 17885 isViewport || _removeListener(scroller, "scroll", _onScroll); 17886 } 17887 } 17888 }; 17889 self2.kill = function(revert, allowAnimation) { 17890 self2.disable(revert, allowAnimation); 17891 scrubTween && !allowAnimation && scrubTween.kill(); 17892 id && delete _ids[id]; 17893 var i2 = _triggers.indexOf(self2); 17894 i2 >= 0 && _triggers.splice(i2, 1); 17895 i2 === _i && _direction > 0 && _i--; 17896 i2 = 0; 17897 _triggers.forEach(function(t2) { 17898 return t2.scroller === self2.scroller && (i2 = 1); 17899 }); 17900 i2 || _refreshingAll || (self2.scroll.rec = 0); 17901 if (animation) { 17902 animation.scrollTrigger = null; 17903 revert && animation.revert({ 17904 kill: false 17905 }); 17906 allowAnimation || animation.kill(); 17907 } 17908 markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function(m) { 17909 return m.parentNode && m.parentNode.removeChild(m); 17910 }); 17911 _primary === self2 && (_primary = 0); 17912 if (pin) { 17913 pinCache && (pinCache.uncache = 1); 17914 i2 = 0; 17915 _triggers.forEach(function(t2) { 17916 return t2.pin === pin && i2++; 17917 }); 17918 i2 || (pinCache.spacer = 0); 17919 } 17920 vars.onKill && vars.onKill(self2); 17921 }; 17922 _triggers.push(self2); 17923 self2.enable(false, false); 17924 customRevertReturn && customRevertReturn(self2); 17925 if (animation && animation.add && !change) { 17926 var updateFunc = self2.update; 17927 self2.update = function() { 17928 self2.update = updateFunc; 17929 start || end || self2.refresh(); 17930 }; 17931 gsap.delayedCall(0.01, self2.update); 17932 change = 0.01; 17933 start = end = 0; 17934 } else { 17935 self2.refresh(); 17936 } 17937 pin && _queueRefreshAll(); 17938 }; 17939 ScrollTrigger2.register = function register(core2) { 17940 if (!_coreInitted) { 17941 gsap = core2 || _getGSAP(); 17942 _windowExists() && window.document && ScrollTrigger2.enable(); 17943 _coreInitted = _enabled; 17944 } 17945 return _coreInitted; 17946 }; 17947 ScrollTrigger2.defaults = function defaults2(config) { 17948 if (config) { 17949 for (var p in config) { 17950 _defaults[p] = config[p]; 17951 } 17952 } 17953 return _defaults; 17954 }; 17955 ScrollTrigger2.disable = function disable(reset, kill) { 17956 _enabled = 0; 17957 _triggers.forEach(function(trigger) { 17958 return trigger[kill ? "kill" : "disable"](reset); 17959 }); 17960 _removeListener(_win, "wheel", _onScroll); 17961 _removeListener(_doc, "scroll", _onScroll); 17962 clearInterval(_syncInterval); 17963 _removeListener(_doc, "touchcancel", _passThrough); 17964 _removeListener(_body, "touchstart", _passThrough); 17965 _multiListener(_removeListener, _doc, "pointerdown,touchstart,mousedown", _pointerDownHandler); 17966 _multiListener(_removeListener, _doc, "pointerup,touchend,mouseup", _pointerUpHandler); 17967 _resizeDelay.kill(); 17968 _iterateAutoRefresh(_removeListener); 17969 for (var i2 = 0; i2 < _scrollers.length; i2 += 3) { 17970 _wheelListener(_removeListener, _scrollers[i2], _scrollers[i2 + 1]); 17971 _wheelListener(_removeListener, _scrollers[i2], _scrollers[i2 + 2]); 17972 } 17973 }; 17974 ScrollTrigger2.enable = function enable() { 17975 _win = window; 17976 _doc = document; 17977 _docEl = _doc.documentElement; 17978 _body = _doc.body; 17979 if (gsap) { 17980 _toArray = gsap.utils.toArray; 17981 _clamp = gsap.utils.clamp; 17982 _context = gsap.core.context || _passThrough; 17983 _suppressOverwrites = gsap.core.suppressOverwrites || _passThrough; 17984 _scrollRestoration = _win.history.scrollRestoration || "auto"; 17985 _lastScroll = _win.pageYOffset; 17986 gsap.core.globals("ScrollTrigger", ScrollTrigger2); 17987 if (_body) { 17988 _enabled = 1; 17989 _div100vh = document.createElement("div"); 17990 _div100vh.style.height = "100vh"; 17991 _div100vh.style.position = "absolute"; 17992 _refresh100vh(); 17993 _rafBugFix(); 17994 Observer.register(gsap); 17995 ScrollTrigger2.isTouch = Observer.isTouch; 17996 _fixIOSBug = Observer.isTouch && /(iPad|iPhone|iPod|Mac)/g.test(navigator.userAgent); 17997 _ignoreMobileResize = Observer.isTouch === 1; 17998 _addListener(_win, "wheel", _onScroll); 17999 _root = [_win, _doc, _docEl, _body]; 18000 if (gsap.matchMedia) { 18001 ScrollTrigger2.matchMedia = function(vars) { 18002 var mm = gsap.matchMedia(), p; 18003 for (p in vars) { 18004 mm.add(p, vars[p]); 18005 } 18006 return mm; 18007 }; 18008 gsap.addEventListener("matchMediaInit", function() { 18009 return _revertAll(); 18010 }); 18011 gsap.addEventListener("matchMediaRevert", function() { 18012 return _revertRecorded(); 18013 }); 18014 gsap.addEventListener("matchMedia", function() { 18015 _refreshAll(0, 1); 18016 _dispatch("matchMedia"); 18017 }); 18018 gsap.matchMedia("(orientation: portrait)", function() { 18019 _setBaseDimensions(); 18020 return _setBaseDimensions; 18021 }); 18022 } else { 18023 console.warn("Requires GSAP 3.11.0 or later"); 18024 } 18025 _setBaseDimensions(); 18026 _addListener(_doc, "scroll", _onScroll); 18027 var bodyStyle = _body.style, border = bodyStyle.borderTopStyle, AnimationProto = gsap.core.Animation.prototype, bounds, i2; 18028 AnimationProto.revert || Object.defineProperty(AnimationProto, "revert", { 18029 value: function value() { 18030 return this.time(-0.01, true); 18031 } 18032 }); 18033 bodyStyle.borderTopStyle = "solid"; 18034 bounds = _getBounds(_body); 18035 _vertical.m = Math.round(bounds.top + _vertical.sc()) || 0; 18036 _horizontal.m = Math.round(bounds.left + _horizontal.sc()) || 0; 18037 border ? bodyStyle.borderTopStyle = border : bodyStyle.removeProperty("border-top-style"); 18038 _syncInterval = setInterval(_sync, 250); 18039 gsap.delayedCall(0.5, function() { 18040 return _startup = 0; 18041 }); 18042 _addListener(_doc, "touchcancel", _passThrough); 18043 _addListener(_body, "touchstart", _passThrough); 18044 _multiListener(_addListener, _doc, "pointerdown,touchstart,mousedown", _pointerDownHandler); 18045 _multiListener(_addListener, _doc, "pointerup,touchend,mouseup", _pointerUpHandler); 18046 _transformProp = gsap.utils.checkPrefix("transform"); 18047 _stateProps.push(_transformProp); 18048 _coreInitted = _getTime(); 18049 _resizeDelay = gsap.delayedCall(0.2, _refreshAll).pause(); 18050 _autoRefresh = [_doc, "visibilitychange", function() { 18051 var w = _win.innerWidth, h = _win.innerHeight; 18052 if (_doc.hidden) { 18053 _prevWidth = w; 18054 _prevHeight = h; 18055 } else if (_prevWidth !== w || _prevHeight !== h) { 18056 _onResize(); 18057 } 18058 }, _doc, "DOMContentLoaded", _refreshAll, _win, "load", _refreshAll, _win, "resize", _onResize]; 18059 _iterateAutoRefresh(_addListener); 18060 _triggers.forEach(function(trigger) { 18061 return trigger.enable(0, 1); 18062 }); 18063 for (i2 = 0; i2 < _scrollers.length; i2 += 3) { 18064 _wheelListener(_removeListener, _scrollers[i2], _scrollers[i2 + 1]); 18065 _wheelListener(_removeListener, _scrollers[i2], _scrollers[i2 + 2]); 18066 } 18067 } 18068 } 18069 }; 18070 ScrollTrigger2.config = function config(vars) { 18071 "limitCallbacks" in vars && (_limitCallbacks = !!vars.limitCallbacks); 18072 var ms = vars.syncInterval; 18073 ms && clearInterval(_syncInterval) || (_syncInterval = ms) && setInterval(_sync, ms); 18074 "ignoreMobileResize" in vars && (_ignoreMobileResize = ScrollTrigger2.isTouch === 1 && vars.ignoreMobileResize); 18075 if ("autoRefreshEvents" in vars) { 18076 _iterateAutoRefresh(_removeListener) || _iterateAutoRefresh(_addListener, vars.autoRefreshEvents || "none"); 18077 _ignoreResize = (vars.autoRefreshEvents + "").indexOf("resize") === -1; 18078 } 18079 }; 18080 ScrollTrigger2.scrollerProxy = function scrollerProxy(target, vars) { 18081 var t2 = _getTarget(target), i2 = _scrollers.indexOf(t2), isViewport = _isViewport(t2); 18082 if (~i2) { 18083 _scrollers.splice(i2, isViewport ? 6 : 2); 18084 } 18085 if (vars) { 18086 isViewport ? _proxies.unshift(_win, vars, _body, vars, _docEl, vars) : _proxies.unshift(t2, vars); 18087 } 18088 }; 18089 ScrollTrigger2.clearMatchMedia = function clearMatchMedia(query) { 18090 _triggers.forEach(function(t2) { 18091 return t2._ctx && t2._ctx.query === query && t2._ctx.kill(true, true); 18092 }); 18093 }; 18094 ScrollTrigger2.isInViewport = function isInViewport(element, ratio, horizontal) { 18095 var bounds = (_isString(element) ? _getTarget(element) : element).getBoundingClientRect(), offset = bounds[horizontal ? _width : _height] * ratio || 0; 18096 return horizontal ? bounds.right - offset > 0 && bounds.left + offset < _win.innerWidth : bounds.bottom - offset > 0 && bounds.top + offset < _win.innerHeight; 18097 }; 18098 ScrollTrigger2.positionInViewport = function positionInViewport(element, referencePoint, horizontal) { 18099 _isString(element) && (element = _getTarget(element)); 18100 var bounds = element.getBoundingClientRect(), size = bounds[horizontal ? _width : _height], offset = referencePoint == null ? size / 2 : referencePoint in _keywords ? _keywords[referencePoint] * size : ~referencePoint.indexOf("%") ? parseFloat(referencePoint) * size / 100 : parseFloat(referencePoint) || 0; 18101 return horizontal ? (bounds.left + offset) / _win.innerWidth : (bounds.top + offset) / _win.innerHeight; 18102 }; 18103 ScrollTrigger2.killAll = function killAll(allowListeners) { 18104 _triggers.slice(0).forEach(function(t2) { 18105 return t2.vars.id !== "ScrollSmoother" && t2.kill(); 18106 }); 18107 if (allowListeners !== true) { 18108 var listeners = _listeners.killAll || []; 18109 _listeners = {}; 18110 listeners.forEach(function(f) { 18111 return f(); 18112 }); 18113 } 18114 }; 18115 return ScrollTrigger2; 18116 }(); 18117 ScrollTrigger.version = "3.12.5"; 18118 ScrollTrigger.saveStyles = function(targets) { 18119 return targets ? _toArray(targets).forEach(function(target) { 18120 if (target && target.style) { 18121 var i2 = _savedStyles.indexOf(target); 18122 i2 >= 0 && _savedStyles.splice(i2, 5); 18123 _savedStyles.push(target, target.style.cssText, target.getBBox && target.getAttribute("transform"), gsap.core.getCache(target), _context()); 18124 } 18125 }) : _savedStyles; 18126 }; 18127 ScrollTrigger.revert = function(soft, media) { 18128 return _revertAll(!soft, media); 18129 }; 18130 ScrollTrigger.create = function(vars, animation) { 18131 return new ScrollTrigger(vars, animation); 18132 }; 18133 ScrollTrigger.refresh = function(safe) { 18134 return safe ? _onResize() : (_coreInitted || ScrollTrigger.register()) && _refreshAll(true); 18135 }; 18136 ScrollTrigger.update = function(force) { 18137 return ++_scrollers.cache && _updateAll(force === true ? 2 : 0); 18138 }; 18139 ScrollTrigger.clearScrollMemory = _clearScrollMemory; 18140 ScrollTrigger.maxScroll = function(element, horizontal) { 18141 return _maxScroll(element, horizontal ? _horizontal : _vertical); 18142 }; 18143 ScrollTrigger.getScrollFunc = function(element, horizontal) { 18144 return _getScrollFunc(_getTarget(element), horizontal ? _horizontal : _vertical); 18145 }; 18146 ScrollTrigger.getById = function(id) { 18147 return _ids[id]; 18148 }; 18149 ScrollTrigger.getAll = function() { 18150 return _triggers.filter(function(t2) { 18151 return t2.vars.id !== "ScrollSmoother"; 18152 }); 18153 }; 18154 ScrollTrigger.isScrolling = function() { 18155 return !!_lastScrollTime; 18156 }; 18157 ScrollTrigger.snapDirectional = _snapDirectional; 18158 ScrollTrigger.addEventListener = function(type, callback) { 18159 var a = _listeners[type] || (_listeners[type] = []); 18160 ~a.indexOf(callback) || a.push(callback); 18161 }; 18162 ScrollTrigger.removeEventListener = function(type, callback) { 18163 var a = _listeners[type], i2 = a && a.indexOf(callback); 18164 i2 >= 0 && a.splice(i2, 1); 18165 }; 18166 ScrollTrigger.batch = function(targets, vars) { 18167 var result = [], varsCopy = {}, interval = vars.interval || 0.016, batchMax = vars.batchMax || 1e9, proxyCallback = function proxyCallback2(type, callback) { 18168 var elements = [], triggers = [], delay = gsap.delayedCall(interval, function() { 18169 callback(elements, triggers); 18170 elements = []; 18171 triggers = []; 18172 }).pause(); 18173 return function(self2) { 18174 elements.length || delay.restart(true); 18175 elements.push(self2.trigger); 18176 triggers.push(self2); 18177 batchMax <= elements.length && delay.progress(1); 18178 }; 18179 }, p; 18180 for (p in vars) { 18181 varsCopy[p] = p.substr(0, 2) === "on" && _isFunction(vars[p]) && p !== "onRefreshInit" ? proxyCallback(p, vars[p]) : vars[p]; 18182 } 18183 if (_isFunction(batchMax)) { 18184 batchMax = batchMax(); 18185 _addListener(ScrollTrigger, "refresh", function() { 18186 return batchMax = vars.batchMax(); 18187 }); 18188 } 18189 _toArray(targets).forEach(function(target) { 18190 var config = {}; 18191 for (p in varsCopy) { 18192 config[p] = varsCopy[p]; 18193 } 18194 config.trigger = target; 18195 result.push(ScrollTrigger.create(config)); 18196 }); 18197 return result; 18198 }; 18199 var _clampScrollAndGetDurationMultiplier = function _clampScrollAndGetDurationMultiplier2(scrollFunc, current, end, max) { 18200 current > max ? scrollFunc(max) : current < 0 && scrollFunc(0); 18201 return end > max ? (max - current) / (end - current) : end < 0 ? current / (current - end) : 1; 18202 }, _allowNativePanning = function _allowNativePanning2(target, direction) { 18203 if (direction === true) { 18204 target.style.removeProperty("touch-action"); 18205 } else { 18206 target.style.touchAction = direction === true ? "auto" : direction ? "pan-" + direction + (Observer.isTouch ? " pinch-zoom" : "") : "none"; 18207 } 18208 target === _docEl && _allowNativePanning2(_body, direction); 18209 }, _overflow = { 18210 auto: 1, 18211 scroll: 1 18212 }, _nestedScroll = function _nestedScroll2(_ref5) { 18213 var event = _ref5.event, target = _ref5.target, axis = _ref5.axis; 18214 var node = (event.changedTouches ? event.changedTouches[0] : event).target, cache = node._gsap || gsap.core.getCache(node), time = _getTime(), cs; 18215 if (!cache._isScrollT || time - cache._isScrollT > 2e3) { 18216 while (node && node !== _body && (node.scrollHeight <= node.clientHeight && node.scrollWidth <= node.clientWidth || !(_overflow[(cs = _getComputedStyle(node)).overflowY] || _overflow[cs.overflowX]))) { 18217 node = node.parentNode; 18218 } 18219 cache._isScroll = node && node !== target && !_isViewport(node) && (_overflow[(cs = _getComputedStyle(node)).overflowY] || _overflow[cs.overflowX]); 18220 cache._isScrollT = time; 18221 } 18222 if (cache._isScroll || axis === "x") { 18223 event.stopPropagation(); 18224 event._gsapAllow = true; 18225 } 18226 }, _inputObserver = function _inputObserver2(target, type, inputs, nested) { 18227 return Observer.create({ 18228 target, 18229 capture: true, 18230 debounce: false, 18231 lockAxis: true, 18232 type, 18233 onWheel: nested = nested && _nestedScroll, 18234 onPress: nested, 18235 onDrag: nested, 18236 onScroll: nested, 18237 onEnable: function onEnable() { 18238 return inputs && _addListener(_doc, Observer.eventTypes[0], _captureInputs, false, true); 18239 }, 18240 onDisable: function onDisable() { 18241 return _removeListener(_doc, Observer.eventTypes[0], _captureInputs, true); 18242 } 18243 }); 18244 }, _inputExp = /(input|label|select|textarea)/i, _inputIsFocused, _captureInputs = function _captureInputs2(e) { 18245 var isInput = _inputExp.test(e.target.tagName); 18246 if (isInput || _inputIsFocused) { 18247 e._gsapAllow = true; 18248 _inputIsFocused = isInput; 18249 } 18250 }, _getScrollNormalizer = function _getScrollNormalizer2(vars) { 18251 _isObject(vars) || (vars = {}); 18252 vars.preventDefault = vars.isNormalizer = vars.allowClicks = true; 18253 vars.type || (vars.type = "wheel,touch"); 18254 vars.debounce = !!vars.debounce; 18255 vars.id = vars.id || "normalizer"; 18256 var _vars2 = vars, normalizeScrollX = _vars2.normalizeScrollX, momentum = _vars2.momentum, allowNestedScroll = _vars2.allowNestedScroll, onRelease = _vars2.onRelease, self2, maxY, target = _getTarget(vars.target) || _docEl, smoother = gsap.core.globals().ScrollSmoother, smootherInstance = smoother && smoother.get(), content = _fixIOSBug && (vars.content && _getTarget(vars.content) || smootherInstance && vars.content !== false && !smootherInstance.smooth() && smootherInstance.content()), scrollFuncY = _getScrollFunc(target, _vertical), scrollFuncX = _getScrollFunc(target, _horizontal), scale = 1, initialScale = (Observer.isTouch && _win.visualVie
vendor: 4,249 bytes, lines 18256-18339
18256wport ? _win.visualViewport.scale * _win.visualViewport.width : _win.outerWidth) / _win.innerWidth, wheelRefresh = 0, resolveMomentumDuration = _isFunction(momentum) ? function() { 18257 return momentum(self2); 18258 } : function() { 18259 return momentum || 2.8; 18260 }, lastRefreshID, skipTouchMove, inputObserver = _inputObserver(target, vars.type, true, allowNestedScroll), resumeTouchMove = function resumeTouchMove2() { 18261 return skipTouchMove = false; 18262 }, scrollClampX = _passThrough, scrollClampY = _passThrough, updateClamps = function updateClamps2() { 18263 maxY = _maxScroll(target, _vertical); 18264 scrollClampY = _clamp(_fixIOSBug ? 1 : 0, maxY); 18265 normalizeScrollX && (scrollClampX = _clamp(0, _maxScroll(target, _horizontal))); 18266 lastRefreshID = _refreshID; 18267 }, removeContentOffset = function removeContentOffset2() { 18268 content._gsap.y = _round(parseFloat(content._gsap.y) + scrollFuncY.offset) + "px"; 18269 content.style.transform = "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, " + parseFloat(content._gsap.y) + ", 0, 1)"; 18270 scrollFuncY.offset = scrollFuncY.cacheID = 0; 18271 }, ignoreDrag = function ignoreDrag2() { 18272 if (skipTouchMove) { 18273 requestAnimationFrame(resumeTouchMove); 18274 var offset = _round(self2.deltaY / 2), scroll = scrollClampY(scrollFuncY.v - offset); 18275 if (content && scroll !== scrollFuncY.v + scrollFuncY.offset) { 18276 scrollFuncY.offset = scroll - scrollFuncY.v; 18277 var y = _round((parseFloat(content && content._gsap.y) || 0) - scrollFuncY.offset); 18278 content.style.transform = "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, " + y + ", 0, 1)"; 18279 content._gsap.y = y + "px"; 18280 scrollFuncY.cacheID = _scrollers.cache; 18281 _updateAll(); 18282 } 18283 return true; 18284 } 18285 scrollFuncY.offset && removeContentOffset(); 18286 skipTouchMove = true; 18287 }, tween, startScrollX, startScrollY, onStopDelayedCall, onResize = function onResize2() { 18288 updateClamps(); 18289 if (tween.isActive() && tween.vars.scrollY > maxY) { 18290 scrollFuncY() > maxY ? tween.progress(1) && scrollFuncY(maxY) : tween.resetTo("scrollY", maxY); 18291 } 18292 }; 18293 content && gsap.set(content, { 18294 y: "+=0" 18295 }); 18296 vars.ignoreCheck = function(e) { 18297 return _fixIOSBug && e.type === "touchmove" && ignoreDrag() || scale > 1.05 && e.type !== "touchstart" || self2.isGesturing || e.touches && e.touches.length > 1; 18298 }; 18299 vars.onPress = function() { 18300 skipTouchMove = false; 18301 var prevScale = scale; 18302 scale = _round((_win.visualViewport && _win.visualViewport.scale || 1) / initialScale); 18303 tween.pause(); 18304 prevScale !== scale && _allowNativePanning(target, scale > 1.01 ? true : normalizeScrollX ? false : "x"); 18305 startScrollX = scrollFuncX(); 18306 startScrollY = scrollFuncY(); 18307 updateClamps(); 18308 lastRefreshID = _refreshID; 18309 }; 18310 vars.onRelease = vars.onGestureStart = function(self3, wasDragging) { 18311 scrollFuncY.offset && removeContentOffset(); 18312 if (!wasDragging) { 18313 onStopDelayedCall.restart(true); 18314 } else { 18315 _scrollers.cache++; 18316 var dur = resolveMomentumDuration(), currentScroll, endScroll; 18317 if (normalizeScrollX) { 18318 currentScroll = scrollFuncX(); 18319 endScroll = currentScroll + dur * 0.05 * -self3.velocityX / 0.227; 18320 dur *= _clampScrollAndGetDurationMultiplier(scrollFuncX, currentScroll, endScroll, _maxScroll(target, _horizontal)); 18321 tween.vars.scrollX = scrollClampX(endScroll); 18322 } 18323 currentScroll = scrollFuncY(); 18324 endScroll = currentScroll + dur * 0.05 * -self3.velocityY / 0.227; 18325 dur *= _clampScrollAndGetDurationMultiplier(scrollFuncY, currentScroll, endScroll, _maxScroll(target, _vertical)); 18326 tween.vars.scrollY = scrollClampY(endScroll); 18327 tween.invalidate().duration(dur).play(0.01); 18328 if (_fixIOSBug && tween.vars.scrollY >= maxY || currentScroll >= maxY - 1) { 18329 gsap.to({}, { 18330 onUpdate: onResize, 18331 duration: dur 18332 }); 18333 } 18334 } 18335 onRelease && onRelease(self3); 18336 }; 18337 vars.onWheel = function() { 18338 tween._ts && tween.pause(); 18339 if (_getTime() - wheelRefresh > 1e3) {
18340 lastRefreshID = 0; 18341 wheelRefresh = _getTime(); 18342 } 18343 }; 18344 vars.onChange = function(self3, dx, dy, xArray, yArray) { 18345 _refreshID !== lastRefreshID && updateClamps(); 18346 dx && normalizeScrollX && scrollFuncX(scrollClampX(xArray[2] === dx ? startScrollX + (self3.startX - self3.x) : scrollFuncX() + dx - xArray[1])); 18347 if (dy) { 18348 scrollFuncY.offset && removeContentOffset(); 18349 var isTouch = yArray[2] === dy, y = isTouch ? startScrollY + self3.startY - self3.y : scrollFuncY() + dy - yArray[1], yClamped = scrollClampY(y); 18350 isTouch && y !== yClamped && (startScrollY += yClamped - y); 18351 scrollFuncY(yClamped); 18352 } 18353 (dy || dx) && _updateAll(); 18354 }; 18355 vars.onEnable = function() { 18356 _allowNativePanning(target, normalizeScrollX ? false : "x"); 18357 ScrollTrigger.addEventListener("refresh", onResize); 18358 _addListener(_win, "resize", onResize); 18359 if (scrollFuncY.smooth) { 18360 scrollFuncY.target.style.scrollBehavior = "auto"; 18361 scrollFuncY.smooth = scrollFuncX.smooth = false; 18362 } 18363 inputObserver.enable(); 18364 }; 18365 vars.onDisable = function() { 18366 _allowNativePanning(target, true); 18367 _removeListener(_win, "resize", onResize); 18368 ScrollTrigger.removeEventListener("refresh", onResize); 18369 inputObserver.kill(); 18370 }; 18371 vars.lockAxis = vars.lockAxis !== false; 18372 self2 = new Observer(vars); 18373 self2.iOS = _fixIOSBug; 18374 _fixIOSBug && !scrollFuncY() && scrollFuncY(1); 18375 _fixIOSBug && gsap.ticker.add(_passThrough); 18376 onStopDelayedCall = self2._dc; 18377 tween = gsap.to(self2, { 18378 ease: "power4", 18379 paused: true, 18380 inherit: false, 18381 scrollX: normalizeScrollX ? "+=0.1" : "+=0", 18382 scrollY: "+=0.1", 18383 modifiers: { 18384 scrollY: _interruptionTracker(scrollFuncY, scrollFuncY(), function() { 18385 return tween.pause(); 18386 }) 18387 }, 18388 onUpdate: _updateAll, 18389 onComplete: onStopDelayedCall.vars.onComplete 18390 }); 18391 return self2; 18392 }; 18393 ScrollTrigger.sort = function(func) { 18394 return _triggers.sort(func || function(a, b) { 18395 return (a.vars.refreshPriority || 0) * -1e6 + a.start - (b.start + (b.vars.refreshPriority || 0) * -1e6); 18396 }); 18397 }; 18398 ScrollTrigger.observe = function(vars) { 18399 return new Observer(vars); 18400 }; 18401 ScrollTrigger.normalizeScroll = function(vars) { 18402 if (typeof vars === "undefined") { 18403 return _normalizer; 18404 } 18405 if (vars === true && _normalizer) { 18406 return _normalizer.enable(); 18407 } 18408 if (vars === false) { 18409 _normalizer && _normalizer.kill(); 18410 _normalizer = vars; 18411 return; 18412 } 18413 var normalizer = vars instanceof Observer ? vars : _getScrollNormalizer(vars); 18414 _normalizer && _normalizer.target === normalizer.target && _normalizer.kill(); 18415 _isViewport(normalizer.target) && (_normalizer = normalizer); 18416 return normalizer; 18417 }; 18418 ScrollTrigger.core = { 18419 // smaller file size way to leverage in ScrollSmoother and Observer 18420 _getVelocityProp, 18421 _inputObserver, 18422 _scrollers, 18423 _proxies, 18424 bridge: { 18425 // when normalizeScroll sets the scroll position (ss = setScroll) 18426 ss: function ss() { 18427 _lastScrollTime || _dispatch("scrollStart"); 18428 _lastScrollTime = _getTime(); 18429 }, 18430 // a way to get the _refreshing value in Observer 18431 ref: function ref() { 18432 return _refreshing; 18433 } 18434 } 18435 }; 18436 _getGSAP() && gsap.registerPlugin(ScrollTrigger); 18437 gsapWithCSS.registerPlugin(ScrollTrigger); 18438 class LoyaltyHero { 18439 constructor() { 18440 this.$el = document.querySelector(".js-loyalty-hero"); 18441 if (!this.$el) { 18442 return; 18443 } 18444 this.$stage = this.$el.querySelector(".js-loyalty-hero-stage"); 18445 this.$video = this.$el.querySelector(".js-loyalty-hero-video"); 18446 this.$logo = this.$el.querySelector(".js-loyalty-hero-logo"); 18447 this.$title = this.$el.querySelector(".js-loyalty-hero-title"); 18448 this.$cta = this.$el.querySelector(".js-loyalty-hero-cta"); 18449 this.animate(); 18450 } 18451 animate() { 18452 gsapWithCSS.set(this.$background, { opacity: 0 }); 18453 gsapWithCSS.set(this.$logo, { opacity: 0 }); 18454 gsapWithCSS.set(this.$title, { opacity: 0 }); 18455 const timeline = gsapWithCSS.timeline({ 18456 scrollTrigger: { 18457 trigger: this.$el, 18458 scrub: true, 18459 start: "top top", 18460 end: "bottom -250%", 18461 duration: 10 18462 } 18463 }); 18464 timeline.fromTo( 18465 this.$stage, 18466 { 18467 yPercent: 0 18468 }, 18469 { 18470 yPercent: -50, 18471 duration: 1, 18472 opacity: 0, 18473 ease: "expo.out" 18474 } 18475 ); 18476 gsapWithCSS.fromTo( 18477 this.$background, 18478 { 18479 scale: 1.5, 18480 opacity: 0 18481 }, 18482 { 18483 opacity: 1, 18484 scale: 1, 18485 duration: 2, 18486 ease: "expo.out" 18487 } 18488 ); 18489 gsapWithCSS.fromTo( 18490 this.$logo, 18491 { 18492 y: 50, 18493 opacity: 0 18494 }, 18495 { 18496 y: 0, 18497 opacity: 1, 18498 duration: 1, 18499 delay: 0.25, 18500 ease: "expo.out" 18501 } 18502 ); 18503 gsapWithCSS.fromTo( 18504 this.$title, 18505 { 18506 y: 50, 18507 opacity: 0 18508 }, 18509 { 18510 y: 0, 18511 opacity: 1, 18512 duration: 1, 18513 delay: 0.35, 18514 ease: "expo.out" 18515 } 18516 ); 18517 gsapWithCSS.fromTo( 18518 this.$cta, 18519 { 18520 y: 50, 18521 opacity: 0 18522 }, 18523 { 18524 y: 0, 18525 opacity: 1, 18526 duration: 1, 18527 delay: 0.45, 18528 ease: "expo.out" 18529 } 18530 ); 18531 } 18532 } 18533 gsapWithCSS.registerPlugin(ScrollTrigger); 18534 class LoyaltyDisplays { 18535 constructor() { 18536 this.$el = document.querySelector(".js-loyalty-displays"); 18537 if (!this.$el) { 18538 return; 18539 } 18540 this.$container = this.$el.querySelector(".js-loyalty-displays-container"); 18541 this.$tabs = this.$el.querySelector(".js-loyalty-displays-tabs"); 18542 this.$tabButtons = this.$el.querySelectorAll("button[data-tab]"); 18543 this.$tabContents = this.$el.querySelectorAll("figure[data-tab-content]"); 18544 this.$tabButtons.forEach(($button) => { 18545 $button.addEventListener("click", () => this.onTabClick($button)); 18546 }); 18547 this.animate(); 18548 this.setupTabs(); 18549 } 18550 onTabClick($button) { 18551 this.$tabButtons.forEach(($button2) => { 18552 $button2.classList.remove("is-active"); 18553 }); 18554 const tab = $button.dataset.tab; 18555 $button.classList.add("is-active");
18556 this.$tabContents.forEach(($content) => { 18557 const contentTab = $content.dataset.tabContent; 18558 if (contentTab === tab) { 18559 $content.classList.add("is-active"); 18560 $content.setAttribute("aria-hidden", false); 18561 } else { 18562 $content.classList.remove("is-active"); 18563 $content.setAttribute("aria-hidden", true); 18564 } 18565 }); 18566 } 18567 setupTabs() { 18568 this.$tabContents.forEach(($content, index) => { 18569 if (index === 0) { 18570 $content.classList.add("is-active"); 18571 $content.setAttribute("aria-hidden", false); 18572 } else { 18573 $content.classList.remove("is-active"); 18574 $content.setAttribute("aria-hidden", true); 18575 } 18576 }); 18577 } 18578 animate() { 18579 const $container = this.$el.querySelector(".js-loyalty-displays-container"); 18580 const $tabs = this.$el.querySelector(".js-loyalty-displays-tabs"); 18581 const timeline = gsapWithCSS.timeline({ 18582 scrollTrigger: { 18583 trigger: this.$el, 18584 scrub: true, 18585 end: "bottom 50%" 18586 } 18587 }); 18588 timeline.from($container, { 18589 y: "-100px", 18590 opacity: 50, 18591 scale: 1.5, 18592 ease: "expo.out", 18593 duration: 2 18594 }).from( 18595 $tabs, 18596 { 18597 y: "0", 18598 opacity: 25, 18599 ease: "expo.out", 18600 duration: 2 18601 }, 18602 "-=1.5" 18603 ); 18604 } 18605 } 18606 gsapWithCSS.registerPlugin(ScrollTrigger); 18607 class LoyaltyEarningRules { 18608 constructor() { 18609 this.$el = document.querySelector(".js-loyalty-earning-rules"); 18610 if (!this.$el) { 18611 return; 18612 } 18613 this.$background = this.$el.querySelector(".js-loyalty-earning-rules-bg"); 18614 this.$title = this.$el.querySelector(".js-loyalty-earning-rules-title"); 18615 this.$description = this.$el.querySelector( 18616 ".js-loyalty-earning-rules-description" 18617 ); 18618 this.$stage = this.$el.querySelector(".js-loyalty-earning-rules-stage"); 18619 this.$placeholderItems = this.$el.querySelectorAll( 18620 ".js-loyalty-earning-rules-placeholder-item" 18621 ); 18622 this.$items = this.$el.querySelectorAll(".js-loyalty-earning-rules-item"); 18623 this.$itemsToAnimate = this.$el.querySelectorAll( 18624 ".js-loyalty-earning-rules-item:not(.-no-animate)" 18625 ); 18626 this.$itemsNoAnimate = this.$el.querySelectorAll( 18627 ".js-loyalty-earning-rules-item.-no-animate" 18628 ); 18629 this.boxWidth = this.$el.querySelector( 18630 ".js-loyalty-earning-rules-box" 18631 ).offsetWidth; 18632 this.animate(); 18633 } 18634 animate() { 18635 const introTimeline = gsapWithCSS.timeline({ 18636 scrollTrigger: { 18637 trigger: this.$el, 18638 scrub: true, 18639 end: window.innerWidth > 1024 && window.innerHeight > 1e3 ? "+=3000" : "bottom 50%", 18640 pin: window.innerWidth > 1024 && window.innerHeight > 1e3, 18641 anticipatePin: 1 18642 } 18643 }); 18644 this.$itemsToAnimate.forEach(($item, index) => { 18645 this.radomiseItem($item, index); 18646 }); 18647 this.$itemsNoAnimate.forEach(($item, index) => { 18648 gsapWithCSS.set($item, { 18649 opacity: Math.random() * (1 - 0.2) + 0.2 18650 }); 18651 }); 18652 introTimeline.fromTo( 18653 this.$stage, 18654 { 18655 scale: 0.75, 18656 opacity: 0.5 18657 }, 18658 { 18659 scale: 1, 18660 opacity: 1, 18661 duration: 4, 18662 ease: "expo.out" 18663 }, 18664 "-=3.5" 18665 ).fromTo( 18666 this.$placeholderItems, 18667 { 18668 opacity: 0.5, 18669 scale: 0 18670 }, 18671 { 18672 opacity: 1, 18673 scale: 1, 18674 duration: 2, 18675 ease: "expo.out" 18676 }, 18677 "-=3.5" 18678 ).to( 18679 this.$itemsToAnimate, 18680 { 18681 opacity: 1, 18682 duration: 0.5, 18683 ease: "expo.out" 18684 }, 18685 "-=4" 18686 ).to( 18687 this.shuffle(this.$itemsToAnimate), 18688 { 18689 x: 0, 18690 y: 0, 18691 opacity: 1, 18692 stagger: 0.05, 18693 duration: 2, 18694 ease: "expo.out" 18695 }, 18696 "-=3" 18697 ).to( 18698 this.$itemsNoAnimate, 18699 { 18700 opacity: 1, 18701 duration: 2, 18702 ease: "expo.out" 18703 }, 18704 "-=3" 18705 ).to( 18706 this.$placeholderItems, 18707 { 18708 opacity: 0, 18709 duration: 2, 18710 ease: "expo.out" 18711 }, 18712 "-=2" 18713 ); 18714 } 18715 radomiseItem($item, index, isExtras = false) { 18716 if (index % 2 === 0) { 18717 gsapWithCSS.set($item, { 18718 x: `-${Math.random() * (this.boxWidth / 2) + this.boxWidth / 2}px`, 18719 y: `${Math.random() * 40 - 20}px`, 18720 opacity: Math.random() * (1 - 0.2) + 0.2 18721 }); 18722 } else { 18723 gsapWithCSS.set($item, { 18724 x: `${Math.random() * (this.boxWidth / 2) + this.boxWidth / 2}px`, 18725 y: `${Math.random() * 40 - 20}px`, 18726 opacity: Math.random() * (1 - 0.2) + 0.2 18727 }); 18728 } 18729 } 18730 shuffle(nodeList) { 18731 const array = Array.from(nodeList); 18732 for (let i2 = array.length - 1; i2 > 0; i2--) { 18733 const j = Math.floor(Math.random() * (i2 + 1)); 18734 [array[i2], array[j]] = [array[j], array[i2]]; 18735 } 18736 return array; 18737 } 18738 } 18739 class LoyaltyFeatures { 18740 constructor() { 18741 this.$el = document.querySelector(".js-loyalty-features"); 18742 if (!this.$el) { 18743 return; 18744 } 18745 } 18746 } 18747 class LoyaltyLandingPage { 18748 constructor() { 18749 this.$el = document.querySelector(".js-loyalty-landing-page"); 18750 if (!this.$el) { 18751 return; 18752 } 18753 this.state = "mobile"; 18754 this.$mobileImage = this.$el.querySelector( 18755 ".js-loyalty-landing-page-mobile-image" 18756 ); 18757 this.$desktopImage = this.$el.querySelector( 18758 ".js-loyalty-landing-page-desktop-image" 18759 ); 18760 this.$toggle = this.$el.querySelector(".js-loyalty-landing-page-toggle"); 18761 this.$toggle.addEventListener("click", this.toggle.bind(this)); 18762 this.updateState(true); 18763 } 18764 toggle() { 18765 this.$toggle.classList.toggle("is-active"); 18766 this.updateState(); 18767 } 18768 updateState(firstRun = false) { 18769 if (firstRun) { 18770 this.$mobileImage.classList.remove("is-hidden"); 18771 this.$desktopImage.classList.add("is-hidden"); 18772 return; 18773 } 18774 if (this.state === "mobile") { 18775 this.$mobileImage.classList.add("is-hidden"); 18776 this.$desktopImage.classList.remove("is-hidden"); 18777 this.state = "desktop"; 18778 } else { 18779 this.$mobileImage.classList.remove("is-hidden"); 18780 this.$desktopImage.classList.add("is-hidden"); 18781 this.state = "mobile"; 18782 } 18783 } 18784 } 18785 class LoyaltyOnSite { 18786 constructor() { 18787 this.$el = document.querySelector(".js-loyalty-on-site"); 18788 if (!this.$el) { 18789 return; 18790 } 18791 } 18792 } 18793 gsapWithCSS.registerPlugin(ScrollTrigger); 18794 class LoyaltyRedemptionRules { 18795 constructor() { 18796 this.$el = document.querySelector(".js-loyalty-redemption-rules"); 18797 if (!this.$el) { 18798 return; 18799 } 18800 this.$title = this.$el.querySelector(".js-loyalty-redemption-rules-title"); 18801 this.$description = this.$el.querySelector( 18802 ".js-loyalty-redemption-rules-description" 18803 ); 18804 this.$stage = this.$el.querySelector(".js-loyalty-redemption-rules-stage"); 18805 this.$stageItems = this.$stage.querySelectorAll( 18806 ".js-loyalty-redemption-rules-stage-item" 18807 ); 18808 this.isMobile = window.innerWidth <= 1024; 18809 this.animate(); 18810 } 18811 animate() { 18812 const timelineOptions = { 18813 scrollTrigger: { 18814 trigger: this.$el, 18815 scrub: true, 18816 pin: !this.isMobile, 18817 end: "+=3000" 18818 } 18819 }; 18820 if (this.isMobile) { 18821 timelineOptions.scrollTrigger.end = "bottom 100%"; 18822 } 18823 const timeline = gsapWithCSS.timeline(timelineOptions); 18824 const offset = 158; 18825 timeline.fromTo( 18826 this.$title, 18827 { 18828 opacity: 0.5 18829 }, 18830 { 18831 opacity: 1, 18832 duration: 2, 18833 ease: "expo.out" 18834 } 18835 ).fromTo( 18836 this.$description, 18837 { 18838 opacity: 0.5 18839 }, 18840 { 18841 opacity: 1, 18842 duration: 2, 18843 ease: "expo.out" 18844 }, 18845 "-=2" 18846 ); 18847 if (this.isMobile) { 18848 timeline.fromTo( 18849 this.$stage, 18850 { 18851 opacity: 0 18852 }, 18853 { 18854 opacity: 1, 18855 duration: 2, 18856 ease: "expo.out" 18857 }, 18858 "-=3" 18859 ); 18860 } else { 18861 timeline.fromTo( 18862 this.$stage, 18863 { 18864 opacity: 0.5 18865 }, 18866 { 18867 opacity: 1, 18868 duration: 1, 18869 ease: "expo.out" 18870 }, 18871 "0" 18872 ); 18873 timeline.fromTo( 18874 this.$stage, 18875 { 18876 // move the stage to the center of the screen 18877 x: this.$stage.getBoundingClientRect().width / 2 + offset 18878 }, 18879 { 18880 x: -this.$stage.getBoundingClientRect().width / 2 - offset, 18881 duration: 2 18882 }, 18883 "-=1.5" 18884 ); 18885 } 18886 } 18887 } 18888 class LoyaltyReporting { 18889 constructor() { 18890 this.$el = document.querySelector(".js-loyalty-reporting"); 18891 if (!this.$el) { 18892 return; 18893 } 18894 this.$tabButtons = this.$el.querySelectorAll( 18895 ".js-loyalty-reporting-tab-button" 18896 ); 18897 this.$galleryImages = this.$el.querySelectorAll( 18898 ".js-loyalty-reporting-gallery img" 18899 ); 18900 this.timer = null; 18901 this.selectedIndex = 0; 18902 this.duration = 2e3; 18903 this.$tabButtons.forEach(($tab, index) => { 18904 const $progress = $tab.querySelector( 18905 ".js-loyalty-reporting-tab-button-progress" 18906 ); 18907 $progress.addEventListener("animationend", () => { 18908 const $nextTab = this.$tabButtons[index + 1]; 18909 if (!$nextTab) { 18910 this.$tabButtons[0].click(); 18911 } else { 18912 $nextTab.click(); 18913 } 18914 }); 18915 $tab.addEventListener("click", () => { 18916 this.hideAllImages(); 18917 this.hideAllTabs(); 18918 $tab.classList.add("is-active"); 18919 this.$galleryImages[index].classList.add("is-active"); 18920 }); 18921 }); 18922 } 18923 hideAllTabs() { 18924 this.$tabButtons.forEach((tab) => { 18925 tab.classList.remove("is-active"); 18926 }); 18927 } 18928 hideAllImages() {
18929 this.$galleryImages.forEach((image) => { 18930 image.classList.remove("is-active"); 18931 }); 18932 } 18933 } 18934 gsapWithCSS.registerPlugin(ScrollTrigger); 18935 class LoyaltyVIPTiers { 18936 constructor() { 18937 this.$el = document.querySelector(".js-loyalty-vip-tiers"); 18938 if (!this.$el) { 18939 return; 18940 } 18941 this.$title = this.$el.querySelector(".js-loyalty-vip-tiers-title"); 18942 this.$description = this.$el.querySelector( 18943 ".js-loyalty-vip-tiers-description" 18944 ); 18945 this.$track = this.$el.querySelector(".js-loyalty-vip-tiers-track"); 18946 this.$items = this.$el.querySelectorAll(".js-loyalty-vip-tiers-item"); 18947 this.$stage = this.$el.querySelector(".js-loyalty-vip-tiers-stage"); 18948 this.$tick1 = this.$el.querySelector(".js-loyalty-vip-tiers-item-tick-1"); 18949 this.$tick2 = this.$el.querySelector(".js-loyalty-vip-tiers-item-tick-2"); 18950 this.$tick3 = this.$el.querySelector(".js-loyalty-vip-tiers-item-tick-3"); 18951 this.$tick4 = this.$el.querySelector(".js-loyalty-vip-tiers-item-tick-4"); 18952 this.$frame1 = this.$el.querySelector(".js-loyalty-vip-tiers-frame-1"); 18953 this.$frame2 = this.$el.querySelector(".js-loyalty-vip-tiers-frame-2"); 18954 this.$frame3 = this.$el.querySelector(".js-loyalty-vip-tiers-frame-3"); 18955 this.$frame4 = this.$el.querySelector(".js-loyalty-vip-tiers-frame-4"); 18956 this.ticks = [this.$tick1, this.$tick2, this.$tick3, this.$tick4]; 18957 this.frames = [this.$frame1, this.$frame2, this.$frame3, this.$frame4]; 18958 this.animate(); 18959 } 18960 animate() { 18961 const timeline = gsapWithCSS.timeline({ 18962 scrollTrigger: { 18963 trigger: this.$el, 18964 pin: window.innerWidth > 1024, 18965 scrub: true, 18966 end: window.innerWidth > 1024 ? "+=500" : void 0, 18967 anticipatePin: 1 18968 } 18969 }); 18970 timeline.fromTo( 18971 this.$track, 18972 { 18973 height: "0%" 18974 }, 18975 { 18976 delay: 10, 18977 height: "100%", 18978 duration: 40, 18979 ease: "expo.out" 18980 } 18981 ).fromTo( 18982 this.ticks, 18983 { 18984 scale: 0 18985 }, 18986 { 18987 scale: 1, 18988 duration: 10, 18989 stagger: 5, 18990 ease: "expo.out" 18991 }, 18992 "-=40" 18993 ).fromTo( 18994 this.frames, 18995 { 18996 opacity: 0 18997 }, 18998 { 18999 opacity: 1, 19000 duration: 10, 19001 stagger: 5, 19002 ease: "expo.out" 19003 }, 19004 "-=40" 19005 ); 19006 } 19007 } 19008 class LoyaltySlideshow { 19009 constructor() { 19010 const $els = document.querySelectorAll(".js-loyalty-slideshow-slider"); 19011 $els.forEach(($el) => new Carousel$3($el)); 19012 } 19013 } 19014 let Carousel$3 = class Carousel { 19015 constructor($el) { 19016 this.$el = $el; 19017 this.carousel = new Flickity(this.$el, { 19018 cellAlign: "center", 19019 prevNextButtons: false, 19020 pageDots: true, 19021 wrapAround: true, 19022 imagesLoaded: true, 19023 draggable: false 19024 }); 19025 } 19026 }; 19027 function detectIE() { 19028 const isIE = ( 19029 /*@cc_on!@*/ 19030 !!document.documentMode 19031 ); 19032 const isEdge = !isIE && !!window.StyleMedia; 19033 if (isIE) { 19034 document.body.classList.add("ie-11"); 19035 } 19036 if (isEdge) { 19037 document.body.classList.add("ie-edge"); 19038 } 19039 } 19040 function enableJS() { 19041 document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/, ""); 19042 } 19043 class CampaignQuotes { 19044 constructor() { 19045 const $els = document.querySelectorAll(".js-campaign-quotes"); 19046 $els.forEach(($el) => new Carousel$2($el)); 19047 } 19048 } 19049 let Carousel$2 = class Carousel { 19050 constructor($el) { 19051 this.flickity = new Flickity($el.querySelector(".js-carousel"), { 19052 imagesLoaded: true, 19053 prevNextButtons: false, 19054 pageDots: false, 19055 contain: "true", 19056 cellAlign: "center", 19057 groupCells: true 19058 }); 19059 $el.querySelector(".js-next").addEventListener("click", (e) => { 19060 e.preventDefault(); 19061 this.flickity.next(); 19062 }); 19063 $el.querySelector(".js-prev").addEventListener("click", (e) => { 19064 e.preventDefault(); 19065 this.flickity.previous(); 19066 }); 19067 } 19068 }; 19069 class Horizontal { 19070 constructor() { 19071 const $els = document.querySelectorAll(".js-horizontal");
19072 $els.forEach(($el) => new ReadMore($el)); 19073 } 19074 } 19075 class ReadMore { 19076 constructor($el) { 19077 this.$text = $el.querySelector(".js-text"); 19078 this.$readMore = $el.querySelector(".js-read-more"); 19079 this.$readLess = $el.querySelector(".js-read-less"); 19080 this.$readMore.addEventListener("click", (e) => { 19081 e.preventDefault(); 19082 this.$text.ariaExpanded = true; 19083 }); 19084 this.$readLess.addEventListener("click", (e) => { 19085 e.preventDefault(); 19086 this.$text.ariaExpanded = false; 19087 }); 19088 } 19089 } 19090 class LongformContent { 19091 constructor() { 19092 const $els = document.querySelectorAll(".js-longform-content"); 19093 $els.forEach(($el) => new InlineVideo$1($el)); 19094 } 19095 } 19096 let InlineVideo$1 = class InlineVideo { 19097 constructor($el) { 19098 this.$video = $el.querySelector(".js-video"); 19099 this.$play = $el.querySelector(".js-play"); 19100 if (!this.$play) return; 19101 this.$play.addEventListener("click", (e) => { 19102 e.preventDefault(); 19103 this.$play.classList.add("hidden"); 19104 this.$video.classList.remove("hidden"); 19105 this.$video.firstChild.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', "*"); 19106 }); 19107 } 19108 }; 19109 class InspirationGallery { 19110 constructor() { 19111 const $els = document.querySelectorAll(".js-inspiration-gallery"); 19112 $els.forEach(($el) => new Carousel$1($el)); 19113 } 19114 } 19115 let Carousel$1 = class Carousel { 19116 constructor($el) { 19117 var _a, _b; 19118 this.activeClass = "is-active"; 19119 this.$tabs = $el.querySelectorAll(".js-tab"); 19120 this.$carousel = $el.querySelector(".js-carousel"); 19121 this.$nextBtn = $el.querySelector(".js-next-btn"); 19122 this.$prevBtn = $el.querySelector(".js-prev-btn"); 19123 this.flickity = new Flickity(this.$carousel, { 19124 imagesLoaded: true, 19125 prevNextButtons: false, 19126 pageDots: false, 19127 percentPosition: false, 19128 wrapAround: true 19129 }); 19130 this.flickity.on("select", this.onSelect.bind(this)); 19131 (_a = this.$nextBtn) == null ? void 0 : _a.addEventListener("click", this.next.bind(this)); 19132 (_b = this.$prevBtn) == null ? void 0 : _b.addEventListener("click", this.prev.bind(this)); 19133 this.$tabs.forEach(($tab, index) => { 19134 $tab.addEventListener("click", this.goToSlide.bind(this, $tab, index)); 19135 }); 19136 } 19137 /** 19138 * @function next 19139 * @param {Event} e 19140 * @returns void 19141 * Goes to next slide in carousel 19142 */ 19143 next(e) { 19144 if (!this.flickity) return; 19145 e.preventDefault(); 19146 this.flickity.next(); 19147 } 19148 /** 19149 * @function prev 19150 * @param {Event} e 19151 * @returns void 19152 * Goes to previous slide in carousel 19153 */ 19154 prev(e) { 19155 if (!this.flickity) return; 19156 e.preventDefault(); 19157 this.flickity.previous(); 19158 } 19159 /** 19160 * @function goToSlide 19161 * @param {HTMLButtonElement} $tab tab that has been clicked 19162 * @param {Number} index slide index 19163 * @returns void 19164 * Goes to specific slide in carousel based on index 19165 */ 19166 goToSlide($tab, index = 0) { 19167 if (!this.flickity || !$tab) return; 19168 this.$tabs.forEach(($tab2) => $tab2.ariaSelected = false); 19169 $tab.ariaSelected = true; 19170 this.flickity.select(index); 19171 } 19172 /** 19173 * @function onSelect 19174 * @param {Number} index 19175 * Fired when the Flickity slide changes 19176 */ 19177 onSelect(index) { 19178 this.$tabs.forEach(($tab) => $tab.ariaSelected = false); 19179 this.$tabs[index] && (this.$tabs[index].ariaSelected = true); 19180 } 19181 }; 19182 class StepperStickyNav { 19183 constructor() { 19184 document.querySelectorAll(".js-stepper-sticky-nav").forEach(($el) => new StepsElement($el)); 19185 } 19186 } 19187 class StepsElement { 19188 constructor($el) { 19189 __publicField(this, "MIN_DESKTOP_WIDTH", 1024); 19190 this.$el = $el; 19191 this.$progressBar = this.$el.querySelector(".js-steps-progress-bar"); 19192 this.$container = this.$el.querySelector(".js-steps-progress-container"); 19193 this.$steps = [...this.$el.querySelectorAll(".js-steps-bar-step")]; 19194 this.buildLeftPoints(); 19195 window.addEventListener("scroll", this.scroll.bind(this)); 19196 window.addEventListener("resize", this.resize.bind(this)); 19197 } 19198 buildLeftPoints() { 19199 const { width } = this.$container.getBoundingClientRect(); 19200 const { offsetWidth } = document.body; 19201 this.leftPoints = this.$steps.map(($step) => { 19202 const { left } = $step.getBoundingClientRect(); 19203 let percentage = left / offsetWidth * 100; 19204 if (window.innerWidth < this.MIN_DESKTOP_WIDTH) { 19205 percentage = left / (width + offsetWidth) * 100; 19206 } 19207 const el = document.getElementById($step.href.split("#")[1]); 19208 const y = el.offsetTop; 19209 return { 19210 $step, 19211 el, 19212 y, 19213 percentage 19214 }; 19215 }); 19216 } 19217 scroll() { 19218 var _a, _b; 19219 const viewportTop = document.body.scrollTop + document.documentElement.scrollTop + window.innerHeight; 19220 for (const point of this.leftPoints) { 19221 point.$step.toggleAttribute("data-passed", viewportTop >= point.y); 19222 } 19223 for (const [i2, point] of this.leftPoints.entries()) { 19224 const nextY = ((_a = this.leftPoints[i2 + 1]) == null ? void 0 : _a.y) || Infinity; 19225 point.$step.ariaSelected = viewportTop >= point.y && viewportTop < nextY; 19226 } 19227 const lastIndex = this.leftPoints.findLastIndex((point) => viewportTop >= point.y); 19228 const percentageBar = ((_b = this.leftPoints[lastIndex + 1]) == null ? void 0 : _b.percentage) ?? 100; 19229 const percentageOffset = this.leftPoints[lastIndex].percentage; 19230 this.$progressBar.style.width = `${percentageBar}%`; 19231 if (window.innerWidth < this.MIN_DESKTOP_WIDTH) { 19232 this.$container.style.transform = `translateX(-${percentageOffset}%)`; 19233 } 19234 } 19235 resize() { 19236 this.$container.style.transform = `translateX(0)`; 19237 this.buildLeftPoints(); 19238 } 19239 } 19240 class Stats { 19241 constructor() { 19242 const $els = document.querySelectorAll(".js-stats");
19243 $els.forEach(($el) => new Carousel($el)); 19244 } 19245 } 19246 class Carousel { 19247 constructor($el) { 19248 this.flickity = new Flickity($el.querySelector(".js-carousel"), { 19249 imagesLoaded: true, 19250 prevNextButtons: false, 19251 pageDots: false, 19252 contain: "true", 19253 cellAlign: "center", 19254 groupCells: true, 19255 watchCSS: true 19256 }); 19257 $el.querySelector(".js-next").addEventListener("click", (e) => { 19258 e.preventDefault(); 19259 this.flickity.next(); 19260 }); 19261 $el.querySelector(".js-prev").addEventListener("click", (e) => { 19262 e.preventDefault(); 19263 this.flickity.previous(); 19264 }); 19265 } 19266 } 19267 class TextCalloutSections { 19268 constructor() { 19269 this.$el = document.querySelector(".js-text-callout-sections"); 19270 if (!this.$el) { 19271 return; 19272 } 19273 this.$loadMoreButton = this.$el.querySelector(".js-load-more"); 19274 this.$grid = this.$el.querySelector(".js-grid"); 19275 if (!this.$loadMoreButton || !this.$grid) { 19276 return; 19277 } 19278 this.$loadMoreButton.addEventListener("click", this.loadMore.bind(this)); 19279 } 19280 loadMore() { 19281 this.$grid.classList.add("done"); 19282 this.$loadMoreButton.classList.add("hidden"); 19283 } 19284 } 19285 class ProductFeaturedImage { 19286 constructor() { 19287 const $els = document.querySelectorAll(".js-qr-product-featured-image"); 19288 $els.forEach(($el) => new InlineVideo($el)); 19289 } 19290 } 19291 class InlineVideo { 19292 constructor($el) { 19293 this.$video = $el.querySelector(".js-video"); 19294 this.$play = $el.querySelector(".js-play"); 19295 if (!this.$play) return; 19296 this.$play.addEventListener("click", (e) => { 19297 e.preventDefault(); 19298 this.$play.classList.add("hidden"); 19299 this.$video.classList.remove("hidden"); 19300 this.$video.firstChild.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', "*"); 19301 }); 19302 } 19303 } 19304 class App { 19305 constructor() { 19306 detectIE(); 19307 enableJS(); 19308 new Accordion(); 19309 new Analytics(); 19310 new OkendoIntercom(); 19311 new Tilt(); 19312 new Anchor(); 19313 new Modal(); 19314 new AccordionContent(); 19315 new Animations(); 19316 new ArticleListing(); 19317 new BecomePartnerForm(); 19318 new BookDemo(); 19319 new BookDemoForm(); 19320 new BookNowForm(); 19321 new Callouts(); 19322 new CarouselContent(); 19323 new CaseStudiesListing(); 19324 new ClientTestimonialGrid(); 19325 new Countdown(); 19326 new CustomerImpact(); 19327 new CustomerStoryVideos(); 19328 new FeaturedMerchants(); 19329 new Hamburger(); 19330 new HiringProcess(); 19331 new InspirationListing(); 19332 new JoinUs(); 19333 new LandingPageHero(); 19334 new LogoTicker(); 19335 new MobileMenu(); 19336 new PartnerBenefits(); 19337 new PartnershipSpotlight(); 19338 new PlatformAdvantages(); 19339 new Pricing(); 19340 new ProductDemo(); 19341 new ProductFeaturedIntegrations(); 19342 new ProductHero(); 19343 new ProductImageGallery(); 19344 new ProductUpdatesHighlights(); 19345 new ProductUpdatesAll(); 19346 new RelatedCustomerStories(); 19347 new ResourcesCarousel(); 19348 new SocialProof(); 19349 new SocialProofBoxes(); 19350 new Steps(); 19351 new TabbedContent(); 19352 new TimelineCarousel(); 19353 new WatchOurDemos(); 19354 new WebinarsCarousel(); 19355 new WhatsNew(); 19356 new WYSIWYG(); 19357 new HeroVideoInline(); 19358 new VideoTestimonials(); 19359 new CampaignQuotes(); 19360 new KeyTakeaways(); 19361 new Horizontal(); 19362 new LongformContent(); 19363 new InspirationGallery(); 19364 new StepperStickyNav(); 19365 new Stats(); 19366 new TextCalloutSections(); 19367 new ProductFeaturedImage(); 19368 new LoyaltyHero(); 19369 new LoyaltyDisplays(); 19370 new LoyaltyEarningRules(); 19371 new LoyaltyFeatures(); 19372 new LoyaltyLandingPage(); 19373 new LoyaltyOnSite(); 19374 new LoyaltyRedemptionRules(); 19375 new LoyaltyReporting(); 19376 new LoyaltyVIPTiers(); 19377 new LoyaltySlideshow(); 19378 } 19379 } 19380 document.addEventListener("DOMContentLoaded", () => new App()); 19381})(); 19382//# sourceMappingURL=index-legacy.js.map
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.