Inner part of the Galaxy Ring is in close-up. The ring moves to reveal the three sensors glowing. The ring continues to move and twist and shows the whole ring. Scene changes and the three Galaxy Ring appear one by one to form a line. The text Galaxy Ring and Galaxy AI is here can be seen.
Welcome to the new era of AI-powered wellness
Wrap wellness tracking around your finger.
A lightweight titanium frame and sleek, concave design that's so comfortable, you'll forget it's there. Titanium strong and water resistant for all-day wear, with a battery that lasts up to 7 days. 3 built-in sensors give you insights around the clock. Galaxy AI analyzes the collected data to provide you with personalized wellness and sleep tips for better days and better nights.
Meet an all new Samsung Galaxy , , , , ,
Made with titanium , ,
A circle appears. The circle is being created into the Galaxy Ring. Three sensors appear inside and the complete Galaxy Ring is shown.
AI-powered wellness experience ,
Dotted icons of sleep tracking feature, the Samsung Health app and heart rate monitoring feature are shown side by side. The icons come together in the middle. Sleep tracking feature icon at the front disappears. Samsung Health app icon is left. GUI of the Energy Score feature appears and the score goes up to 92. The text Excellent is below the Energy Score.
Wellness monitoring with three-sensor technology ,
Inner part of the Galaxy Ring is in close-up. The ring moves to reveal the three sensors glowing.
Thin, Light and Sleek , ,
Three rings can be seen. All three are tilted to different angles.
Sleek, concave design
Stay ahead of the trends with an all new Galaxy that proves high-tech devices don't have to be bulky. The concave design adds an elegant touch to the timeless aesthetic of Galaxy Ring. And its titanium frame gives the Galaxy Ring a stylish look that fits into all your day's activities. , ,
A Galaxy Ring appears and is in the background. Three rings appear in the front. The top one on the right shows the side of the ring. The middle one is tilted to show the inner part of the ring. The last one on the left is slightly tilted than the middle one.
Three-sensor technology on your finger
One Ring, three-sensor technology. Galaxy Ring is 7mm wide, 2.6mm thick and weighs 2.3g — light and comfortable but fully equipped to track your days and nights. , ,
A Galaxy Ring appears, facing the front. It twists and turns to reveal the three sensors.
Accelerometer
Track the movements and activity of your body without pressing a button.
Optical Bio-signal Sensor
Monitor your heart rate.
Skin Temperature Sensor
Get regular readings on how your skin temperature changes while you sleep.
Optical Bio-signal Sensor
Monitor your heart rate and stay informed of your heart condition.
Accelerometer
Track the movements and activity of your body without pressing a button.
Skin Temperature Sensor
Get regular readings on how your skin temperature changes while you sleep.
Battery that lasts up to 7 days
Put on your Galaxy Ring to go to work, to the gym, to bed and repeat all over again without having to charge the battery. Galaxy Ring works day and night with a battery that lasts up to 7 days on a single charge., ,
Three circles can be seen. The one in the middle is placed inside a Galaxy Ring. Each circle shows different hands wearing the ring in different situations. The scenes change as the text below the Galaxy Ring changes from Up to 1 Days to Up to 7 Days. A fully charged battery icon is next to the text to indicate the battery can last up to 7 days.
AI-powered wellness tracker on your finger
The more you wear your Galaxy Ring, the smarter it gets. Slip Galaxy Ring on your finger and let it track your wellness all day. Then, check the Samsung Health app to see the comprehensive report Galaxy AI put together. , , , ,
Galaxy AIis here
A Galaxy Ring twists and arranges itself into a slightly tilted side-view position. Smartphones also appear, with GUI of different Samsung Health features onscreen.
Crystal-clear, functional charging case
Even while charging in its crystal-clear charging case, the Galaxy Ring is a sight to behold. The delicate glow of the light around the multi-purpose button indicates the battery charging level. The charging case can be charged wirelessly too. Simply place your Galaxy Ring in its case and place it on a wireless charging pad for easy charging. , ,
The lid of Galaxy Ring Charging Case lifts open. A Galaxy Ring is in its place, around the Multi-purpose button. The circular indicator light lights up in a counter-clockwise direction until fully illuminated in a circle.
A Galaxy Ring is in its place, around the Multi-purpose button. The Multi-purpose button is short-pressed. The circular indicator light comes on in the clockwise direction to about 70% to indicate the corresponding battery level.
A Galaxy Ring is in its place, around the Multi-purpose button. The Multi-purpose button is long-pressed. The circular indicator light moves in the clockwise direction to indicate the pairing mode.
Slim, light. Fits right day and night
Whether you're typing on a keyboard, cooking or even sleeping, Galaxy Ring's slim form factor and lightweight titanium frame are so comfortable that you'll forget it's there. ,
Colours that match any style
From the weight room to the ballroom, sport the Galaxy Ring for any occasion. Whether it's the subtle sophistication of the matt Titanium Black and Titanium Silver, or the brilliant glow of the Titanium Gold, Galaxy Ring blends seamlessly with your look. Explore the three unique colours of the Galaxy Ring.
Titanium Black
Titanium Silver
Titanium Gold
Titanium BlackTitanium SilverTitanium Gold
10 ATM water-resistant rating
Keep your Galaxy Ring on when you're washing your hands, jumping into the shower or taking a dip in the ocean. Galaxy Ring has a water-resistant rating of 10 ATM — which means it will continue to track your data even when you're drenched.
A hand wearing a Galaxy Ring can be seen. A stream of water falls onto the hand to illustrate the water-resistance of the ring.
AI-powered wellness insights on Samsung Health
Start your wellness journey on the right foot with Galaxy AI-powered insights on the Samsung Health app. Galaxy AI analyzes your data to give personalized tips that you can incorporate into your daily routine. It also sends you alerts when you haven't moved in a while or if your heart rate changes. , ,
At the top, the Samsung Health app icon and the text Samsung Health can be seen. A Galaxy Ring can be seen with a dotted Samsung Health icon in the middle, like it is going through the ring. The ring turns and the icon changes to a dotted heart icon to indicate the heart monitoring feature of Samsung Health. Above the ring, the Samsung Health app icon and the text Samsung Health changes to the text Galaxy AI is here.
Discover your body's potential with Energy Score
Energy Score provides a comprehensive analysis of your sleep patterns, activities and heart rate and gives you an easy-to-understand score. Plan ahead and move smarter with Galaxy AI.,
At the top, the sensors of Galaxy Ring light up and then the ring moves along to illustrate the Energy Score going up each day. Energy Score 92 can be seen with the text Excellent below.
Stay motivated with Wellness Tips
Get personalized insights through Wellness Tips. Receive useful tips for your wellness journey based on your activity and sleep patterns.
The text What do you want to focus on, Sam? can be seen. Below are four icons: Overall Health, Sleep, Exercise and Healthy Weight. The Sleep icon is highlighted to indicate it was selected. The Wellness Tips feature appears and the text You practiced better sleep habits last week than the week before, averaging a 85% sleep habit achievement rate. Continue with your sleep coaching to make healthy sleep habits a part of your routine. can be seen. Below is the related bar chart. On the left is Week 2 with the text 52%. On the right is Last week with the text 85%.
Rise and shine with better sleep insights
Sleep through the night with your Galaxy Ring on. Together, Galaxy Ring and Samsung Health monitor your overall sleep including sleep stage, sleep pattern, nighttime movement, nightly skin temperature, and heart rate variations during sleep. Get Sleep Coaching based on the data to improve your sleep habits. ,
Easily track your cycles with skin temperature
Manage your cycles easier and plan ahead with Galaxy Ring. The Skin Temperature Sensor detects changes in your skin temperature while you sleep. Your temperature data is used to forecast your next period and the start of your next menstrual cycle within Cycle Tracking. ,
Heart rate monitoring you can count on
Galaxy Ring continuously monitors your heart rate and sends alerts through the Samsung Health app when your heart rate fluctuates, making sure you stay informed. ,
Galaxy Ring auto-tracks your walks and runs
Simply place it on your finger and Galaxy Ring will take care of the rest. Galaxy Ring auto-tracks your walks and runs without having to press any start buttons. Check calories burned and other stats on the Samsung Health app to keep track of your progress. ,
Today
GUI of inactive alert and auto-tracking running and walking can be seen.
Harmonizing your wellness journey
Access and manage comprehensive information about your overall well-being through the Samsung Health app on your Samsung Galaxy devices. Integrate detailed insights to strive toward your wellness goals.
With Galaxy Ring on your finger, you can control your paired Samsung Galaxy smartphone with a simple gesture. Just double-pinch with your thumb and the finger wearing the Galaxy Ring to take pictures or turn off alarms., ,
Trace back to the last location with Find My Ring
Lost your Galaxy Ring? Take a deep breath and open Find My Ring on your Samsung Galaxy device to see the location where your Galaxy Ring was last paired., ,
Get started with your Samsung account
To start using Galaxy Ring, a Samsung Account must be registered on your Samsung Galaxy smartphone. Your data on your Galaxy Ring will be transferred and stored in the Samsung Cloud connected to your account, so you can fully access and manage your data. , ,
Find the one
Find the right fit with the Galaxy Ring Sizing Kit. Galaxy Ring sizes may be different from regular ring sizes, so get the Sizing Kit upon purchase to find the ideal fit for your finger. Choose from a selection of 11 sample rings and have it on for more than a full day to ensure that your finger feels comfortable. Once you've made your decision, complete your order on the My order page. , , , ,
How to find your Galaxy Ring size with the Sizing Kit. Want to find your galaxy ring size? It may be different from regular rings because of the sensors. The Galaxy Ring Sizing Kit will help you find your ring size. Open the box and check out the sample rings. The sample rings come in 9 sizes, from 5 to 13. You can wear them on any finger. Pick a size and try it on. Check the position of the three sensors on the bottom. And the indicator on the outer surface. Wear the sample ring so that the sensors are facing up. Make sure the indicator is also on the palm side. And ensure that your finger feels comfortable. Check that it’s not too small or too big. Try them out to find your size from 9 available options. When you find the one that feels right, move your fingers around. Finger sizes can change from day to night. So it’s recommended to keep the ring on for over 24 hours. Go about your day and sleep through the night. Does your finger feel comfortable even after 24 hours? Great! You’ve found your Galaxy Ring size. samsung.com. Samsung logo. Video simulated for illustrative purposes. One Sizing Kit is available free of charge upon purchasing the Galaxy Ring. Only one Sizing Kit is provided per order number. Sample rings included in the Galaxy Ring Sizing Kit are only for measuring the size for Galaxy Ring. Do not wear the sample ring for longer than intended. Doing so may result in skin irritation. Wearing the sample ring for at least 24 hours is recommended to allow sufficient time for your finger to adapt to the fit of the Galaxy Ring. Availability of Galaxy Ring sizes and colors may vary by country/region. Galaxy Ring sizes are based on US standard sizes (US 5 - US 13).
Step 1. Receive the Sizing Kit
Order the Galaxy Ring and choose the ‘I don’t know my size’ option. The Sizing Kit will be shipped first, before you confirm the size of the actual Galaxy Ring.
Step 2. Test your size
Use the sample rings to find the size that fits the finger you want to wear your Galaxy Ring on. We recommend that you wear the sample ring for at least 24 hours to make sure the ring fits comfortably on your finger.
Step 3. Confirm your size
Confirm your ring size on the ‘My Order’ page. Check your inbox for the size confirmation email.
Availability of colours and sizes may vary by region, carrier, or retailer.
For Samsung Health AI features, the health data tracked from Samsung Galaxy Ring must be synchronized with the Samsung Health app. Needs at least the previous day’s activity and sleep data, and heart rate data during sleep. Not intended for use in detection, diagnosis, treatment of any medical condition.
Titanium is only applied on the device frame.
Samsung Health tracking features are intended for general wellness and fitness purposes only. Not intended for use in detection, diagnosis, treatment, monitoring or management of any medical condition or disease. Any health related information accessed through the device and application should not be treated as medical advice. Users should seek any medical advice from a physician.
Image simulated for illustrative purposes.
Weight of Galaxy Ring varies by size. 2.3g is the weight of the size 5 Galaxy Ring. Size 6 Galaxy Ring 2.4g, size 7 Galaxy Ring 2.4g, size 8 Galaxy Ring 2.6g, size 9 Galaxy Ring 2.7g, size 10 Galaxy Ring 2.8g, size 11 Galaxy Ring 2.8, size 12 Galaxy Ring 3.0g, size 13 Galaxy Ring 3.0g, size 14 Galaxy Ring 3.2g, size 15 Galaxy Ring 3.3g.
Galaxy Ring must be paired with a smartphone with Android 11.0 or above and minimum 1.5GB memory. Samsung account login is required. Service is only available when user registers their Galaxy Ring through their Samsung account.
Battery life based on testing conducted with the size 12,13 Galaxy Ring. Battery life of the size 12,13 Galaxy Ring lasts up to 7 days on a single charge. Battery life varies by ring size.
Battery life is based on results from internal lab tests for typical usage pattern scenarios conducted by Samsung. Tested with results from a pre-release version of the device using under scenario of Sleep Tracking for 6 hours, Work Auto Detection for 1 hour and 30 minutes and with several specific events ( reconnection after disconnection, Samsung Health app setting change, Find My Ring execution, gesture execution) assuming 24 hours of use per day. Actual battery life may vary depending on different usage patterns, device model, or the battery manufacturer.
Actual battery life varies depending on usage patterns and other factors. Rated capacity is 17mAh for sizes 5,6,7 (battery life up to 6 days on a single charge), 18.5mAh for sizes 8,9,10,11 (battery life up to 6 days on a single charge), and 22.5mAh for sizes 12,13,14,15 (battery life up to 7 days on a single charge). Testing conducted by Samsung using Fast Charging USB C Cable, and Samsung 25W USB C Power Adapter. Charge time varies with settings, usage pattern and environmental factors; actual results may vary.
Energy Score is available on Android phones (Android 11.0 or above) and requires Samsung Health app (v6.27 or above). Samsung account login is required. Service is only available when user registers their Galaxy Ring through their Samsung account. Service availability may vary by country or region. Not intended for use in detection, diagnosis, treatment of any medical condition or diseases. The measurements are for your personal reference only. Please consult a medical professional for advice. Accuracy of results is not guaranteed.
Sleep tracking features are intended for general wellness and fitness purposes only. Intended for general wellness and fitness purposes only. Not intended for use in detection, diagnosis, treatment of any medical condition or diseases. The measurements are for your personal reference only. Please consult a medical professional for advice. Availability of Galaxy AI may vary by device model.
Sleep Coaching requires sleep data from at least 7-night within a 30-night period. Sleep Coaching is available on Android phones (Android 11.0 or above) and requires Samsung Health app (v6.27 or above). Samsung account login is required.
Galaxy Ring includes 1 Charging Case and 1 USB cable.
Size of Charging Case varies depending on Galaxy Ring size.
Wireless charger sold separately.
Galaxy Ring is water resistant for up to 10 minutes in water with depth of 100 meters according to ISO22810 standard. The test was conducted in 5% salty water and 4ppm chlorine water. Galaxy Ring is water resistant with IPx8 rating based on lab conditions of submerging up to 1.5 meter in fresh water for up to 30 minutes. It is not suitable for high-pressure water activities and diving. It may be used for shallow-water activities like swimming in a pool or ocean. Water resistance is not a permanent condition and can diminish over time. Refer to the user manual for further information, including care/use instructions.
Wellness Tips data is derived from information logged in the Samsung Health application. Wellness Tips is available on Android phones (Android 11.0 or above) and requires Samsung Health app (v6.27 or above). Samsung account login is required. Service is only available when user registers their Galaxy Ring through their Samsung account. Service availability may vary by region, carrier, or retailer. Intended for general wellness and fitness purposes only. Not intended for use in detection, diagnosis, treatment of any medical condition or diseases. The measurements are for your personal reference only. Please consult a medical professional for advice. Availability of Galaxy AI may vary by device model.
Cycle Tracking is available for cycle and period prediction which is powered by Natural Cycles. Cycle Tracking based on skin temperature works on phones and watches purchased in the countries where the service is currently available. NOT INTENDED FOR CONTRACEPTION. If you are currently taking hormonal birth control or undergoing hormonal treatment that inhibits ovulation, this service will not be useful for tracking ovulation. Predictions displayed are for personal reference only. To improve the accuracy of predictions, it is recommended to wear your ring for at least 4 hours during sleep, 5 times a week. Predictions may vary depending on the proper use of your ring, input data, environmental conditions, etc. Intended for users 18 years old and above. Users should not interpret or take clinical action based on the predictions made without consultation of a qualified healthcare professional. Requires latest version of Samsung Health app.
Availability of Samsung Health features may vary by country or region.
Heart Rate Tracking is available on Android phones (Android 11.0 or above) and requires Samsung Health app (v6.27 or above). Samsung account login is required. Service is only available when user registers their Galaxy Ring through their Samsung account. Service availability may vary by country or region. Intended for general wellness and fitness purposes only. Not intended for use in detection, diagnosis, treatment of any medical condition or diseases. The measurements are for your personal reference only. Please consult a medical professional for advice.
Auto Workout Detection is available only with walking and running. Auto Workout Detection must first be turned on within Samsung Health app.
Double Pinch is only possible for camera control and alarm dismiss. The Double Pinch feature can only be used on the Galaxy Ring paired with Samsung Galaxy smartphones running One UI 6.1.1 or above. For Alarm dismiss, the clock app version must be 12.3.30.35 or above.
During certain activities, Galaxy Ring may detect a Double Pinch gesture that you did not intend to perform. In this case, we suggest disabling the gesture recognition feature during those activities.
Galaxy Z Flip6 sold separately.
Find My Ring is only supported by Samsung Find. Location history is not supported.
Find My Ring on Samsung Find locates the Galaxy Ring based on the last connected location.
Samsung Find is only available on Samsung Galaxy devices with Android 11.0 or later.
Find My Ring shows the last location the Galaxy Ring was paired with a Samsung Galaxy device. It does not keep track of the ring's location.
Galaxy Ring sizes are based on US standard sizes (US 5 - US 15).
One Sizing Kit is available free of charge upon purchasing the Galaxy Ring. Only one Sizing Kit is provided per order number.
Sample rings included in the Galaxy Ring Sizing Kit are inoperable and for measuring ring size only.
Wearing the sample ring for at least 24 hours is recommended to allow sufficient time for your finger to adapt to the fit of the Galaxy Ring.
"
)).attr("data-swiper-slide-index") ||
e.attr("data-swiper-slide-index", t),
i.cache && (this.virtual.cache[t] = e),
e);
},
appendSlide: function (e) {
if ("object" == typeof e && "length" in e)
for (var t = 0; t < e.length; t += 1)
e[t] && this.virtual.slides.push(e[t]);
else this.virtual.slides.push(e);
this.virtual.update(!0);
},
prependSlide: function (e) {
var s,
a,
t = this.activeIndex,
i = t + 1,
n = 1;
if (Array.isArray(e)) {
for (var r = 0; r < e.length; r += 1)
e[r] && this.virtual.slides.unshift(e[r]);
(i = t + e.length), (n = e.length);
} else this.virtual.slides.unshift(e);
this.params.virtual.cache &&
((s = this.virtual.cache),
(a = {}),
Object.keys(s).forEach(function (e) {
var t = s[e],
i = t.attr("data-swiper-slide-index");
i && t.attr("data-swiper-slide-index", parseInt(i, 10) + 1),
(a[parseInt(e, 10) + n] = t);
}),
(this.virtual.cache = a)),
this.virtual.update(!0),
this.slideTo(i, 0);
},
removeSlide: function (e) {
if (null != e) {
var t = this.activeIndex;
if (Array.isArray(e))
for (var i = e.length - 1; 0 <= i; --i)
this.virtual.slides.splice(e[i], 1),
this.params.virtual.cache &&
delete this.virtual.cache[e[i]],
e[i] < t && --t,
(t = Math.max(t, 0));
else
this.virtual.slides.splice(e, 1),
this.params.virtual.cache && delete this.virtual.cache[e],
e < t && --t,
(t = Math.max(t, 0));
this.virtual.update(!0), this.slideTo(t, 0);
}
},
removeAllSlides: function () {
(this.virtual.slides = []),
this.params.virtual.cache && (this.virtual.cache = {}),
this.virtual.update(!0),
this.slideTo(0, 0);
},
},
y = {
name: "virtual",
params: {
virtual: {
enabled: !1,
slides: [],
cache: !0,
renderSlide: null,
renderExternal: null,
addSlidesBefore: 0,
addSlidesAfter: 0,
},
},
create: function () {
U.extend(this, {
virtual: {
update: w.update.bind(this),
appendSlide: w.appendSlide.bind(this),
prependSlide: w.prependSlide.bind(this),
removeSlide: w.removeSlide.bind(this),
removeAllSlides: w.removeAllSlides.bind(this),
renderSlide: w.renderSlide.bind(this),
slides: this.params.virtual.slides,
cache: {},
},
});
},
on: {
beforeInit: function () {
var e;
this.params.virtual.enabled &&
(this.classNames.push(
this.params.containerModifierClass + "virtual"
),
U.extend(this.params, (e = { watchSlidesProgress: !0 })),
U.extend(this.originalParams, e),
this.params.initialSlide || this.virtual.update());
},
setTranslate: function () {
this.params.virtual.enabled && this.virtual.update();
},
},
},
K = {
handle: function (e) {
var t = this.rtlTranslate,
i =
(e = e.originalEvent ? e.originalEvent : e).keyCode ||
e.charCode;
if (
!this.allowSlideNext &&
((this.isHorizontal() && 39 === i) ||
(this.isVertical() && 40 === i) ||
34 === i)
)
return !1;
if (
!this.allowSlidePrev &&
((this.isHorizontal() && 37 === i) ||
(this.isVertical() && 38 === i) ||
33 === i)
)
return !1;
if (
!(
e.shiftKey ||
e.altKey ||
e.ctrlKey ||
e.metaKey ||
(c.activeElement &&
c.activeElement.nodeName &&
("input" === c.activeElement.nodeName.toLowerCase() ||
"textarea" === c.activeElement.nodeName.toLowerCase()))
)
) {
if (
this.params.keyboard.onlyInViewport &&
(33 === i ||
34 === i ||
37 === i ||
39 === i ||
38 === i ||
40 === i)
) {
var s = !1;
if (
0 < this.$el.parents("." + this.params.slideClass).length &&
0 ===
this.$el.parents("." + this.params.slideActiveClass).length
)
return;
var a = X.innerWidth,
n = X.innerHeight,
r = this.$el.offset();
t && (r.left -= this.$el[0].scrollLeft);
for (
var o = [
[r.left, r.top],
[r.left + this.width, r.top],
[r.left, r.top + this.height],
[r.left + this.width, r.top + this.height],
],
l = 0;
l < o.length;
l += 1
) {
var d = o[l];
0 <= d[0] && d[0] <= a && 0 <= d[1] && d[1] <= n && (s = !0);
}
if (!s) return;
}
this.isHorizontal()
? ((33 !== i && 34 !== i && 37 !== i && 39 !== i) ||
(e.preventDefault
? e.preventDefault()
: (e.returnValue = !1)),
(((34 !== i && 39 !== i) || t) &&
((33 !== i && 37 !== i) || !t)) ||
this.slideNext(),
(((33 !== i && 37 !== i) || t) &&
((34 !== i && 39 !== i) || !t)) ||
this.slidePrev())
: ((33 !== i && 34 !== i && 38 !== i && 40 !== i) ||
(e.preventDefault
? e.preventDefault()
: (e.returnValue = !1)),
(34 !== i && 40 !== i) || this.slideNext(),
(33 !== i && 38 !== i) || this.slidePrev()),
this.emit("keyPress", i);
}
},
enable: function () {
this.keyboard.enabled ||
(S(c).on("keydown", this.keyboard.handle),
(this.keyboard.enabled = !0));
},
disable: function () {
this.keyboard.enabled &&
(S(c).off("keydown", this.keyboard.handle),
(this.keyboard.enabled = !1));
},
},
E = {
name: "keyboard",
params: { keyboard: { enabled: !1, onlyInViewport: !0 } },
create: function () {
U.extend(this, {
keyboard: {
enabled: !1,
enable: K.enable.bind(this),
disable: K.disable.bind(this),
handle: K.handle.bind(this),
},
});
},
on: {
init: function () {
this.params.keyboard.enabled && this.keyboard.enable();
},
destroy: function () {
this.keyboard.enabled && this.keyboard.disable();
},
},
};
function x() {
for (var i, e = [], t = arguments.length; t--; ) e[t] = arguments[t];
(i =
(i =
1 === e.length && e[0].constructor && e[0].constructor === Object
? e[0]
: ((n = e[0]), e[1])) || {}),
(i = U.extend({}, i)),
n && !i.el && (i.el = n),
h.call(this, i),
Object.keys(_).forEach(function (t) {
Object.keys(_[t]).forEach(function (e) {
x.prototype[e] || (x.prototype[e] = _[t][e]);
});
});
var s,
a,
n,
r = this,
o =
(void 0 === r.modules && (r.modules = {}),
Object.keys(r.modules).forEach(function (e) {
var t,
e = r.modules[e];
e.params &&
((t = Object.keys(e.params)[0]),
"object" == typeof (e = e.params[t])) &&
null !== e &&
t in i &&
"enabled" in e &&
(!0 === i[t] && (i[t] = { enabled: !0 }),
"object" != typeof i[t] ||
"enabled" in i[t] ||
(i[t].enabled = !0),
i[t] || (i[t] = { enabled: !1 }));
}),
U.extend({}, F)),
l =
(r.useModulesParams(o),
(r.params = U.extend({}, o, W, i)),
(r.originalParams = U.extend({}, r.params)),
(r.passedParams = U.extend({}, i)),
(r.$ = S)(r.params.el));
if ((n = l[0]))
return 1 < l.length
? ((s = []),
l.each(function (e, t) {
t = U.extend({}, i, { el: t });
s.push(new x(t));
}),
s)
: ((n.swiper = r),
l.data("swiper", r),
n && n.shadowRoot && n.shadowRoot.querySelector
? ((a = S(
n.shadowRoot.querySelector("." + r.params.wrapperClass)
)).children = function (e) {
return l.children(e);
})
: (a = l.children("." + r.params.wrapperClass)),
U.extend(r, {
$el: l,
el: n,
$wrapperEl: a,
wrapperEl: a[0],
classNames: [],
slides: S(),
slidesGrid: [],
snapGrid: [],
slidesSizesGrid: [],
isHorizontal: function () {
return "horizontal" === r.params.direction;
},
isVertical: function () {
return "vertical" === r.params.direction;
},
rtl:
"rtl" === n.dir.toLowerCase() || "rtl" === l.css("direction"),
rtlTranslate:
"horizontal" === r.params.direction &&
("rtl" === n.dir.toLowerCase() ||
"rtl" === l.css("direction")),
wrongRTL: "-webkit-box" === a.css("display"),
activeIndex: 0,
realIndex: 0,
isBeginning: !0,
isEnd: !1,
translate: 0,
previousTranslate: 0,
progress: 0,
velocity: 0,
animating: !1,
allowSlideNext: r.params.allowSlideNext,
allowSlidePrev: r.params.allowSlidePrev,
touchEvents:
((o = b.pointerEvents
? ["pointerdown", "pointermove", "pointerup"]
: ["mousedown", "mousemove", "mouseup"]),
(r.touchEventsTouch = {
start: (n = [
"touchstart",
"touchmove",
"touchend",
"touchcancel",
])[0],
move: n[1],
end: n[2],
cancel: n[3],
}),
(r.touchEventsDesktop = {
start: o[0],
move: o[1],
end: o[2],
}),
b.touch || !r.params.simulateTouch
? r.touchEventsTouch
: r.touchEventsDesktop),
touchEventsData: {
isTouched: void 0,
isMoved: void 0,
allowTouchCallbacks: void 0,
touchStartTime: void 0,
isScrolling: void 0,
currentTranslate: void 0,
startTranslate: void 0,
allowThresholdMove: void 0,
formElements:
"input, select, option, textarea, button, video",
lastClickTime: U.now(),
clickTimeout: void 0,
velocities: [],
allowMomentumBounce: void 0,
isTouchEvent: void 0,
startMoving: void 0,
},
allowClick: !0,
allowTouchMove: r.params.allowTouchMove,
touches: {
startX: 0,
startY: 0,
currentX: 0,
currentY: 0,
diff: 0,
},
imagesToLoad: [],
imagesLoaded: 0,
}),
r.useModules(),
r.params.init && r.init(),
r);
}
var T = {
lastScrollTime: U.now(),
lastEventBeforeSnap: void 0,
recentWheelEvents: [],
event: function () {
return -1 < X.navigator.userAgent.indexOf("firefox")
? "DOMMouseScroll"
: ((t = "onwheel" in c) ||
((e = c.createElement("div")).setAttribute(
"onwheel",
"return;"
),
(t = "function" == typeof e.onwheel)),
(t =
!t &&
c.implementation &&
c.implementation.hasFeature &&
!0 !== c.implementation.hasFeature("", "")
? c.implementation.hasFeature("Events.wheel", "3.0")
: t)
? "wheel"
: "mousewheel");
var e, t;
},
normalize: function (e) {
var t = 0,
i = 0,
s = 0,
a = 0;
return (
"detail" in e && (i = e.detail),
"wheelDelta" in e && (i = -e.wheelDelta / 120),
"wheelDeltaY" in e && (i = -e.wheelDeltaY / 120),
"wheelDeltaX" in e && (t = -e.wheelDeltaX / 120),
"axis" in e && e.axis === e.HORIZONTAL_AXIS && ((t = i), (i = 0)),
(s = 10 * t),
(a = 10 * i),
"deltaY" in e && (a = e.deltaY),
"deltaX" in e && (s = e.deltaX),
e.shiftKey && !s && ((s = a), (a = 0)),
(s || a) &&
e.deltaMode &&
(1 === e.deltaMode
? ((s *= 40), (a *= 40))
: ((s *= 800), (a *= 800))),
{
spinX: (t = s && !t ? (s < 1 ? -1 : 1) : t),
spinY: (i = a && !i ? (a < 1 ? -1 : 1) : i),
pixelX: s,
pixelY: a,
}
);
},
handleMouseEnter: function () {
this.mouseEntered = !0;
},
handleMouseLeave: function () {
this.mouseEntered = !1;
},
handle: function (e) {
var t = e,
i = this,
s = i.params.mousewheel;
if (
(i.params.cssMode && t.preventDefault(),
!i.mouseEntered && !s.releaseOnEdges)
)
return !0;
t.originalEvent && (t = t.originalEvent);
var a = 0,
n = i.rtlTranslate ? -1 : 1,
r = T.normalize(t);
if (s.forceToAxis)
if (i.isHorizontal()) {
if (!(Math.abs(r.pixelX) > Math.abs(r.pixelY))) return !0;
a = r.pixelX * n;
} else {
if (!(Math.abs(r.pixelY) > Math.abs(r.pixelX))) return !0;
a = r.pixelY;
}
else
a =
Math.abs(r.pixelX) > Math.abs(r.pixelY)
? -r.pixelX * n
: -r.pixelY;
if (0 === a) return !0;
if ((s.invert && (a = -a), i.params.freeMode)) {
var o = {
time: U.now(),
delta: Math.abs(a),
direction: Math.sign(a),
},
n = i.mousewheel.lastEventBeforeSnap,
r =
n &&
o.time < n.time + 500 &&
o.delta <= n.delta &&
o.direction === n.direction;
if (!r) {
(i.mousewheel.lastEventBeforeSnap = void 0),
i.params.loop && i.loopFix();
var l,
d,
n = i.getTranslate() + a * s.sensitivity,
s = i.isBeginning,
h = i.isEnd;
if (
((n = n >= i.minTranslate() ? i.minTranslate() : n) <=
i.maxTranslate() && (n = i.maxTranslate()),
i.setTransition(0),
i.setTranslate(n),
i.updateProgress(),
i.updateActiveIndex(),
i.updateSlidesClasses(),
((!s && i.isBeginning) || (!h && i.isEnd)) &&
i.updateSlidesClasses(),
i.params.freeModeSticky &&
(clearTimeout(i.mousewheel.timeout),
(i.mousewheel.timeout = void 0),
15 <= (l = i.mousewheel.recentWheelEvents).length &&
l.shift(),
(s = l.length ? l[l.length - 1] : void 0),
(h = l[0]),
l.push(o),
s && (o.delta > s.delta || o.direction !== s.direction)
? l.splice(0)
: 15 <= l.length &&
o.time - h.time < 500 &&
1 <= h.delta - o.delta &&
o.delta <= 6 &&
((d = 0 < a ? 0.8 : 0.2),
(i.mousewheel.lastEventBeforeSnap = o),
l.splice(0),
(i.mousewheel.timeout = U.nextTick(function () {
i.slideToClosest(i.params.speed, !0, void 0, d);
}, 0))),
i.mousewheel.timeout ||
(i.mousewheel.timeout = U.nextTick(function () {
(i.mousewheel.lastEventBeforeSnap = o),
l.splice(0),
i.slideToClosest(i.params.speed, !0, void 0, 0.5);
}, 500))),
r || i.emit("scroll", t),
i.params.autoplay &&
i.params.autoplayDisableOnInteraction &&
i.autoplay.stop(),
n === i.minTranslate() || n === i.maxTranslate())
)
return !0;
}
} else {
(s = {
time: U.now(),
delta: Math.abs(a),
direction: Math.sign(a),
raw: e,
}),
(h = i.mousewheel.recentWheelEvents),
(r =
(2 <= h.length && h.shift(),
h.length ? h[h.length - 1] : void 0));
if (
(h.push(s),
(!r || s.direction !== r.direction || s.delta > r.delta) &&
i.mousewheel.animateSlider(s),
i.mousewheel.releaseScroll(s))
)
return !0;
}
return (
t.preventDefault ? t.preventDefault() : (t.returnValue = !1), !1
);
},
animateSlider: function (e) {
return (
(6 <= e.delta && U.now() - this.mousewheel.lastScrollTime < 60) ||
(e.direction < 0
? (this.isEnd && !this.params.loop) ||
this.animating ||
(this.slideNext(), this.emit("scroll", e.raw))
: (this.isBeginning && !this.params.loop) ||
this.animating ||
(this.slidePrev(), this.emit("scroll", e.raw)),
(this.mousewheel.lastScrollTime = new X.Date().getTime()),
!1)
);
},
releaseScroll: function (e) {
var t = this.params.mousewheel;
if (e.direction < 0) {
if (this.isEnd && !this.params.loop && t.releaseOnEdges)
return !0;
} else if (
this.isBeginning &&
!this.params.loop &&
t.releaseOnEdges
)
return !0;
return !1;
},
enable: function () {
var e,
t = T.event();
return this.params.cssMode
? (this.wrapperEl.removeEventListener(t, this.mousewheel.handle),
!0)
: !!t &&
!this.mousewheel.enabled &&
((e = this.$el),
(e =
"container" !== this.params.mousewheel.eventsTarged
? S(this.params.mousewheel.eventsTarged)
: e).on("mouseenter", this.mousewheel.handleMouseEnter),
e.on("mouseleave", this.mousewheel.handleMouseLeave),
e.on(t, this.mousewheel.handle),
(this.mousewheel.enabled = !0));
},
disable: function () {
var e,
t = T.event();
return this.params.cssMode
? (this.wrapperEl.addEventListener(t, this.mousewheel.handle), !0)
: !!t &&
!(
!this.mousewheel.enabled ||
((e = this.$el),
(e =
"container" !== this.params.mousewheel.eventsTarged
? S(this.params.mousewheel.eventsTarged)
: e).off(t, this.mousewheel.handle),
(this.mousewheel.enabled = !1))
);
},
},
A = {
update: function () {
var e,
t,
i = this.params.navigation;
this.params.loop ||
((e = (t = this.navigation).$nextEl),
(t = t.$prevEl) &&
0 < t.length &&
(this.isBeginning
? t.addClass(i.disabledClass)
: t.removeClass(i.disabledClass),
t[
this.params.watchOverflow && this.isLocked
? "addClass"
: "removeClass"
](i.lockClass)),
e &&
0 < e.length &&
(this.isEnd
? e.addClass(i.disabledClass)
: e.removeClass(i.disabledClass),
e[
this.params.watchOverflow && this.isLocked
? "addClass"
: "removeClass"
](i.lockClass)));
},
onPrevClick: function (e) {
e.preventDefault(),
(this.isBeginning && !this.params.loop) || this.slidePrev();
},
onNextClick: function (e) {
e.preventDefault(),
(this.isEnd && !this.params.loop) || this.slideNext();
},
init: function () {
var e,
t,
i = this.params.navigation;
(i.nextEl || i.prevEl) &&
(i.nextEl &&
((e = S(i.nextEl)), this.params.uniqueNavElements) &&
"string" == typeof i.nextEl &&
1 < e.length &&
1 === this.$el.find(i.nextEl).length &&
(e = this.$el.find(i.nextEl)),
i.prevEl &&
((t = S(i.prevEl)), this.params.uniqueNavElements) &&
"string" == typeof i.prevEl &&
1 < t.length &&
1 === this.$el.find(i.prevEl).length &&
(t = this.$el.find(i.prevEl)),
e && 0 < e.length && e.on("click", this.navigation.onNextClick),
t && 0 < t.length && t.on("click", this.navigation.onPrevClick),
U.extend(this.navigation, {
$nextEl: e,
nextEl: e && e[0],
$prevEl: t,
prevEl: t && t[0],
}));
},
destroy: function () {
var e = this.navigation,
t = e.$nextEl,
e = e.$prevEl;
t &&
t.length &&
(t.off("click", this.navigation.onNextClick),
t.removeClass(this.params.navigation.disabledClass)),
e &&
e.length &&
(e.off("click", this.navigation.onPrevClick),
e.removeClass(this.params.navigation.disabledClass));
},
},
L = {
update: function () {
var e = this.rtl,
s = this.params.pagination;
if (
s.el &&
this.pagination.el &&
this.pagination.$el &&
0 !== this.pagination.$el.length
) {
var a,
t = (
this.virtual && this.params.virtual.enabled
? this.virtual
: this
).slides.length,
i = this.pagination.$el,
n = this.params.loop
? Math.ceil(
(t - 2 * this.loopedSlides) / this.params.slidesPerGroup
)
: this.snapGrid.length;
if (
(this.params.loop
? ((a = Math.ceil(
(this.activeIndex - this.loopedSlides) /
this.params.slidesPerGroup
)) >
t - 1 - 2 * this.loopedSlides &&
(a -= t - 2 * this.loopedSlides),
n - 1 < a && (a -= n),
a < 0 &&
"bullets" !== this.params.paginationType &&
(a = n + a))
: (a =
void 0 !== this.snapIndex
? this.snapIndex
: this.activeIndex || 0),
"bullets" === s.type &&
this.pagination.bullets &&
0 < this.pagination.bullets.length)
) {
var r,
o,
l,
d = this.pagination.bullets;
if (
(s.dynamicBullets &&
((this.pagination.bulletSize = d
.eq(0)
[this.isHorizontal() ? "outerWidth" : "outerHeight"](!0)),
i.css(
this.isHorizontal() ? "width" : "height",
this.pagination.bulletSize * (s.dynamicMainBullets + 4) +
"px"
),
1 < s.dynamicMainBullets &&
void 0 !== this.previousIndex &&
((this.pagination.dynamicBulletIndex +=
a - this.previousIndex),
this.pagination.dynamicBulletIndex >
s.dynamicMainBullets - 1
? (this.pagination.dynamicBulletIndex =
s.dynamicMainBullets - 1)
: this.pagination.dynamicBulletIndex < 0 &&
(this.pagination.dynamicBulletIndex = 0)),
(r = a - this.pagination.dynamicBulletIndex),
(l =
((o =
r + (Math.min(d.length, s.dynamicMainBullets) - 1)) +
r) /
2)),
d.removeClass(
s.bulletActiveClass +
" " +
s.bulletActiveClass +
"-next " +
s.bulletActiveClass +
"-next-next " +
s.bulletActiveClass +
"-prev " +
s.bulletActiveClass +
"-prev-prev " +
s.bulletActiveClass +
"-main"
),
1 < i.length)
)
d.each(function (e, t) {
var t = S(t),
i = t.index();
i === a && t.addClass(s.bulletActiveClass),
s.dynamicBullets &&
(r <= i &&
i <= o &&
t.addClass(s.bulletActiveClass + "-main"),
i === r &&
t
.prev()
.addClass(s.bulletActiveClass + "-prev")
.prev()
.addClass(s.bulletActiveClass + "-prev-prev"),
i === o) &&
t
.next()
.addClass(s.bulletActiveClass + "-next")
.next()
.addClass(s.bulletActiveClass + "-next-next");
});
else {
var t = d.eq(a),
h = t.index();
if ((t.addClass(s.bulletActiveClass), s.dynamicBullets)) {
for (var t = d.eq(r), c = d.eq(o), p = r; p <= o; p += 1)
d.eq(p).addClass(s.bulletActiveClass + "-main");
if (this.params.loop)
if (h >= d.length - s.dynamicMainBullets) {
for (var u = s.dynamicMainBullets; 0 <= u; --u)
d.eq(d.length - u).addClass(
s.bulletActiveClass + "-main"
);
d.eq(d.length - s.dynamicMainBullets - 1).addClass(
s.bulletActiveClass + "-prev"
);
} else
t
.prev()
.addClass(s.bulletActiveClass + "-prev")
.prev()
.addClass(s.bulletActiveClass + "-prev-prev"),
c
.next()
.addClass(s.bulletActiveClass + "-next")
.next()
.addClass(s.bulletActiveClass + "-next-next");
else
t
.prev()
.addClass(s.bulletActiveClass + "-prev")
.prev()
.addClass(s.bulletActiveClass + "-prev-prev"),
c
.next()
.addClass(s.bulletActiveClass + "-next")
.next()
.addClass(s.bulletActiveClass + "-next-next");
}
}
s.dynamicBullets &&
((h = Math.min(d.length, s.dynamicMainBullets + 4)),
(t =
(this.pagination.bulletSize * h -
this.pagination.bulletSize) /
2 -
l * this.pagination.bulletSize),
(c = e ? "right" : "left"),
d.css(this.isHorizontal() ? c : "top", t + "px"));
}
"fraction" === s.type &&
(i
.find("." + s.currentClass)
.text(s.formatFractionCurrent(a + 1)),
i.find("." + s.totalClass).text(s.formatFractionTotal(n))),
"progressbar" === s.type &&
((h = s.progressbarOpposite
? this.isHorizontal()
? "vertical"
: "horizontal"
: this.isHorizontal()
? "horizontal"
: "vertical"),
(l = (a + 1) / n),
(c = e = 1),
"horizontal" == h ? (e = l) : (c = l),
i
.find("." + s.progressbarFillClass)
.transform(
"translate3d(0,0,0) scaleX(" + e + ") scaleY(" + c + ")"
)
.transition(this.params.speed)),
"custom" === s.type && s.renderCustom
? (i.html(s.renderCustom(this, a + 1, n)),
this.emit("paginationRender", this, i[0]))
: this.emit("paginationUpdate", this, i[0]),
i[
this.params.watchOverflow && this.isLocked
? "addClass"
: "removeClass"
](s.lockClass);
}
},
render: function () {
var e = this.params.pagination;
if (
e.el &&
this.pagination.el &&
this.pagination.$el &&
0 !== this.pagination.$el.length
) {
var t = (
this.virtual && this.params.virtual.enabled
? this.virtual
: this
).slides.length,
i = this.pagination.$el,
s = "";
if ("bullets" === e.type) {
for (
var a = this.params.loop
? Math.ceil(
(t - 2 * this.loopedSlides) /
this.params.slidesPerGroup
)
: this.snapGrid.length,
n = 0;
n < a;
n += 1
)
e.renderBullet
? (s += e.renderBullet.call(this, n, e.bulletClass))
: (s +=
"<" +
e.bulletElement +
' class="' +
e.bulletClass +
'">' +
e.bulletElement +
">");
i.html(s),
(this.pagination.bullets = i.find("." + e.bulletClass));
}
"fraction" === e.type &&
((s = e.renderFraction
? e.renderFraction.call(this, e.currentClass, e.totalClass)
: ' / '),
i.html(s)),
"progressbar" === e.type &&
((s = e.renderProgressbar
? e.renderProgressbar.call(this, e.progressbarFillClass)
: ''),
i.html(s)),
"custom" !== e.type &&
this.emit("paginationRender", this.pagination.$el[0]);
}
},
init: function () {
var e,
t = this,
i = t.params.pagination;
i.el &&
0 !== (e = S(i.el)).length &&
(t.params.uniqueNavElements &&
"string" == typeof i.el &&
1 < e.length &&
1 === t.$el.find(i.el).length &&
(e = t.$el.find(i.el)),
"bullets" === i.type &&
i.clickable &&
e.addClass(i.clickableClass),
e.addClass(i.modifierClass + i.type),
"bullets" === i.type &&
i.dynamicBullets &&
(e.addClass("" + i.modifierClass + i.type + "-dynamic"),
(t.pagination.dynamicBulletIndex = 0),
i.dynamicMainBullets < 1) &&
(i.dynamicMainBullets = 1),
"progressbar" === i.type &&
i.progressbarOpposite &&
e.addClass(i.progressbarOppositeClass),
i.clickable &&
e.on("click", "." + i.bulletClass, function (e) {
e.preventDefault();
e = S(this).index() * t.params.slidesPerGroup;
t.params.loop && (e += t.loopedSlides), t.slideTo(e);
}),
U.extend(t.pagination, { $el: e, el: e[0] }));
},
destroy: function () {
var e,
t = this.params.pagination;
t.el &&
this.pagination.el &&
this.pagination.$el &&
0 !== this.pagination.$el.length &&
((e = this.pagination.$el).removeClass(t.hiddenClass),
e.removeClass(t.modifierClass + t.type),
this.pagination.bullets &&
this.pagination.bullets.removeClass(t.bulletActiveClass),
t.clickable) &&
e.off("click", "." + t.bulletClass);
},
},
P = {
setTranslate: function () {
var e, t, i, s, a, n, r, o;
this.params.scrollbar.el &&
this.scrollbar.el &&
((i = this.scrollbar),
(e = this.rtlTranslate),
(o = this.progress),
(t = i.dragSize),
(s = i.$dragEl),
(a = i.$el),
(n = this.params.scrollbar),
(o = ((i = i.trackSize) - (r = t)) * o),
e
? 0 < (o = -o)
? ((r = t - o), (o = 0))
: i < -o + t && (r = i + o)
: o < 0
? ((r = t + o), (o = 0))
: i < o + t && (r = i - o),
this.isHorizontal()
? (s.transform("translate3d(" + o + "px, 0, 0)"),
(s[0].style.width = r + "px"))
: (s.transform("translate3d(0px, " + o + "px, 0)"),
(s[0].style.height = r + "px")),
n.hide) &&
(clearTimeout(this.scrollbar.timeout),
(a[0].style.opacity = 1),
(this.scrollbar.timeout = setTimeout(function () {
(a[0].style.opacity = 0), a.transition(400);
}, 1e3)));
},
setTransition: function (e) {
this.params.scrollbar.el &&
this.scrollbar.el &&
this.scrollbar.$dragEl.transition(e);
},
updateSize: function () {
var e, t, i, s, a, n, r;
this.params.scrollbar.el &&
this.scrollbar.el &&
((t = (e = this.scrollbar).$dragEl),
(i = e.$el),
(t[0].style.width = ""),
(t[0].style.height = ""),
(s = this.isHorizontal() ? i[0].offsetWidth : i[0].offsetHeight),
(n =
(a = this.size / (this.size * this.snapGrid.length)) *
(s / this.size)),
(r =
"auto" === this.params.scrollbar.dragSize
? s * a
: parseInt(this.params.scrollbar.dragSize, 10)),
this.isHorizontal()
? (t[0].style.width = r + "px")
: (t[0].style.height = r + "px"),
(i[0].style.display = 1 <= a ? "none" : ""),
this.params.scrollbar.hide && (i[0].style.opacity = 0),
U.extend(e, {
trackSize: s,
divider: a,
moveDivider: n,
dragSize: r,
}),
e.$el[
this.params.watchOverflow && this.isLocked
? "addClass"
: "removeClass"
](this.params.scrollbar.lockClass));
},
getPointerPosition: function (e) {
return this.isHorizontal()
? ("touchstart" === e.type || "touchmove" === e.type
? e.targetTouches[0]
: e
).clientX
: ("touchstart" === e.type || "touchmove" === e.type
? e.targetTouches[0]
: e
).clientY;
},
setDragPosition: function (e) {
var t = this.scrollbar,
i = this.rtlTranslate,
s = t.$el,
a = t.dragSize,
n = t.trackSize,
r = t.dragStartPos,
t =
(t.getPointerPosition(e) -
s.offset()[this.isHorizontal() ? "left" : "top"] -
(null !== r ? r : a / 2)) /
(n - a),
e =
((t = Math.max(Math.min(t, 1), 0)),
i && (t = 1 - t),
this.minTranslate() +
(this.maxTranslate() - this.minTranslate()) * t);
this.updateProgress(e),
this.setTranslate(e),
this.updateActiveIndex(),
this.updateSlidesClasses();
},
onDragStart: function (e) {
var t = this.params.scrollbar,
i = this.scrollbar,
s = this.$wrapperEl,
a = i.$el,
n = i.$dragEl;
(this.scrollbar.isTouched = !0),
(this.scrollbar.dragStartPos =
e.target === n[0] || e.target === n
? i.getPointerPosition(e) -
e.target.getBoundingClientRect()[
this.isHorizontal() ? "left" : "top"
]
: null),
e.preventDefault(),
e.stopPropagation(),
s.transition(100),
n.transition(100),
i.setDragPosition(e),
clearTimeout(this.scrollbar.dragTimeout),
a.transition(0),
t.hide && a.css("opacity", 1),
this.params.cssMode &&
this.$wrapperEl.css("scroll-snap-type", "none"),
this.emit("scrollbarDragStart", e);
},
onDragMove: function (e) {
var t = this.scrollbar,
i = this.$wrapperEl,
s = t.$el,
a = t.$dragEl;
this.scrollbar.isTouched &&
(e.preventDefault ? e.preventDefault() : (e.returnValue = !1),
t.setDragPosition(e),
i.transition(0),
s.transition(0),
a.transition(0),
this.emit("scrollbarDragMove", e));
},
onDragEnd: function (e) {
var t = this.params.scrollbar,
i = this.scrollbar,
s = this.$wrapperEl,
a = i.$el;
this.scrollbar.isTouched &&
((this.scrollbar.isTouched = !1),
this.params.cssMode &&
(this.$wrapperEl.css("scroll-snap-type", ""), s.transition("")),
t.hide &&
(clearTimeout(this.scrollbar.dragTimeout),
(this.scrollbar.dragTimeout = U.nextTick(function () {
a.css("opacity", 0), a.transition(400);
}, 1e3))),
this.emit("scrollbarDragEnd", e),
t.snapOnRelease) &&
this.slideToClosest();
},
enableDraggable: function () {
var e, t, i, s, a;
this.params.scrollbar.el &&
((i = this.scrollbar),
(e = this.touchEventsTouch),
(t = this.touchEventsDesktop),
(a = this.params),
(i = i.$el[0]),
(s = !(!b.passiveListener || !a.passiveListeners) && {
passive: !1,
capture: !1,
}),
(a = !(!b.passiveListener || !a.passiveListeners) && {
passive: !0,
capture: !1,
}),
b.touch
? (i.addEventListener(e.start, this.scrollbar.onDragStart, s),
i.addEventListener(e.move, this.scrollbar.onDragMove, s),
i.addEventListener(e.end, this.scrollbar.onDragEnd, a))
: (i.addEventListener(t.start, this.scrollbar.onDragStart, s),
c.addEventListener(t.move, this.scrollbar.onDragMove, s),
c.addEventListener(t.end, this.scrollbar.onDragEnd, a)));
},
disableDraggable: function () {
var e, t, i, s, a;
this.params.scrollbar.el &&
((i = this.scrollbar),
(e = this.touchEventsTouch),
(t = this.touchEventsDesktop),
(a = this.params),
(i = i.$el[0]),
(s = !(!b.passiveListener || !a.passiveListeners) && {
passive: !1,
capture: !1,
}),
(a = !(!b.passiveListener || !a.passiveListeners) && {
passive: !0,
capture: !1,
}),
b.touch
? (i.removeEventListener(
e.start,
this.scrollbar.onDragStart,
s
),
i.removeEventListener(e.move, this.scrollbar.onDragMove, s),
i.removeEventListener(e.end, this.scrollbar.onDragEnd, a))
: (i.removeEventListener(
t.start,
this.scrollbar.onDragStart,
s
),
c.removeEventListener(t.move, this.scrollbar.onDragMove, s),
c.removeEventListener(t.end, this.scrollbar.onDragEnd, a)));
},
init: function () {
var e, t, i, s;
this.params.scrollbar.el &&
((e = this.scrollbar),
(s = this.$el),
(i = S((t = this.params.scrollbar).el)),
0 ===
(s = (i =
this.params.uniqueNavElements &&
"string" == typeof t.el &&
1 < i.length &&
1 === s.find(t.el).length
? s.find(t.el)
: i).find("." + this.params.scrollbar.dragClass)).length &&
((s = S(
''
)),
i.append(s)),
U.extend(e, { $el: i, el: i[0], $dragEl: s, dragEl: s[0] }),
t.draggable) &&
e.enableDraggable();
},
destroy: function () {
this.scrollbar.disableDraggable();
},
},
Q = {
setTransform: function (e, t) {
var i = this.rtl,
e = S(e),
i = i ? -1 : 1,
s = e.attr("data-swiper-parallax") || "0",
a = e.attr("data-swiper-parallax-x"),
n = e.attr("data-swiper-parallax-y"),
r = e.attr("data-swiper-parallax-scale"),
o = e.attr("data-swiper-parallax-opacity");
a || n
? ((a = a || "0"), (n = n || "0"))
: this.isHorizontal()
? ((a = s), (n = "0"))
: ((n = s), (a = "0")),
(a =
0 <= a.indexOf("%")
? parseInt(a, 10) * t * i + "%"
: a * t * i + "px"),
(n =
0 <= n.indexOf("%") ? parseInt(n, 10) * t + "%" : n * t + "px"),
null != o &&
((s = o - (o - 1) * (1 - Math.abs(t))),
(e[0].style.opacity = s)),
null == r
? e.transform("translate3d(" + a + ", " + n + ", 0px)")
: ((i = r - (r - 1) * (1 - Math.abs(t))),
e.transform(
"translate3d(" + a + ", " + n + ", 0px) scale(" + i + ")"
));
},
setTranslate: function () {
var s = this,
e = s.$el,
t = s.slides,
a = s.progress,
n = s.snapGrid;
e
.children(
"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]"
)
.each(function (e, t) {
s.parallax.setTransform(t, a);
}),
t.each(function (e, t) {
var i = t.progress;
1 < s.params.slidesPerGroup &&
"auto" !== s.params.slidesPerView &&
(i += Math.ceil(e / 2) - a * (n.length - 1)),
(i = Math.min(Math.max(i, -1), 1)),
S(t)
.find(
"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]"
)
.each(function (e, t) {
s.parallax.setTransform(t, i);
});
});
},
setTransition: function (s) {
void 0 === s && (s = this.params.speed),
this.$el
.find(
"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]"
)
.each(function (e, t) {
var t = S(t),
i =
parseInt(t.attr("data-swiper-parallax-duration"), 10) ||
s;
0 === s && (i = 0), t.transition(i);
});
},
},
Z = {
getDistanceBetweenTouches: function (e) {
var t, i, s;
return e.targetTouches.length < 2
? 1
: ((t = e.targetTouches[0].pageX),
(i = e.targetTouches[0].pageY),
(s = e.targetTouches[1].pageX),
(e = e.targetTouches[1].pageY),
Math.sqrt(Math.pow(s - t, 2) + Math.pow(e - i, 2)));
},
onGestureStart: function (e) {
var t = this.params.zoom,
i = this.zoom,
s = i.gesture;
if (
((i.fakeGestureTouched = !1),
(i.fakeGestureMoved = !1),
!b.gestures)
) {
if (
"touchstart" !== e.type ||
("touchstart" === e.type && e.targetTouches.length < 2)
)
return;
(i.fakeGestureTouched = !0),
(s.scaleStart = Z.getDistanceBetweenTouches(e));
}
(s.$slideEl && s.$slideEl.length) ||
((s.$slideEl = S(e.target).closest(".swiper-slide")),
0 === s.$slideEl.length &&
(s.$slideEl = this.slides.eq(this.activeIndex)),
(s.$imageEl = s.$slideEl.find("img, svg, canvas")),
(s.$imageWrapEl = s.$imageEl.parent("." + t.containerClass)),
(s.maxRatio =
s.$imageWrapEl.attr("data-swiper-zoom") || t.maxRatio),
0 !== s.$imageWrapEl.length)
? (s.$imageEl.transition(0), (this.zoom.isScaling = !0))
: (s.$imageEl = void 0);
},
onGestureChange: function (e) {
var t = this.params.zoom,
i = this.zoom,
s = i.gesture;
if (!b.gestures) {
if (
"touchmove" !== e.type ||
("touchmove" === e.type && e.targetTouches.length < 2)
)
return;
(i.fakeGestureMoved = !0),
(s.scaleMove = Z.getDistanceBetweenTouches(e));
}
s.$imageEl &&
0 !== s.$imageEl.length &&
((i.scale = b.gestures
? e.scale * i.currentScale
: (s.scaleMove / s.scaleStart) * i.currentScale),
i.scale > s.maxRatio &&
(i.scale =
s.maxRatio - 1 + Math.pow(i.scale - s.maxRatio + 1, 0.5)),
i.scale < t.minRatio &&
(i.scale =
t.minRatio + 1 - Math.pow(t.minRatio - i.scale + 1, 0.5)),
s.$imageEl.transform(
"translate3d(0,0,0) scale(" + i.scale + ")"
));
},
onGestureEnd: function (e) {
var t = this.params.zoom,
i = this.zoom,
s = i.gesture;
if (!b.gestures) {
if (!i.fakeGestureTouched || !i.fakeGestureMoved) return;
if (
"touchend" !== e.type ||
("touchend" === e.type &&
e.changedTouches.length < 2 &&
!o.android)
)
return;
(i.fakeGestureTouched = !1), (i.fakeGestureMoved = !1);
}
s.$imageEl &&
0 !== s.$imageEl.length &&
((i.scale = Math.max(Math.min(i.scale, s.maxRatio), t.minRatio)),
s.$imageEl
.transition(this.params.speed)
.transform("translate3d(0,0,0) scale(" + i.scale + ")"),
(i.currentScale = i.scale),
(i.isScaling = !1),
1 === i.scale) &&
(s.$slideEl = void 0);
},
onTouchStart: function (e) {
var t = this.zoom,
i = t.gesture,
t = t.image;
i.$imageEl &&
0 !== i.$imageEl.length &&
!t.isTouched &&
(o.android && e.preventDefault(),
(t.isTouched = !0),
(t.touchesStart.x = (
"touchstart" === e.type ? e.targetTouches[0] : e
).pageX),
(t.touchesStart.y = (
"touchstart" === e.type ? e.targetTouches[0] : e
).pageY));
},
onTouchMove: function (e) {
var t = this.zoom,
i = t.gesture,
s = t.image,
a = t.velocity;
if (
i.$imageEl &&
0 !== i.$imageEl.length &&
((this.allowClick = !1), s.isTouched) &&
i.$slideEl
) {
s.isMoved ||
((s.width = i.$imageEl[0].offsetWidth),
(s.height = i.$imageEl[0].offsetHeight),
(s.startX = U.getTranslate(i.$imageWrapEl[0], "x") || 0),
(s.startY = U.getTranslate(i.$imageWrapEl[0], "y") || 0),
(i.slideWidth = i.$slideEl[0].offsetWidth),
(i.slideHeight = i.$slideEl[0].offsetHeight),
i.$imageWrapEl.transition(0),
this.rtl && ((s.startX = -s.startX), (s.startY = -s.startY)));
var n = s.width * t.scale,
r = s.height * t.scale;
if (!(n < i.slideWidth && r < i.slideHeight)) {
if (
((s.minX = Math.min(i.slideWidth / 2 - n / 2, 0)),
(s.maxX = -s.minX),
(s.minY = Math.min(i.slideHeight / 2 - r / 2, 0)),
(s.maxY = -s.minY),
(s.touchesCurrent.x = (
"touchmove" === e.type ? e.targetTouches[0] : e
).pageX),
(s.touchesCurrent.y = (
"touchmove" === e.type ? e.targetTouches[0] : e
).pageY),
!s.isMoved && !t.isScaling)
) {
if (
this.isHorizontal() &&
((Math.floor(s.minX) === Math.floor(s.startX) &&
s.touchesCurrent.x < s.touchesStart.x) ||
(Math.floor(s.maxX) === Math.floor(s.startX) &&
s.touchesCurrent.x > s.touchesStart.x))
)
return void (s.isTouched = !1);
if (
!this.isHorizontal() &&
((Math.floor(s.minY) === Math.floor(s.startY) &&
s.touchesCurrent.y < s.touchesStart.y) ||
(Math.floor(s.maxY) === Math.floor(s.startY) &&
s.touchesCurrent.y > s.touchesStart.y))
)
return void (s.isTouched = !1);
}
e.preventDefault(),
e.stopPropagation(),
(s.isMoved = !0),
(s.currentX =
s.touchesCurrent.x - s.touchesStart.x + s.startX),
(s.currentY =
s.touchesCurrent.y - s.touchesStart.y + s.startY),
s.currentX < s.minX &&
(s.currentX =
s.minX + 1 - Math.pow(s.minX - s.currentX + 1, 0.8)),
s.currentX > s.maxX &&
(s.currentX =
s.maxX - 1 + Math.pow(s.currentX - s.maxX + 1, 0.8)),
s.currentY < s.minY &&
(s.currentY =
s.minY + 1 - Math.pow(s.minY - s.currentY + 1, 0.8)),
s.currentY > s.maxY &&
(s.currentY =
s.maxY - 1 + Math.pow(s.currentY - s.maxY + 1, 0.8)),
a.prevPositionX || (a.prevPositionX = s.touchesCurrent.x),
a.prevPositionY || (a.prevPositionY = s.touchesCurrent.y),
a.prevTime || (a.prevTime = Date.now()),
(a.x =
(s.touchesCurrent.x - a.prevPositionX) /
(Date.now() - a.prevTime) /
2),
(a.y =
(s.touchesCurrent.y - a.prevPositionY) /
(Date.now() - a.prevTime) /
2),
Math.abs(s.touchesCurrent.x - a.prevPositionX) < 2 &&
(a.x = 0),
Math.abs(s.touchesCurrent.y - a.prevPositionY) < 2 &&
(a.y = 0),
(a.prevPositionX = s.touchesCurrent.x),
(a.prevPositionY = s.touchesCurrent.y),
(a.prevTime = Date.now()),
i.$imageWrapEl.transform(
"translate3d(" + s.currentX + "px, " + s.currentY + "px,0)"
);
}
}
},
onTouchEnd: function () {
var e,
t,
i,
s,
a = this.zoom,
n = a.gesture,
r = a.image,
o = a.velocity;
n.$imageEl &&
0 !== n.$imageEl.length &&
(r.isTouched && r.isMoved
? ((r.isTouched = !1),
(r.isMoved = !1),
(e = o.x * (i = 300)),
(e = r.currentX + e),
(t = o.y * (s = 300)),
(t = r.currentY + t),
0 !== o.x && (i = Math.abs((e - r.currentX) / o.x)),
0 !== o.y && (s = Math.abs((t - r.currentY) / o.y)),
(o = Math.max(i, s)),
(r.currentX = e),
(r.currentY = t),
(i = r.width * a.scale),
(s = r.height * a.scale),
(r.minX = Math.min(n.slideWidth / 2 - i / 2, 0)),
(r.maxX = -r.minX),
(r.minY = Math.min(n.slideHeight / 2 - s / 2, 0)),
(r.maxY = -r.minY),
(r.currentX = Math.max(Math.min(r.currentX, r.maxX), r.minX)),
(r.currentY = Math.max(Math.min(r.currentY, r.maxY), r.minY)),
n.$imageWrapEl
.transition(o)
.transform(
"translate3d(" +
r.currentX +
"px, " +
r.currentY +
"px,0)"
))
: ((r.isTouched = !1), (r.isMoved = !1)));
},
onTransitionEnd: function () {
var e = this.zoom,
t = e.gesture;
t.$slideEl &&
this.previousIndex !== this.activeIndex &&
(t.$imageEl.transform("translate3d(0,0,0) scale(1)"),
t.$imageWrapEl.transform("translate3d(0,0,0)"),
(e.scale = 1),
(e.currentScale = 1),
(t.$slideEl = void 0),
(t.$imageEl = void 0),
(t.$imageWrapEl = void 0));
},
toggle: function (e) {
var t = this.zoom;
t.scale && 1 !== t.scale ? t.out() : t.in(e);
},
in: function (e) {
var t,
i,
s,
a,
n = this.zoom,
r = this.params.zoom,
o = n.gesture,
l = n.image;
o.$slideEl ||
((o.$slideEl = this.clickedSlide
? S(this.clickedSlide)
: this.slides.eq(this.activeIndex)),
(o.$imageEl = o.$slideEl.find("img, svg, canvas")),
(o.$imageWrapEl = o.$imageEl.parent("." + r.containerClass))),
o.$imageEl &&
0 !== o.$imageEl.length &&
(o.$slideEl.addClass("" + r.zoomedSlideClass),
(l =
void 0 === l.touchesStart.x && e
? ((t = ("touchend" === e.type ? e.changedTouches[0] : e)
.pageX),
("touchend" === e.type ? e.changedTouches[0] : e).pageY)
: ((t = l.touchesStart.x), l.touchesStart.y)),
(n.scale =
o.$imageWrapEl.attr("data-swiper-zoom") || r.maxRatio),
(n.currentScale =
o.$imageWrapEl.attr("data-swiper-zoom") || r.maxRatio),
e
? ((r = o.$slideEl[0].offsetWidth),
(e = o.$slideEl[0].offsetHeight),
(t = o.$slideEl.offset().left + r / 2 - t),
(l = o.$slideEl.offset().top + e / 2 - l),
(s = o.$imageEl[0].offsetWidth),
(a = o.$imageEl[0].offsetHeight),
(s = s * n.scale),
(a = a * n.scale),
(s = -(r = Math.min(r / 2 - s / 2, 0))),
(a = -(e = Math.min(e / 2 - a / 2, 0))),
s < (i = (i = t * n.scale) < r ? r : i) && (i = s),
a < (s = (s = l * n.scale) < e ? e : s) && (s = a))
: (s = i = 0),
o.$imageWrapEl
.transition(300)
.transform("translate3d(" + i + "px, " + s + "px,0)"),
o.$imageEl
.transition(300)
.transform("translate3d(0,0,0) scale(" + n.scale + ")"));
},
out: function () {
var e = this.zoom,
t = this.params.zoom,
i = e.gesture;
i.$slideEl ||
((i.$slideEl = this.clickedSlide
? S(this.clickedSlide)
: this.slides.eq(this.activeIndex)),
(i.$imageEl = i.$slideEl.find("img, svg, canvas")),
(i.$imageWrapEl = i.$imageEl.parent("." + t.containerClass))),
i.$imageEl &&
0 !== i.$imageEl.length &&
((e.scale = 1),
(e.currentScale = 1),
i.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),
i.$imageEl
.transition(300)
.transform("translate3d(0,0,0) scale(1)"),
i.$slideEl.removeClass("" + t.zoomedSlideClass),
(i.$slideEl = void 0));
},
enable: function () {
var e,
t,
i = this.zoom;
i.enabled ||
((i.enabled = !0),
(e = !(
"touchstart" !== this.touchEvents.start ||
!b.passiveListener ||
!this.params.passiveListeners
) && { passive: !0, capture: !1 }),
(t = !b.passiveListener || { passive: !1, capture: !0 }),
b.gestures
? (this.$wrapperEl.on(
"gesturestart",
".swiper-slide",
i.onGestureStart,
e
),
this.$wrapperEl.on(
"gesturechange",
".swiper-slide",
i.onGestureChange,
e
),
this.$wrapperEl.on(
"gestureend",
".swiper-slide",
i.onGestureEnd,
e
))
: "touchstart" === this.touchEvents.start &&
(this.$wrapperEl.on(
this.touchEvents.start,
".swiper-slide",
i.onGestureStart,
e
),
this.$wrapperEl.on(
this.touchEvents.move,
".swiper-slide",
i.onGestureChange,
t
),
this.$wrapperEl.on(
this.touchEvents.end,
".swiper-slide",
i.onGestureEnd,
e
),
this.touchEvents.cancel) &&
this.$wrapperEl.on(
this.touchEvents.cancel,
".swiper-slide",
i.onGestureEnd,
e
),
this.$wrapperEl.on(
this.touchEvents.move,
"." + this.params.zoom.containerClass,
i.onTouchMove,
t
));
},
disable: function () {
var e,
t,
i = this.zoom;
i.enabled &&
((this.zoom.enabled = !1),
(e = !(
"touchstart" !== this.touchEvents.start ||
!b.passiveListener ||
!this.params.passiveListeners
) && { passive: !0, capture: !1 }),
(t = !b.passiveListener || { passive: !1, capture: !0 }),
b.gestures
? (this.$wrapperEl.off(
"gesturestart",
".swiper-slide",
i.onGestureStart,
e
),
this.$wrapperEl.off(
"gesturechange",
".swiper-slide",
i.onGestureChange,
e
),
this.$wrapperEl.off(
"gestureend",
".swiper-slide",
i.onGestureEnd,
e
))
: "touchstart" === this.touchEvents.start &&
(this.$wrapperEl.off(
this.touchEvents.start,
".swiper-slide",
i.onGestureStart,
e
),
this.$wrapperEl.off(
this.touchEvents.move,
".swiper-slide",
i.onGestureChange,
t
),
this.$wrapperEl.off(
this.touchEvents.end,
".swiper-slide",
i.onGestureEnd,
e
),
this.touchEvents.cancel) &&
this.$wrapperEl.off(
this.touchEvents.cancel,
".swiper-slide",
i.onGestureEnd,
e
),
this.$wrapperEl.off(
this.touchEvents.move,
"." + this.params.zoom.containerClass,
i.onTouchMove,
t
));
},
},
J = {
loadInSlide: function (e, o) {
void 0 === o && (o = !0);
var l,
d = this,
h = d.params.lazy;
void 0 !== e &&
0 !== d.slides.length &&
((e = (l =
d.virtual && d.params.virtual.enabled
? d.$wrapperEl.children(
"." +
d.params.slideClass +
'[data-swiper-slide-index="' +
e +
'"]'
)
: d.slides.eq(e)).find(
"." +
h.elementClass +
":not(." +
h.loadedClass +
"):not(." +
h.loadingClass +
")"
)),
0 !==
(e =
!l.hasClass(h.elementClass) ||
l.hasClass(h.loadedClass) ||
l.hasClass(h.loadingClass)
? e
: e.add(l[0])).length) &&
e.each(function (e, t) {
var i = S(t),
s = (i.addClass(h.loadingClass), i.attr("data-background")),
a = i.attr("data-src"),
n = i.attr("data-srcset"),
r = i.attr("data-sizes");
d.loadImage(i[0], a || s, n, r, !1, function () {
var e, t;
null == d ||
!d ||
(d && !d.params) ||
d.destroyed ||
(s
? (i.css("background-image", 'url("' + s + '")'),
i.removeAttr("data-background"))
: (n &&
(i.attr("srcset", n), i.removeAttr("data-srcset")),
r && (i.attr("sizes", r), i.removeAttr("data-sizes")),
a && (i.attr("src", a), i.removeAttr("data-src"))),
i.addClass(h.loadedClass).removeClass(h.loadingClass),
l.find("." + h.preloaderClass).remove(),
d.params.loop &&
o &&
((e = l.attr("data-swiper-slide-index")),
l.hasClass(d.params.slideDuplicateClass)
? ((t = d.$wrapperEl.children(
'[data-swiper-slide-index="' +
e +
'"]:not(.' +
d.params.slideDuplicateClass +
")"
)),
d.lazy.loadInSlide(t.index(), !1))
: ((t = d.$wrapperEl.children(
"." +
d.params.slideDuplicateClass +
'[data-swiper-slide-index="' +
e +
'"]'
)),
d.lazy.loadInSlide(t.index(), !1))),
d.emit("lazyImageReady", l[0], i[0]));
}),
d.emit("lazyImageLoad", l[0], i[0]);
});
},
load: function () {
var i = this,
t = i.$wrapperEl,
s = i.params,
a = i.slides,
e = i.activeIndex,
n = i.virtual && s.virtual.enabled,
r = s.lazy,
o = s.slidesPerView;
function l(e) {
if (n) {
if (
t.children(
"." + s.slideClass + '[data-swiper-slide-index="' + e + '"]'
).length
)
return 1;
} else if (a[e]) return 1;
}
function d(e) {
return n ? S(e).attr("data-swiper-slide-index") : S(e).index();
}
if (
("auto" === o && (o = 0),
i.lazy.initialImageLoaded || (i.lazy.initialImageLoaded = !0),
i.params.watchSlidesVisibility)
)
t.children("." + s.slideVisibleClass).each(function (e, t) {
t = n ? S(t).attr("data-swiper-slide-index") : S(t).index();
i.lazy.loadInSlide(t);
});
else if (1 < o)
for (var h = e; h < e + o; h += 1) l(h) && i.lazy.loadInSlide(h);
else i.lazy.loadInSlide(e);
if (r.loadPrevNext)
if (1 < o || (r.loadPrevNextAmount && 1 < r.loadPrevNextAmount)) {
for (
var r = r.loadPrevNextAmount,
c = o,
p = Math.min(e + c + Math.max(r, c), a.length),
c = Math.max(e - Math.max(c, r), 0),
u = e + o;
u < p;
u += 1
)
l(u) && i.lazy.loadInSlide(u);
for (var v = c; v < e; v += 1) l(v) && i.lazy.loadInSlide(v);
} else {
(r = t.children("." + s.slideNextClass)),
(c =
(0 < r.length && i.lazy.loadInSlide(d(r)),
t.children("." + s.slidePrevClass)));
0 < c.length && i.lazy.loadInSlide(d(c));
}
},
},
I = {
LinearSpline: function (e, t) {
var i, s, a, n, r;
return (
(this.x = e),
(this.y = t),
(this.lastIndex = e.length - 1),
(this.interpolate = function (e) {
return e
? ((r = ((e, t) => {
for (s = -1, i = e.length; 1 < i - s; )
e[(a = (i + s) >> 1)] <= t ? (s = a) : (i = a);
return i;
})(this.x, e)),
(n = r - 1),
((e - this.x[n]) * (this.y[r] - this.y[n])) /
(this.x[r] - this.x[n]) +
this.y[n])
: 0;
}),
this
);
},
getInterpolateFunction: function (e) {
this.controller.spline ||
(this.controller.spline = this.params.loop
? new I.LinearSpline(this.slidesGrid, e.slidesGrid)
: new I.LinearSpline(this.snapGrid, e.snapGrid));
},
setTranslate: function (e, t) {
var i,
s,
a = this,
n = a.controller.control;
function r(e) {
var t = a.rtlTranslate ? -a.translate : a.translate;
"slide" === a.params.controller.by &&
(a.controller.getInterpolateFunction(e),
(s = -a.controller.spline.interpolate(-t))),
(s && "container" !== a.params.controller.by) ||
((i =
(e.maxTranslate() - e.minTranslate()) /
(a.maxTranslate() - a.minTranslate())),
(s = (t - a.minTranslate()) * i + e.minTranslate())),
a.params.controller.inverse && (s = e.maxTranslate() - s),
e.updateProgress(s),
e.setTranslate(s, a),
e.updateActiveIndex(),
e.updateSlidesClasses();
}
if (Array.isArray(n))
for (var o = 0; o < n.length; o += 1)
n[o] !== t && n[o] instanceof u && r(n[o]);
else n instanceof u && t !== n && r(n);
},
setTransition: function (t, e) {
var i,
s = this,
a = s.controller.control;
function n(e) {
e.setTransition(t, s),
0 !== t &&
(e.transitionStart(),
e.params.autoHeight &&
U.nextTick(function () {
e.updateAutoHeight();
}),
e.$wrapperEl.transitionEnd(function () {
a &&
(e.params.loop &&
"slide" === s.params.controller.by &&
e.loopFix(),
e.transitionEnd());
}));
}
if (Array.isArray(a))
for (i = 0; i < a.length; i += 1)
a[i] !== e && a[i] instanceof u && n(a[i]);
else a instanceof u && e !== a && n(a);
},
},
ee = {
makeElFocusable: function (e) {
return e.attr("tabIndex", "0"), e;
},
addElRole: function (e, t) {
return e.attr("role", t), e;
},
addElLabel: function (e, t) {
return e.attr("aria-label", t), e;
},
disableEl: function (e) {
return e.attr("aria-disabled", !0), e;
},
enableEl: function (e) {
return e.attr("aria-disabled", !1), e;
},
onEnterKey: function (e) {
var t = this.params.a11y;
13 === e.keyCode &&
((e = S(e.target)),
this.navigation &&
this.navigation.$nextEl &&
e.is(this.navigation.$nextEl) &&
((this.isEnd && !this.params.loop) || this.slideNext(),
this.isEnd
? this.a11y.notify(t.lastSlideMessage)
: this.a11y.notify(t.nextSlideMessage)),
this.navigation &&
this.navigation.$prevEl &&
e.is(this.navigation.$prevEl) &&
((this.isBeginning && !this.params.loop) || this.slidePrev(),
this.isBeginning
? this.a11y.notify(t.firstSlideMessage)
: this.a11y.notify(t.prevSlideMessage)),
this.pagination) &&
e.is("." + this.params.pagination.bulletClass) &&
e[0].click();
},
notify: function (e) {
var t = this.a11y.liveRegion;
0 !== t.length && (t.html(""), t.html(e));
},
updateNavigation: function () {
var e, t;
!this.params.loop &&
this.navigation &&
((e = (t = this.navigation).$nextEl),
(t = t.$prevEl) &&
0 < t.length &&
(this.isBeginning
? this.a11y.disableEl(t)
: this.a11y.enableEl(t)),
e) &&
0 < e.length &&
(this.isEnd ? this.a11y.disableEl(e) : this.a11y.enableEl(e));
},
updatePagination: function () {
var i = this,
s = i.params.a11y;
i.pagination &&
i.params.pagination.clickable &&
i.pagination.bullets &&
i.pagination.bullets.length &&
i.pagination.bullets.each(function (e, t) {
t = S(t);
i.a11y.makeElFocusable(t),
i.a11y.addElRole(t, "button"),
i.a11y.addElLabel(
t,
s.paginationBulletMessage.replace(
/{{index}}/,
t.index() + 1
)
);
});
},
init: function () {
this.$el.append(this.a11y.liveRegion);
var e,
t,
i = this.params.a11y;
this.navigation &&
this.navigation.$nextEl &&
(e = this.navigation.$nextEl),
this.navigation &&
this.navigation.$prevEl &&
(t = this.navigation.$prevEl),
e &&
(this.a11y.makeElFocusable(e),
this.a11y.addElRole(e, "button"),
this.a11y.addElLabel(e, i.nextSlideMessage),
e.on("keydown", this.a11y.onEnterKey)),
t &&
(this.a11y.makeElFocusable(t),
this.a11y.addElRole(t, "button"),
this.a11y.addElLabel(t, i.prevSlideMessage),
t.on("keydown", this.a11y.onEnterKey)),
this.pagination &&
this.params.pagination.clickable &&
this.pagination.bullets &&
this.pagination.bullets.length &&
this.pagination.$el.on(
"keydown",
"." + this.params.pagination.bulletClass,
this.a11y.onEnterKey
);
},
destroy: function () {
var e, t;
this.a11y.liveRegion &&
0 < this.a11y.liveRegion.length &&
this.a11y.liveRegion.remove(),
this.navigation &&
this.navigation.$nextEl &&
(e = this.navigation.$nextEl),
this.navigation &&
this.navigation.$prevEl &&
(t = this.navigation.$prevEl),
e && e.off("keydown", this.a11y.onEnterKey),
t && t.off("keydown", this.a11y.onEnterKey),
this.pagination &&
this.params.pagination.clickable &&
this.pagination.bullets &&
this.pagination.bullets.length &&
this.pagination.$el.off(
"keydown",
"." + this.params.pagination.bulletClass,
this.a11y.onEnterKey
);
},
},
k = {
init: function () {
var e;
this.params.history &&
(X.history && X.history.pushState
? (((e = this.history).initialized = !0),
(e.paths = k.getPathValues()),
(e.paths.key || e.paths.value) &&
(e.scrollToSlide(
0,
e.paths.value,
this.params.runCallbacksOnInit
),
this.params.history.replaceState ||
X.addEventListener(
"popstate",
this.history.setHistoryPopState
)))
: ((this.params.history.enabled = !1),
(this.params.hashNavigation.enabled = !0)));
},
destroy: function () {
this.params.history.replaceState ||
X.removeEventListener(
"popstate",
this.history.setHistoryPopState
);
},
setHistoryPopState: function () {
(this.history.paths = k.getPathValues()),
this.history.scrollToSlide(
this.params.speed,
this.history.paths.value,
!1
);
},
getPathValues: function () {
var e = X.location.pathname
.slice(1)
.split("/")
.filter(function (e) {
return "" !== e;
}),
t = e.length;
return { key: e[t - 2], value: e[t - 1] };
},
setHistory: function (e, t) {
this.history.initialized &&
this.params.history.enabled &&
((t = this.slides.eq(t)),
(t = k.slugify(t.attr("data-history"))),
X.location.pathname.includes(e) || (t = e + "/" + t),
((e = X.history.state) && e.value === t) ||
(this.params.history.replaceState
? X.history.replaceState({ value: t }, null, t)
: X.history.pushState({ value: t }, null, t)));
},
slugify: function (e) {
return e
.toString()
.replace(/\s+/g, "-")
.replace(/[^\w-]+/g, "")
.replace(/--+/g, "-")
.replace(/^-+/, "")
.replace(/-+$/, "");
},
scrollToSlide: function (e, t, i) {
if (t)
for (var s = 0, a = this.slides.length; s < a; s += 1) {
var n = this.slides.eq(s);
k.slugify(n.attr("data-history")) !== t ||
n.hasClass(this.params.slideDuplicateClass) ||
((n = n.index()), this.slideTo(n, e, i));
}
else this.slideTo(0, e, i);
},
},
z = {
onHashCange: function () {
var e = c.location.hash.replace("#", "");
e !== this.slides.eq(this.activeIndex).attr("data-hash") &&
void 0 !==
(e = this.$wrapperEl
.children(
"." + this.params.slideClass + '[data-hash="' + e + '"]'
)
.index()) &&
this.slideTo(e);
},
setHash: function () {
var e;
this.hashNavigation.initialized &&
this.params.hashNavigation.enabled &&
(this.params.hashNavigation.replaceState &&
X.history &&
X.history.replaceState
? X.history.replaceState(
null,
null,
"#" + this.slides.eq(this.activeIndex).attr("data-hash") ||
""
)
: ((e =
(e = this.slides.eq(this.activeIndex)).attr("data-hash") ||
e.attr("data-history")),
(c.location.hash = e || "")));
},
init: function () {
if (
!(
!this.params.hashNavigation.enabled ||
(this.params.history && this.params.history.enabled)
)
) {
this.hashNavigation.initialized = !0;
var e = c.location.hash.replace("#", "");
if (e)
for (var t = 0, i = this.slides.length; t < i; t += 1) {
var s = this.slides.eq(t);
(s.attr("data-hash") || s.attr("data-history")) !== e ||
s.hasClass(this.params.slideDuplicateClass) ||
((s = s.index()),
this.slideTo(s, 0, this.params.runCallbacksOnInit, !0));
}
this.params.hashNavigation.watchState &&
S(X).on("hashchange", this.hashNavigation.onHashCange);
}
},
destroy: function () {
this.params.hashNavigation.watchState &&
S(X).off("hashchange", this.hashNavigation.onHashCange);
},
},
M = {
run: function () {
var e = this,
t = e.slides.eq(e.activeIndex),
i = e.params.autoplay.delay;
t.attr("data-swiper-autoplay") &&
(i = t.attr("data-swiper-autoplay") || e.params.autoplay.delay),
clearTimeout(e.autoplay.timeout),
(e.autoplay.timeout = U.nextTick(function () {
e.params.autoplay.reverseDirection
? e.params.loop
? (e.loopFix(),
e.slidePrev(e.params.speed, !0, !0),
e.emit("autoplay"))
: e.isBeginning
? e.params.autoplay.stopOnLastSlide
? e.autoplay.stop()
: (e.slideTo(e.slides.length - 1, e.params.speed, !0, !0),
e.emit("autoplay"))
: (e.slidePrev(e.params.speed, !0, !0), e.emit("autoplay"))
: e.params.loop
? (e.loopFix(),
e.slideNext(e.params.speed, !0, !0),
e.emit("autoplay"))
: e.isEnd
? e.params.autoplay.stopOnLastSlide
? e.autoplay.stop()
: (e.slideTo(0, e.params.speed, !0, !0), e.emit("autoplay"))
: (e.slideNext(e.params.speed, !0, !0), e.emit("autoplay")),
e.params.cssMode && e.autoplay.running && e.autoplay.run();
}, i));
},
start: function () {
return (
void 0 === this.autoplay.timeout &&
!this.autoplay.running &&
((this.autoplay.running = !0),
this.emit("autoplayStart"),
this.autoplay.run(),
!0)
);
},
stop: function () {
return (
!!this.autoplay.running &&
void 0 !== this.autoplay.timeout &&
(this.autoplay.timeout &&
(clearTimeout(this.autoplay.timeout),
(this.autoplay.timeout = void 0)),
(this.autoplay.running = !1),
this.emit("autoplayStop"),
!0)
);
},
pause: function (e) {
!this.autoplay.running ||
this.autoplay.paused ||
(this.autoplay.timeout && clearTimeout(this.autoplay.timeout),
(this.autoplay.paused = !0),
0 !== e && this.params.autoplay.waitForTransition
? (this.$wrapperEl[0].addEventListener(
"transitionend",
this.autoplay.onTransitionEnd
),
this.$wrapperEl[0].addEventListener(
"webkitTransitionEnd",
this.autoplay.onTransitionEnd
))
: ((this.autoplay.paused = !1), this.autoplay.run()));
},
},
te = {
setTranslate: function () {
for (var e = this.slides, t = 0; t < e.length; t += 1) {
var i = this.slides.eq(t),
s = -i[0].swiperSlideOffset,
a = (this.params.virtualTranslate || (s -= this.translate), 0),
n =
(this.isHorizontal() || ((a = s), (s = 0)),
this.params.fadeEffect.crossFade
? Math.max(1 - Math.abs(i[0].progress), 0)
: 1 + Math.min(Math.max(i[0].progress, -1), 0));
i.css({ opacity: n }).transform(
"translate3d(" + s + "px, " + a + "px, 0px)"
);
}
},
setTransition: function (e) {
var i,
s = this,
t = s.slides,
a = s.$wrapperEl;
t.transition(e),
s.params.virtualTranslate &&
0 !== e &&
((i = !1),
t.transitionEnd(function () {
if (!i && s && !s.destroyed) {
(i = !0), (s.animating = !1);
for (
var e = ["webkitTransitionEnd", "transitionend"], t = 0;
t < e.length;
t += 1
)
a.trigger(e[t]);
}
}));
},
},
ie = {
setTranslate: function () {
var e,
t = this.$el,
i = this.$wrapperEl,
s = this.slides,
a = this.width,
n = this.height,
r = this.rtlTranslate,
o = this.size,
l = this.params.cubeEffect,
d = this.isHorizontal(),
h = this.virtual && this.params.virtual.enabled,
c = 0;
l.shadow &&
(d
? (0 === (e = i.find(".swiper-cube-shadow")).length &&
((e = S('')),
i.append(e)),
e.css({ height: a + "px" }))
: 0 === (e = t.find(".swiper-cube-shadow")).length &&
((e = S('')),
t.append(e)));
for (var p, u = 0; u < s.length; u += 1) {
var v = s.eq(u),
m = u,
g =
90 *
(m = h ? parseInt(v.attr("data-swiper-slide-index"), 10) : m),
f = Math.floor(g / 360),
w =
(r && ((g = -g), (f = Math.floor(-g / 360))),
Math.max(Math.min(v[0].progress, 1), -1)),
y = 0,
b = 0,
E = 0,
f =
(m % 4 == 0
? ((y = 4 * -f * o), (E = 0))
: (m - 1) % 4 == 0
? ((y = 0), (E = 4 * -f * o))
: (m - 2) % 4 == 0
? ((y = o + 4 * f * o), (E = o))
: (m - 3) % 4 == 0 && ((y = -o), (E = 3 * o + 4 * o * f)),
r && (y = -y),
d || ((b = y), (y = 0)),
"rotateX(" +
(d ? 0 : -g) +
"deg) rotateY(" +
(d ? g : 0) +
"deg) translate3d(" +
y +
"px, " +
b +
"px, " +
E +
"px)");
w <= 1 &&
-1 < w &&
((c = 90 * m + 90 * w), r) &&
(c = 90 * -m - 90 * w),
v.transform(f),
l.slideShadows &&
((g = d
? v.find(".swiper-slide-shadow-left")
: v.find(".swiper-slide-shadow-top")),
(y = d
? v.find(".swiper-slide-shadow-right")
: v.find(".swiper-slide-shadow-bottom")),
0 === g.length &&
((g = S(
''
)),
v.append(g)),
0 === y.length &&
((y = S(
''
)),
v.append(y)),
g.length && (g[0].style.opacity = Math.max(-w, 0)),
y.length) &&
(y[0].style.opacity = Math.max(w, 0));
}
i.css({
"-webkit-transform-origin": "50% 50% -" + o / 2 + "px",
"-moz-transform-origin": "50% 50% -" + o / 2 + "px",
"-ms-transform-origin": "50% 50% -" + o / 2 + "px",
"transform-origin": "50% 50% -" + o / 2 + "px",
}),
l.shadow &&
(d
? e.transform(
"translate3d(0px, " +
(a / 2 + l.shadowOffset) +
"px, " +
-a / 2 +
"px) rotateX(90deg) rotateZ(0deg) scale(" +
l.shadowScale +
")"
)
: ((t = Math.abs(c) - 90 * Math.floor(Math.abs(c) / 90)),
(a =
1.5 -
(Math.sin((2 * t * Math.PI) / 360) / 2 +
Math.cos((2 * t * Math.PI) / 360) / 2)),
(t = l.shadowScale),
(a = l.shadowScale / a),
(p = l.shadowOffset),
e.transform(
"scale3d(" +
t +
", 1, " +
a +
") translate3d(0px, " +
(n / 2 + p) +
"px, " +
-n / 2 / a +
"px) rotateX(-90deg)"
))),
i.transform(
"translate3d(0px,0," +
(C.isSafari || C.isUiWebView ? -o / 2 : 0) +
"px) rotateX(" +
(this.isHorizontal() ? 0 : c) +
"deg) rotateY(" +
(this.isHorizontal() ? -c : 0) +
"deg)"
);
},
setTransition: function (e) {
var t = this.$el;
this.slides
.transition(e)
.find(
".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left"
)
.transition(e),
this.params.cubeEffect.shadow &&
!this.isHorizontal() &&
t.find(".swiper-cube-shadow").transition(e);
},
},
se = {
setTranslate: function () {
for (
var e = this.slides, t = this.rtlTranslate, i = 0;
i < e.length;
i += 1
) {
var s,
a,
n = e.eq(i),
r = n[0].progress,
o =
-180 *
(r = this.params.flipEffect.limitRotation
? Math.max(Math.min(n[0].progress, 1), -1)
: r),
l = 0,
d = -n[0].swiperSlideOffset,
h = 0;
this.isHorizontal()
? t && (o = -o)
: ((h = d), (l = -o), (o = d = 0)),
(n[0].style.zIndex = -Math.abs(Math.round(r)) + e.length),
this.params.flipEffect.slideShadows &&
((s = this.isHorizontal()
? n.find(".swiper-slide-shadow-left")
: n.find(".swiper-slide-shadow-top")),
(a = this.isHorizontal()
? n.find(".swiper-slide-shadow-right")
: n.find(".swiper-slide-shadow-bottom")),
0 === s.length &&
((s = S(
''
)),
n.append(s)),
0 === a.length &&
((a = S(
''
)),
n.append(a)),
s.length && (s[0].style.opacity = Math.max(-r, 0)),
a.length) &&
(a[0].style.opacity = Math.max(r, 0)),
n.transform(
"translate3d(" +
d +
"px, " +
h +
"px, 0px) rotateX(" +
l +
"deg) rotateY(" +
o +
"deg)"
);
}
},
setTransition: function (e) {
var i,
s = this,
t = s.slides,
a = s.activeIndex,
n = s.$wrapperEl;
t
.transition(e)
.find(
".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left"
)
.transition(e),
s.params.virtualTranslate &&
0 !== e &&
((i = !1),
t.eq(a).transitionEnd(function () {
if (!i && s && !s.destroyed) {
(i = !0), (s.animating = !1);
for (
var e = ["webkitTransitionEnd", "transitionend"], t = 0;
t < e.length;
t += 1
)
n.trigger(e[t]);
}
}));
},
},
ae = {
setTranslate: function () {
for (
var e = this.width,
t = this.height,
i = this.slides,
s = this.$wrapperEl,
a = this.slidesSizesGrid,
n = this.params.coverflowEffect,
r = this.isHorizontal(),
o = this.translate,
l = r ? e / 2 - o : t / 2 - o,
d = r ? n.rotate : -n.rotate,
h = n.depth,
c = 0,
p = i.length;
c < p;
c += 1
) {
var u = i.eq(c),
v = a[c],
v = ((l - u[0].swiperSlideOffset - v / 2) / v) * n.modifier,
m = r ? d * v : 0,
g = r ? 0 : d * v,
f = -h * Math.abs(v),
w = r ? 0 : n.stretch * v,
y = r ? n.stretch * v : 0,
y =
(Math.abs(y) < 0.001 && (y = 0),
Math.abs(w) < 0.001 && (w = 0),
Math.abs(f) < 0.001 && (f = 0),
Math.abs(m) < 0.001 && (m = 0),
"translate3d(" +
y +
"px," +
w +
"px," +
f +
"px) rotateX(" +
(g = Math.abs(g) < 0.001 ? 0 : g) +
"deg) rotateY(" +
m +
"deg)");
u.transform(y),
(u[0].style.zIndex = 1 - Math.abs(Math.round(v))),
n.slideShadows &&
((w = r
? u.find(".swiper-slide-shadow-left")
: u.find(".swiper-slide-shadow-top")),
(f = r
? u.find(".swiper-slide-shadow-right")
: u.find(".swiper-slide-shadow-bottom")),
0 === w.length &&
((w = S(
''
)),
u.append(w)),
0 === f.length &&
((f = S(
''
)),
u.append(f)),
w.length && (w[0].style.opacity = 0 < v ? v : 0),
f.length) &&
(f[0].style.opacity = 0 < -v ? -v : 0);
}
(b.pointerEvents || b.prefixedPointerEvents) &&
(s[0].style.perspectiveOrigin = l + "px 50%");
},
setTransition: function (e) {
this.slides
.transition(e)
.find(
".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left"
)
.transition(e);
},
},
ne = {
init: function () {
var e = this.params.thumbs,
t = this.constructor;
e.swiper instanceof t
? ((this.thumbs.swiper = e.swiper),
U.extend(this.thumbs.swiper.originalParams, {
watchSlidesProgress: !0,
slideToClickedSlide: !1,
}),
U.extend(this.thumbs.swiper.params, {
watchSlidesProgress: !0,
slideToClickedSlide: !1,
}))
: U.isObject(e.swiper) &&
((this.thumbs.swiper = new t(
U.extend({}, e.swiper, {
watchSlidesVisibility: !0,
watchSlidesProgress: !0,
slideToClickedSlide: !1,
})
)),
(this.thumbs.swiperCreated = !0)),
this.thumbs.swiper.$el.addClass(
this.params.thumbs.thumbsContainerClass
),
this.thumbs.swiper.on("tap", this.thumbs.onThumbClick);
},
onThumbClick: function () {
var e,
t,
i,
s = this.thumbs.swiper;
s &&
((e = s.clickedIndex),
((i = s.clickedSlide) &&
S(i).hasClass(this.params.thumbs.slideThumbActiveClass)) ||
null == e ||
((i = s.params.loop
? parseInt(
S(s.clickedSlide).attr("data-swiper-slide-index"),
10
)
: e),
this.params.loop &&
((s = this.activeIndex),
this.slides.eq(s).hasClass(this.params.slideDuplicateClass) &&
(this.loopFix(),
(this._clientLeft = this.$wrapperEl[0].clientLeft),
(s = this.activeIndex)),
(e = this.slides
.eq(s)
.prevAll('[data-swiper-slide-index="' + i + '"]')
.eq(0)
.index()),
(t = this.slides
.eq(s)
.nextAll('[data-swiper-slide-index="' + i + '"]')
.eq(0)
.index()),
(i =
void 0 === e || (void 0 !== t && t - s < s - e) ? t : e)),
this.slideTo(i)));
},
update: function (e) {
var t = this.thumbs.swiper;
if (t) {
var i,
s,
a,
n =
"auto" === t.params.slidesPerView
? t.slidesPerViewDynamic()
: t.params.slidesPerView,
r =
(this.realIndex !== t.realIndex &&
((i = t.activeIndex),
(a = t.params.loop
? (t.slides
.eq(i)
.hasClass(t.params.slideDuplicateClass) &&
(t.loopFix(),
(t._clientLeft = t.$wrapperEl[0].clientLeft),
(i = t.activeIndex)),
(s = t.slides
.eq(i)
.prevAll(
'[data-swiper-slide-index="' + this.realIndex + '"]'
)
.eq(0)
.index()),
(a = t.slides
.eq(i)
.nextAll(
'[data-swiper-slide-index="' + this.realIndex + '"]'
)
.eq(0)
.index()),
void 0 === s
? a
: void 0 === a
? s
: a - i == i - s
? i
: a - i < i - s
? a
: s)
: this.realIndex),
t.visibleSlidesIndexes) &&
t.visibleSlidesIndexes.indexOf(a) < 0 &&
(t.params.centeredSlides
? (a =
i < a
? a - Math.floor(n / 2) + 1
: a + Math.floor(n / 2) - 1)
: i < a && (a = a - n + 1),
t.slideTo(a, e ? 0 : void 0)),
1),
o = this.params.thumbs.slideThumbActiveClass;
if (
(1 < this.params.slidesPerView &&
!this.params.centeredSlides &&
(r = this.params.slidesPerView),
this.params.thumbs.multipleActiveThumbs || (r = 1),
(r = Math.floor(r)),
t.slides.removeClass(o),
t.params.loop || (t.params.virtual && t.params.virtual.enabled))
)
for (var l = 0; l < r; l += 1)
t.$wrapperEl
.children(
'[data-swiper-slide-index="' + (this.realIndex + l) + '"]'
)
.addClass(o);
else
for (var d = 0; d < r; d += 1)
t.slides.eq(this.realIndex + d).addClass(o);
}
},
},
O = [
v,
j,
Y,
m,
f,
y,
E,
{
name: "mousewheel",
params: {
mousewheel: {
enabled: !1,
releaseOnEdges: !1,
invert: !1,
forceToAxis: !1,
sensitivity: 1,
eventsTarged: "container",
},
},
create: function () {
U.extend(this, {
mousewheel: {
enabled: !1,
enable: T.enable.bind(this),
disable: T.disable.bind(this),
handle: T.handle.bind(this),
handleMouseEnter: T.handleMouseEnter.bind(this),
handleMouseLeave: T.handleMouseLeave.bind(this),
animateSlider: T.animateSlider.bind(this),
releaseScroll: T.releaseScroll.bind(this),
lastScrollTime: U.now(),
lastEventBeforeSnap: void 0,
recentWheelEvents: [],
},
});
},
on: {
init: function () {
!this.params.mousewheel.enabled &&
this.params.cssMode &&
this.mousewheel.disable(),
this.params.mousewheel.enabled && this.mousewheel.enable();
},
destroy: function () {
this.params.cssMode && this.mousewheel.enable(),
this.mousewheel.enabled && this.mousewheel.disable();
},
},
},
{
name: "navigation",
params: {
navigation: {
nextEl: null,
prevEl: null,
hideOnClick: !1,
disabledClass: "swiper-button-disabled",
hiddenClass: "swiper-button-hidden",
lockClass: "swiper-button-lock",
},
},
create: function () {
U.extend(this, {
navigation: {
init: A.init.bind(this),
update: A.update.bind(this),
destroy: A.destroy.bind(this),
onNextClick: A.onNextClick.bind(this),
onPrevClick: A.onPrevClick.bind(this),
},
});
},
on: {
init: function () {
this.navigation.init(), this.navigation.update();
},
toEdge: function () {
this.navigation.update();
},
fromEdge: function () {
this.navigation.update();
},
destroy: function () {
this.navigation.destroy();
},
click: function (e) {
var t,
i = this.navigation,
s = i.$nextEl,
i = i.$prevEl;
!this.params.navigation.hideOnClick ||
S(e.target).is(i) ||
S(e.target).is(s) ||
(s
? (t = s.hasClass(this.params.navigation.hiddenClass))
: i && (t = i.hasClass(this.params.navigation.hiddenClass)),
!0 === t
? this.emit("navigationShow", this)
: this.emit("navigationHide", this),
s && s.toggleClass(this.params.navigation.hiddenClass),
i && i.toggleClass(this.params.navigation.hiddenClass));
},
},
},
{
name: "pagination",
params: {
pagination: {
el: null,
bulletElement: "span",
clickable: !1,
hideOnClick: !1,
renderBullet: null,
renderProgressbar: null,
renderFraction: null,
renderCustom: null,
progressbarOpposite: !1,
type: "bullets",
dynamicBullets: !1,
dynamicMainBullets: 1,
formatFractionCurrent: function (e) {
return e;
},
formatFractionTotal: function (e) {
return e;
},
bulletClass: "swiper-pagination-bullet",
bulletActiveClass: "swiper-pagination-bullet-active",
modifierClass: "swiper-pagination-",
currentClass: "swiper-pagination-current",
totalClass: "swiper-pagination-total",
hiddenClass: "swiper-pagination-hidden",
progressbarFillClass: "swiper-pagination-progressbar-fill",
progressbarOppositeClass:
"swiper-pagination-progressbar-opposite",
clickableClass: "swiper-pagination-clickable",
lockClass: "swiper-pagination-lock",
},
},
create: function () {
U.extend(this, {
pagination: {
init: L.init.bind(this),
render: L.render.bind(this),
update: L.update.bind(this),
destroy: L.destroy.bind(this),
dynamicBulletIndex: 0,
},
});
},
on: {
init: function () {
this.pagination.init(),
this.pagination.render(),
this.pagination.update();
},
activeIndexChange: function () {
(!this.params.loop && void 0 !== this.snapIndex) ||
this.pagination.update();
},
snapIndexChange: function () {
this.params.loop || this.pagination.update();
},
slidesLengthChange: function () {
this.params.loop &&
(this.pagination.render(), this.pagination.update());
},
snapGridLengthChange: function () {
this.params.loop ||
(this.pagination.render(), this.pagination.update());
},
destroy: function () {
this.pagination.destroy();
},
click: function (e) {
this.params.pagination.el &&
this.params.pagination.hideOnClick &&
0 < this.pagination.$el.length &&
!S(e.target).hasClass(this.params.pagination.bulletClass) &&
(!0 ===
this.pagination.$el.hasClass(
this.params.pagination.hiddenClass
)
? this.emit("paginationShow", this)
: this.emit("paginationHide", this),
this.pagination.$el.toggleClass(
this.params.pagination.hiddenClass
));
},
},
},
{
name: "scrollbar",
params: {
scrollbar: {
el: null,
dragSize: "auto",
hide: !1,
draggable: !1,
snapOnRelease: !0,
lockClass: "swiper-scrollbar-lock",
dragClass: "swiper-scrollbar-drag",
},
},
create: function () {
U.extend(this, {
scrollbar: {
init: P.init.bind(this),
destroy: P.destroy.bind(this),
updateSize: P.updateSize.bind(this),
setTranslate: P.setTranslate.bind(this),
setTransition: P.setTransition.bind(this),
enableDraggable: P.enableDraggable.bind(this),
disableDraggable: P.disableDraggable.bind(this),
setDragPosition: P.setDragPosition.bind(this),
getPointerPosition: P.getPointerPosition.bind(this),
onDragStart: P.onDragStart.bind(this),
onDragMove: P.onDragMove.bind(this),
onDragEnd: P.onDragEnd.bind(this),
isTouched: !1,
timeout: null,
dragTimeout: null,
},
});
},
on: {
init: function () {
this.scrollbar.init(),
this.scrollbar.updateSize(),
this.scrollbar.setTranslate();
},
update: function () {
this.scrollbar.updateSize();
},
resize: function () {
this.scrollbar.updateSize();
},
observerUpdate: function () {
this.scrollbar.updateSize();
},
setTranslate: function () {
this.scrollbar.setTranslate();
},
setTransition: function (e) {
this.scrollbar.setTransition(e);
},
destroy: function () {
this.scrollbar.destroy();
},
},
},
{
name: "parallax",
params: { parallax: { enabled: !1 } },
create: function () {
U.extend(this, {
parallax: {
setTransform: Q.setTransform.bind(this),
setTranslate: Q.setTranslate.bind(this),
setTransition: Q.setTransition.bind(this),
},
});
},
on: {
beforeInit: function () {
this.params.parallax.enabled &&
((this.params.watchSlidesProgress = !0),
(this.originalParams.watchSlidesProgress = !0));
},
init: function () {
this.params.parallax.enabled && this.parallax.setTranslate();
},
setTranslate: function () {
this.params.parallax.enabled && this.parallax.setTranslate();
},
setTransition: function (e) {
this.params.parallax.enabled && this.parallax.setTransition(e);
},
},
},
{
name: "zoom",
params: {
zoom: {
enabled: !1,
maxRatio: 3,
minRatio: 1,
toggle: !0,
containerClass: "swiper-zoom-container",
zoomedSlideClass: "swiper-slide-zoomed",
},
},
create: function () {
var s = this,
t = {
enabled: !1,
scale: 1,
currentScale: 1,
isScaling: !1,
gesture: {
$slideEl: void 0,
slideWidth: void 0,
slideHeight: void 0,
$imageEl: void 0,
$imageWrapEl: void 0,
maxRatio: 3,
},
image: {
isTouched: void 0,
isMoved: void 0,
currentX: void 0,
currentY: void 0,
minX: void 0,
minY: void 0,
maxX: void 0,
maxY: void 0,
width: void 0,
height: void 0,
startX: void 0,
startY: void 0,
touchesStart: {},
touchesCurrent: {},
},
velocity: {
x: void 0,
y: void 0,
prevPositionX: void 0,
prevPositionY: void 0,
prevTime: void 0,
},
},
a =
("onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out"
.split(" ")
.forEach(function (e) {
t[e] = Z[e].bind(s);
}),
U.extend(s, { zoom: t }),
1);
Object.defineProperty(s.zoom, "scale", {
get: function () {
return a;
},
set: function (e) {
var t, i;
a !== e &&
((t = s.zoom.gesture.$imageEl
? s.zoom.gesture.$imageEl[0]
: void 0),
(i = s.zoom.gesture.$slideEl
? s.zoom.gesture.$slideEl[0]
: void 0),
s.emit("zoomChange", e, t, i)),
(a = e);
},
});
},
on: {
init: function () {
this.params.zoom.enabled && this.zoom.enable();
},
destroy: function () {
this.zoom.disable();
},
touchStart: function (e) {
this.zoom.enabled && this.zoom.onTouchStart(e);
},
touchEnd: function (e) {
this.zoom.enabled && this.zoom.onTouchEnd(e);
},
doubleTap: function (e) {
this.params.zoom.enabled &&
this.zoom.enabled &&
this.params.zoom.toggle &&
this.zoom.toggle(e);
},
transitionEnd: function () {
this.zoom.enabled &&
this.params.zoom.enabled &&
this.zoom.onTransitionEnd();
},
slideChange: function () {
this.zoom.enabled &&
this.params.zoom.enabled &&
this.params.cssMode &&
this.zoom.onTransitionEnd();
},
},
},
{
name: "lazy",
params: {
lazy: {
enabled: !1,
loadPrevNext: !1,
loadPrevNextAmount: 1,
loadOnTransitionStart: !1,
elementClass: "swiper-lazy",
loadingClass: "swiper-lazy-loading",
loadedClass: "swiper-lazy-loaded",
preloaderClass: "swiper-lazy-preloader",
},
},
create: function () {
U.extend(this, {
lazy: {
initialImageLoaded: !1,
load: J.load.bind(this),
loadInSlide: J.loadInSlide.bind(this),
},
});
},
on: {
beforeInit: function () {
this.params.lazy.enabled &&
this.params.preloadImages &&
(this.params.preloadImages = !1);
},
init: function () {
this.params.lazy.enabled &&
!this.params.loop &&
0 === this.params.initialSlide &&
this.lazy.load();
},
scroll: function () {
this.params.freeMode &&
!this.params.freeModeSticky &&
this.lazy.load();
},
resize: function () {
this.params.lazy.enabled && this.lazy.load();
},
scrollbarDragMove: function () {
this.params.lazy.enabled && this.lazy.load();
},
transitionStart: function () {
this.params.lazy.enabled &&
(this.params.lazy.loadOnTransitionStart ||
(!this.params.lazy.loadOnTransitionStart &&
!this.lazy.initialImageLoaded)) &&
this.lazy.load();
},
transitionEnd: function () {
this.params.lazy.enabled &&
!this.params.lazy.loadOnTransitionStart &&
this.lazy.load();
},
slideChange: function () {
this.params.lazy.enabled &&
this.params.cssMode &&
this.lazy.load();
},
},
},
{
name: "controller",
params: {
controller: { control: void 0, inverse: !1, by: "slide" },
},
create: function () {
U.extend(this, {
controller: {
control: this.params.controller.control,
getInterpolateFunction: I.getInterpolateFunction.bind(this),
setTranslate: I.setTranslate.bind(this),
setTransition: I.setTransition.bind(this),
},
});
},
on: {
update: function () {
this.controller.control &&
this.controller.spline &&
((this.controller.spline = void 0),
delete this.controller.spline);
},
resize: function () {
this.controller.control &&
this.controller.spline &&
((this.controller.spline = void 0),
delete this.controller.spline);
},
observerUpdate: function () {
this.controller.control &&
this.controller.spline &&
((this.controller.spline = void 0),
delete this.controller.spline);
},
setTranslate: function (e, t) {
this.controller.control && this.controller.setTranslate(e, t);
},
setTransition: function (e, t) {
this.controller.control && this.controller.setTransition(e, t);
},
},
},
{
name: "a11y",
params: {
a11y: {
enabled: !0,
notificationClass: "swiper-notification",
prevSlideMessage: "Previous slide",
nextSlideMessage: "Next slide",
firstSlideMessage: "This is the first slide",
lastSlideMessage: "This is the last slide",
paginationBulletMessage: "Go to slide {{index}}",
},
},
create: function () {
var t = this;
U.extend(t, {
a11y: {
liveRegion: S(
''
),
},
}),
Object.keys(ee).forEach(function (e) {
t.a11y[e] = ee[e].bind(t);
});
},
on: {
init: function () {
this.params.a11y.enabled &&
(this.a11y.init(), this.a11y.updateNavigation());
},
toEdge: function () {
this.params.a11y.enabled && this.a11y.updateNavigation();
},
fromEdge: function () {
this.params.a11y.enabled && this.a11y.updateNavigation();
},
paginationUpdate: function () {
this.params.a11y.enabled && this.a11y.updatePagination();
},
destroy: function () {
this.params.a11y.enabled && this.a11y.destroy();
},
},
},
{
name: "history",
params: {
history: { enabled: !1, replaceState: !1, key: "slides" },
},
create: function () {
U.extend(this, {
history: {
init: k.init.bind(this),
setHistory: k.setHistory.bind(this),
setHistoryPopState: k.setHistoryPopState.bind(this),
scrollToSlide: k.scrollToSlide.bind(this),
destroy: k.destroy.bind(this),
},
});
},
on: {
init: function () {
this.params.history.enabled && this.history.init();
},
destroy: function () {
this.params.history.enabled && this.history.destroy();
},
transitionEnd: function () {
this.history.initialized &&
this.history.setHistory(
this.params.history.key,
this.activeIndex
);
},
slideChange: function () {
this.history.initialized &&
this.params.cssMode &&
this.history.setHistory(
this.params.history.key,
this.activeIndex
);
},
},
},
{
name: "hash-navigation",
params: {
hashNavigation: { enabled: !1, replaceState: !1, watchState: !1 },
},
create: function () {
U.extend(this, {
hashNavigation: {
initialized: !1,
init: z.init.bind(this),
destroy: z.destroy.bind(this),
setHash: z.setHash.bind(this),
onHashCange: z.onHashCange.bind(this),
},
});
},
on: {
init: function () {
this.params.hashNavigation.enabled &&
this.hashNavigation.init();
},
destroy: function () {
this.params.hashNavigation.enabled &&
this.hashNavigation.destroy();
},
transitionEnd: function () {
this.hashNavigation.initialized &&
this.hashNavigation.setHash();
},
slideChange: function () {
this.hashNavigation.initialized &&
this.params.cssMode &&
this.hashNavigation.setHash();
},
},
},
{
name: "autoplay",
params: {
autoplay: {
enabled: !1,
delay: 3e3,
waitForTransition: !0,
disableOnInteraction: !0,
stopOnLastSlide: !1,
reverseDirection: !1,
},
},
create: function () {
var t = this;
U.extend(t, {
autoplay: {
running: !1,
paused: !1,
run: M.run.bind(t),
start: M.start.bind(t),
stop: M.stop.bind(t),
pause: M.pause.bind(t),
onVisibilityChange: function () {
"hidden" === document.visibilityState &&
t.autoplay.running &&
t.autoplay.pause(),
"visible" === document.visibilityState &&
t.autoplay.paused &&
(t.autoplay.run(), (t.autoplay.paused = !1));
},
onTransitionEnd: function (e) {
t &&
!t.destroyed &&
t.$wrapperEl &&
e.target === this &&
(t.$wrapperEl[0].removeEventListener(
"transitionend",
t.autoplay.onTransitionEnd
),
t.$wrapperEl[0].removeEventListener(
"webkitTransitionEnd",
t.autoplay.onTransitionEnd
),
(t.autoplay.paused = !1),
t.autoplay.running
? t.autoplay.run()
: t.autoplay.stop());
},
},
});
},
on: {
init: function () {
this.params.autoplay.enabled &&
(this.autoplay.start(),
document.addEventListener(
"visibilitychange",
this.autoplay.onVisibilityChange
));
},
beforeTransitionStart: function (e, t) {
this.autoplay.running &&
(t || !this.params.autoplay.disableOnInteraction
? this.autoplay.pause(e)
: this.autoplay.stop());
},
sliderFirstMove: function () {
this.autoplay.running &&
(this.params.autoplay.disableOnInteraction
? this.autoplay.stop()
: this.autoplay.pause());
},
touchEnd: function () {
this.params.cssMode &&
this.autoplay.paused &&
!this.params.autoplay.disableOnInteraction &&
this.autoplay.run();
},
destroy: function () {
this.autoplay.running && this.autoplay.stop(),
document.removeEventListener(
"visibilitychange",
this.autoplay.onVisibilityChange
);
},
},
},
{
name: "effect-fade",
params: { fadeEffect: { crossFade: !1 } },
create: function () {
U.extend(this, {
fadeEffect: {
setTranslate: te.setTranslate.bind(this),
setTransition: te.setTransition.bind(this),
},
});
},
on: {
beforeInit: function () {
var e;
"fade" === this.params.effect &&
(this.classNames.push(
this.params.containerModifierClass + "fade"
),
U.extend(
this.params,
(e = {
slidesPerView: 1,
slidesPerColumn: 1,
slidesPerGroup: 1,
watchSlidesProgress: !0,
spaceBetween: 0,
virtualTranslate: !0,
})
),
U.extend(this.originalParams, e));
},
setTranslate: function () {
"fade" === this.params.effect && this.fadeEffect.setTranslate();
},
setTransition: function (e) {
"fade" === this.params.effect &&
this.fadeEffect.setTransition(e);
},
},
},
{
name: "effect-cube",
params: {
cubeEffect: {
slideShadows: !0,
shadow: !0,
shadowOffset: 20,
shadowScale: 0.94,
},
},
create: function () {
U.extend(this, {
cubeEffect: {
setTranslate: ie.setTranslate.bind(this),
setTransition: ie.setTransition.bind(this),
},
});
},
on: {
beforeInit: function () {
var e;
"cube" === this.params.effect &&
(this.classNames.push(
this.params.containerModifierClass + "cube"
),
this.classNames.push(
this.params.containerModifierClass + "3d"
),
U.extend(
this.params,
(e = {
slidesPerView: 1,
slidesPerColumn: 1,
slidesPerGroup: 1,
watchSlidesProgress: !0,
resistanceRatio: 0,
spaceBetween: 0,
centeredSlides: !1,
virtualTranslate: !0,
})
),
U.extend(this.originalParams, e));
},
setTranslate: function () {
"cube" === this.params.effect && this.cubeEffect.setTranslate();
},
setTransition: function (e) {
"cube" === this.params.effect &&
this.cubeEffect.setTransition(e);
},
},
},
{
name: "effect-flip",
params: { flipEffect: { slideShadows: !0, limitRotation: !0 } },
create: function () {
U.extend(this, {
flipEffect: {
setTranslate: se.setTranslate.bind(this),
setTransition: se.setTransition.bind(this),
},
});
},
on: {
beforeInit: function () {
var e;
"flip" === this.params.effect &&
(this.classNames.push(
this.params.containerModifierClass + "flip"
),
this.classNames.push(
this.params.containerModifierClass + "3d"
),
U.extend(
this.params,
(e = {
slidesPerView: 1,
slidesPerColumn: 1,
slidesPerGroup: 1,
watchSlidesProgress: !0,
spaceBetween: 0,
virtualTranslate: !0,
})
),
U.extend(this.originalParams, e));
},
setTranslate: function () {
"flip" === this.params.effect && this.flipEffect.setTranslate();
},
setTransition: function (e) {
"flip" === this.params.effect &&
this.flipEffect.setTransition(e);
},
},
},
{
name: "effect-coverflow",
params: {
coverflowEffect: {
rotate: 50,
stretch: 0,
depth: 100,
modifier: 1,
slideShadows: !0,
},
},
create: function () {
U.extend(this, {
coverflowEffect: {
setTranslate: ae.setTranslate.bind(this),
setTransition: ae.setTransition.bind(this),
},
});
},
on: {
beforeInit: function () {
"coverflow" === this.params.effect &&
(this.classNames.push(
this.params.containerModifierClass + "coverflow"
),
this.classNames.push(
this.params.containerModifierClass + "3d"
),
(this.params.watchSlidesProgress = !0),
(this.originalParams.watchSlidesProgress = !0));
},
setTranslate: function () {
"coverflow" === this.params.effect &&
this.coverflowEffect.setTranslate();
},
setTransition: function (e) {
"coverflow" === this.params.effect &&
this.coverflowEffect.setTransition(e);
},
},
},
{
name: "thumbs",
params: {
thumbs: {
multipleActiveThumbs: !0,
swiper: null,
slideThumbActiveClass: "swiper-slide-thumb-active",
thumbsContainerClass: "swiper-container-thumbs",
},
},
create: function () {
U.extend(this, {
thumbs: {
swiper: null,
init: ne.init.bind(this),
update: ne.update.bind(this),
onThumbClick: ne.onThumbClick.bind(this),
},
});
},
on: {
beforeInit: function () {
var e = this.params.thumbs;
e && e.swiper && (this.thumbs.init(), this.thumbs.update(!0));
},
slideChange: function () {
this.thumbs.swiper && this.thumbs.update();
},
update: function () {
this.thumbs.swiper && this.thumbs.update();
},
resize: function () {
this.thumbs.swiper && this.thumbs.update();
},
observerUpdate: function () {
this.thumbs.swiper && this.thumbs.update();
},
setTransition: function (e) {
var t = this.thumbs.swiper;
t && t.setTransition(e);
},
beforeDestroy: function () {
var e = this.thumbs.swiper;
e && this.thumbs.swiperCreated && e && e.destroy();
},
},
},
];
return (
void 0 === u.use &&
((u.use = u.Class.use), (u.installModule = u.Class.installModule)),
u.use(O),
u
);
});
let ANIUTIL = {
scrollController: function () {
let i = {},
e = navigator.userAgent.toLowerCase(),
s = -1 < e.indexOf("mac os"),
a =
document.scrollingElement ||
document.documentElement ||
document.body.parentNode ||
document.body,
n = s ? 60 : 120,
r,
o,
l,
d,
h =
a === document.body && document.documentElement
? document.documentElement
: a,
t = !1,
c = null;
let p = {
wheel: function () {
("Netscape" == navigator.appName &&
-1 != navigator.userAgent.search("Trident")) ||
-1 != e.indexOf("msie")
? document.documentElement.addEventListener(
"mousewheel",
u.scrollEvent,
{ passive: !1 }
)
: document.documentElement.addEventListener(
"wheel",
u.scrollEvent,
{ passive: !1 }
);
},
scroll: function () {
window.addEventListener("scroll", function () {
"hidden" == document.documentElement.style.overflow ||
"hidden" == document.body.style.overflow ||
t ||
(l = a.scrollTop);
});
},
},
u = {
scrollEvent: function (e) {
var t;
"hidden" != document.documentElement.style.overflow &&
"hidden" != document.body.style.overflow &&
(e.preventDefault(),
(t = document.body.getAttribute("data-scroll-speed")),
(e = u.normalizeWheelDelta(e)),
(t = i.currDelta && t ? t : t || r ? r : 120),
(l += -e * t),
(d = Math.max(
0,
Math.min(l, a.scrollHeight - h.clientHeight)
)),
u.update());
},
normalizeWheelDelta: function (e) {
return e.detail
? e.wheelDelta
? (e.wheelDelta / e.detail / 40) * (0 < e.detail ? 1 : -1)
: -e.detail / 3
: e.wheelDelta / 120;
},
update: function () {
var e = d - a.scrollTop,
e =
Math.ceil(a.scrollTop + e) <= 0
? 0
: l > d
? d
: Math.ceil(a.scrollTop + e);
(t = !0),
TweenMax.to(a, o, {
ease: "circ.out",
scrollTop: e,
onComplete: function () {
clearTimeout(c),
(c = null),
(c = setTimeout(function () {
(t = !1), (l = a.scrollTop);
}, 500));
},
}),
l <= 0 ? (l = 0) : l >= d && (l = d);
},
};
return {
init: function (e) {
var t;
return (
(t = e),
(r = t.speed ? (s ? t.speed / 2 : t.speed) : n),
(o = t.duration || 0.6),
(l = a.scrollTop),
p.wheel(),
p.scroll(),
(this.opt = e)
);
},
destroy: function (e) {
document.documentElement.removeEventListener(
"mousewheel",
u.scrollEvent
),
document.documentElement.removeEventListener(
"wheel",
u.scrollEvent
),
e && (i = {});
},
};
},
},
UTILS =
((window.RING = window.RING || {}),
(() => {
return {
isIosDevice:
((s = /iPad|iPhone|iPod/.test(navigator.userAgent))
? document.documentElement.classList.add("isIosDevice")
: document.documentElement.classList.add("isNotIosDevice"),
s),
checkGlobal: void (0 ===
location.pathname.indexOf("/global/galaxy") ||
!0 === window.IS_CAMPAIGN
? document.documentElement.classList.add("global")
: document.documentElement.classList.add("dotcom")),
checkOS: (() => {
let e = navigator.appVersion.match(/(mac|win|linux)/i);
(e = e ? e[1].toLowerCase() : ""),
document.documentElement.classList.add(e);
})(),
isFireFox: void (
/firefox/i.test(navigator.userAgent) &&
document.documentElement.classList.add("firefox")
),
isWebkit: void (
/applewebkit/i.test(navigator.userAgent) &&
document.documentElement.classList.add("webkit")
),
isChrome: void (
/chrome/i.test(navigator.userAgent) &&
document.documentElement.classList.add("chrome")
),
isOpera: void (
/opera/i.test(navigator.userAgent) &&
document.documentElement.classList.add("opera")
),
isIos: void (
/ip(ad|hone|od)/i.test(navigator.userAgent) &&
document.documentElement.classList.add("ios")
),
isCrIos: void (
/crios/i.test(navigator.userAgent) &&
document.documentElement.classList.add("crios")
),
isAndroid: void (
/android/i.test(navigator.userAgent) &&
document.documentElement.classList.add("android")
),
isSafari:
((s = /applewebkit/i.test(navigator.userAgent)),
(i = /chrome/i.test(navigator.userAgent)),
void (
s &&
!i &&
document.documentElement.classList.add("safari")
)),
isHuawei: void (
/HUAWEICLT/i.test(navigator.userAgent) &&
document.documentElement.classList.add("huawei")
),
isUCBrowser: void (
/UCBrowser/i.test(navigator.userAgent) &&
document.documentElement.classList.add("ucbrowser")
),
winSize:
((s = "Netscape" === navigator.appName),
(i = -1 !== navigator.appVersion.indexOf("Mac")),
(e = -1 !== navigator.userAgent.indexOf("Safari")),
(t = -1 !== navigator.userAgent.indexOf("Chrome")),
s && !i && e && !t
? function () {
return { w: $(win).width(), h: $(win).height() };
}
: function () {
return {
w:
window.innerWidth ||
document.documentElement.clientWidth ||
document.body.clientWidth,
h:
window.innerHeight ||
document.documentElement.clientHeight ||
document.body.clientHeight,
};
}),
requestAFrame:
window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function (e) {
return window.setTimeout(e, 1e3 / 60);
},
cancelAFrame:
window.cancelAnimationFrame ||
window.webkitCancelAnimationFrame ||
window.webkitCancelRequestAnimationFrame ||
window.mozCancelAnimationFrame ||
window.oCancelAnimationFrame ||
window.msCancelAnimationFrame ||
function (e) {
window.clearTimeout(e);
},
isObject: function (e) {
return (
"object" == typeof e &&
null !== e &&
e.constructor &&
e.constructor === Object
);
},
def: function () {
let t = [],
e = arguments.length;
for (; e--; ) t[e] = arguments[e];
var i = Object(t[0]);
for (let e = 1; e < t.length; e += 1) {
var s = t[e];
if (null != s) {
var a = Object.keys(Object(s));
for (let e = 0, t = a.length; e < t; e += 1) {
var n = a[e],
r = Object.getOwnPropertyDescriptor(s, n);
void 0 !== r &&
r.enumerable &&
(this.isObject(i[n]) && this.isObject(s[n])
? this.def(i[n], s[n])
: !this.isObject(i[n]) && this.isObject(s[n])
? ((i[n] = {}), this.def(i[n], s[n]))
: (i[n] = s[n]));
}
}
}
return i;
},
convertArray: function (e) {
return Array.prototype.slice.call(e);
},
getOffset: function (e) {
return {
top: e.getBoundingClientRect().top + window.pageYOffset,
bottom: e.getBoundingClientRect().bottom + window.pageYOffset,
};
},
getScroll: function () {
var e = window.pageYOffset;
return { top: e, bottom: e + window.innerHeight };
},
setCookie: function (e, t, i) {
var s = new Date();
s.setTime(s.getTime() + 60 * i * 60 * 24 * 1e3),
(document.cookie =
e + "=" + t + "; exprires=" + s.toUTCString() + "; path=/");
},
getCookie: function (e) {
e = document.cookie.match("(^|;) ?" + e + "=([^;]*)(;|$)");
return e ? e[2] : null;
},
getHeight: function (e) {
if (e) {
var t = window.getComputedStyle(e),
i = t.display,
t = parseInt(t.maxHeight);
const s = 0;
return "none" != i && 0 != t
? e.offsetHeight
: ((e.style.position = "absolute"),
(e.style.visibility = "hidden"),
(e.style.display = "block"),
(s = e.offsetHeight),
(e.style.display = ""),
(e.style.position = ""),
(e.style.visibility = ""),
s);
}
return 0;
},
isRTL: function () {
return document.documentElement.classList.contains("rtl");
},
checkRegion: function () {
var t = document.getElementsByTagName("meta");
let i = "";
for (let e = 0; e < t.length; e++)
if ("sitecode" == t[e].getAttribute("name"))
return (i = t[e].getAttribute("content"));
if ("" == i)
return -1 < document.location.pathname.indexOf("global")
? "global"
: "jp";
},
isLowNetwork: function () {
var e =
UTILS.getCookie("___GALAXY_SPEED") ||
UTILS.getCookie("__COM_SPEED");
return null != e && ("L" == e || ("H" != e && void 0));
},
getNavHeight: function () {
let e = 0;
var t,
i,
s =
document.querySelector(".pd-g-header-navigation") ||
document.querySelector("#subnav") ||
document.querySelector(".sticky-menu") ||
document.querySelector(".pd-g-floating-nav");
return (e = s
? s.classList.contains("pd-g-header-navigation")
? ((i = (t = s.querySelector(
".pd-header-navigation"
)).querySelector(".pd-header-navigation__menu-wrap")),
t.clientHeight + i.clientHeight)
: s.clientHeight
: e);
},
isBrokenFixed: function () {
var e = window.innerWidth,
t = window.innerHeight;
let i = !1;
return (
document.documentElement.classList.remove("is-broken-fixed"),
(1440 <= e && t <= 540) ||
(e <= 810 && t / e < 0.5277) ||
t < UTILS.MIN_VIEW_HEIGHT
? (document.documentElement.classList.add("is-broken-fixed"),
(i = !0))
: document.documentElement.classList.remove(
"is-broken-fixed"
),
i
);
},
isTouchDevice:
((s =
"ontouchstart" in window ||
(window.DocumentTouch &&
document instanceof window.DocumentTouch))
? document.documentElement.classList.add("isTouchDevice")
: document.documentElement.classList.add("isNotTouchDevice"),
s),
isIEorEdge: (() => {
let e;
var t = navigator.userAgent.toLowerCase();
if ("Microsoft Internet Explorer" == navigator.appName)
e = "msie ";
else if (-1 < t.search("trident")) e = "trident/.*rv:";
else {
if (!(-1 < t.search("edge/"))) return -1;
e = "edge/";
}
return null !=
new RegExp(e + "([0-9]{1,})(\\.{0,}[0-9]{0,1})").exec(t)
? (document.documentElement.classList.add("isIEorEdge"),
parseFloat(RegExp.$1 + RegExp.$2))
: -1;
})(),
page: {
scrollLock: {
className: "is-no-scroll",
barWidth: function () {
return (
window.innerWidth - document.documentElement.clientWidth
);
},
el: $("html"),
run: function (e) {
document.documentElement.style.paddingRight = e + "px";
},
off: function () {
this.barWidth();
this.el.removeClass(this.className),
this.el.removeClass("hive-layer-scroll-lock"),
this.run(0);
},
on: function () {
var e = this.barWidth();
this.el.addClass(this.className), this.run(e);
},
},
},
MIN_VIEW_HEIGHT: 400,
RESPONSIVE: {
PC: { NAME: "pc", WIDTH: 1440 },
TABLET: { NAME: "tablet", WIDTH: 1024 },
MOBILE: { NAME: "mobile", WIDTH: 767 },
},
};
var e, t, i, s;
})());
(RING.UTILS = UTILS),
(() => {
window.RING = window.RING || {};
let p = RING.UTILS;
RING.ImageLoader = class {
constructor(e = container, t) {
t = {
el: e,
lazyClass: ".js-img-src",
lazyCompleteClass: "load-complete",
responsiveClass: t.responsiveClass || ".js-res-img",
loadOption: t.loadOption,
visiblePoint: t.visiblePoint || 0,
useDefaultImg: t.useDefaultImg,
resizeStart: null,
};
(this.opts = t),
(this.classes = t.classes),
(this.events = {
load: this.onLoadHandler.bind(this),
resize: this.onResizeHandler.bind(this),
scroll: this.lazyEvent.bind(this),
}),
(this.el = document.querySelector(e)),
this.init();
}
init() {
this.initOpts(),
this.getLazyImage(),
this.getResponsiveImage(),
this.bindEvents();
}
initOpts() {
(this.targetAttr = this.opts.loadOption[0].attribute),
(this.responsiveCheck = this.opts.loadOption),
(this.dynamicCallCount = 0),
(this.dynamicLoadedComplate = !1),
this.opts.useDefaultImg && this.setDefaultImage();
}
getLazyImage() {
let t = [];
var e = this.el.children;
Array.from(e).forEach((e) => {
e.classList.contains("is-feature-hide") ||
((e = e.querySelectorAll(this.opts.lazyClass)), t.push(...e));
}),
(this.lazyImages = t),
(this.lazyLength = t.length);
}
getResponsiveImage() {
var e = this.el.querySelectorAll(this.opts.responsiveClass);
(this.responsiveImages = e), (this.responsiveLength = e.length);
}
bindEvents() {
window.addEventListener("load", this.events.load),
window.addEventListener("scroll", this.events.scroll),
this.responsiveCheck &&
window.addEventListener("resize", this.events.resize);
}
onLoadHandler() {
this.events.resize(),
this.events.scroll(),
setTimeout(() => {
this.responsiveHandler(), this.lazyEvent();
}, 300),
window.removeEventListener("load", this.events.load);
}
onResizeHandler() {
clearTimeout(this.opts.resizeStart),
(this.opts.resizeStart = setTimeout(() => {
this.responsiveHandler(), this.lazyEvent();
}, 150));
}
lazyEvent() {
this.setLazyImage(),
this.lazyLength === this.lazyCompleteLength &&
window.removeEventListener("scroll", this.events.scroll);
}
responsiveHandler() {
this.windowWidth = window.innerWidth;
var a = this.opts.loadOption.length;
for (let s = 0; s < a; s++) {
let e = s + 1,
t = e == a ? 0 : this.opts.loadOption[e].resolution,
i = !1;
(i =
(0 == s ||
this.windowWidth <= this.opts.loadOption[s].resolution) &&
this.windowWidth > t) &&
this.opts.loadOption[s].attribute !== this.oldAttr &&
((this.targetAttr = this.opts.loadOption[s].attribute),
(this.oldAttr = this.targetAttr),
(this.attrIndex = s),
(this.dynamicCallCount = 0),
this.setResponsiveImage());
}
}
setResponsiveImage(i) {
if (i)
for (let t = 0; t < i.length; t++) {
var s = i[t];
let e = i[t].getAttribute(this.targetAttr);
(e = e || this.findImageHandler(s)),
void 0 === window.GALAXY &&
!window.GALAXY &&
(-1 < e.indexOf(".jpg") || -1 < e.indexOf(".png")) &&
(e += "?imbypass=true"),
i[t].classList.contains(this.opts.lazyCompleteClass) ||
(i[t].setAttribute("src", e),
i[t].classList.add(this.opts.lazyCompleteClass));
}
else
for (let t = 0; t < this.responsiveLength; t++) {
var a = this.responsiveImages[t];
let e = a.getAttribute(this.targetAttr);
(e = e || this.findImageHandler(a)),
void 0 === window.GALAXY &&
!window.GALAXY &&
(-1 < e.indexOf(".jpg") || -1 < e.indexOf(".png")) &&
(e += "?imbypass=true"),
a.classList.contains(this.opts.lazyCompleteClass) &&
a.setAttribute("src", e);
}
}
checkCompleteImage() {
var e = this.el.querySelectorAll("." + this.opts.lazyCompleteClass);
this.lazyCompleteLength = e.length;
}
setDefaultImage() {
for (var e = 0; e < this.lazyLength; e++)
this.lazyImages[e].setAttribute(
"src",
"data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH/C1hNUCBEYXRhWE1QAz94cAAh+QQFAAAAACwAAAAAAQABAAACAkQBADs="
);
}
setLazyImage() {
this.windowHeight = window.innerHeight;
for (let d = 0; d < this.lazyLength; d++) {
let t = this.lazyImages[d],
e = this.windowHeight * this.opts.visiblePoint,
i = p.getScroll.call(this).top - e,
s = p.getScroll.call(this).bottom + e,
a = p.getOffset.call(this, t).top,
n = p.getOffset.call(this, t).bottom,
r = this.opts.lazyClass.split("."),
o = r[r.length - 1],
l;
var h, c;
if (
("none" === window.getComputedStyle(t).display
? null != (h = t.parentNode).offsetParent &&
((l = h.offsetParent),
(a = p.getOffset.call(this, h).top),
(n = p.getOffset.call(this, h).bottom))
: (l = t.offsetParent),
((s > a && i <= a) ||
(i < n && s > n) ||
(i < a && s > n) ||
(i > a && s < n)) &&
null != l)
) {
let e = t.getAttribute(this.targetAttr);
(e = e || this.findImageHandler(t)),
void 0 === window.GALAXY &&
!window.GALAXY &&
(-1 < e.indexOf(".jpg") || -1 < e.indexOf(".png")) &&
(e += "?imbypass=true"),
t.classList.contains(this.opts.lazyCompleteClass) ||
(t.setAttribute("src", e),
(c = () => {
1 == this.opts.lazyClass.split(" ").length &&
t.classList.remove(o),
this.checkCompleteImage(),
t.removeEventListener("load", c);
}),
t.addEventListener("load", c),
t.classList.add(this.opts.lazyCompleteClass));
}
}
}
findRemainingImageAttr(e) {
for (var t = this.opts.loadOption.length, i = 0; i < t; i++) {
var s = e.getAttribute(this.opts.loadOption[i].attribute);
if (s) return s;
}
}
findNextImageAttr(t) {
for (let e = this.attrIndex; 0 <= e; e--) {
var i = t.getAttribute(this.opts.loadOption[e].attribute);
if (i) return i;
if (0 == e && null == i) return this.findRemainingImageAttr(t);
}
}
findImageHandler(e) {
return 0 !== this.attrIndex
? this.findNextImageAttr(e)
: this.findRemainingImageAttr(e);
}
};
})(),
(() => {
window.RING = window.RING || {};
let e = RING.UTILS,
t = e.RESPONSIVE;
class i {
constructor(e = container, t) {
t = {
el: e,
lazyClass: t.lazyClass || ".js-video-src",
responsiveClass: t.responsiveClass || ".js-res-video",
imageLazyCompleteClass: "load-complete",
notLoadElement: t.notLoadElement || [],
loadOption: t.loadOption,
visiblePoint: t.visiblePoint || 0,
resizeStart: null,
classes: { loaded: "loaded", ended: "ended" },
};
(this.opts = t),
(this.classes = t.classes),
(this.el = document.querySelector(e)),
this.init();
}
init() {
this.initOpts(),
this.getLazyVideo(),
this.getResponsiveVideo(),
this.bindEvents();
}
initOpts() {
this.getCurrentDevice();
var e = "mobile" !== this.currentDevice ? 0 : 1;
(this.prevSrcArray = []),
(this.targetAttr = this.opts.loadOption[e].attribute),
(this.responsiveCheck = this.opts.loadOption),
(this.videoCallStack = []);
}
getLazyVideo() {
let e = Array.from(
this.el.querySelectorAll(this.opts.lazyClass)
).filter((t) => {
t.isVideoInit = !1;
{
let e = 0;
if (e < this.opts.notLoadElement.length)
return !t.closest(this.opts.notLoadElement[e]);
}
});
(e = e.filter((e) => {
if (e.querySelector("video") && !e.closest(".is-feature-hide"))
return e;
})),
(this.lazyVideos = e),
(this.lazyLength = e.length);
}
getResponsiveVideo() {
var e = Array.from(
this.el.querySelectorAll(this.opts.responsiveClass)
).filter((t) => {
{
let e = 0;
if (e < this.opts.notLoadElement.length)
return !t.closest(this.opts.notLoadElement[e]);
}
});
(this.responsiveVideos = e), (this.responsiveLength = e.length);
}
bindEvents() {
window.addEventListener("load", this.onLoadHandler.bind(this)),
window.addEventListener("scroll", this.lazyEvent.bind(this)),
this.responsiveCheck &&
window.addEventListener(
"resize",
this.onResizeHandler.bind(this)
);
}
getCurrentDevice() {
(this.winWidth = e.winSize().w),
this.winWidth >= t.TABLET.WIDTH
? (this.currentDevice = "desktop")
: this.winWidth > t.MOBILE.WIDTH &&
this.winWidth < t.TABLET.WIDTH
? (this.currentDevice = "tablet")
: (this.currentDevice = "mobile"),
(this.prevDevice = this.currentDevice);
}
onLoadHandler() {
this.getCurrentDevice(), this.responsiveHandler(), this.lazyEvent();
}
onResizeHandler() {
clearTimeout(this.opts.resizeStart),
(this.opts.resizeStart = setTimeout(() => {
this.getCurrentDevice(),
this.responsiveHandler(),
this.lazyEvent();
}, 80));
}
lazyEvent() {
this.setLazyVideo(),
this.lazyLength === this.lazyCompleteLength &&
window.removeEventListener("scroll", this.lazyEvent.bind(this));
}
responsiveHandler() {
this.windowWidth = window.innerWidth;
var a = this.opts.loadOption.length;
for (let s = 0; s < a; s++) {
let e = s + 1,
t = e == a ? 0 : this.opts.loadOption[e].resolution,
i = !1;
(i =
(0 == s ||
this.windowWidth <= this.opts.loadOption[s].resolution) &&
this.windowWidth > t) &&
this.opts.loadOption[s].attribute !== this.oldAttr &&
((this.targetAttr = this.opts.loadOption[s].attribute),
(this.oldAttr = this.targetAttr),
(this.attrIndex = s),
this.setResponsiveVideo());
}
}
setResponsiveVideo(t) {
var i = (e) => {
let t = e.querySelector("video"),
i = e.getAttribute(this.targetAttr);
t.querySelectorAll("source").forEach((e) => {
var t = e.getAttribute("type");
-1 < t.indexOf("webm") &&
(e.src =
i +
(".webm" +
(void 0 !== window.GALAXY || window.GALAXY
? ""
: "?imbypass=true"))),
-1 < t.indexOf("mp4") &&
(e.src =
i +
(".mp4" +
(void 0 !== window.GALAXY || window.GALAXY
? ""
: "?imbypass=true")));
}),
(t.isCanplayThrough = !1),
t.load(),
t.addEventListener(
"canplaythrough",
() => {
window.setTimeout(() => {
(t.isCanplayThrough = !0),
e.classList.add(this.classes.loaded);
}, 500),
this.checkCompleteVideo();
},
{ once: !0 }
);
};
if (t) for (let e = 0; e < t.length; e++) i(t[e]);
else
for (let e = 0; e < this.responsiveLength; e++) {
var s = this.responsiveVideos[e];
s.classList.contains(this.classes.loaded) &&
s.isVideoInit &&
i(s);
}
}
setLazyVideo() {
for (let e = 0; e < this.lazyLength; e++) {
var t = window.pageYOffset,
i = t + window.innerHeight,
s = this.lazyVideos[e],
a = s.getBoundingClientRect();
i >
t +
a.top -
window.innerHeight *
(0 != window.pageYOffset ? this.opts.visiblePoint : 0) &&
t <
t +
a.bottom +
window.innerHeight *
(0 != window.pageYOffset ? this.opts.visiblePoint : 0) &&
!s.isVideoInit &&
this.videoCallStack.indexOf(e) < 0 &&
(this.videoCallStack.push(e), this.setVideoSrc());
}
}
setVideoSrc() {
var e = this.videoCallStack[0];
let t = this.lazyVideos[e],
i = t.querySelector("video"),
s = t.getAttribute(this.targetAttr);
var a = this.opts.lazyClass.split(".");
let n = a[a.length - 1];
a = s;
let r = () => {
this.checkCompleteVideo(),
this.videoCallStack.splice(0, 1),
0 < this.videoCallStack.length && this.setVideoSrc();
};
var o = () => {
window.setTimeout(() => {
(i.isCanplayThrough = !0), t.classList.add(this.classes.loaded);
}, 500),
1 == this.opts.lazyClass.split(" ").length &&
t.classList.remove(n),
r();
};
this.prevSrcArray[e] !== a &&
(i.querySelectorAll("source").forEach((e) => {
var t = e.getAttribute("type");
-1 < t.indexOf("webm") &&
(e.src =
s +
(".webm" +
(void 0 !== window.GALAXY || window.GALAXY
? ""
: "?imbypass=true"))),
-1 < t.indexOf("mp4") &&
(e.src =
s +
(".mp4" +
(void 0 !== window.GALAXY || window.GALAXY
? ""
: "?imbypass=true")));
}),
(i.isCanplayThrough = !1),
i.load(),
i.addEventListener("canplaythrough", o, { once: !0 }),
i.addEventListener(
"error",
() => {
window
.fetch(
s +
(".webm" +
(void 0 !== window.GALAXY || window.GALAXY
? ""
: "?imbypass=true")),
{ mode: "no-cors" }
)
.then((e) => {
if (404 === e.status)
return fetch(
s +
(".mp4" +
(void 0 !== window.GALAXY || window.GALAXY
? ""
: "?imbypass=true")),
{ mode: "no-cors" }
);
})
.then((e) => {
404 === e.status && r();
})
.catch(() => {
r();
});
},
!0
),
(t.isVideoInit = !0),
(this.prevSrcArray[e] = a));
}
checkCompleteVideo() {
var e = Array.from(
this.el.querySelectorAll("." + this.classes.loaded)
).filter((t) => {
{
let e = 0;
if (e < this.opts.notLoadElement.length)
return !t.closest(this.opts.notLoadElement[e]);
}
});
this.lazyCompleteLength = e.length;
}
}
RING.VideoLoader = i;
})(),
(() => {
window.RING = window.RING || {};
let d = RING.UTILS,
e = d.RESPONSIVE;
RING.VideoPlayer = class {
constructor(e, t) {
e = {
sectionElement: t.sectionElement,
videoParentElement: null,
videoElement: e,
videoController: ".video__controller",
hiddenElement: ".blind",
endImage: ".video__end-frame img",
videoLazyClass: ".js-video-src",
lazyCompleteClass: "load-complete",
imageEndLazyClass: ".js-end-img-src",
playOffset: 0.5,
playType: "oneWay",
visiblePoint: t.visiblePoint || 0,
classes: {
loaded: "loaded",
ended: "ended",
paused: "paused",
playing: "playing",
isPaused: "is-paused",
},
resizeStart: null,
on: {
updateController: null,
updatePlayState: null,
updateTime: null,
},
};
(this.opts = d.def(e, t || {})),
(this.classes = e.classes),
this.init();
}
init() {
this.setElements(),
this.initOpts(),
null !== this.video &&
(this.video.paused || this.video.pause(),
(this.videoElement.playState = !1),
this.updateController(),
this.bindEvents());
}
setElements() {
(this.videoElement = this.opts.videoElement),
(this.video = this.videoElement.querySelector("video")),
null !== this.video &&
(null !== this.opts.videoParentElement
? (this.videoParentElement = this.video.closest(
this.opts.videoParentElement
))
: (this.videoParentElement = this.videoElement),
(this.videoController = this.videoParentElement.querySelector(
this.opts.videoController
)));
}
initOpts() {
this.getCurrentDevice(),
(this.autoPlay =
!!this.videoElement.dataset.autoPlay &&
JSON.parse(this.videoElement.dataset.autoPlay)),
(this.videoElement.playState = !1),
(this.videoElement.autoPlayState = !1),
(this.useController = !!this.videoController);
}
getCurrentDevice() {
(this.winWidth = d.winSize().w),
this.winWidth >= e.TABLET.WIDTH
? (this.currentDevice = "desktop")
: this.winWidth > e.MOBILE.WIDTH &&
this.winWidth < e.TABLET.WIDTH
? (this.currentDevice = "tablet")
: (this.currentDevice = "mobile"),
(this.prevDevice = this.currentDevice);
}
bindEvents() {
window.addEventListener("resize", this.onResizeHandler.bind(this)),
window.addEventListener(
"scroll",
this.onScrollHandler.bind(this)
),
this.video.addEventListener("play", this.onVideoPlay.bind(this)),
this.video.addEventListener(
"pause",
this.onVideoPause.bind(this)
),
this.video.addEventListener(
"ended",
this.onVideoEnded.bind(this)
),
this.video.addEventListener(
"canplaythrough",
this.onCanplayThrough.bind(this),
{ once: !0 }
),
this.video.addEventListener(
"timeupdate",
this.onTimeUpdate.bind(this)
),
this.useController &&
this.videoController.addEventListener(
"click",
this.onClickController.bind(this)
);
}
onChange(e) {
if (e === this.videoElement) {
e =
"mobile" !== this.currentDevice
? "data-media-pc"
: "data-media-mo";
let i = this.videoElement.getAttribute(e);
e = i;
this.prevVideoSrc !== e &&
((this.videoElement.playState = !1),
this.video.querySelectorAll("source").forEach((e) => {
var t = e.getAttribute("type");
-1 < t.indexOf("webm") && (e.src = i + ".webm"),
-1 < t.indexOf("mp4") && (e.src = i + ".mp4"),
this.video.load();
}),
this.videoElement.classList.remove(this.classes.playing),
this.videoElement.classList.remove(this.classes.paused),
this.video.addEventListener(
"canplaythrough",
() => {
d.isLowNetwork() || this.onPlay();
},
{ once: !0 }
)),
(this.prevVideoSrc = e);
}
}
onLoad(e) {
if (e === this.videoElement) {
e =
"mobile" !== this.currentDevice
? "data-media-pc"
: "data-media-mo";
let i = this.videoElement.getAttribute(e);
(this.videoElement.playState = !1),
this.video.querySelectorAll("source").forEach((e) => {
var t = e.getAttribute("type");
-1 < t.indexOf("webm") && (e.src = i + ".webm"),
-1 < t.indexOf("mp4") && (e.src = i + ".mp4"),
this.video.load();
}),
(this.video.isCanplayThrough = !1),
this.video.addEventListener(
"canplaythrough",
() => {
(this.video.isCanplayThrough = !0),
d.isLowNetwork() || this.onPlay();
},
{ once: !0 }
);
}
}
onPlay(e) {
var t = () => {
if (!this.videoElement.playState) {
this.video.currentTime === this.video.duration &&
(this.video.currentTime = 0),
this.autoPlay && (this.videoElement.autoPlayState = !0),
(this.videoElement.playState = !0),
this.videoElement.classList.remove(this.classes.ended),
this.videoElement.classList.remove(this.classes.paused);
let e = () => {
this.video.isCanplayThrough && 3 < this.video.readyState
? (cancelAnimationFrame(this.opts.videoFrame),
clearTimeout(this.opts.videoPlayTimeout),
(this.opts.videoPlayTimeout = setTimeout(() => {
this.video.play(),
this.updateController(),
this.outCallback("updatePlayState", !0),
this.videoElement.classList.remove(
this.classes.ended
),
this.videoElement.classList.remove(
this.classes.paused
),
this.videoElement.classList.add(this.classes.playing);
}, 250)))
: (this.opts.videoFrame = requestAnimationFrame(e));
};
(this.opts.videoFrame = requestAnimationFrame(e)),
this.video.addEventListener(
"ended",
this.updatePlayEnded.bind(this),
{ once: !0 }
);
}
};
(e && e !== this.videoElement) || t();
}
onPause() {
this.video.paused || this.video.pause(),
(this.videoElement.playState = !1),
this.videoElement.classList.remove(this.classes.ended),
this.videoElement.classList.remove(this.classes.playing),
this.videoElement.classList.add(this.classes.paused),
this.updateController();
}
onEnded() {
3 < this.video.readyState &&
(this.video.ended || this.video.pause(),
(this.video.currentTime = this.video.duration),
(this.videoElement.playState = !1),
this.videoElement.classList.add(this.classes.ended),
this.videoElement.classList.remove(this.classes.playing),
this.videoElement.classList.remove(this.classes.paused),
this.updateController());
}
onReset(e) {
this.videoElement.playState ||
(cancelAnimationFrame(this.opts.videoFrame),
clearTimeout(this.opts.videoPlayTimeout));
var t = () => {
this.video.pause(),
(this.video.currentTime = 0),
(this.videoElement.playState = !1),
this.autoPlay && (this.videoElement.autoPlayState = !1),
this.videoElement.classList.remove(this.classes.ended),
this.videoElement.classList.remove(this.classes.playing),
this.videoElement.classList.remove(this.classes.paused),
this.updateController();
};
(e && e !== this.videoElement) || t();
}
onCanplayThrough() {
var e = this.opts.videoLazyClass.split("."),
e = e[e.length - 1];
this.useController &&
window.setTimeout(() => {
this.videoController.style.display = "block";
}, 500),
this.videoElement.classList.add(this.classes.loaded),
1 == this.opts.videoLazyClass.split(" ").length &&
this.videoElement.classList.remove(e),
(this.isCanplay = !0),
this.onScrollHandler(),
(this.isCanplay = !1);
}
onTimeUpdate() {
var e = {
el: this.videoElement,
duration: this.video.duration,
currentTime: this.video.currentTime,
playState: this.videoElement.playState,
controller: this.videoController,
};
this.outCallback("updateTime", e);
}
onClickController(e) {
e.preventDefault(),
this.videoElement.playState ? this.onPause() : this.onPlay();
}
onVideoPlay() {
(this.videoElement.playState = !0),
this.videoElement.classList.remove(this.classes.ended),
this.videoElement.classList.add(this.classes.playing),
this.videoElement.classList.remove(this.classes.paused),
this.updateController(),
this.outCallback("updatePlayState", !0);
}
onVideoPause() {
(this.videoElement.playState = !1),
this.videoElement.classList.remove(this.classes.ended),
this.videoElement.classList.remove(this.classes.playing),
this.videoElement.classList.add(this.classes.paused),
this.updateController(),
this.outCallback("updatePlayState", !1);
}
onVideoEnded() {
(this.videoElement.playState = !1),
this.videoElement.classList.add(this.classes.ended),
this.videoElement.classList.remove(this.classes.playing),
this.videoElement.classList.remove(this.classes.paused),
this.updateController(),
this.outCallback("updatePlayState", !1);
}
updatePlayEnded() {
this.onPause();
}
updateController() {
var e;
this.useController &&
(this.videoElement.playState
? this.videoController.classList.add(this.classes.isPaused)
: this.videoController.classList.remove(this.classes.isPaused),
(e = {
el: this.videoController,
playState: this.videoElement.playState,
}),
this.outCallback("updateController", e),
this.outCallback("updatePlayState", this.videoElement.playState));
}
onScrollHandler() {
if (!this.videoElement.closest(".cm-layer")) {
var t = scrollY > this.lastScrollY ? "down" : "up",
i = d.getHeight(this.videoElement) * this.opts.playOffset,
s = d.getScroll().top,
a = d.getScroll().bottom,
n = d.getOffset(this.videoElement).top,
r = d.getOffset(this.videoElement).bottom;
let e =
this.videoElement.classList.contains(this.classes.playing) &&
this.videoElement.playState;
var o =
this.videoElement.classList.contains(this.classes.paused) &&
!this.videoElement.playState,
l =
this.videoElement.classList.contains(this.classes.ended) &&
!this.videoElement.playState;
if ("oneWay" === this.opts.playType)
if (n + i <= a && s <= r) {
let e = this.isCanplay || "down" == t;
!e ||
!this.autoPlay ||
this.videoElement.playState ||
this.videoElement.autoPlayState ||
d.isLowNetwork() ||
this.onPlay();
} else
a < n
? this.autoPlay &&
this.videoElement.autoPlayState &&
(e || o || l) &&
this.onReset()
: r < s &&
this.autoPlay &&
(this.videoElement.autoPlayState
? (e || o) && this.onEnded()
: this.videoElement.classList.add(this.classes.ended));
else
"reverse" === this.opts.playType &&
(n + i <= a && s <= r - i
? !this.autoPlay ||
this.videoElement.playState ||
this.videoElement.autoPlayState ||
d.isLowNetwork() ||
this.onPlay()
: (r < s || a < n) && this.autoPlay && this.onReset());
this.lastScrollY = scrollY;
}
}
onResponsiveChange() {
window.setTimeout(() => {
(this.isCanplay = !0),
this.onReset(),
this.onScrollHandler(),
(this.isCanplay = !1);
}, 100);
}
onResizeHandler() {
d.winSize().w !== this.winWidth &&
((this.winWidth = d.winSize().w),
null == this.opts.resizeStart &&
((this.opts.resizeStart = this.winWidth),
this.resizeAnimateFunc()),
window.clearTimeout(this.resizeEndTime),
(this.resizeEndTime = window.setTimeout(
this.resizeEndFunc.bind(this),
150
)));
}
resizeAnimateFunc() {
this.setLayout(),
(this.resizeRequestFrame = d.requestAFrame.call(
window,
this.resizeAnimateFunc.bind(this)
));
}
resizeEndFunc() {
(this.opts.resizeStart = null),
d.cancelAFrame.call(window, this.resizeRequestFrame);
}
setLayout() {
this.onScrollHandler(),
this.winWidth >= e.MOBILE.WIDTH
? (this.currentDevice = "desktop")
: (this.currentDevice = "mobile"),
this.currentDevice !== this.prevDevice &&
this.onResponsiveChange(),
(this.prevDevice = this.currentDevice);
}
outCallback(e, t) {
e = this.opts.on[e];
null != e && e(t);
}
};
})(),
(() => {
window.RING = window.RING || {};
var e = (() => {
let r = {},
e = !1,
t = null,
h = null,
i = function () {
a(),
n(),
s(),
UTILS.isLowNetwork() &&
document.documentElement.classList.add("low_network"),
document.documentElement.classList.add("load"),
window.removeEventListener("load", i);
},
s = () => {
var e = document.querySelectorAll(".click_sup"),
t = document.querySelectorAll(
"li.common-bottom-disclaimer__list-item"
);
let s = Array.from(t).map((e) => e.getAttribute("data-sup"));
Array.from(e).map((e) => {
var t,
i = e.getAttribute("data-sup-tag");
-1 < s.indexOf(i) && (e.innerText = s.indexOf(i) + 1),
-1 === s.indexOf(i) &&
((i = e.parentElement),
1 === (t = e.parentElement?.children.length ?? 0) &&
i.remove(),
1 < t) &&
(i.removeChild(e.nextSibling),
e.remove(),
3 === i.childNodes.length) &&
i.removeChild(i.childNodes[2]);
});
},
a = function () {
(e =
1024 <= window.innerWidth
? "desktop"
: 768 <= window.innerWidth && window.innerWidth < 1024
? "tablet"
: "mobile"),
clearTimeout(r.resizeTimeout),
(r.resizeTimeout = setTimeout(function () {
UTILS.isBrokenFixed();
}, 100)),
e != t &&
(document.documentElement.classList.add(e),
document.documentElement.classList.remove(t),
(t = e));
},
n = function () {
var t = window.pageYOffset,
i = t + window.innerHeight;
for (let e = 0; e < r.allClickable.length; e++) {
var s = r.allClickable[e],
a = t + s.getBoundingClientRect().top,
n = t + UTILS.getNavHeight();
n <= a && a <= i
? (s.isVisible = !0)
: (a < n || i < a) && (s.isVisible = !1);
}
},
o = function (e) {
e.preventDefault(), e.stopPropagation();
let t = this;
var i = parseFloat(this.innerText);
let s = document.querySelectorAll("#desc-section ol");
s.forEach((e) => {
"block" === window.getComputedStyle(e).display && (s = e);
});
var a = s.querySelectorAll("li");
let n = s.querySelectorAll("li")[i - 1],
r = n.querySelector("span"),
o = r.innerHTML;
var i = `${o}`;
(r.innerHTML = i), (h = e.currentTarget);
let l = function () {
c.call(t), r.removeEventListener("focusin", l);
},
d = function () {
(r.innerHTML = o),
r.removeAttribute("tabindex"),
r.removeEventListener("focusout", d);
};
e.currentTarget.closest(".cm-layer") &&
((i = e.currentTarget.closest(".cm-layer")),
$(i).trigger("closeLayer", !1)),
r.addEventListener("focusin", l),
r.addEventListener("focusout", d),
setTimeout(() => {
n.querySelector("a").focus();
}, 0),
a.forEach((e) => e.classList.remove("is-active")),
n.classList.add("is-active");
},
l = function (e) {
var e = e.target.closest("li"),
t = e.getAttribute("data-sup"),
i = document.querySelectorAll(".click_sup");
for (let e = 0; e < i.length; e++)
i[e].getAttribute("data-sup-tag") === t &&
(c.call(this), h.focus());
var s,
a = h.closest(".cm-layer");
a &&
((s = a.id),
(a = a.parentNode.querySelector(`[data-layer-target="#${s}"]`)),
h.innerText === t) &&
a.focus(),
e.classList.remove("is-active");
},
c = function (e) {
if (
void 0 !== e &&
void 0 !== e.sourceCapabilities &&
null === e.sourceCapabilities
)
e.preventDefault();
else if (
document.documentElement.classList.contains("ios") ||
!e ||
null != e.relatedTarget
) {
let s = this;
this.isClicked ||
this.isVisible ||
d(this) ||
setTimeout(function () {
var e = window.pageYOffset,
t = s.getBoundingClientRect(),
i = (window.innerHeight - UTILS.getNavHeight()) / 2,
e = e - UTILS.getNavHeight() + t.top + t.height / 2;
window.scrollTo(0, e - i);
}, 10),
(this.isClicked = !1);
}
},
d = function (e) {
var e = e.parentNode,
t = e.getAttribute("id");
return (
"contents" !== t &&
e !== document.body &&
(!(
"subnav" !== t && !e.classList.contains("sc-s22ultra-popup")
) ||
d(e))
);
},
p = function () {
this.isClicked = !0;
};
return {
init: function () {
(r.resizeTimeout = null),
(r.supClicker = document.querySelectorAll("a.click_sup")),
(r.supTopBtn = document.querySelectorAll(
"button.click_disclaimer"
)),
(r.contents =
document.getElementById("contents") ||
document.getElementById("content")),
(r.allClickable = r.contents.querySelectorAll(
"a, button, input, select"
));
{
let e = 0;
for (
window.addEventListener("load", i),
window.addEventListener("resize", a),
window.addEventListener("scroll", n),
e = 0;
e < r.allClickable.length;
e++
) {
var t = r.allClickable[e];
(t.isClicked = !1),
(t.isVisible = !1),
t.addEventListener("focusin", c),
t.addEventListener("mousedown", p);
}
for (e = 0; e < r.supClicker.length; e++)
r.supClicker[e].addEventListener("click", o);
for (e = 0; e < r.supTopBtn.length; e++)
r.supTopBtn[e].addEventListener("click", l);
}
var e = document.documentElement.classList;
"global" === UTILS.checkRegion() ||
e.contains("mac") ||
e.contains("safari") ||
ANIUTIL.scrollController({ speed: 120, duration: 0.5 });
},
};
})();
window.RING.Disclaimer = e;
})(),
((e) => {
e.TrapFocus = (() => {
var C = void 0,
e = window,
t = e.document,
x = e.jQuery,
i = null,
s = e.RING.UTILS;
function a(e, t) {
if (!(this instanceof a)) return new a(e, t);
e = {
obj: e,
prevStep: null,
isDestroy: !1,
IgnoreUtilFocusChanges: !1,
ariaAttr: {
hidden: "aria-hidden",
disabled: "aria-disabled",
modal: "aria-modal",
},
ariaNotHidden: t && t.ariaNotHidden ? t.ariaNotHidden : [],
classAttr: { clone: "trapfocus" },
elAttr: { tabIndex: "tabindex", role: "role" },
customEvent: ".TrapFocus" + new Date().getTime() + Math.random(),
};
(this.opts = s.def(e, t || {})),
(this.obj = x(this.opts.obj)).length &&
(null != i && i.destroy(), (i = this).init());
}
return (
(a.prototype = {
init: function () {
this.initLayout(),
this.buildAria(),
this.bindEvents(!0),
this.loadComponent(),
this.obj.data("TrapFocus", this);
},
initLayout: function () {
var e = this.opts.ariaAttr,
t = this.opts.elAttr;
this.obj.attr(e.modal, "true"), this.obj.attr(t.role, "dialog");
},
buildAria: function () {
var E = this.opts.ariaAttr,
S = this.opts.elAttr,
e =
0 < this.opts.ariaNotHidden.length
? ", " + this.opts.ariaNotHidden.join(",")
: "";
s.def(this, {
aria: {
notHidden: Array(
"head, script, noscript, link, style, meta" + e
),
focusType: ["A", "BUTTON", "INPUT", "SELECT", "TEXTAREA"],
dataAttr: {
ariaHidden: "trapfocusariahidden",
ariaDisabled: "trapfocusariadisabled",
tabIndex: "trapfocustabindex",
role: "trapfocusrole",
},
destroy: x.proxy(function () {
for (
var e,
t,
i,
s = this.aria.dataAttr,
a = this.aria.hiddenEls,
n = this.aria.focusEls,
r = this.aria.tabindexEls,
o = 0,
l = a.length;
o < l;
o++
)
(e = o),
(i = t = void 0),
(e = a.eq(e)),
(t = e.data(s.ariaHidden)),
(i = e.data(s.role)),
t != C
? (e.attr(E.hidden, t), e.removeData(s.ariaHidden))
: e.removeAttr(E.hidden),
i != C
? (e.attr(S.role, i), e.removeData(s.role))
: e.removeAttr(S.role);
for (var d, h, c = 0, p = n.length; c < p; c++)
(d = c),
(h = void 0),
(d = n.eq(d)),
(h = d.data(s.ariaDisabled)),
d.removeAttr(S.tabIndex),
h != C
? (d.attr(E.disabled, h),
d.removeData(s.ariaDisabled))
: d.removeAttr(E.disabled);
for (var u, v, m = 0, g = r.length; m < g; m++)
(u = m),
(v = void 0),
(u = r.eq(u)),
(v = u.data(s.tabIndex)) != C
? (u.attr(S.tabIndex, v), u.removeData(s.tabIndex))
: u.removeAttr(S.tabIndex);
var f = document.getElementById("teconsent");
f &&
(f = f.querySelector("a")) &&
"-1" === f.getAttribute("tabindex") &&
(f.setAttribute("tabindex", "0"),
f.removeAttribute("aria-disabled"));
}, this),
build: x.proxy(function () {
for (
var e = this,
t = this.aria.focusType,
i = this.aria.dataAttr,
s = this.obj.parents(),
a = this.obj
.siblings()
.not(e.aria.notHidden.join(",")),
n = x(""),
r = x(""),
o = 0,
l = s.length;
o < l;
o++
) {
d = void 0;
var d = o;
(d = s.eq(d)),
(a = a.add(
d.siblings().not(e.aria.notHidden.join(","))
));
}
(n = n.add(a)),
(r = r.add(a)),
this.obj.removeAttr(E.hidden);
for (var h, c, p, u = 0, v = a.length; u < v; u++)
(h = u),
(p = c = void 0),
(h = a.eq(h)),
(c = h.attr(E.hidden)),
(p = h.attr(S.role)),
c != C && h.data(i.ariaHidden, c),
p != C && h.data(i.role, p),
h.attr(E.hidden, "true"),
h.attr(S.role, "none presentation");
for (
var m = 0,
g = (n = n.add(a.find(t.join(",").toLowerCase())))
.length;
m < g;
m++
)
((e) => {
var t = n.eq(e);
(e = t.attr(E.disabled)) != C &&
t.data(i.ariaDisabled, e),
t.attr(E.disabled, "true"),
setTimeout(() => {
t.attr(S.tabIndex, -1);
});
})(m);
for (
var f,
w,
y = 0,
b = (r = r.add(a.find("[" + S.tabIndex + "]")))
.length;
y < b;
y++
)
(f = y),
(w = void 0),
(f = r.eq(f)),
(w = f.attr(S.tabIndex)) != C &&
f.data(i.tabIndex, w),
f.attr(S.tabIndex, -1);
(this.aria.hiddenEls = a),
(this.aria.focusEls = n),
(this.aria.tabindexEls = r);
}, this),
},
});
},
changeEvents: function (e) {
var t,
i = [],
s = e.split(" ");
for (t in s) i.push(s[t] + this.opts.customEvent);
return i.join(" ");
},
bindEvents: function (e) {
e
? x(t).on(
this.changeEvents("focusin"),
x.proxy(this.trapFocus, this)
)
: x(t).off(this.changeEvents("focusin"));
},
focusFirstDescendant: function (e) {
for (var t = 0; t < e.childNodes.length; t++) {
var i = e.childNodes[t];
if (this.attemptFocus(i) || this.focusFirstDescendant(i))
return !0;
}
return !1;
},
focusLastDescendant: function (e) {
for (var t = e.childNodes.length - 1; 0 <= t; t--) {
var i = e.childNodes[t];
if (this.attemptFocus(i) || this.focusLastDescendant(i))
return !0;
}
return !1;
},
isFocusable: function (e) {
if (
0 < e.tabIndex ||
(0 === e.tabIndex && null !== e.getAttribute("tabIndex"))
)
return !0;
if (e.disabled) return !1;
switch (e.nodeName) {
case "A":
return !!e.href && "ignore" != e.rel;
case "INPUT":
return "hidden" != e.type && "file" != e.type;
case "BUTTON":
case "SELECT":
case "TEXTAREA":
case "VIDEO":
case "SOURCE":
case "IFRAME":
return !0;
default:
return !1;
}
},
attemptFocus: function (e) {
if (!this.opts.isDestroy) {
if (!this.isFocusable(e)) return !1;
this.opts.IgnoreUtilFocusChanges = !0;
try {
e.focus();
} catch (e) {}
return (
(this.opts.IgnoreUtilFocusChanges = !1),
document.activeElement === e
);
}
},
trapFocus: function (e) {
this.opts.isDestroy ||
this.opts.IgnoreUtilFocusChanges ||
(document, this.dynamicComponentFocus());
},
loadComponent: function () {
this.dynamicComponentFocus(),
setTimeout(() => {
this.dynamicComponentFocus();
}, 3e3),
this.focusFirstDescendant(this.obj[0]),
(this.lastFocus = document.activeElement),
this.aria.build();
},
dynamicComponentFocus: function () {
let n = this.opts.ariaAttr,
r = this.opts.elAttr;
setTimeout(() => {
var e,
t = document.getElementById("QSIFeedbackButton-btn"),
i =
(document.getElementById("QSIFeedbackButton-close-btn"),
document.getElementById("nebula_div_btn")),
s = document.getElementById("spr-live-chat-app"),
a = document.getElementById("teconsent");
t &&
((e = t.parentElement),
t.setAttribute(n.disabled, "true"),
t.setAttribute(r.tabIndex, "-1"),
e.setAttribute(n.disabled, "true"),
e.setAttribute(n.hidden, "true"),
e.setAttribute(r.tabIndex, "-1"),
e.setAttribute(r.role, "none presentation")),
i &&
((t = i.parentElement),
i.setAttribute(n.disabled, "true"),
i.setAttribute(r.tabIndex, "0"),
t.setAttribute(n.disabled, "true"),
t.setAttribute(n.hidden, "true"),
t.setAttribute(r.tabIndex, "-1"),
t.setAttribute(r.role, "none presentation")),
s &&
(s.setAttribute(n.disabled, "true"),
s.setAttribute(n.hidden, "true"),
s.setAttribute(r.tabIndex, "-1"),
s.setAttribute(r.role, "none presentation")),
a &&
a.hasAttribute("aria-label") &&
setTimeout(() => {
var e = a.querySelector("a");
e.setAttribute(r.tabIndex, "-1"),
e.setAttribute(n.disabled, "true"),
e.setAttribute(n.hidden, "true");
});
});
},
destroy: function () {
(i = null), (this.opts.isDestroy = !0);
var e = this.opts.ariaAttr;
this.opts.elAttr;
this.bindEvents(!1),
this.aria.destroy(),
this.obj.removeAttr(e.modal);
},
}),
a
);
})();
})(window),
((e) => {
e.HiveLayer = (() => {
var a = window,
n = a.jQuery,
t = a.document,
r = a.RING.UTILS,
o = [];
function i(e, t) {
if (!(this instanceof i)) return new i(e, t);
e = {
effect: "fade",
layerWrapElements: e,
layerBody: ".cm-layer__body",
layerElements: ".cm-layer__wrapper",
openerElements: ".js-layer-opener",
closerElements: ".js-layer-closer",
dimmedElements: ".cm-layer__dimmed",
classAttr: { htmlToggle: "is-layer-open", isAsync: "is-async" },
focusOutObj: {
CSS: {
overflow: "hidden",
position: "absolute",
left: 0,
top: 0,
"z-index": -1,
width: 1,
height: 1,
"font-size": "1px",
"line-height": 0,
},
},
customEvent: ".HiveLayer" + new Date().getTime() + Math.random(),
openerTarget: null,
useOutside: !1,
useEscape: !0,
useCloseFocus: !0,
useScrollLock: !0,
useTrapFocus: !0,
flip: {
CLASS: "hive-layer-flip",
direction: "horizontal",
rotateStart: 90,
rotateEnd: 0,
},
customToggle: !1,
dimmedDuration: 250,
fps: 120,
easing: "swing",
duration: 250,
on: {
buildTools: null,
layerMove: null,
layerOpenBefore: null,
layerOpenAfter: null,
layerCloseBefore: null,
layerCloseAfter: null,
},
ariaNotHidden: [],
};
(this.layerWrap = e.layerWrapElements).length &&
((this.layerWrap = n(e.layerWrapElements)),
(this.opts = r.def(e, t || {})),
this.init());
}
return (
(i.prototype = {
init: function () {
this.initOpts(),
this.setElements(),
this.initLayout(),
this.buildTween(),
this.buildTrapFocus(),
this.bindEvents(!0),
this.layerWrap.data("HiveLayer", this);
},
initOpts: function () {
(this.layerWrapInstance = "#" + this.layerWrap.attr("id")),
this.opts.isSupportTransition ||
"flip" !== this.opts.effect ||
(this.opts.effect = "default"),
"custom" == this.opts.effect &&
((this.opts.effect = "default"),
(this.opts.customToggle = !0));
},
setElements: function () {
(this.layerBody = this.layerWrap.find(this.opts.layerBody)),
(this.layerObj = this.layerWrap.find(
this.opts.layerElements
)),
(this.closerObj = this.layerWrap.find(
this.opts.closerElements
)),
(this.dimmedObj = this.layerWrap.find(
this.opts.dimmedElements
));
},
initLayout: function () {
var e;
"slide" === this.opts.effect
? (this.dimmedObj.hide(), this.layerObj.hide())
: "flip" === this.opts.effect &&
((e = this.opts.flip.direction),
(this.opts.flip.cssD =
"vertical" !== e ? "rotateY" : "rotateX"),
this.dimmedObj.hide(),
this.layerObj.hide(),
this.layerWrap.addClass(this.opts.flip.CLASS));
},
buildTween: function () {
r.def(this, {
tweens: {
instance: [],
kill: n.proxy(function () {
for (
var e = 0, t = this.tweens.instance.length;
e < t;
e++
)
this.tweens.instance[e].kill();
this.tweens.instance = [];
}, this),
},
});
},
buildTrapFocus: function () {
this.opts.useTrapFocus &&
r.def(this, {
trapfocus: {
instance: null,
destroy: n.proxy(function () {
null != this.trapfocus.instance &&
(this.trapfocus.instance.destroy(),
(this.trapfocus.instance = null));
}, this),
build: n.proxy(function () {
null === this.trapfocus.instance &&
(this.trapfocus.instance = new TrapFocus(
this.layerObj,
{ ariaNotHidden: this.opts.ariaNotHidden }
));
}, this),
},
});
},
bindEvents: function (e) {
e
? (n(t).on(
"click clickCustom",
this.opts.openerElements +
'[data-layer-target="' +
this.layerWrapInstance +
'"]',
n.proxy(this.onLayerOpen, this)
),
this.layerWrap.on(
"openLayer",
n.proxy(this.onLayerOpen, this)
),
this.closerObj.on(
"mousedown click clickCustom",
n.proxy(this.onLayerClose, this)
),
this.layerWrap.on(
"layerSetOptions",
n.proxy(this.setOptions, this)
),
this.opts.useEscape &&
this.layerObj.on(
"keydown",
n.proxy(this.onEscapeClose, this)
))
: (n(t).off("click clickCustom"),
this.layerWrap.off("openLayer"),
this.closerObj.off("mousedown click clickCustom"),
this.layerWrap.off("layerSetOptions"),
this.opts.useEscape && this.layerObj.off("keydown"));
},
bindOutsideEvents: function (e) {
this.opts.useOutside &&
(e
? this.layerObj.on(
"clickoutside touchendoutside",
n.proxy(this.onLayerOutsideFunc, this)
)
: this.layerObj.off("clickoutside touchendoutside"));
},
bindCloseEvents: function (e) {
e
? this.layerWrap.on(
"closeLayer",
n.proxy(this.closeLayer, this)
)
: this.layerWrap.off("closeLayer");
},
setOptions: function (e, t) {
r.def(this.opts, t || {}),
t.customToggle && (this.opts.effect = "default");
},
setScrollLock: function (e) {
this.opts.useScrollLock &&
(e ? r.page.scrollLock.on() : r.page.scrollLock.off(),
n("html").toggleClass(this.opts.classAttr.htmlToggle, e));
},
onLayerOpen: function (e) {
var t, i, s;
e.preventDefault(),
setTimeout(() => {
this.dimmedObj.on(
"mousedown click clickCustom",
n.proxy(this.onLayerClose, this)
);
}, 500),
("click" !== e.type && "clickCustom" !== e.type) ||
(this.opts.openerTarget = n(e.currentTarget)),
("click" === e.type &&
this.opts.openerTarget.hasClass(
this.opts.classAttr.isAsync
)) ||
((this.layerViewType = "open"),
o.push({ POPUPWRAP: this.layerWrap }),
document.querySelector("html.load div#header") &&
((document.querySelector(
"html.load div#header"
).style.opacity = 0),
(document.querySelector(
"html.load div#header"
).style.pointerEvents = "none")),
this.setScrollLock(!0),
this.bindCloseEvents(!0),
"default" === this.opts.effect
? this.opts.customToggle
? this.outCallback("layerOpenBefore")
: (this.layerWrap.css({ opacity: 0, display: "block" }),
this.outCallback("layerOpenBefore"),
this.outCallback("buildTools"),
this.layerWrap.css("opacity", ""),
this.openAfterBugFunc())
: "fade" === this.opts.effect
? (this.layerWrap.css({ opacity: 0, display: "block" }),
this.outCallback("layerOpenBefore"),
TweenLite.set(this.layerBody, {
opacity: 0,
scale: 1,
overflow: "hidden",
}),
this.outCallback("buildTools"),
(t = TweenLite.to(
this.layerWrap,
this.opts.duration / 1e3,
{
opacity: 1,
onComplete: n.proxy(function () {
var e = TweenLite.to(this.layerBody, 0.25, {
ease: Expo.easeOut,
opacity: 1,
scale: 1,
onComplete: n.proxy(function () {
this.layerBody.css({
overflow: "",
transform: "",
}),
this.openAfterBugFunc();
}, this),
});
this.tweens.instance.push(e);
}, this),
}
)),
this.tweens.instance.push(t))
: "slide" === this.opts.effect
? ((s = 1),
TweenLite.set(this.dimmedObj, {
display: "block",
opacity: 0,
}),
TweenLite.set(this.layerWrap, { display: "block" }),
TweenLite.set(this.layerBody, { overflow: "hidden" }),
TweenLite.set(this.layerObj, {
display: "",
y: -r.winSize().h,
}),
TweenLite.set(this.layerObj, { display: "" }),
this.outCallback("layerOpenBefore"),
(t = TweenLite.to(this.dimmedObj, s, { opacity: 0.9 })),
(i = TweenLite.to(this.layerObj, s, {
y: 0,
onComplete: n.proxy(function () {
this.outCallback("buildTools"),
this.layerBody.css({ overflow: "" }),
this.layerObj.css({ transform: "" }),
this.openAfterBugFunc();
}, this),
})),
this.tweens.instance.push(t),
this.tweens.instance.push(i))
: "slide2" === this.opts.effect
? ((s = 0.6),
TweenLite.set(this.dimmedObj, {
display: "block",
opacity: 0,
}),
TweenLite.set(this.layerWrap, { display: "block" }),
TweenLite.set(this.layerObj, {
display: "",
y: r.winSize().h,
}),
TweenLite.set(this.layerObj, { display: "" }),
this.outCallback("layerOpenBefore"),
(t = TweenLite.to(this.dimmedObj, s, { opacity: 0.9 })),
(i = TweenLite.to(this.layerObj, s, {
y: 0,
onComplete: n.proxy(function () {
this.outCallback("buildTools"),
this.layerBody.css({ overflow: "" }),
this.layerObj.css({ transform: "" }),
this.openAfterBugFunc();
}, this),
})),
this.tweens.instance.push(t),
this.tweens.instance.push(i))
: "flip" === this.opts.effect &&
((s =
((e =
this.opts.flip.rotateEnd -
this.opts.flip.rotateStart) /
this.opts.duration) *
(1e3 / this.opts.fps)),
(this.opts.flip.moveData = {
startDistance: this.opts.flip.rotateStart,
endDistance: this.opts.flip.rotateEnd,
moveDistance: e,
moveOneStep: s,
currentStep: 0,
}),
this.layerWrap.show(),
this.dimmedObj.fadeIn(
this.opts.dimmedDuration,
n.proxy(function () {
this.outCallback("layerOpenBefore"),
this.outCallback("buildTools"),
this.layerObj.show(),
this.initStep(this.opts.flip.moveData),
this.flipFunc();
}, this)
),
a.setTimeout(
n.proxy(function () {
this.outCallback("buildTools");
}, this),
30
)));
},
initStep: function (e) {
(this.opts.stepTimeOld = new Date()),
(this.direction =
e.startDistance > e.moveDistance ? "toNext" : "toPrev"),
(this.condition =
"toNext" === this.direction
? e.currentStep > e.moveDistance
: e.currentStep < e.moveDistance);
},
moveStep: function (e) {
(this.opts.stepTimeNew = new Date()),
(this.opts.remaining = Math.max(
0,
this.opts.stepTimeOld -
this.opts.stepTimeNew +
this.opts.duration
));
var t = 1 - (this.opts.remaining / this.opts.duration || 0),
t = n.easing[this.opts.easing](
t,
this.opts.duration * t,
0,
1,
this.opts.duration
);
e.currentStep = (e.endDistance - e.startDistance) * t;
},
flipFunc: function () {
var e = this.opts.flip.moveData,
e =
(this.moveStep(e),
this.condition
? (a.clearTimeout(this.stepTimeout),
(this.stepTimeout = a.setTimeout(
n.proxy(function () {
this.flipFunc();
}, this),
1e3 / this.opts.fps
)),
(this.condition =
"toNext" === this.direction
? e.currentStep > e.moveDistance
: e.currentStep < e.moveDistance),
this.outCallback("layerMove", e.currentStep, e))
: ((this.opts.remaining = this.opts.duration),
"close" !== this.layerViewType && this.layerViewType
? this.openAfterBugFunc()
: (this.closeAfterBugFunc(),
this.dimmedObj.fadeOut(
this.opts.dimmedDuration,
n.proxy(function () {
this.layerWrap.hide(), this.layerObj.hide();
}, this)
))),
e.startDistance + e.currentStep);
this.layerObj.css({
transform: this.opts.flip.cssD + "(" + e + "deg)",
});
},
onLayerOpenAfter: function () {
this.trapfocus && this.trapfocus.build(),
this.bindOutsideEvents(!0),
this.outCallback("layerOpenAfter");
},
openAfterBugFunc: function () {
a.clearTimeout(this.openAfterTimeout),
(this.openAfterTimeout = a.setTimeout(
n.proxy(this.onLayerOpenAfter, this),
30
));
},
onLayerClose: function (e) {
var t = n(e.currentTarget);
"mousedown" === e.type
? r.isDevice ||
(e.stopPropagation(), (this.opts.useCloseFocus = !1))
: ("click" !== e.type && "clickCustom" !== e.type) ||
(e.preventDefault(),
"click" === e.type &&
t.hasClass(this.opts.classAttr.isAsync)) ||
(this.layerWrap.trigger("closeLayer"),
this.dimmedObj.off("mousedown click clickCustom"));
},
closeLayer: function () {
(this.closeType = arguments[1]),
(this.layerViewType = "close"),
this.outCallback("layerCloseBefore"),
this.popupOpenPropsControl(),
this.setScrollLock(!1),
this.trapfocus && this.trapfocus.destroy(),
document.querySelector("html.load div#header") &&
((document.querySelector(
"html.load div#header"
).style.opacity = 1),
(document.querySelector(
"html.load div#header"
).style.pointerEvents = "unset")),
a.clearTimeout(this.closeBeforeTimeout),
(this.closeBeforeTimeout = a.setTimeout(
n.proxy(this.closeBeforeBugFunc, this),
30
)),
this.bindOutsideEvents(!1);
},
onEscapeClose: function (e) {
27 === (e.which || e.keyCode) &&
this.layerWrap.trigger("closeLayer");
},
onLayerOutsideFunc: function () {
this.layerWrap.trigger("closeLayer");
},
closeBeforeBugFunc: function () {
var e, t, i;
"default" === this.opts.effect
? (this.opts.customToggle ||
this.layerWrap.stop(!0, !0).hide(),
this.closeAfterBugFunc())
: "fade" === this.opts.effect
? ((i = TweenLite.to(
this.layerBody,
this.opts.duration / 1e3,
{
overflow: "hidden",
opacity: 0,
scale: 1,
onComplete: n.proxy(function () {
this.layerBody.css("overflow", "");
var e = TweenLite.to(
this.layerWrap,
this.opts.duration / 1e3,
{
opacity: 0,
display: "none",
onComplete: n.proxy(this.closeAfterBugFunc, this),
}
);
this.tweens.instance.push(e);
}, this),
}
)),
this.tweens.instance.push(i))
: "slide" === this.opts.effect
? ((t = 1),
TweenLite.set(this.layerBody, { overflow: "hidden" }),
(i = TweenLite.to(this.dimmedObj, t, { opacity: 0 })),
(e = TweenLite.to(this.layerObj, t, {
y: -r.winSize().h,
onComplete: n.proxy(function () {
this.closeAfterBugFunc(),
this.dimmedObj.hide(),
this.layerWrap.hide(),
this.layerBody.css("overflow", ""),
this.layerObj.hide();
}, this),
})),
this.tweens.instance.push(i),
this.tweens.instance.push(e))
: "slide2" === this.opts.effect
? ((t = 0.5),
(i = TweenLite.to(this.dimmedObj, t, { opacity: 0 })),
(e = TweenLite.to(this.layerObj, t, {
y: r.winSize().h,
onComplete: n.proxy(function () {
this.closeAfterBugFunc(),
this.dimmedObj.hide(),
this.layerWrap.hide(),
this.layerBody.css("overflow", ""),
this.layerObj.hide();
}, this),
})),
this.tweens.instance.push(i),
this.tweens.instance.push(e))
: "flip" === this.opts.effect &&
((i =
((t =
-this.opts.flip.rotateStart -
this.opts.flip.rotateEnd) /
this.opts.duration) *
(1e3 / this.opts.fps)),
(this.opts.flip.moveData = {
startDistance: this.opts.flip.rotateEnd,
endDistance: -this.opts.flip.rotateStart,
moveDistance: t,
moveOneStep: i,
currentStep: 0,
}),
this.initStep(this.opts.flip.moveData),
this.flipFunc());
},
closeAfterBugFunc: function () {
a.clearTimeout(this.closeAfterTimeout),
(this.closeAfterTimeout = a.setTimeout(
n.proxy(this.onLayerCloseAfter, this),
30
));
},
popupOpenPropsControl: function () {
for (var e = o, t = 0, i = e.length; t < i; t++)
e[t].POPUPWRAP[0] === this.layerWrap[0] && (e[t] = null);
for (var s = e.length; 0 < s; s--)
null === e[s - 1] && e.splice(s - 1, 1);
},
onLayerCloseAfter: function () {
null !== this.opts.openerTarget &&
(!1 !== this.closeType && this.opts.openerTarget.focus(),
(this.opts.openerTarget = null)),
(this.opts.useCloseFocus = !0),
this.bindCloseEvents(!1),
this.outCallback("layerCloseAfter");
},
outCallback: function (e) {
var t = this.opts.on[e];
"layerMove" === e
? this.layerWrap.trigger(e, arguments[1], arguments[2], this)
: this.layerWrap.trigger(e, this),
null != t &&
("layerMove" === e
? t(arguments[1], arguments[2], this)
: t(this));
},
styleDestroy: function () {
this.dimmedObj.attr("style", ""),
this.layerWrap.attr("style", ""),
this.layerBody.attr("style", ""),
this.layerObj.attr("style", "");
},
destroy: function () {
this.tweens.kill(),
this.trapfocus && this.trapfocus.destroy(),
this.styleDestroy(),
this.bindEvents(!1),
this.bindOutsideEvents(!1),
this.bindCloseEvents(!1);
},
}),
i
);
})();
})(window),
(() => {
window.RING = window.RING || {};
let n = RING.UTILS;
RING.SubNav = class {
constructor(e = container, t) {
var i = {
navItems: "ul li>a",
navDests: '[class*="js-nav-"]',
visSections: ".js-visible",
resizeStart: null,
classes: { isOn: "on" },
};
(this.opts = i),
(this.classes = i.classes),
(this.el = document.querySelector(e)),
this.init();
}
init() {
null !== this.el &&
(this.setElements(), this.initOpts(), this.bindEvents());
}
setElements() {
(this.navItems = n.convertArray(
this.el.querySelectorAll(this.opts.navItems)
)),
(this.navDests = document.querySelectorAll(this.opts.navDests)),
(this.visSections = n.convertArray(
document.querySelectorAll(this.opts.visSections)
));
}
initOpts() {
(this.visCount = -1),
this.visSections.forEach((e) => {
e.dataset.visIndex = e.classList.contains("js-count")
? ++this.visCount
: this.visCount;
}),
(this.winOffsetTop = window.pageYOffset);
}
bindEvents() {
this.onScrollHandler(),
window.addEventListener(
"resize",
this.onResizeHandler.bind(this)
),
window.addEventListener(
"scroll",
this.onScrollHandler.bind(this)
);
let i = window.location.hash;
this.navItems.forEach((e, t) => {
-1 < e.getAttribute("href").indexOf("#") &&
((e.dataset.navIndex = t),
e.addEventListener(
"click",
this.onNavItemClickEvent.bind(this)
)),
i &&
-1 < e.getAttribute("href").indexOf(i) &&
(e.parentNode.classList.remove(this.classes.isOn), e.click());
});
}
onNavItemClickEvent(t) {
t.preventDefault();
var t = t.target,
i = t.parentNode;
if (
!this.el.classList.contains("hold") &&
!i.classList.contains(this.classes.isOn)
) {
this.navItems.forEach((e) => {
e.parentNode.classList.remove(this.classes.isOn);
}),
i.classList.contains(this.classes.isOn) ||
i.classList.add(this.classes.isOn);
var i = t.dataset.navIndex,
t = this.navDests[i],
i = t.getBoundingClientRect(),
s = parseInt(window.getComputedStyle(t).paddingTop),
a =
(window.innerHeight - (i.height - s) + n.getNavHeight()) / 2;
let e = 0;
(e = t.classList.contains("js-nav-center")
? this.winOffsetTop + i.top + s - a
: this.winOffsetTop + i.top - n.getNavHeight()) < 150 &&
(e = 0),
this.el.classList.add("hold"),
GALAXY.setSmoothScrollTop(e, 1500, () => {
this.el.classList.contains("hold") &&
this.el.classList.remove("hold"),
GALAXY.header && GALAXY.header.resetSubNav();
});
}
}
onScrollHandler() {
this.winOffsetTop = window.pageYOffset;
var a = (window.innerHeight + n.getNavHeight()) / 2;
this.visSections.forEach((e) => {
var i,
t = e.getBoundingClientRect(),
s = this.winOffsetTop + t.top,
t = this.winOffsetTop + t.bottom;
this.winOffsetTop + a >= s &&
this.winOffsetTop + a <= t &&
((i = e.dataset.visIndex),
this.navItems.forEach((e, t) => {
t != i &&
e.parentNode.classList.contains(this.classes.isOn) &&
e.parentNode.classList.remove(this.classes.isOn);
}),
(s = this.navItems[i].parentNode).classList.contains(
this.classes.isOn
) ||
(s.classList.add(this.classes.isOn),
!this.el.classList.contains("hold") &&
s.classList.contains(this.classes.isOn) &&
GALAXY.header &&
GALAXY.header.resetSubNav()));
});
}
onResizeHandler() {
n.winSize().w !== this.winWidth &&
((this.winWidth = n.winSize().w),
null == this.opts.resizeStart &&
((this.opts.resizeStart = this.winWidth),
this.resizeAnimateFunc()),
window.clearTimeout(this.resizeEndTime),
(this.resizeEndTime = window.setTimeout(
this.resizeEndFunc.bind(this),
150
)));
}
resizeAnimateFunc() {
this.onScrollHandler(),
(this.resizeRequestFrame = n.requestAFrame.call(
window,
this.resizeAnimateFunc.bind(this)
));
}
resizeEndFunc() {
(this.opts.resizeStart = null),
n.cancelAFrame.call(window, this.resizeRequestFrame);
}
};
})(),
(() => {
(window.RING = window.RING || {}),
(RING.CardCarousel = class {
constructor(e, t = {}) {
(this.swiper = null),
(this.opts = {
pagination: {
tagging: {
"data-omni-type": "microsite_pcontentinter",
"data-omni": "galaxy-ring:carousel:index:",
"ga-ca": "indication",
"ga-ac": "carousel",
"ga-la": "galaxy-ring:carousel:index:",
},
},
resizeTimeout: null,
currentDevice: null,
prevDevice: null,
currentIndex: 0,
clickTimeout: null,
centeredSlides: !1,
useNavigation: !1,
...t,
}),
(this.selector = {
section: e,
swiper: ".common__carousel",
swiperSlide: ".swiper-slide",
swiperTitle: ".common__blind-carousel",
swiperPagination: ".swiper-pagination",
swiperNavigation: ".swiper-arrow-wrap",
prevArrow: ".swiper-button-prev",
nextArrow: ".swiper-button-next",
}),
(this.class = { featureHide: "is-feature-hide" }),
(this.el = {
section:
document.querySelector(this.selector.section) || null,
swiper: null,
swiperSlide: null,
swiperTitle: null,
swiperPagination: null,
swiperNavigation: null,
prevArrow: null,
nextArrow: null,
}),
(this.events = {
load: this.onLoadHandler.bind(this),
resize: this.onResizeHandler.bind(this),
prevArrow: this.onClickPrevArrow.bind(this),
nextArrow: this.onClickNextArrow.bind(this),
}),
this.init();
}
init() {
null === this.el.section ||
this.el.section.classList.contains(this.class.featureHide) ||
(this.setElements(), this.bindEvents());
}
setElements() {
(this.el.swiper = this.el.section.querySelector(
this.selector.swiper
)),
(this.el.swiperSlides = this.el.section.querySelectorAll(
this.selector.swiperSlide
)),
(this.el.swiperPagination = this.el.section.querySelector(
this.selector.swiperPagination
)),
(this.el.swiperTitle = this.el.section.querySelector(
this.selector.swiperTitle
));
}
bindEvents() {
window.addEventListener("load", this.events.load),
window.addEventListener("resize", this.events.resize);
}
onLoadHandler() {
this.events.resize(),
window.removeEventListener("load", this.events.load);
}
onResizeHandler() {
(this.opts.currentDevice =
767 < innerWidth ? "desktop" : "mobile"),
this.opts.currentDevice !== this.opts.prevDevice &&
(this.onResponsiveChange(),
(this.opts.prevDevice = this.opts.currentDevice));
}
onResponsiveChange() {
this.destroySwiper(),
"mobile" === this.opts.currentDevice && this.setSwiper();
}
updateA11ySwiper() {
null !== this.swiper &&
(Array.from(this.swiper.slides).forEach((e) => {
e.setAttribute("aria-hidden", !0);
}),
"mobile" === this.opts.currentDevice) &&
this.swiper.slides[this.opts.currentIndex].setAttribute(
"aria-hidden",
!1
);
}
destroyA11ySwiper() {
"desktop" === this.opts.currentDevice &&
Array.from(this.el.swiperSlides).forEach((e) => {
e.removeAttribute("aria-hidden");
});
}
onTransitionStart() {
(this.opts.currentIndex = this.swiper.snapIndex),
this.updateA11ySwiper();
}
onInitSwiper() {
(this.opts.currentIndex = 0),
this.onTransitionStart(),
this.updateA11ySwiper(),
this.setPaginationLabel();
var e = this.swiper.pagination.bullets;
let i = this;
void 0 !== e &&
0 < e.length &&
Array.from(e).forEach((e, t) => {
e.addEventListener("click", function (e) {
e.preventDefault(),
e.stopImmediatePropagation(),
i.swiper.slideTo(t);
});
}),
void 0 !== this.opts.on &&
0 <
(e = this.el.section.querySelectorAll(
"img.js-res-img:not(.load-complete)"
)).length &&
this.opts.on.updateImageLoader(e);
}
onSlideChange() {
this.setPaginationLabel(),
this.opts.useNavigation &&
(this.setNavigation(), this.setNavigationClass());
}
destroySwiper() {
null !== this.swiper &&
(this.destroyA11ySwiper(),
this.swiper.destroy(!0, !0),
(this.swiper = null));
}
setSwiper() {
if (null === this.swiper) {
let i = this;
var e = {
init: !1,
a11y: !1,
slidesPerView: "auto",
centeredSlides: this.opts.centeredSlides,
pagination: {
el: i.el.swiperPagination,
renderBullet: function (e) {
var t = i.opts.pagination.tagging;
return `