Samsung Neo QLED's
unrivaled picture and sound
lets you dive deeper, laugh louder
and live bolder
with a screen
in a class of its own.
Neo QLED Review & Awards
QN900D
"If you’re after an 8K TV, you’ll struggle to find one capable
of delivering the same levels of performance as the Samsung
QN900D."
"This AI-enhanced powerhouse draws out an incredible
level of detail regardless of the native resolution and
flawlessly upscales anything below 8K to deliver finely
rendered images free of any banding or compression artefacts"
QN900D
"Its picture quality improves considerably in just about every
way on its predecessor, crucially leaving clear blue
brightness water between it and 2024’s top OLED TVs, and
rewriting the upscaling rule book to remind us in no uncertain
terms that 8K TVs don’t have to be fed 8K content to make a
difference."
QN900D
"Its picture quality is groundbreakingly good."
"The amount of detail the upscaler is able to add to
already detailed parts of 4K pictures is astonishing; 4K
really becomes 8K before your very eyes." "Don’t believe
the 8K naysayers –Samsung’s new 75-inch flagship 8K TV proves
there’s all sorts of life left in the 8K TV world yet."
QN800D
"Samsung’s AI-powered upscaling converts 1080P and 4K content
into a better version for the QN800D."
"The gaming performance is great with the benefit of
upscaling, high refresh rates and an AI-powered game mode."
QN95D
"The Samsung QN95D adds upgraded AI-powered picture and sound
processing to take its already impressive performance to
another level"
"The new processor helps deliver exceptional AI picture,
sound and optimisation features, the upscaling and image
processing are excellent and add value, as does the equally
impressive AI-enhanced motion handling."
AI TV
Meet the AI-powered brain behind the WOW
AI Processor
Take your entertainment to new heights with the power of Neo QLED.
Samsung's cutting-edge AI-powered processor uses neural networks
to learn scene-by-scene, optimizing your picture and sound into an
unbelievably immersive viewing experience.1
Samsung NQ8 AI Gen3 Processor optimizes two out of the many
content frames in the background. All the frames are organized
into two rows and optimized as they enter the processor's core.
The processor tilts to the side.
* NQ8 AI Gen3 Processor is only available with 2024 Neo QLED 8K
QN900D.
New 2024 NQ AI Processors
Our most powerful AI processors
Discover the evolution of Samsung's groundbreaking innovations in
creating our most powerful processors yet.
* NQ8 AI Gen3 Processor is only available with 2024 Neo QLED 8K
QN900D.
NQ8 Al Gen3 Processor (Neo QLED 8K QN900D)
Up to2xfaster NPU
8xgreater Neural Networks
Up to1.4xfaster GPU
Up to15%faster CPU
* NQ8 AI Gen3 Processor is only available with 2024 Neo QLED 8K
QN900D.
* All specs are in comparison to the 2023 Neo QLED 8K TV
processor.
Neo QLED breathes new life into your favorite TV shows
and movies with AI upscaling. Advanced AI neural
networks transform your content into lifelike 4K/8K
quality from a variety of sources. Stream OTT services
and watch live sports with a view that feels so vividly
real, it's surreal.
* NQ8 AI Gen3 Processor is only available with 2024
Neo QLED 8K QN900D.
Equipped with 512 AI neural networks, our NQ8 AI Gen3
processor leverages AI to sharpen and smooth out the
motion of objects and text. This takes watching live
sports to another level.
* AI Motion Enhancer Pro is only available with 2024
Neo QLED 8K QN900D.
* NQ8 AI Gen3 Processor is only available with 2024
Neo QLED 8K QN900D.
Real Depth Enhancer Pro detects areas where a person's
eye would typically focus and enhances its depth
expression accordingly. It precisely optimizes numerous
blocks of mini LEDs and increases foreground contrast,
so you can enjoy realistic 3D-like pictures at home.
* Real Depth Enhancer Pro is available with 2024 Neo
QLED QN900D/QN800D/QN95D/QN90D.
* NQ8 AI Gen3 Processor is only available with 2024
Neo QLED 8K QN900D.
Straining to hear what's being said in an important
scene? Our audio technology uses AI to analyze your
content and isolate the voices from background sounds in
scenes and ambient noise in your room. Now you can catch
every word of dialogue with enhanced clarity – even in
distracting surroundings.
* NQ8 AI Gen3 Processor is only available with 2024
Neo QLED 8K QN900D.
It's easier than ever to escape into the action with
Object Tracking Sound. Immerse yourself deeper into your
listening experience with AI-powered action-tracking
sound from all corners of the TV.
* NQ8 AI Gen3 Processor is only available with 2024
Neo QLED 8K QN900D.
Adaptive Sound Pro optimizes sound by considering the
characteristics of both your room and audio content.
Experience improved voice clarity and vivid yet balanced
sound just as the creators intended, thanks to AI audio
processing that extracts and processes sound objects.
* NQ8 AI Gen3 Processor is only available with 2024
Neo QLED 8K QN900D.
Let your TV automatically detect the type of game you're
playing and optimize the settings according to its
genre. Now you can free yourself from the hassle of
setting up your games and just play.
* NQ8 AI Gen3 Processor is only available with 2024
Neo QLED 8K QN900D.
By turning on AI Energy Mode, your TV auto-detects
surrounding light levels and analyzes usage behaviors to
adjust the brightness, which helps in reducing overall
energy consumption. It also analyzes TV content
scene-by-scene to subtly adjust brightness where
possible, to cut down on energy consumption.
* NQ8 AI Gen3 Processor is only available with 2024
Neo QLED 8K QN900D.
Our NQ AI Processor automatically detects the
type of content (Sports Event/ Movies/ General) being displayed, and
auto-adjusts the picture settings to your preferences. With AI-based
content recognition, you no longer have to tweak the settings every time
you watch something new.
Picture Quality
Your favorite content, reborn in brilliance
AI Upscaling
Neo QLED breathes new life into your favorite TV shows and movies
with AI upscaling. Advanced AI neural networks transform your
content into lifelike 4K/8K quality from a variety of sources.
Stream OTT services and watch live sports with a view that feels
so vividly real, it's surreal.1
AI Upscaling with Samsung's NQ8 AI Gen3 Processor optimizes
details on one side of a scene. As the less-clear side disappears,
the whole scene is upscaled into clarity.
Sound
Feel the pulse of every scene with
cinematic sound
Dolby Atmos® & Object Tracking Sound
It's easier than ever to escape into the action of every scene
with Dolby Atmos and Object Tracking Sound.
Multi-dimensional sound is played from every corner of the screen,
so it feels like you're watching from a movie theater.9
Sound waves follow a race car on the screen in a theater. The same
screen is shown in a man's living room as dynamic sound waves
portray the immersive sound of Dolby Atmos and OTS on the new 24
Neo QLED TV.
Focus on the voices that tell the story
Active Voice Amplifier Pro
Straining to hear what's being said in an important scene? Our
audio technology uses AI to analyze your content and isolate the
voices from background sounds in scenes and ambient noise in your
room. Now you can catch every word of dialogue with enhanced
clarity – even in distracting surroundings.4
When Active Voice Amplifier Pro is Off, the dialogue of a man on
the screen emits smaller sound waves than the background noise in
the scene and noise from a vacuum cleaner in the room. When it is
turned On, the sound waves of the man's dialogue are bigger and
project farther off the screen.
TV and soundbar orchestrated in perfect
harmony
Q-Symphony
Feast your ears on a symphony of sound created by the synergy of
TV and Soundbar. Q-Symphony harmonizes
compatible Samsung TVs with Samsung Soundbars to fill your room
with dynamic surround sound, pumping up the audio adrenaline for
maximum immersion.10
With Samsung's Q-Symphony off, sound waves emanate only from the
Soundbar. With it on, more dynamic sound waves from Neo QLED TV
synergizes with Soundbar to create a more immersive audio
experience.
Smart TV
Access a wider world of entertainment
Samsung Tizen OS
Tap into the latest apps and services that Tizen OS has to offer
with one easy log-in. You can even find non-media features that
add value to your day like smart home and lifestyle services.11
A woman lying on a sofa is watching a Samsung Smart TV with Tizen
OS. Samsung Tizen OS on the screen offers various content and free
live TV channels with Samsung TV Plus.
Your next quest – no console required
Cloud Gaming
Cloud Gaming is your gateway to a wide range of streaming games
from XBOX, NVIDIA GeForce Now and more. Simply connect a
controller and play your favorite games and standalone apps – all
without a console.12
Two kids are having fun playing games with Samsung's Cloud Gaming.
The Neo QLED screen organizes a variety of games, including
streaming games from Xbox, Nvidia, GeForce Now, Utomik, Boosteroid
and more.
Do the SmartThings!
SmartThings
Smarten up your home with Neo QLED's built-in SmartThings hub that
supports Matter, a globally recognized IoT connectivity
standard. Even without an additional hub or dongle, you can
customize your smart home simply by connecting your compatible
devices and managing them straight from your screen. Utilize your
screen's sensor to expand your TV’s role in managing your home,
like using its light sensor to turn the room lights on and off
depending on the level of brightness.13
Samsung Neo QLED TV has the SmartThings icon with waves indicating
connectivity. It makes the home smarter by connecting surrounding
home appliances like the robot vacuum, lights, air purifier, smart
oven, washer, dryer, and fridge for convenient control through
Samsung SmartThings. Compatible with Matter.
Keep your privacy under lock and key
Samsung Knox Security
Rest assured that your pin codes, passwords and other private data
are secured by Samsung Knox Security. Layers of software and
hardware protect your TV and its connected devices from
unauthorized activity, while a dedicated security team provides
regular updates that help keep your TV secure.14
Simulated for demonstration purpose. Animated character G-nusmas
selects its profile on Samsung TV and enters its PIN number. Your
passwords and data? No worries!! They are protected by
multi-layered security. Limited to certain pin codes or passwords.
Smart home security is available for devices connected to your TV
like the refrigerator, robot vacuum, oven, air conditioner and
washer. Supports data protection and encryption only when devices
are connected to Samsung TV via SmartThings. Phishing site blocker
protects your login info. Samsung Knox Security is active
throughout the day and regularly updated. Security software update
is guaranteed for at least three years from product launch. Latest
software update is required. Samsung TVs are protected by Samsung
Knox.
Design
Impressive – no matter how you look at it
Infinity Air Design
The slim side profile of the 2024 Samsung Neo QLED TV screen
is shown to emphasize the Infinity Air Design. It spins
around, revealing a nature scene on the screen and its
unique air stand.
Attachable Slim One Connect
The slim One Connect Box attaches to the back of the TV on
the stand showing its connections, including 4 HDMI ports,
one of them labeled eARC.
Infinity Screen
Round-shaped Speakers
Neo QLED Design Life Style
* Design specifications based on QN900D.
Compare Samsung Neo QLED TVs
Lineup
Category
Screen Size (Inch)
Contrast
Quantum Matrix Technology is Samsung’s
proprietary technology that utilizes Quantum
Mini LEDs to create great details in both the
darkest and brightest
scenes.
HDR
HDR stands for High Dynamic Range and refers to a
technology that more accurately expresses visual
detail in both very bright and very dark scenes.
Processor
Upscaling
Samsung's unique AI Upscaling technology completed by
multiple different neural networks automatically
learns scene-by-scene to optimize and improve your
content.
Gaming Motion
Gaming Motion is a technology that provides smooth
motion and clean image quality without blur even in
fast-paced game content.
Dolby Atmos®
Dolby Atmos goes beyond the ordinary listening
experience and puts you inside the sound in a new
spatial way. Combining with up-firing speakers, you
can fully enjoy the immersive, cinematic sound of
Dolby Atmos.
Object Tracking Sound
OTS stands for 'Object Tracking Sound', Samsung’s
proprietary high-performance audio technology that
enables users to hear sound directly from its object's
relative location on the screen, even if the object is
moving.
Design
Smart TV (Samsung Tizen OS)
Samsung Tizen OS provides the latest apps & services
including Samsung TV Plus, Gaming Hub and
SmartThings.
* Available features and specifications for Neo QLED series may vary
by TV size and region.19
Help choose my TV
Discover your ideal TV and make it yours
in a few simple steps
* Global No.1 TV: Source –Omdia, Feb-2024. Results are
not an endorsement of Samsung. Any reliance on these results is at the
third-party’s own risk.
* Images are simulated and for illustration purposes
only. Appearance and design specifications which are not affecting to
product performance are subject to change without notice.
AI Processor & AI Upscaling: Viewing experience may vary according
to types of content and format. Upscaling may not apply to PC
connection and Game Mode.
AI Motion Enhancer Pro: Viewing experience may vary according to types
of content and format. AI Motion Enhancer Pro does not apply to PC
connection and Game Mode.
Real Depth Enhancer Pro: Viewing experience may vary according to
types of content and format.
Active Voice Amplifier Pro: Activation under the TV menu is required
to enable Active Voice Amplifier Pro.
Object Tracking Sound: Availability of top channel speakers may vary
depending on model, so refer to the product detail page for more
information.
Adaptive Sound Pro: This feature can be activated in the TV Menu >
Intelligent Mode > Adaptive Sound Pro. The default setting of Adaptive
Sound Pro is Off.
AI Auto Game Mode: Availability may vary according to gaming content
and format.
AI Energy Mode: Energy saving rate may vary by regions, models, sizes,
viewing conditions or types of content. Products shipped in Eco Mode
have some AI Energy Mode functions enabled by default, so energy
saving levels by turning on AI Energy Mode may appear lower compared
to Standard Mode. AI Energy Mode does not work with Game Mode. Energy
savings based on internal test results and may vary depending on
content being displayed and surrounding brightness levels.
Dolby Atmos® & Object Tracking Sound: Availability of top channel
speakers may vary depending on model, so refer to the product detail
page for more information.
Q-Symphony: Check for Q-Symphony compatibility on soundbar product
specifications. Soundbar sold separately.
Samsung Tizen OS: Content and services may vary by region and are
subject to change without notice. Agreement to Smart Hub Terms and
Conditions and Privacy Policy are required before use. Some content
and services require registration and subscription.
a. (Except for China, Türkiye, Israel) Requires Samsung account to
access the full range of Samsung Tizen OS features including the
Smart TV features and apps. If you choose not to login, you will
only be able to connect to terrestrial TV (applicable to devices
with tuners only) and external devices (e.g. via HDMI). You may
need a separate device (e.g. PC or mobile) to create a Samsung
account.
b. For Samsung TV Plus: Requires Samsung account. Supported
Samsung devices and channels may vary by country. Channels and UI
are subject to change without notifications. Available for free on
Samsung Smart TVs since 2016. Ads may appear on Samsung TV Plus.
Cloud Gaming: Available games and content may vary by country and
model and are subject to change without notice. Certain games require
a separate controller (sold separately). Internet connection and
subscription may be required. Requires Samsung account. UI is subject
to change without prior notice. You may need to download apps
depending on the game or service.
SmartThings: Available technology, functions and features may vary by
country, service provider, network environment or product, and are
subject to change without notice. Requires a Wi-Fi, Bluetooth or other
wireless network connection, and login to Samsung account. Connected
devices are sold separately. UI is subject to change without prior
notice. Turning On/Off connected devices with light sensors is only
supported for IoT lighting devices that are compatible with
SmartThings.
Samsung Knox Security: Samsung Knox Security applies to Samsung TVs
powered by Tizen®, launched since 2015. Security software update is
provided for three years from product launch. Latest software update
is required.
Motion Xcelerator 240Hz: 4K 240Hz is only available with PC-connected
games that support such specifications (PC graphic card required).
Performance may vary.
Motion Xcelerator 165Hz: 4K 165Hz is only available with PC-connected
games that support such specifications (PC graphic card required).
Performance may vary.
Motion Xcelerator 144Hz: 4K 144Hz is only available with PC-connected
games that support such specifications (PC graphic card required).
Performance may vary.
Motion Xcelerator 120Hz: Viewing experience may vary according to
types of content and format.
Compare Samsung Neo QLED TVs.
a. For QN900D 65 inch: Neo Quantum HDR 8K+
b. For QN90D 50 / 43 inch: Neo Quantum HDR, Dolby Atmos without
top channel speakers, OTS Lite
c. For QN90D 98 inch: Motion Xcelerator 120Hz
AI Customization Mode: Certain third party streaming/VOD services may be limited in the use of this feature according to
their policies. This feature can be activated by changing the setting to "AI Customization" in the TV Menu > General &
Privacy > Intelligent Mode Settings > Adaptive Picture > AI Customization. The default setting of Adaptive Picture is
'Optimized'.
"
);
return (
s.attr("data-swiper-slide-index") ||
s.attr("data-swiper-slide-index", t),
i.cache && (a.virtual.cache[t] = s),
s
);
},
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 t = this,
a = t.activeIndex,
i = a + 1,
s = 1;
if (Array.isArray(e)) {
for (var r = 0; r < e.length; r += 1)
e[r] && t.virtual.slides.unshift(e[r]);
(i = a + e.length), (s = e.length);
} else t.virtual.slides.unshift(e);
if (t.params.virtual.cache) {
var n = t.virtual.cache,
o = {};
Object.keys(n).forEach(function (e) {
o[parseInt(e, 10) + s] = n[e];
}),
(t.virtual.cache = o);
}
t.virtual.update(!0), t.slideTo(i, 0);
},
removeSlide: function (e) {
var t = this;
if (null != e) {
var a = t.activeIndex;
if (Array.isArray(e))
for (var i = e.length - 1; 0 <= i; i -= 1)
t.virtual.slides.splice(e[i], 1),
t.params.virtual.cache && delete t.virtual.cache[e[i]],
e[i] < a && (a -= 1),
(a = Math.max(a, 0));
else
t.virtual.slides.splice(e, 1),
t.params.virtual.cache && delete t.virtual.cache[e],
e < a && (a -= 1),
(a = Math.max(a, 0));
t.virtual.update(!0), t.slideTo(a, 0);
}
},
removeAllSlides: function () {
var e = this;
(e.virtual.slides = []),
e.params.virtual.cache && (e.virtual.cache = {}),
e.virtual.update(!0),
e.slideTo(0, 0);
},
},
$ = {
name: "virtual",
params: {
virtual: {
enabled: !1,
slides: [],
cache: !0,
renderSlide: null,
renderExternal: null,
addSlidesBefore: 0,
addSlidesAfter: 0,
},
},
create: function () {
var e = this;
te.extend(e, {
virtual: {
update: z.update.bind(e),
appendSlide: z.appendSlide.bind(e),
prependSlide: z.prependSlide.bind(e),
removeSlide: z.removeSlide.bind(e),
removeAllSlides: z.removeAllSlides.bind(e),
renderSlide: z.renderSlide.bind(e),
slides: e.params.virtual.slides,
cache: {},
},
});
},
on: {
beforeInit: function () {
var e = this;
if (e.params.virtual.enabled) {
e.classNames.push(e.params.containerModifierClass + "virtual");
var t = { watchSlidesProgress: !0 };
te.extend(e.params, t),
te.extend(e.originalParams, t),
e.params.initialSlide || e.virtual.update();
}
},
setTranslate: function () {
this.params.virtual.enabled && this.virtual.update();
},
},
},
L = {
handle: function (e) {
var t = this,
a = t.rtlTranslate,
i = e;
i.originalEvent && (i = i.originalEvent);
var s = i.keyCode || i.charCode;
if (
!t.allowSlideNext &&
((t.isHorizontal() && 39 === s) ||
(t.isVertical() && 40 === s) ||
34 === s)
)
return !1;
if (
!t.allowSlidePrev &&
((t.isHorizontal() && 37 === s) ||
(t.isVertical() && 38 === s) ||
33 === s)
)
return !1;
if (
!(
i.shiftKey ||
i.altKey ||
i.ctrlKey ||
i.metaKey ||
(f.activeElement &&
f.activeElement.nodeName &&
("input" === f.activeElement.nodeName.toLowerCase() ||
"textarea" === f.activeElement.nodeName.toLowerCase()))
)
) {
if (
t.params.keyboard.onlyInViewport &&
(33 === s ||
34 === s ||
37 === s ||
39 === s ||
38 === s ||
40 === s)
) {
var r = !1;
if (
0 < t.$el.parents("." + t.params.slideClass).length &&
0 === t.$el.parents("." + t.params.slideActiveClass).length
)
return;
var n = ee.innerWidth,
o = ee.innerHeight,
l = t.$el.offset();
a && (l.left -= t.$el[0].scrollLeft);
for (
var d = [
[l.left, l.top],
[l.left + t.width, l.top],
[l.left, l.top + t.height],
[l.left + t.width, l.top + t.height],
],
p = 0;
p < d.length;
p += 1
) {
var c = d[p];
0 <= c[0] && c[0] <= n && 0 <= c[1] && c[1] <= o && (r = !0);
}
if (!r) return;
}
t.isHorizontal()
? ((33 !== s && 34 !== s && 37 !== s && 39 !== s) ||
(i.preventDefault
? i.preventDefault()
: (i.returnValue = !1)),
(((34 !== s && 39 !== s) || a) &&
((33 !== s && 37 !== s) || !a)) ||
t.slideNext(),
(((33 !== s && 37 !== s) || a) &&
((34 !== s && 39 !== s) || !a)) ||
t.slidePrev())
: ((33 !== s && 34 !== s && 38 !== s && 40 !== s) ||
(i.preventDefault
? i.preventDefault()
: (i.returnValue = !1)),
(34 !== s && 40 !== s) || t.slideNext(),
(33 !== s && 38 !== s) || t.slidePrev()),
t.emit("keyPress", s);
}
},
enable: function () {
this.keyboard.enabled ||
(I(f).on("keydown", this.keyboard.handle),
(this.keyboard.enabled = !0));
},
disable: function () {
this.keyboard.enabled &&
(I(f).off("keydown", this.keyboard.handle),
(this.keyboard.enabled = !1));
},
},
D = {
name: "keyboard",
params: { keyboard: { enabled: !1, onlyInViewport: !0 } },
create: function () {
te.extend(this, {
keyboard: {
enabled: !1,
enable: L.enable.bind(this),
disable: L.disable.bind(this),
handle: L.handle.bind(this),
},
});
},
on: {
init: function () {
this.params.keyboard.enabled && this.keyboard.enable();
},
destroy: function () {
this.keyboard.enabled && this.keyboard.disable();
},
},
};
var O = {
lastScrollTime: te.now(),
event:
-1 < ee.navigator.userAgent.indexOf("firefox")
? "DOMMouseScroll"
: (function () {
var e = "onwheel",
t = e in f;
if (!t) {
var a = f.createElement("div");
a.setAttribute(e, "return;"), (t = "function" == typeof a[e]);
}
return (
!t &&
f.implementation &&
f.implementation.hasFeature &&
!0 !== f.implementation.hasFeature("", "") &&
(t = f.implementation.hasFeature("Events.wheel", "3.0")),
t
);
})()
? "wheel"
: "mousewheel",
normalize: function (e) {
var t = 0,
a = 0,
i = 0,
s = 0;
return (
"detail" in e && (a = e.detail),
"wheelDelta" in e && (a = -e.wheelDelta / 120),
"wheelDeltaY" in e && (a = -e.wheelDeltaY / 120),
"wheelDeltaX" in e && (t = -e.wheelDeltaX / 120),
"axis" in e && e.axis === e.HORIZONTAL_AXIS && ((t = a), (a = 0)),
(i = 10 * t),
(s = 10 * a),
"deltaY" in e && (s = e.deltaY),
"deltaX" in e && (i = e.deltaX),
(i || s) &&
e.deltaMode &&
(1 === e.deltaMode
? ((i *= 40), (s *= 40))
: ((i *= 800), (s *= 800))),
i && !t && (t = i < 1 ? -1 : 1),
s && !a && (a = s < 1 ? -1 : 1),
{ spinX: t, spinY: a, pixelX: i, pixelY: s }
);
},
handleMouseEnter: function () {
this.mouseEntered = !0;
},
handleMouseLeave: function () {
this.mouseEntered = !1;
},
handle: function (e) {
var t = e,
a = this,
i = a.params.mousewheel;
if (!a.mouseEntered && !i.releaseOnEdges) return !0;
t.originalEvent && (t = t.originalEvent);
var s = 0,
r = a.rtlTranslate ? -1 : 1,
n = O.normalize(t);
if (i.forceToAxis)
if (a.isHorizontal()) {
if (!(Math.abs(n.pixelX) > Math.abs(n.pixelY))) return !0;
s = n.pixelX * r;
} else {
if (!(Math.abs(n.pixelY) > Math.abs(n.pixelX))) return !0;
s = n.pixelY;
}
else
s =
Math.abs(n.pixelX) > Math.abs(n.pixelY)
? -n.pixelX * r
: -n.pixelY;
if (0 === s) return !0;
if ((i.invert && (s = -s), a.params.freeMode)) {
a.params.loop && a.loopFix();
var o = a.getTranslate() + s * i.sensitivity,
l = a.isBeginning,
d = a.isEnd;
if (
(o >= a.minTranslate() && (o = a.minTranslate()),
o <= a.maxTranslate() && (o = a.maxTranslate()),
a.setTransition(0),
a.setTranslate(o),
a.updateProgress(),
a.updateActiveIndex(),
a.updateSlidesClasses(),
((!l && a.isBeginning) || (!d && a.isEnd)) &&
a.updateSlidesClasses(),
a.params.freeModeSticky &&
(clearTimeout(a.mousewheel.timeout),
(a.mousewheel.timeout = te.nextTick(function () {
a.slideToClosest();
}, 300))),
a.emit("scroll", t),
a.params.autoplay &&
a.params.autoplayDisableOnInteraction &&
a.autoplay.stop(),
o === a.minTranslate() || o === a.maxTranslate())
)
return !0;
} else {
if (60 < te.now() - a.mousewheel.lastScrollTime)
if (s < 0)
if ((a.isEnd && !a.params.loop) || a.animating) {
if (i.releaseOnEdges) return !0;
} else a.slideNext(), a.emit("scroll", t);
else if ((a.isBeginning && !a.params.loop) || a.animating) {
if (i.releaseOnEdges) return !0;
} else a.slidePrev(), a.emit("scroll", t);
a.mousewheel.lastScrollTime = new ee.Date().getTime();
}
return (
t.preventDefault ? t.preventDefault() : (t.returnValue = !1), !1
);
},
enable: function () {
var e = this;
if (!O.event) return !1;
if (e.mousewheel.enabled) return !1;
var t = e.$el;
return (
"container" !== e.params.mousewheel.eventsTarged &&
(t = I(e.params.mousewheel.eventsTarged)),
t.on("mouseenter", e.mousewheel.handleMouseEnter),
t.on("mouseleave", e.mousewheel.handleMouseLeave),
t.on(O.event, e.mousewheel.handle),
(e.mousewheel.enabled = !0)
);
},
disable: function () {
var e = this;
if (!O.event) return !1;
if (!e.mousewheel.enabled) return !1;
var t = e.$el;
return (
"container" !== e.params.mousewheel.eventsTarged &&
(t = I(e.params.mousewheel.eventsTarged)),
t.off(O.event, e.mousewheel.handle),
!(e.mousewheel.enabled = !1)
);
},
},
A = {
update: function () {
var e = this,
t = e.params.navigation;
if (!e.params.loop) {
var a = e.navigation,
i = a.$nextEl,
s = a.$prevEl;
s &&
0 < s.length &&
(e.isBeginning
? s.addClass(t.disabledClass)
: s.removeClass(t.disabledClass),
s[
e.params.watchOverflow && e.isLocked
? "addClass"
: "removeClass"
](t.lockClass)),
i &&
0 < i.length &&
(e.isEnd
? i.addClass(t.disabledClass)
: i.removeClass(t.disabledClass),
i[
e.params.watchOverflow && e.isLocked
? "addClass"
: "removeClass"
](t.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,
a = this,
i = a.params.navigation;
(i.nextEl || i.prevEl) &&
(i.nextEl &&
((e = I(i.nextEl)),
a.params.uniqueNavElements &&
"string" == typeof i.nextEl &&
1 < e.length &&
1 === a.$el.find(i.nextEl).length &&
(e = a.$el.find(i.nextEl))),
i.prevEl &&
((t = I(i.prevEl)),
a.params.uniqueNavElements &&
"string" == typeof i.prevEl &&
1 < t.length &&
1 === a.$el.find(i.prevEl).length &&
(t = a.$el.find(i.prevEl))),
e && 0 < e.length && e.on("click", a.navigation.onNextClick),
t && 0 < t.length && t.on("click", a.navigation.onPrevClick),
te.extend(a.navigation, {
$nextEl: e,
nextEl: e && e[0],
$prevEl: t,
prevEl: t && t[0],
}));
},
destroy: function () {
var e = this,
t = e.navigation,
a = t.$nextEl,
i = t.$prevEl;
a &&
a.length &&
(a.off("click", e.navigation.onNextClick),
a.removeClass(e.params.navigation.disabledClass)),
i &&
i.length &&
(i.off("click", e.navigation.onPrevClick),
i.removeClass(e.params.navigation.disabledClass));
},
},
H = {
update: function () {
var e = this,
t = e.rtl,
s = e.params.pagination;
if (
s.el &&
e.pagination.el &&
e.pagination.$el &&
0 !== e.pagination.$el.length
) {
var r,
a =
e.virtual && e.params.virtual.enabled
? e.virtual.slides.length
: e.slides.length,
i = e.pagination.$el,
n = e.params.loop
? Math.ceil((a - 2 * e.loopedSlides) / e.params.slidesPerGroup)
: e.snapGrid.length;
if (
(e.params.loop
? ((r = Math.ceil(
(e.activeIndex - e.loopedSlides) / e.params.slidesPerGroup
)) >
a - 1 - 2 * e.loopedSlides && (r -= a - 2 * e.loopedSlides),
n - 1 < r && (r -= n),
r < 0 && "bullets" !== e.params.paginationType && (r = n + r))
: (r =
void 0 !== e.snapIndex ? e.snapIndex : e.activeIndex || 0),
"bullets" === s.type &&
e.pagination.bullets &&
0 < e.pagination.bullets.length)
) {
var o,
l,
d,
p = e.pagination.bullets;
if (
(s.dynamicBullets &&
((e.pagination.bulletSize = p
.eq(0)
[e.isHorizontal() ? "outerWidth" : "outerHeight"](!0)),
i.css(
e.isHorizontal() ? "width" : "height",
e.pagination.bulletSize * (s.dynamicMainBullets + 4) + "px"
),
1 < s.dynamicMainBullets &&
void 0 !== e.previousIndex &&
((e.pagination.dynamicBulletIndex += r - e.previousIndex),
e.pagination.dynamicBulletIndex > s.dynamicMainBullets - 1
? (e.pagination.dynamicBulletIndex =
s.dynamicMainBullets - 1)
: e.pagination.dynamicBulletIndex < 0 &&
(e.pagination.dynamicBulletIndex = 0)),
(o = r - e.pagination.dynamicBulletIndex),
(d =
((l = o + (Math.min(p.length, s.dynamicMainBullets) - 1)) +
o) /
2)),
p.removeClass(
s.bulletActiveClass +
" " +
s.bulletActiveClass +
"-next " +
s.bulletActiveClass +
"-next-next " +
s.bulletActiveClass +
"-prev " +
s.bulletActiveClass +
"-prev-prev " +
s.bulletActiveClass +
"-main"
),
1 < i.length)
)
p.each(function (e, t) {
var a = I(t),
i = a.index();
i === r && a.addClass(s.bulletActiveClass),
s.dynamicBullets &&
(o <= i &&
i <= l &&
a.addClass(s.bulletActiveClass + "-main"),
i === o &&
a
.prev()
.addClass(s.bulletActiveClass + "-prev")
.prev()
.addClass(s.bulletActiveClass + "-prev-prev"),
i === l &&
a
.next()
.addClass(s.bulletActiveClass + "-next")
.next()
.addClass(s.bulletActiveClass + "-next-next"));
});
else if (
(p.eq(r).addClass(s.bulletActiveClass), s.dynamicBullets)
) {
for (var c = p.eq(o), u = p.eq(l), h = o; h <= l; h += 1)
p.eq(h).addClass(s.bulletActiveClass + "-main");
c
.prev()
.addClass(s.bulletActiveClass + "-prev")
.prev()
.addClass(s.bulletActiveClass + "-prev-prev"),
u
.next()
.addClass(s.bulletActiveClass + "-next")
.next()
.addClass(s.bulletActiveClass + "-next-next");
}
if (s.dynamicBullets) {
var v = Math.min(p.length, s.dynamicMainBullets + 4),
f =
(e.pagination.bulletSize * v - e.pagination.bulletSize) /
2 -
d * e.pagination.bulletSize,
m = t ? "right" : "left";
p.css(e.isHorizontal() ? m : "top", f + "px");
}
}
if (
("fraction" === s.type &&
(i
.find("." + s.currentClass)
.text(s.formatFractionCurrent(r + 1)),
i.find("." + s.totalClass).text(s.formatFractionTotal(n))),
"progressbar" === s.type)
) {
var g;
g = s.progressbarOpposite
? e.isHorizontal()
? "vertical"
: "horizontal"
: e.isHorizontal()
? "horizontal"
: "vertical";
var b = (r + 1) / n,
w = 1,
y = 1;
"horizontal" === g ? (w = b) : (y = b),
i
.find("." + s.progressbarFillClass)
.transform(
"translate3d(0,0,0) scaleX(" + w + ") scaleY(" + y + ")"
)
.transition(e.params.speed);
}
"custom" === s.type && s.renderCustom
? (i.html(s.renderCustom(e, r + 1, n)),
e.emit("paginationRender", e, i[0]))
: e.emit("paginationUpdate", e, i[0]),
i[
e.params.watchOverflow && e.isLocked
? "addClass"
: "removeClass"
](s.lockClass);
}
},
render: function () {
var e = this,
t = e.params.pagination;
if (
t.el &&
e.pagination.el &&
e.pagination.$el &&
0 !== e.pagination.$el.length
) {
var a =
e.virtual && e.params.virtual.enabled
? e.virtual.slides.length
: e.slides.length,
i = e.pagination.$el,
s = "";
if ("bullets" === t.type) {
for (
var r = e.params.loop
? Math.ceil(
(a - 2 * e.loopedSlides) / e.params.slidesPerGroup
)
: e.snapGrid.length,
n = 0;
n < r;
n += 1
)
t.renderBullet
? (s += t.renderBullet.call(e, n, t.bulletClass))
: (s +=
"<" +
t.bulletElement +
' class="' +
t.bulletClass +
'">' +
t.bulletElement +
">");
i.html(s), (e.pagination.bullets = i.find("." + t.bulletClass));
}
"fraction" === t.type &&
((s = t.renderFraction
? t.renderFraction.call(e, t.currentClass, t.totalClass)
: ' / '),
i.html(s)),
"progressbar" === t.type &&
((s = t.renderProgressbar
? t.renderProgressbar.call(e, t.progressbarFillClass)
: ''),
i.html(s)),
"custom" !== t.type &&
e.emit("paginationRender", e.pagination.$el[0]);
}
},
init: function () {
var a = this,
e = a.params.pagination;
if (e.el) {
var t = I(e.el);
0 !== t.length &&
(a.params.uniqueNavElements &&
"string" == typeof e.el &&
1 < t.length &&
1 === a.$el.find(e.el).length &&
(t = a.$el.find(e.el)),
"bullets" === e.type &&
e.clickable &&
t.addClass(e.clickableClass),
t.addClass(e.modifierClass + e.type),
"bullets" === e.type &&
e.dynamicBullets &&
(t.addClass("" + e.modifierClass + e.type + "-dynamic"),
(a.pagination.dynamicBulletIndex = 0),
e.dynamicMainBullets < 1 && (e.dynamicMainBullets = 1)),
"progressbar" === e.type &&
e.progressbarOpposite &&
t.addClass(e.progressbarOppositeClass),
e.clickable &&
t.on("click", "." + e.bulletClass, function (e) {
e.preventDefault();
var t = I(this).index() * a.params.slidesPerGroup;
a.params.loop && (t += a.loopedSlides), a.slideTo(t);
}),
te.extend(a.pagination, { $el: t, el: t[0] }));
}
},
destroy: function () {
var e = this,
t = e.params.pagination;
if (
t.el &&
e.pagination.el &&
e.pagination.$el &&
0 !== e.pagination.$el.length
) {
var a = e.pagination.$el;
a.removeClass(t.hiddenClass),
a.removeClass(t.modifierClass + t.type),
e.pagination.bullets &&
e.pagination.bullets.removeClass(t.bulletActiveClass),
t.clickable && a.off("click", "." + t.bulletClass);
}
},
},
G = {
setTranslate: function () {
var e = this;
if (e.params.scrollbar.el && e.scrollbar.el) {
var t = e.scrollbar,
a = e.rtlTranslate,
i = e.progress,
s = t.dragSize,
r = t.trackSize,
n = t.$dragEl,
o = t.$el,
l = e.params.scrollbar,
d = s,
p = (r - s) * i;
a
? 0 < (p = -p)
? ((d = s - p), (p = 0))
: r < -p + s && (d = r + p)
: p < 0
? ((d = s + p), (p = 0))
: r < p + s && (d = r - p),
e.isHorizontal()
? (ae.transforms3d
? n.transform("translate3d(" + p + "px, 0, 0)")
: n.transform("translateX(" + p + "px)"),
(n[0].style.width = d + "px"))
: (ae.transforms3d
? n.transform("translate3d(0px, " + p + "px, 0)")
: n.transform("translateY(" + p + "px)"),
(n[0].style.height = d + "px")),
l.hide &&
(clearTimeout(e.scrollbar.timeout),
(o[0].style.opacity = 1),
(e.scrollbar.timeout = setTimeout(function () {
(o[0].style.opacity = 0), o.transition(400);
}, 1e3)));
}
},
setTransition: function (e) {
this.params.scrollbar.el &&
this.scrollbar.el &&
this.scrollbar.$dragEl.transition(e);
},
updateSize: function () {
var e = this;
if (e.params.scrollbar.el && e.scrollbar.el) {
var t = e.scrollbar,
a = t.$dragEl,
i = t.$el;
(a[0].style.width = ""), (a[0].style.height = "");
var s,
r = e.isHorizontal() ? i[0].offsetWidth : i[0].offsetHeight,
n = e.size / e.virtualSize,
o = n * (r / e.size);
(s =
"auto" === e.params.scrollbar.dragSize
? r * n
: parseInt(e.params.scrollbar.dragSize, 10)),
e.isHorizontal()
? (a[0].style.width = s + "px")
: (a[0].style.height = s + "px"),
(i[0].style.display = 1 <= n ? "none" : ""),
e.params.scrollbar.hide && (i[0].style.opacity = 0),
te.extend(t, {
trackSize: r,
divider: n,
moveDivider: o,
dragSize: s,
}),
t.$el[
e.params.watchOverflow && e.isLocked
? "addClass"
: "removeClass"
](e.params.scrollbar.lockClass);
}
},
getPointerPosition: function (e) {
return this.isHorizontal()
? "touchstart" === e.type || "touchmove" === e.type
? e.targetTouches[0].pageX
: e.pageX || e.clientX
: "touchstart" === e.type || "touchmove" === e.type
? e.targetTouches[0].pageY
: e.pageY || e.clientY;
},
setDragPosition: function (e) {
var t,
a = this,
i = a.scrollbar,
s = a.rtlTranslate,
r = i.$el,
n = i.dragSize,
o = i.trackSize,
l = i.dragStartPos;
(t =
(i.getPointerPosition(e) -
r.offset()[a.isHorizontal() ? "left" : "top"] -
(null !== l ? l : n / 2)) /
(o - n)),
(t = Math.max(Math.min(t, 1), 0)),
s && (t = 1 - t);
var d = a.minTranslate() + (a.maxTranslate() - a.minTranslate()) * t;
a.updateProgress(d),
a.setTranslate(d),
a.updateActiveIndex(),
a.updateSlidesClasses();
},
onDragStart: function (e) {
var t = this,
a = t.params.scrollbar,
i = t.scrollbar,
s = t.$wrapperEl,
r = i.$el,
n = i.$dragEl;
(t.scrollbar.isTouched = !0),
(t.scrollbar.dragStartPos =
e.target === n[0] || e.target === n
? i.getPointerPosition(e) -
e.target.getBoundingClientRect()[
t.isHorizontal() ? "left" : "top"
]
: null),
e.preventDefault(),
e.stopPropagation(),
s.transition(100),
n.transition(100),
i.setDragPosition(e),
clearTimeout(t.scrollbar.dragTimeout),
r.transition(0),
a.hide && r.css("opacity", 1),
t.emit("scrollbarDragStart", e);
},
onDragMove: function (e) {
var t = this.scrollbar,
a = this.$wrapperEl,
i = t.$el,
s = t.$dragEl;
this.scrollbar.isTouched &&
(e.preventDefault ? e.preventDefault() : (e.returnValue = !1),
t.setDragPosition(e),
a.transition(0),
i.transition(0),
s.transition(0),
this.emit("scrollbarDragMove", e));
},
onDragEnd: function (e) {
var t = this,
a = t.params.scrollbar,
i = t.scrollbar.$el;
t.scrollbar.isTouched &&
((t.scrollbar.isTouched = !1),
a.hide &&
(clearTimeout(t.scrollbar.dragTimeout),
(t.scrollbar.dragTimeout = te.nextTick(function () {
i.css("opacity", 0), i.transition(400);
}, 1e3))),
t.emit("scrollbarDragEnd", e),
a.snapOnRelease && t.slideToClosest());
},
enableDraggable: function () {
var e = this;
if (e.params.scrollbar.el) {
var t = e.scrollbar,
a = e.touchEventsTouch,
i = e.touchEventsDesktop,
s = e.params,
r = t.$el[0],
n = !(!ae.passiveListener || !s.passiveListeners) && {
passive: !1,
capture: !1,
},
o = !(!ae.passiveListener || !s.passiveListeners) && {
passive: !0,
capture: !1,
};
ae.touch
? (r.addEventListener(a.start, e.scrollbar.onDragStart, n),
r.addEventListener(a.move, e.scrollbar.onDragMove, n),
r.addEventListener(a.end, e.scrollbar.onDragEnd, o))
: (r.addEventListener(i.start, e.scrollbar.onDragStart, n),
f.addEventListener(i.move, e.scrollbar.onDragMove, n),
f.addEventListener(i.end, e.scrollbar.onDragEnd, o));
}
},
disableDraggable: function () {
var e = this;
if (e.params.scrollbar.el) {
var t = e.scrollbar,
a = e.touchEventsTouch,
i = e.touchEventsDesktop,
s = e.params,
r = t.$el[0],
n = !(!ae.passiveListener || !s.passiveListeners) && {
passive: !1,
capture: !1,
},
o = !(!ae.passiveListener || !s.passiveListeners) && {
passive: !0,
capture: !1,
};
ae.touch
? (r.removeEventListener(a.start, e.scrollbar.onDragStart, n),
r.removeEventListener(a.move, e.scrollbar.onDragMove, n),
r.removeEventListener(a.end, e.scrollbar.onDragEnd, o))
: (r.removeEventListener(i.start, e.scrollbar.onDragStart, n),
f.removeEventListener(i.move, e.scrollbar.onDragMove, n),
f.removeEventListener(i.end, e.scrollbar.onDragEnd, o));
}
},
init: function () {
var e = this;
if (e.params.scrollbar.el) {
var t = e.scrollbar,
a = e.$el,
i = e.params.scrollbar,
s = I(i.el);
e.params.uniqueNavElements &&
"string" == typeof i.el &&
1 < s.length &&
1 === a.find(i.el).length &&
(s = a.find(i.el));
var r = s.find("." + e.params.scrollbar.dragClass);
0 === r.length &&
((r = I(
''
)),
s.append(r)),
te.extend(t, { $el: s, el: s[0], $dragEl: r, dragEl: r[0] }),
i.draggable && t.enableDraggable();
}
},
destroy: function () {
this.scrollbar.disableDraggable();
},
},
N = {
setTransform: function (e, t) {
var a = this.rtl,
i = I(e),
s = a ? -1 : 1,
r = i.attr("data-swiper-parallax") || "0",
n = i.attr("data-swiper-parallax-x"),
o = i.attr("data-swiper-parallax-y"),
l = i.attr("data-swiper-parallax-scale"),
d = i.attr("data-swiper-parallax-opacity");
if (
(n || o
? ((n = n || "0"), (o = o || "0"))
: this.isHorizontal()
? ((n = r), (o = "0"))
: ((o = r), (n = "0")),
(n =
0 <= n.indexOf("%")
? parseInt(n, 10) * t * s + "%"
: n * t * s + "px"),
(o =
0 <= o.indexOf("%") ? parseInt(o, 10) * t + "%" : o * t + "px"),
null != d)
) {
var p = d - (d - 1) * (1 - Math.abs(t));
i[0].style.opacity = p;
}
if (null == l) i.transform("translate3d(" + n + ", " + o + ", 0px)");
else {
var c = l - (l - 1) * (1 - Math.abs(t));
i.transform(
"translate3d(" + n + ", " + o + ", 0px) scale(" + c + ")"
);
}
},
setTranslate: function () {
var i = this,
e = i.$el,
t = i.slides,
s = i.progress,
r = i.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) {
i.parallax.setTransform(t, s);
}),
t.each(function (e, t) {
var a = t.progress;
1 < i.params.slidesPerGroup &&
"auto" !== i.params.slidesPerView &&
(a += Math.ceil(e / 2) - s * (r.length - 1)),
(a = Math.min(Math.max(a, -1), 1)),
I(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) {
i.parallax.setTransform(t, a);
});
});
},
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 a = I(t),
i = parseInt(a.attr("data-swiper-parallax-duration"), 10) || s;
0 === s && (i = 0), a.transition(i);
});
},
},
B = {
getDistanceBetweenTouches: function (e) {
if (e.targetTouches.length < 2) return 1;
var t = e.targetTouches[0].pageX,
a = e.targetTouches[0].pageY,
i = e.targetTouches[1].pageX,
s = e.targetTouches[1].pageY;
return Math.sqrt(Math.pow(i - t, 2) + Math.pow(s - a, 2));
},
onGestureStart: function (e) {
var t = this,
a = t.params.zoom,
i = t.zoom,
s = i.gesture;
if (
((i.fakeGestureTouched = !1),
(i.fakeGestureMoved = !1),
!ae.gestures)
) {
if (
"touchstart" !== e.type ||
("touchstart" === e.type && e.targetTouches.length < 2)
)
return;
(i.fakeGestureTouched = !0),
(s.scaleStart = B.getDistanceBetweenTouches(e));
}
(s.$slideEl && s.$slideEl.length) ||
((s.$slideEl = I(e.target).closest(".swiper-slide")),
0 === s.$slideEl.length && (s.$slideEl = t.slides.eq(t.activeIndex)),
(s.$imageEl = s.$slideEl.find("img, svg, canvas")),
(s.$imageWrapEl = s.$imageEl.parent("." + a.containerClass)),
(s.maxRatio = s.$imageWrapEl.attr("data-swiper-zoom") || a.maxRatio),
0 !== s.$imageWrapEl.length)
? (s.$imageEl.transition(0), (t.zoom.isScaling = !0))
: (s.$imageEl = void 0);
},
onGestureChange: function (e) {
var t = this.params.zoom,
a = this.zoom,
i = a.gesture;
if (!ae.gestures) {
if (
"touchmove" !== e.type ||
("touchmove" === e.type && e.targetTouches.length < 2)
)
return;
(a.fakeGestureMoved = !0),
(i.scaleMove = B.getDistanceBetweenTouches(e));
}
i.$imageEl &&
0 !== i.$imageEl.length &&
((a.scale = ae.gestures
? e.scale * a.currentScale
: (i.scaleMove / i.scaleStart) * a.currentScale),
a.scale > i.maxRatio &&
(a.scale =
i.maxRatio - 1 + Math.pow(a.scale - i.maxRatio + 1, 0.5)),
a.scale < t.minRatio &&
(a.scale =
t.minRatio + 1 - Math.pow(t.minRatio - a.scale + 1, 0.5)),
i.$imageEl.transform("translate3d(0,0,0) scale(" + a.scale + ")"));
},
onGestureEnd: function (e) {
var t = this.params.zoom,
a = this.zoom,
i = a.gesture;
if (!ae.gestures) {
if (!a.fakeGestureTouched || !a.fakeGestureMoved) return;
if (
"touchend" !== e.type ||
("touchend" === e.type &&
e.changedTouches.length < 2 &&
!g.android)
)
return;
(a.fakeGestureTouched = !1), (a.fakeGestureMoved = !1);
}
i.$imageEl &&
0 !== i.$imageEl.length &&
((a.scale = Math.max(Math.min(a.scale, i.maxRatio), t.minRatio)),
i.$imageEl
.transition(this.params.speed)
.transform("translate3d(0,0,0) scale(" + a.scale + ")"),
(a.currentScale = a.scale),
(a.isScaling = !1),
1 === a.scale && (i.$slideEl = void 0));
},
onTouchStart: function (e) {
var t = this.zoom,
a = t.gesture,
i = t.image;
a.$imageEl &&
0 !== a.$imageEl.length &&
(i.isTouched ||
(g.android && e.preventDefault(),
(i.isTouched = !0),
(i.touchesStart.x =
"touchstart" === e.type ? e.targetTouches[0].pageX : e.pageX),
(i.touchesStart.y =
"touchstart" === e.type ? e.targetTouches[0].pageY : e.pageY)));
},
onTouchMove: function (e) {
var t = this,
a = t.zoom,
i = a.gesture,
s = a.image,
r = a.velocity;
if (
i.$imageEl &&
0 !== i.$imageEl.length &&
((t.allowClick = !1), s.isTouched && i.$slideEl)
) {
s.isMoved ||
((s.width = i.$imageEl[0].offsetWidth),
(s.height = i.$imageEl[0].offsetHeight),
(s.startX = te.getTranslate(i.$imageWrapEl[0], "x") || 0),
(s.startY = te.getTranslate(i.$imageWrapEl[0], "y") || 0),
(i.slideWidth = i.$slideEl[0].offsetWidth),
(i.slideHeight = i.$slideEl[0].offsetHeight),
i.$imageWrapEl.transition(0),
t.rtl && ((s.startX = -s.startX), (s.startY = -s.startY)));
var n = s.width * a.scale,
o = s.height * a.scale;
if (!(n < i.slideWidth && o < i.slideHeight)) {
if (
((s.minX = Math.min(i.slideWidth / 2 - n / 2, 0)),
(s.maxX = -s.minX),
(s.minY = Math.min(i.slideHeight / 2 - o / 2, 0)),
(s.maxY = -s.minY),
(s.touchesCurrent.x =
"touchmove" === e.type ? e.targetTouches[0].pageX : e.pageX),
(s.touchesCurrent.y =
"touchmove" === e.type ? e.targetTouches[0].pageY : e.pageY),
!s.isMoved && !a.isScaling)
) {
if (
t.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 (
!t.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)),
r.prevPositionX || (r.prevPositionX = s.touchesCurrent.x),
r.prevPositionY || (r.prevPositionY = s.touchesCurrent.y),
r.prevTime || (r.prevTime = Date.now()),
(r.x =
(s.touchesCurrent.x - r.prevPositionX) /
(Date.now() - r.prevTime) /
2),
(r.y =
(s.touchesCurrent.y - r.prevPositionY) /
(Date.now() - r.prevTime) /
2),
Math.abs(s.touchesCurrent.x - r.prevPositionX) < 2 && (r.x = 0),
Math.abs(s.touchesCurrent.y - r.prevPositionY) < 2 && (r.y = 0),
(r.prevPositionX = s.touchesCurrent.x),
(r.prevPositionY = s.touchesCurrent.y),
(r.prevTime = Date.now()),
i.$imageWrapEl.transform(
"translate3d(" + s.currentX + "px, " + s.currentY + "px,0)"
);
}
}
},
onTouchEnd: function () {
var e = this.zoom,
t = e.gesture,
a = e.image,
i = e.velocity;
if (t.$imageEl && 0 !== t.$imageEl.length) {
if (!a.isTouched || !a.isMoved)
return (a.isTouched = !1), void (a.isMoved = !1);
(a.isTouched = !1), (a.isMoved = !1);
var s = 300,
r = 300,
n = i.x * s,
o = a.currentX + n,
l = i.y * r,
d = a.currentY + l;
0 !== i.x && (s = Math.abs((o - a.currentX) / i.x)),
0 !== i.y && (r = Math.abs((d - a.currentY) / i.y));
var p = Math.max(s, r);
(a.currentX = o), (a.currentY = d);
var c = a.width * e.scale,
u = a.height * e.scale;
(a.minX = Math.min(t.slideWidth / 2 - c / 2, 0)),
(a.maxX = -a.minX),
(a.minY = Math.min(t.slideHeight / 2 - u / 2, 0)),
(a.maxY = -a.minY),
(a.currentX = Math.max(Math.min(a.currentX, a.maxX), a.minX)),
(a.currentY = Math.max(Math.min(a.currentY, a.maxY), a.minY)),
t.$imageWrapEl
.transition(p)
.transform(
"translate3d(" + a.currentX + "px, " + a.currentY + "px,0)"
);
}
},
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,
a,
i,
s,
r,
n,
o,
l,
d,
p,
c,
u,
h,
v,
f,
m,
g = this,
b = g.zoom,
w = g.params.zoom,
y = b.gesture,
x = b.image;
y.$slideEl ||
((y.$slideEl = g.clickedSlide
? I(g.clickedSlide)
: g.slides.eq(g.activeIndex)),
(y.$imageEl = y.$slideEl.find("img, svg, canvas")),
(y.$imageWrapEl = y.$imageEl.parent("." + w.containerClass))),
y.$imageEl &&
0 !== y.$imageEl.length &&
(y.$slideEl.addClass("" + w.zoomedSlideClass),
(a =
void 0 === x.touchesStart.x && e
? ((t =
"touchend" === e.type
? e.changedTouches[0].pageX
: e.pageX),
"touchend" === e.type ? e.changedTouches[0].pageY : e.pageY)
: ((t = x.touchesStart.x), x.touchesStart.y)),
(b.scale = y.$imageWrapEl.attr("data-swiper-zoom") || w.maxRatio),
(b.currentScale =
y.$imageWrapEl.attr("data-swiper-zoom") || w.maxRatio),
e
? ((f = y.$slideEl[0].offsetWidth),
(m = y.$slideEl[0].offsetHeight),
(i = y.$slideEl.offset().left + f / 2 - t),
(s = y.$slideEl.offset().top + m / 2 - a),
(o = y.$imageEl[0].offsetWidth),
(l = y.$imageEl[0].offsetHeight),
(d = o * b.scale),
(p = l * b.scale),
(h = -(c = Math.min(f / 2 - d / 2, 0))),
(v = -(u = Math.min(m / 2 - p / 2, 0))),
(r = i * b.scale) < c && (r = c),
h < r && (r = h),
(n = s * b.scale) < u && (n = u),
v < n && (n = v))
: (n = r = 0),
y.$imageWrapEl
.transition(300)
.transform("translate3d(" + r + "px, " + n + "px,0)"),
y.$imageEl
.transition(300)
.transform("translate3d(0,0,0) scale(" + b.scale + ")"));
},
out: function () {
var e = this,
t = e.zoom,
a = e.params.zoom,
i = t.gesture;
i.$slideEl ||
((i.$slideEl = e.clickedSlide
? I(e.clickedSlide)
: e.slides.eq(e.activeIndex)),
(i.$imageEl = i.$slideEl.find("img, svg, canvas")),
(i.$imageWrapEl = i.$imageEl.parent("." + a.containerClass))),
i.$imageEl &&
0 !== i.$imageEl.length &&
((t.scale = 1),
(t.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("" + a.zoomedSlideClass),
(i.$slideEl = void 0));
},
enable: function () {
var e = this,
t = e.zoom;
if (!t.enabled) {
t.enabled = !0;
var a = !(
"touchstart" !== e.touchEvents.start ||
!ae.passiveListener ||
!e.params.passiveListeners
) && { passive: !0, capture: !1 };
ae.gestures
? (e.$wrapperEl.on(
"gesturestart",
".swiper-slide",
t.onGestureStart,
a
),
e.$wrapperEl.on(
"gesturechange",
".swiper-slide",
t.onGestureChange,
a
),
e.$wrapperEl.on(
"gestureend",
".swiper-slide",
t.onGestureEnd,
a
))
: "touchstart" === e.touchEvents.start &&
(e.$wrapperEl.on(
e.touchEvents.start,
".swiper-slide",
t.onGestureStart,
a
),
e.$wrapperEl.on(
e.touchEvents.move,
".swiper-slide",
t.onGestureChange,
a
),
e.$wrapperEl.on(
e.touchEvents.end,
".swiper-slide",
t.onGestureEnd,
a
)),
e.$wrapperEl.on(
e.touchEvents.move,
"." + e.params.zoom.containerClass,
t.onTouchMove
);
}
},
disable: function () {
var e = this,
t = e.zoom;
if (t.enabled) {
e.zoom.enabled = !1;
var a = !(
"touchstart" !== e.touchEvents.start ||
!ae.passiveListener ||
!e.params.passiveListeners
) && { passive: !0, capture: !1 };
ae.gestures
? (e.$wrapperEl.off(
"gesturestart",
".swiper-slide",
t.onGestureStart,
a
),
e.$wrapperEl.off(
"gesturechange",
".swiper-slide",
t.onGestureChange,
a
),
e.$wrapperEl.off(
"gestureend",
".swiper-slide",
t.onGestureEnd,
a
))
: "touchstart" === e.touchEvents.start &&
(e.$wrapperEl.off(
e.touchEvents.start,
".swiper-slide",
t.onGestureStart,
a
),
e.$wrapperEl.off(
e.touchEvents.move,
".swiper-slide",
t.onGestureChange,
a
),
e.$wrapperEl.off(
e.touchEvents.end,
".swiper-slide",
t.onGestureEnd,
a
)),
e.$wrapperEl.off(
e.touchEvents.move,
"." + e.params.zoom.containerClass,
t.onTouchMove
);
}
},
},
X = {
loadInSlide: function (e, l) {
void 0 === l && (l = !0);
var d = this,
p = d.params.lazy;
if (void 0 !== e && 0 !== d.slides.length) {
var c =
d.virtual && d.params.virtual.enabled
? d.$wrapperEl.children(
"." +
d.params.slideClass +
'[data-swiper-slide-index="' +
e +
'"]'
)
: d.slides.eq(e),
t = c.find(
"." +
p.elementClass +
":not(." +
p.loadedClass +
"):not(." +
p.loadingClass +
")"
);
!c.hasClass(p.elementClass) ||
c.hasClass(p.loadedClass) ||
c.hasClass(p.loadingClass) ||
(t = t.add(c[0])),
0 !== t.length &&
t.each(function (e, t) {
var i = I(t);
i.addClass(p.loadingClass);
var s = i.attr("data-background"),
r = i.attr("data-src"),
n = i.attr("data-srcset"),
o = i.attr("data-sizes");
d.loadImage(i[0], r || s, n, o, !1, function () {
if (null != d && d && (!d || d.params) && !d.destroyed) {
if (
(s
? (i.css("background-image", 'url("' + s + '")'),
i.removeAttr("data-background"))
: (n &&
(i.attr("srcset", n),
i.removeAttr("data-srcset")),
o &&
(i.attr("sizes", o), i.removeAttr("data-sizes")),
r && (i.attr("src", r), i.removeAttr("data-src"))),
i.addClass(p.loadedClass).removeClass(p.loadingClass),
c.find("." + p.preloaderClass).remove(),
d.params.loop && l)
) {
var e = c.attr("data-swiper-slide-index");
if (c.hasClass(d.params.slideDuplicateClass)) {
var t = d.$wrapperEl.children(
'[data-swiper-slide-index="' +
e +
'"]:not(.' +
d.params.slideDuplicateClass +
")"
);
d.lazy.loadInSlide(t.index(), !1);
} else {
var a = d.$wrapperEl.children(
"." +
d.params.slideDuplicateClass +
'[data-swiper-slide-index="' +
e +
'"]'
);
d.lazy.loadInSlide(a.index(), !1);
}
}
d.emit("lazyImageReady", c[0], i[0]);
}
}),
d.emit("lazyImageLoad", c[0], i[0]);
});
}
},
load: function () {
var i = this,
t = i.$wrapperEl,
a = i.params,
s = i.slides,
e = i.activeIndex,
r = i.virtual && a.virtual.enabled,
n = a.lazy,
o = a.slidesPerView;
function l(e) {
if (r) {
if (
t.children(
"." + a.slideClass + '[data-swiper-slide-index="' + e + '"]'
).length
)
return !0;
} else if (s[e]) return !0;
return !1;
}
function d(e) {
return r ? I(e).attr("data-swiper-slide-index") : I(e).index();
}
if (
("auto" === o && (o = 0),
i.lazy.initialImageLoaded || (i.lazy.initialImageLoaded = !0),
i.params.watchSlidesVisibility)
)
t.children("." + a.slideVisibleClass).each(function (e, t) {
var a = r ? I(t).attr("data-swiper-slide-index") : I(t).index();
i.lazy.loadInSlide(a);
});
else if (1 < o)
for (var p = e; p < e + o; p += 1) l(p) && i.lazy.loadInSlide(p);
else i.lazy.loadInSlide(e);
if (n.loadPrevNext)
if (1 < o || (n.loadPrevNextAmount && 1 < n.loadPrevNextAmount)) {
for (
var c = n.loadPrevNextAmount,
u = o,
h = Math.min(e + u + Math.max(c, u), s.length),
v = Math.max(e - Math.max(u, c), 0),
f = e + o;
f < h;
f += 1
)
l(f) && i.lazy.loadInSlide(f);
for (var m = v; m < e; m += 1) l(m) && i.lazy.loadInSlide(m);
} else {
var g = t.children("." + a.slideNextClass);
0 < g.length && i.lazy.loadInSlide(d(g));
var b = t.children("." + a.slidePrevClass);
0 < b.length && i.lazy.loadInSlide(d(b));
}
},
},
V = {
LinearSpline: function (e, t) {
var a,
i,
s,
r,
n,
o = function (e, t) {
for (i = -1, a = e.length; 1 < a - i; )
e[(s = (a + i) >> 1)] <= t ? (i = s) : (a = s);
return a;
};
return (
(this.x = e),
(this.y = t),
(this.lastIndex = e.length - 1),
(this.interpolate = function (e) {
return e
? ((n = o(this.x, e)),
(r = n - 1),
((e - this.x[r]) * (this.y[n] - this.y[r])) /
(this.x[n] - this.x[r]) +
this.y[r])
: 0;
}),
this
);
},
getInterpolateFunction: function (e) {
var t = this;
t.controller.spline ||
(t.controller.spline = t.params.loop
? new V.LinearSpline(t.slidesGrid, e.slidesGrid)
: new V.LinearSpline(t.snapGrid, e.snapGrid));
},
setTranslate: function (e, t) {
var a,
i,
s = this,
r = s.controller.control;
function n(e) {
var t = s.rtlTranslate ? -s.translate : s.translate;
"slide" === s.params.controller.by &&
(s.controller.getInterpolateFunction(e),
(i = -s.controller.spline.interpolate(-t))),
(i && "container" !== s.params.controller.by) ||
((a =
(e.maxTranslate() - e.minTranslate()) /
(s.maxTranslate() - s.minTranslate())),
(i = (t - s.minTranslate()) * a + e.minTranslate())),
s.params.controller.inverse && (i = e.maxTranslate() - i),
e.updateProgress(i),
e.setTranslate(i, s),
e.updateActiveIndex(),
e.updateSlidesClasses();
}
if (Array.isArray(r))
for (var o = 0; o < r.length; o += 1)
r[o] !== t && r[o] instanceof T && n(r[o]);
else r instanceof T && t !== r && n(r);
},
setTransition: function (t, e) {
var a,
i = this,
s = i.controller.control;
function r(e) {
e.setTransition(t, i),
0 !== t &&
(e.transitionStart(),
e.params.autoHeight &&
te.nextTick(function () {
e.updateAutoHeight();
}),
e.$wrapperEl.transitionEnd(function () {
s &&
(e.params.loop &&
"slide" === i.params.controller.by &&
e.loopFix(),
e.transitionEnd());
}));
}
if (Array.isArray(s))
for (a = 0; a < s.length; a += 1)
s[a] !== e && s[a] instanceof T && r(s[a]);
else s instanceof T && e !== s && r(s);
},
},
Y = {
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,
a = t.params.a11y;
if (13 === e.keyCode) {
var i = I(e.target);
t.navigation &&
t.navigation.$nextEl &&
i.is(t.navigation.$nextEl) &&
((t.isEnd && !t.params.loop) || t.slideNext(),
t.isEnd
? t.a11y.notify(a.lastSlideMessage)
: t.a11y.notify(a.nextSlideMessage)),
t.navigation &&
t.navigation.$prevEl &&
i.is(t.navigation.$prevEl) &&
((t.isBeginning && !t.params.loop) || t.slidePrev(),
t.isBeginning
? t.a11y.notify(a.firstSlideMessage)
: t.a11y.notify(a.prevSlideMessage)),
t.pagination &&
i.is("." + t.params.pagination.bulletClass) &&
i[0].click();
}
},
notify: function (e) {
var t = this.a11y.liveRegion;
0 !== t.length && (t.html(""), t.html(e));
},
updateNavigation: function () {
var e = this;
if (!e.params.loop) {
var t = e.navigation,
a = t.$nextEl,
i = t.$prevEl;
i &&
0 < i.length &&
(e.isBeginning ? e.a11y.disableEl(i) : e.a11y.enableEl(i)),
a &&
0 < a.length &&
(e.isEnd ? e.a11y.disableEl(a) : e.a11y.enableEl(a));
}
},
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) {
var a = I(t);
i.a11y.makeElFocusable(a),
i.a11y.addElRole(a, "button"),
i.a11y.addElLabel(
a,
s.paginationBulletMessage.replace(/{{index}}/, a.index() + 1)
);
});
},
init: function () {
var e = this;
e.$el.append(e.a11y.liveRegion);
var t,
a,
i = e.params.a11y;
e.navigation && e.navigation.$nextEl && (t = e.navigation.$nextEl),
e.navigation && e.navigation.$prevEl && (a = e.navigation.$prevEl),
t &&
(e.a11y.makeElFocusable(t),
e.a11y.addElRole(t, "button"),
e.a11y.addElLabel(t, i.nextSlideMessage),
t.on("keydown", e.a11y.onEnterKey)),
a &&
(e.a11y.makeElFocusable(a),
e.a11y.addElRole(a, "button"),
e.a11y.addElLabel(a, i.prevSlideMessage),
a.on("keydown", e.a11y.onEnterKey)),
e.pagination &&
e.params.pagination.clickable &&
e.pagination.bullets &&
e.pagination.bullets.length &&
e.pagination.$el.on(
"keydown",
"." + e.params.pagination.bulletClass,
e.a11y.onEnterKey
);
},
destroy: function () {
var e,
t,
a = this;
a.a11y.liveRegion &&
0 < a.a11y.liveRegion.length &&
a.a11y.liveRegion.remove(),
a.navigation && a.navigation.$nextEl && (e = a.navigation.$nextEl),
a.navigation && a.navigation.$prevEl && (t = a.navigation.$prevEl),
e && e.off("keydown", a.a11y.onEnterKey),
t && t.off("keydown", a.a11y.onEnterKey),
a.pagination &&
a.params.pagination.clickable &&
a.pagination.bullets &&
a.pagination.bullets.length &&
a.pagination.$el.off(
"keydown",
"." + a.params.pagination.bulletClass,
a.a11y.onEnterKey
);
},
},
F = {
init: function () {
var e = this;
if (e.params.history) {
if (!ee.history || !ee.history.pushState)
return (
(e.params.history.enabled = !1),
void (e.params.hashNavigation.enabled = !0)
);
var t = e.history;
(t.initialized = !0),
(t.paths = F.getPathValues()),
(t.paths.key || t.paths.value) &&
(t.scrollToSlide(0, t.paths.value, e.params.runCallbacksOnInit),
e.params.history.replaceState ||
ee.addEventListener(
"popstate",
e.history.setHistoryPopState
));
}
},
destroy: function () {
this.params.history.replaceState ||
ee.removeEventListener("popstate", this.history.setHistoryPopState);
},
setHistoryPopState: function () {
(this.history.paths = F.getPathValues()),
this.history.scrollToSlide(
this.params.speed,
this.history.paths.value,
!1
);
},
getPathValues: function () {
var e = ee.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) {
if (this.history.initialized && this.params.history.enabled) {
var a = this.slides.eq(t),
i = F.slugify(a.attr("data-history"));
ee.location.pathname.includes(e) || (i = e + "/" + i);
var s = ee.history.state;
(s && s.value === i) ||
(this.params.history.replaceState
? ee.history.replaceState({ value: i }, null, i)
: ee.history.pushState({ value: i }, null, i));
}
},
slugify: function (e) {
return e
.toString()
.replace(/\s+/g, "-")
.replace(/[^\w-]+/g, "")
.replace(/--+/g, "-")
.replace(/^-+/, "")
.replace(/-+$/, "");
},
scrollToSlide: function (e, t, a) {
var i = this;
if (t)
for (var s = 0, r = i.slides.length; s < r; s += 1) {
var n = i.slides.eq(s);
if (
F.slugify(n.attr("data-history")) === t &&
!n.hasClass(i.params.slideDuplicateClass)
) {
var o = n.index();
i.slideTo(o, e, a);
}
}
else i.slideTo(0, e, a);
},
},
R = {
onHashCange: function () {
var e = this,
t = f.location.hash.replace("#", "");
if (t !== e.slides.eq(e.activeIndex).attr("data-hash")) {
var a = e.$wrapperEl
.children("." + e.params.slideClass + '[data-hash="' + t + '"]')
.index();
if (void 0 === a) return;
e.slideTo(a);
}
},
setHash: function () {
var e = this;
if (e.hashNavigation.initialized && e.params.hashNavigation.enabled)
if (
e.params.hashNavigation.replaceState &&
ee.history &&
ee.history.replaceState
)
ee.history.replaceState(
null,
null,
"#" + e.slides.eq(e.activeIndex).attr("data-hash") || ""
);
else {
var t = e.slides.eq(e.activeIndex),
a = t.attr("data-hash") || t.attr("data-history");
f.location.hash = a || "";
}
},
init: function () {
var e = this;
if (
!(
!e.params.hashNavigation.enabled ||
(e.params.history && e.params.history.enabled)
)
) {
e.hashNavigation.initialized = !0;
var t = f.location.hash.replace("#", "");
if (t)
for (var a = 0, i = e.slides.length; a < i; a += 1) {
var s = e.slides.eq(a);
if (
(s.attr("data-hash") || s.attr("data-history")) === t &&
!s.hasClass(e.params.slideDuplicateClass)
) {
var r = s.index();
e.slideTo(r, 0, e.params.runCallbacksOnInit, !0);
}
}
e.params.hashNavigation.watchState &&
I(ee).on("hashchange", e.hashNavigation.onHashCange);
}
},
destroy: function () {
this.params.hashNavigation.watchState &&
I(ee).off("hashchange", this.hashNavigation.onHashCange);
},
},
q = {
run: function () {
var e = this,
t = e.slides.eq(e.activeIndex),
a = e.params.autoplay.delay;
t.attr("data-swiper-autoplay") &&
(a = t.attr("data-swiper-autoplay") || e.params.autoplay.delay),
clearTimeout(e.autoplay.timeout),
(e.autoplay.timeout = te.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"));
}, a));
},
start: function () {
var e = this;
return (
void 0 === e.autoplay.timeout &&
!e.autoplay.running &&
((e.autoplay.running = !0),
e.emit("autoplayStart"),
e.autoplay.run(),
!0)
);
},
stop: function () {
var e = this;
return (
!!e.autoplay.running &&
void 0 !== e.autoplay.timeout &&
(e.autoplay.timeout &&
(clearTimeout(e.autoplay.timeout), (e.autoplay.timeout = void 0)),
(e.autoplay.running = !1),
e.emit("autoplayStop"),
!0)
);
},
pause: function (e) {
var t = this;
t.autoplay.running &&
(t.autoplay.paused ||
(t.autoplay.timeout && clearTimeout(t.autoplay.timeout),
(t.autoplay.paused = !0),
0 !== e && t.params.autoplay.waitForTransition
? (t.$wrapperEl[0].addEventListener(
"transitionend",
t.autoplay.onTransitionEnd
),
t.$wrapperEl[0].addEventListener(
"webkitTransitionEnd",
t.autoplay.onTransitionEnd
))
: ((t.autoplay.paused = !1), t.autoplay.run())));
},
},
W = {
setTranslate: function () {
for (var e = this, t = e.slides, a = 0; a < t.length; a += 1) {
var i = e.slides.eq(a),
s = -i[0].swiperSlideOffset;
e.params.virtualTranslate || (s -= e.translate);
var r = 0;
e.isHorizontal() || ((r = s), (s = 0));
var n = e.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, " + r + "px, 0px)"
);
}
},
setTransition: function (e) {
var a = this,
t = a.slides,
i = a.$wrapperEl;
if ((t.transition(e), a.params.virtualTranslate && 0 !== e)) {
var s = !1;
t.transitionEnd(function () {
if (!s && a && !a.destroyed) {
(s = !0), (a.animating = !1);
for (
var e = ["webkitTransitionEnd", "transitionend"], t = 0;
t < e.length;
t += 1
)
i.trigger(e[t]);
}
});
}
},
},
j = {
setTranslate: function () {
var e,
t = this,
a = t.$el,
i = t.$wrapperEl,
s = t.slides,
r = t.width,
n = t.height,
o = t.rtlTranslate,
l = t.size,
d = t.params.cubeEffect,
p = t.isHorizontal(),
c = t.virtual && t.params.virtual.enabled,
u = 0;
d.shadow &&
(p
? (0 === (e = i.find(".swiper-cube-shadow")).length &&
((e = I('')),
i.append(e)),
e.css({ height: r + "px" }))
: 0 === (e = a.find(".swiper-cube-shadow")).length &&
((e = I('')),
a.append(e)));
for (var h = 0; h < s.length; h += 1) {
var v = s.eq(h),
f = h;
c && (f = parseInt(v.attr("data-swiper-slide-index"), 10));
var m = 90 * f,
g = Math.floor(m / 360);
o && ((m = -m), (g = Math.floor(-m / 360)));
var b = Math.max(Math.min(v[0].progress, 1), -1),
w = 0,
y = 0,
x = 0;
f % 4 == 0
? ((w = 4 * -g * l), (x = 0))
: (f - 1) % 4 == 0
? ((w = 0), (x = 4 * -g * l))
: (f - 2) % 4 == 0
? ((w = l + 4 * g * l), (x = l))
: (f - 3) % 4 == 0 && ((w = -l), (x = 3 * l + 4 * l * g)),
o && (w = -w),
p || ((y = w), (w = 0));
var T =
"rotateX(" +
(p ? 0 : -m) +
"deg) rotateY(" +
(p ? m : 0) +
"deg) translate3d(" +
w +
"px, " +
y +
"px, " +
x +
"px)";
if (
(b <= 1 &&
-1 < b &&
((u = 90 * f + 90 * b), o && (u = 90 * -f - 90 * b)),
v.transform(T),
d.slideShadows)
) {
var E = p
? v.find(".swiper-slide-shadow-left")
: v.find(".swiper-slide-shadow-top"),
S = p
? v.find(".swiper-slide-shadow-right")
: v.find(".swiper-slide-shadow-bottom");
0 === E.length &&
((E = I(
''
)),
v.append(E)),
0 === S.length &&
((S = I(
''
)),
v.append(S)),
E.length && (E[0].style.opacity = Math.max(-b, 0)),
S.length && (S[0].style.opacity = Math.max(b, 0));
}
}
if (
(i.css({
"-webkit-transform-origin": "50% 50% -" + l / 2 + "px",
"-moz-transform-origin": "50% 50% -" + l / 2 + "px",
"-ms-transform-origin": "50% 50% -" + l / 2 + "px",
"transform-origin": "50% 50% -" + l / 2 + "px",
}),
d.shadow)
)
if (p)
e.transform(
"translate3d(0px, " +
(r / 2 + d.shadowOffset) +
"px, " +
-r / 2 +
"px) rotateX(90deg) rotateZ(0deg) scale(" +
d.shadowScale +
")"
);
else {
var C = Math.abs(u) - 90 * Math.floor(Math.abs(u) / 90),
M =
1.5 -
(Math.sin((2 * C * Math.PI) / 360) / 2 +
Math.cos((2 * C * Math.PI) / 360) / 2),
P = d.shadowScale,
k = d.shadowScale / M,
z = d.shadowOffset;
e.transform(
"scale3d(" +
P +
", 1, " +
k +
") translate3d(0px, " +
(n / 2 + z) +
"px, " +
-n / 2 / k +
"px) rotateX(-90deg)"
);
}
var $ = ie.isSafari || ie.isUiWebView ? -l / 2 : 0;
i.transform(
"translate3d(0px,0," +
$ +
"px) rotateX(" +
(t.isHorizontal() ? 0 : u) +
"deg) rotateY(" +
(t.isHorizontal() ? -u : 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);
},
},
U = {
setTranslate: function () {
for (
var e = this, t = e.slides, a = e.rtlTranslate, i = 0;
i < t.length;
i += 1
) {
var s = t.eq(i),
r = s[0].progress;
e.params.flipEffect.limitRotation &&
(r = Math.max(Math.min(s[0].progress, 1), -1));
var n = -180 * r,
o = 0,
l = -s[0].swiperSlideOffset,
d = 0;
if (
(e.isHorizontal()
? a && (n = -n)
: ((d = l), (o = -n), (n = l = 0)),
(s[0].style.zIndex = -Math.abs(Math.round(r)) + t.length),
e.params.flipEffect.slideShadows)
) {
var p = e.isHorizontal()
? s.find(".swiper-slide-shadow-left")
: s.find(".swiper-slide-shadow-top"),
c = e.isHorizontal()
? s.find(".swiper-slide-shadow-right")
: s.find(".swiper-slide-shadow-bottom");
0 === p.length &&
((p = I(
''
)),
s.append(p)),
0 === c.length &&
((c = I(
''
)),
s.append(c)),
p.length && (p[0].style.opacity = Math.max(-r, 0)),
c.length && (c[0].style.opacity = Math.max(r, 0));
}
s.transform(
"translate3d(" +
l +
"px, " +
d +
"px, 0px) rotateX(" +
o +
"deg) rotateY(" +
n +
"deg)"
);
}
},
setTransition: function (e) {
var a = this,
t = a.slides,
i = a.activeIndex,
s = a.$wrapperEl;
if (
(t
.transition(e)
.find(
".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left"
)
.transition(e),
a.params.virtualTranslate && 0 !== e)
) {
var r = !1;
t.eq(i).transitionEnd(function () {
if (!r && a && !a.destroyed) {
(r = !0), (a.animating = !1);
for (
var e = ["webkitTransitionEnd", "transitionend"], t = 0;
t < e.length;
t += 1
)
s.trigger(e[t]);
}
});
}
},
},
K = {
setTranslate: function () {
for (
var e = this,
t = e.width,
a = e.height,
i = e.slides,
s = e.$wrapperEl,
r = e.slidesSizesGrid,
n = e.params.coverflowEffect,
o = e.isHorizontal(),
l = e.translate,
d = o ? t / 2 - l : a / 2 - l,
p = o ? n.rotate : -n.rotate,
c = n.depth,
u = 0,
h = i.length;
u < h;
u += 1
) {
var v = i.eq(u),
f = r[u],
m = ((d - v[0].swiperSlideOffset - f / 2) / f) * n.modifier,
g = o ? p * m : 0,
b = o ? 0 : p * m,
w = -c * Math.abs(m),
y = o ? 0 : n.stretch * m,
x = o ? n.stretch * m : 0;
Math.abs(x) < 0.001 && (x = 0),
Math.abs(y) < 0.001 && (y = 0),
Math.abs(w) < 0.001 && (w = 0),
Math.abs(g) < 0.001 && (g = 0),
Math.abs(b) < 0.001 && (b = 0);
var T =
"translate3d(" +
x +
"px," +
y +
"px," +
w +
"px) rotateX(" +
b +
"deg) rotateY(" +
g +
"deg)";
if (
(v.transform(T),
(v[0].style.zIndex = 1 - Math.abs(Math.round(m))),
n.slideShadows)
) {
var E = o
? v.find(".swiper-slide-shadow-left")
: v.find(".swiper-slide-shadow-top"),
S = o
? v.find(".swiper-slide-shadow-right")
: v.find(".swiper-slide-shadow-bottom");
0 === E.length &&
((E = I(
''
)),
v.append(E)),
0 === S.length &&
((S = I(
''
)),
v.append(S)),
E.length && (E[0].style.opacity = 0 < m ? m : 0),
S.length && (S[0].style.opacity = 0 < -m ? -m : 0);
}
}
(ae.pointerEvents || ae.prefixedPointerEvents) &&
(s[0].style.perspectiveOrigin = d + "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);
},
},
_ = {
init: function () {
var e = this,
t = e.params.thumbs,
a = e.constructor;
t.swiper instanceof a
? ((e.thumbs.swiper = t.swiper),
te.extend(e.thumbs.swiper.originalParams, {
watchSlidesProgress: !0,
slideToClickedSlide: !1,
}),
te.extend(e.thumbs.swiper.params, {
watchSlidesProgress: !0,
slideToClickedSlide: !1,
}))
: te.isObject(t.swiper) &&
((e.thumbs.swiper = new a(
te.extend({}, t.swiper, {
watchSlidesVisibility: !0,
watchSlidesProgress: !0,
slideToClickedSlide: !1,
})
)),
(e.thumbs.swiperCreated = !0)),
e.thumbs.swiper.$el.addClass(e.params.thumbs.thumbsContainerClass),
e.thumbs.swiper.on("tap", e.thumbs.onThumbClick);
},
onThumbClick: function () {
var e = this,
t = e.thumbs.swiper;
if (t) {
var a = t.clickedIndex,
i = t.clickedSlide;
if (
!(
(i && I(i).hasClass(e.params.thumbs.slideThumbActiveClass)) ||
null == a
)
) {
var s;
if (
((s = t.params.loop
? parseInt(
I(t.clickedSlide).attr("data-swiper-slide-index"),
10
)
: a),
e.params.loop)
) {
var r = e.activeIndex;
e.slides.eq(r).hasClass(e.params.slideDuplicateClass) &&
(e.loopFix(),
(e._clientLeft = e.$wrapperEl[0].clientLeft),
(r = e.activeIndex));
var n = e.slides
.eq(r)
.prevAll('[data-swiper-slide-index="' + s + '"]')
.eq(0)
.index(),
o = e.slides
.eq(r)
.nextAll('[data-swiper-slide-index="' + s + '"]')
.eq(0)
.index();
s = void 0 === n ? o : void 0 === o ? n : o - r < r - n ? o : n;
}
e.slideTo(s);
}
}
},
update: function (e) {
var t = this,
a = t.thumbs.swiper;
if (a) {
var i =
"auto" === a.params.slidesPerView
? a.slidesPerViewDynamic()
: a.params.slidesPerView;
if (t.realIndex !== a.realIndex) {
var s,
r = a.activeIndex;
if (a.params.loop) {
a.slides.eq(r).hasClass(a.params.slideDuplicateClass) &&
(a.loopFix(),
(a._clientLeft = a.$wrapperEl[0].clientLeft),
(r = a.activeIndex));
var n = a.slides
.eq(r)
.prevAll('[data-swiper-slide-index="' + t.realIndex + '"]')
.eq(0)
.index(),
o = a.slides
.eq(r)
.nextAll('[data-swiper-slide-index="' + t.realIndex + '"]')
.eq(0)
.index();
s =
void 0 === n
? o
: void 0 === o
? n
: o - r == r - n
? r
: o - r < r - n
? o
: n;
} else s = t.realIndex;
a.visibleSlidesIndexes &&
a.visibleSlidesIndexes.indexOf(s) < 0 &&
(a.params.centeredSlides
? (s =
r < s
? s - Math.floor(i / 2) + 1
: s + Math.floor(i / 2) - 1)
: r < s && (s = s - i + 1),
a.slideTo(s, e ? 0 : void 0));
}
var l = 1,
d = t.params.thumbs.slideThumbActiveClass;
if (
(1 < t.params.slidesPerView &&
!t.params.centeredSlides &&
(l = t.params.slidesPerView),
a.slides.removeClass(d),
a.params.loop || a.params.virtual)
)
for (var p = 0; p < l; p += 1)
a.$wrapperEl
.children(
'[data-swiper-slide-index="' + (t.realIndex + p) + '"]'
)
.addClass(d);
else
for (var c = 0; c < l; c += 1)
a.slides.eq(t.realIndex + c).addClass(d);
}
},
},
Z = [
E,
S,
C,
M,
k,
$,
D,
{
name: "mousewheel",
params: {
mousewheel: {
enabled: !1,
releaseOnEdges: !1,
invert: !1,
forceToAxis: !1,
sensitivity: 1,
eventsTarged: "container",
},
},
create: function () {
var e = this;
te.extend(e, {
mousewheel: {
enabled: !1,
enable: O.enable.bind(e),
disable: O.disable.bind(e),
handle: O.handle.bind(e),
handleMouseEnter: O.handleMouseEnter.bind(e),
handleMouseLeave: O.handleMouseLeave.bind(e),
lastScrollTime: te.now(),
},
});
},
on: {
init: function () {
this.params.mousewheel.enabled && this.mousewheel.enable();
},
destroy: function () {
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 () {
var e = this;
te.extend(e, {
navigation: {
init: A.init.bind(e),
update: A.update.bind(e),
destroy: A.destroy.bind(e),
onNextClick: A.onNextClick.bind(e),
onPrevClick: A.onPrevClick.bind(e),
},
});
},
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,
a = this,
i = a.navigation,
s = i.$nextEl,
r = i.$prevEl;
!a.params.navigation.hideOnClick ||
I(e.target).is(r) ||
I(e.target).is(s) ||
(s
? (t = s.hasClass(a.params.navigation.hiddenClass))
: r && (t = r.hasClass(a.params.navigation.hiddenClass)),
!0 === t
? a.emit("navigationShow", a)
: a.emit("navigationHide", a),
s && s.toggleClass(a.params.navigation.hiddenClass),
r && r.toggleClass(a.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 () {
var e = this;
te.extend(e, {
pagination: {
init: H.init.bind(e),
render: H.render.bind(e),
update: H.update.bind(e),
destroy: H.destroy.bind(e),
dynamicBulletIndex: 0,
},
});
},
on: {
init: function () {
this.pagination.init(),
this.pagination.render(),
this.pagination.update();
},
activeIndexChange: function () {
this.params.loop
? this.pagination.update()
: 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) {
var t = this;
t.params.pagination.el &&
t.params.pagination.hideOnClick &&
0 < t.pagination.$el.length &&
!I(e.target).hasClass(t.params.pagination.bulletClass) &&
(!0 ===
t.pagination.$el.hasClass(t.params.pagination.hiddenClass)
? t.emit("paginationShow", t)
: t.emit("paginationHide", t),
t.pagination.$el.toggleClass(t.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 () {
var e = this;
te.extend(e, {
scrollbar: {
init: G.init.bind(e),
destroy: G.destroy.bind(e),
updateSize: G.updateSize.bind(e),
setTranslate: G.setTranslate.bind(e),
setTransition: G.setTransition.bind(e),
enableDraggable: G.enableDraggable.bind(e),
disableDraggable: G.disableDraggable.bind(e),
setDragPosition: G.setDragPosition.bind(e),
getPointerPosition: G.getPointerPosition.bind(e),
onDragStart: G.onDragStart.bind(e),
onDragMove: G.onDragMove.bind(e),
onDragEnd: G.onDragEnd.bind(e),
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 () {
te.extend(this, {
parallax: {
setTransform: N.setTransform.bind(this),
setTranslate: N.setTranslate.bind(this),
setTransition: N.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 i = 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,
},
};
"onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out"
.split(" ")
.forEach(function (e) {
t[e] = B[e].bind(i);
}),
te.extend(i, { zoom: t });
var s = 1;
Object.defineProperty(i.zoom, "scale", {
get: function () {
return s;
},
set: function (e) {
if (s !== e) {
var t = i.zoom.gesture.$imageEl
? i.zoom.gesture.$imageEl[0]
: void 0,
a = i.zoom.gesture.$slideEl
? i.zoom.gesture.$slideEl[0]
: void 0;
i.emit("zoomChange", e, t, a);
}
s = 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();
},
},
},
{
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 () {
te.extend(this, {
lazy: {
initialImageLoaded: !1,
load: X.load.bind(this),
loadInSlide: X.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 () {
var e = this;
e.params.lazy.enabled &&
((!e.params.lazy.loadOnTransitionStart &&
(e.params.lazy.loadOnTransitionStart ||
e.lazy.initialImageLoaded)) ||
e.lazy.load());
},
transitionEnd: function () {
this.params.lazy.enabled &&
!this.params.lazy.loadOnTransitionStart &&
this.lazy.load();
},
},
},
{
name: "controller",
params: { controller: { control: void 0, inverse: !1, by: "slide" } },
create: function () {
var e = this;
te.extend(e, {
controller: {
control: e.params.controller.control,
getInterpolateFunction: V.getInterpolateFunction.bind(e),
setTranslate: V.setTranslate.bind(e),
setTransition: V.setTransition.bind(e),
},
});
},
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;
te.extend(t, {
a11y: {
liveRegion: I(
''
),
},
}),
Object.keys(Y).forEach(function (e) {
t.a11y[e] = Y[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 () {
var e = this;
te.extend(e, {
history: {
init: F.init.bind(e),
setHistory: F.setHistory.bind(e),
setHistoryPopState: F.setHistoryPopState.bind(e),
scrollToSlide: F.scrollToSlide.bind(e),
destroy: F.destroy.bind(e),
},
});
},
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
);
},
},
},
{
name: "hash-navigation",
params: {
hashNavigation: { enabled: !1, replaceState: !1, watchState: !1 },
},
create: function () {
var e = this;
te.extend(e, {
hashNavigation: {
initialized: !1,
init: R.init.bind(e),
destroy: R.destroy.bind(e),
setHash: R.setHash.bind(e),
onHashCange: R.onHashCange.bind(e),
},
});
},
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();
},
},
},
{
name: "autoplay",
params: {
autoplay: {
enabled: !1,
delay: 3e3,
waitForTransition: !0,
disableOnInteraction: !0,
stopOnLastSlide: !1,
reverseDirection: !1,
},
},
create: function () {
var t = this;
te.extend(t, {
autoplay: {
running: !1,
paused: !1,
run: q.run.bind(t),
start: q.start.bind(t),
stop: q.stop.bind(t),
pause: q.pause.bind(t),
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();
},
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());
},
destroy: function () {
this.autoplay.running && this.autoplay.stop();
},
},
},
{
name: "effect-fade",
params: { fadeEffect: { crossFade: !1 } },
create: function () {
te.extend(this, {
fadeEffect: {
setTranslate: W.setTranslate.bind(this),
setTransition: W.setTransition.bind(this),
},
});
},
on: {
beforeInit: function () {
var e = this;
if ("fade" === e.params.effect) {
e.classNames.push(e.params.containerModifierClass + "fade");
var t = {
slidesPerView: 1,
slidesPerColumn: 1,
slidesPerGroup: 1,
watchSlidesProgress: !0,
spaceBetween: 0,
virtualTranslate: !0,
};
te.extend(e.params, t), te.extend(e.originalParams, t);
}
},
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 () {
te.extend(this, {
cubeEffect: {
setTranslate: j.setTranslate.bind(this),
setTransition: j.setTransition.bind(this),
},
});
},
on: {
beforeInit: function () {
var e = this;
if ("cube" === e.params.effect) {
e.classNames.push(e.params.containerModifierClass + "cube"),
e.classNames.push(e.params.containerModifierClass + "3d");
var t = {
slidesPerView: 1,
slidesPerColumn: 1,
slidesPerGroup: 1,
watchSlidesProgress: !0,
resistanceRatio: 0,
spaceBetween: 0,
centeredSlides: !1,
virtualTranslate: !0,
};
te.extend(e.params, t), te.extend(e.originalParams, t);
}
},
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 () {
te.extend(this, {
flipEffect: {
setTranslate: U.setTranslate.bind(this),
setTransition: U.setTransition.bind(this),
},
});
},
on: {
beforeInit: function () {
var e = this;
if ("flip" === e.params.effect) {
e.classNames.push(e.params.containerModifierClass + "flip"),
e.classNames.push(e.params.containerModifierClass + "3d");
var t = {
slidesPerView: 1,
slidesPerColumn: 1,
slidesPerGroup: 1,
watchSlidesProgress: !0,
spaceBetween: 0,
virtualTranslate: !0,
};
te.extend(e.params, t), te.extend(e.originalParams, t);
}
},
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 () {
te.extend(this, {
coverflowEffect: {
setTranslate: K.setTranslate.bind(this),
setTransition: K.setTransition.bind(this),
},
});
},
on: {
beforeInit: function () {
var e = this;
"coverflow" === e.params.effect &&
(e.classNames.push(
e.params.containerModifierClass + "coverflow"
),
e.classNames.push(e.params.containerModifierClass + "3d"),
(e.params.watchSlidesProgress = !0),
(e.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: {
swiper: null,
slideThumbActiveClass: "swiper-slide-thumb-active",
thumbsContainerClass: "swiper-container-thumbs",
},
},
create: function () {
te.extend(this, {
thumbs: {
swiper: null,
init: _.init.bind(this),
update: _.update.bind(this),
onThumbClick: _.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 === T.use &&
((T.use = T.Class.use), (T.installModule = T.Class.installModule)),
T.use(Z),
T
);
});
// qled.min.js
!(function i(a, o, r) {
function s(t, e) {
if (!o[t]) {
if (!a[t]) {
var n = "function" == typeof require && require;
if (!e && n) return n(t, !0);
if (c) return c(t, !0);
throw (
(((n = new Error("Cannot find module '" + t + "'")).code =
"MODULE_NOT_FOUND"),
n)
);
}
(n = o[t] = { exports: {} }),
a[t][0].call(
n.exports,
function (e) {
return s(a[t][1][e] || e);
},
n,
n.exports,
i,
a,
o,
r
);
}
return o[t].exports;
}
for (
var c = "function" == typeof require && require, e = 0;
e < r.length;
e++
)
s(r[e]);
return s;
})(
{
1: [
function (e, t, n) {
"use strict";
function k(e, t) {
if (!(e instanceof t))
throw new TypeError("Cannot call a class as a function");
}
function i(e, t) {
for (var n = 0; n < t.length; n++) {
var i = t[n];
(i.enumerable = i.enumerable || !1),
(i.configurable = !0),
"value" in i && (i.writable = !0),
Object.defineProperty(e, i.key, i);
}
}
function B(e, t, n) {
return t && i(e.prototype, t), n && i(e, n), e;
}
function L(e) {
return (
(function (e) {
if (Array.isArray(e)) return a(e);
})(e) ||
(function (e) {
if (
("undefined" != typeof Symbol &&
null != e[Symbol.iterator]) ||
null != e["@@iterator"]
)
return Array.from(e);
})(e) ||
(function (e, t) {
if (e) {
if ("string" == typeof e) return a(e, t);
var n = Object.prototype.toString.call(e).slice(8, -1);
return "Map" ===
(n =
"Object" === n && e.constructor
? e.constructor.name
: n) || "Set" === n
? Array.from(e)
: "Arguments" === n ||
/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)
? a(e, t)
: void 0;
}
})(e) ||
(function () {
throw new TypeError(
"Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
);
})()
);
}
function a(e, t) {
(null == t || t > e.length) && (t = e.length);
for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
return i;
}
!(function () {
var t,
e,
o =
-1 <
document
.getElementsByTagName("html")[0]
.className.indexOf("rtl"),
n =
((e = !(t = [])),
{
add: function (e) {
t.length || window.addEventListener("resize", i),
(e = e) && t.push(e);
},
});
function i() {
e ||
((e = !0),
window.requestAnimationFrame
? window.requestAnimationFrame(a)
: setTimeout(a, 66));
}
function a() {
t.forEach(function (e) {
e();
}),
(e = !1);
}
var r = 768 < window.innerWidth ? 2 : 1,
s = 768 < window.innerWidth ? 2 : 1,
c = !1,
l = 0;
Math.easeInOutQuad = function (e, t, n, i) {
return (e /= i / 2) < 1
? (n / 2) * e * e + t
: (-n / 2) * (--e * (e - 2) - 1) + t;
};
var d = (function () {
function e() {
k(this, e),
(this.floatingWrap = document.getElementsByClassName(
"floating-navigation__wrap"
)[0]),
(this.naviItems = document.getElementsByClassName(
"floating-navigation__menu-item"
)),
(this.sections = document
.getElementById("vd-2024")
.querySelectorAll(".vd-common")),
(this.ticking = !1),
(this.position = 0),
(this.sectionIndex = 0),
this.clickEvent();
}
return (
B(e, [
{
key: "motion",
value: function () {
var t,
i = this;
void 0 !== this.floatingWrap &&
((t = i.floatingWrap.offsetHeight),
L(i.sections)
.map(function (e) {
return Math.round(
window.pageYOffset +
e.getBoundingClientRect().top -
t
);
})
.reduce(function (e, t, n) {
return e <= l && l < t
? void (i.sectionIndex = n - 1)
: t;
}),
L(i.naviItems).forEach(function (e) {
return e.classList.remove("active");
}),
0 !== i.sectionIndex &&
void 0 !== this.naviItems[i.sectionIndex - 1] &&
"#accessories" !==
this.naviItems[i.sectionIndex - 1]
.getElementsByTagName("a")[0]
.getAttribute("href") &&
i.naviItems[i.sectionIndex - 1].classList.add(
"active"
));
},
},
{
key: "clickEvent",
value: function () {
var d, u;
void 0 !== this.floatingWrap &&
((u = (d = this).floatingWrap.offsetHeight),
L(d.naviItems).forEach(function (e) {
var l = e.getElementsByTagName("a")[0];
l.addEventListener("click", function (e) {
e.preventDefault();
var n,
i,
a,
o,
r,
t = l
.getAttribute("href")
.substring(1, l.getAttribute("href").length),
s = L(d.sections).find(function (e) {
return e.getAttribute("id") === t;
}),
e = Math.round(
window.pageYOffset +
s.getBoundingClientRect().top -
u
),
c = s.getElementsByTagName("h2")[0];
c.blur(),
c.setAttribute("tabindex", 0),
(n = document.documentElement),
(e = e + 5),
(i = 500),
(a = n.scrollTop),
(o = e - a),
(r = 0),
(function e() {
r += 20;
var t = Math.easeInOutQuad(r, a, o, i);
(n.scrollTop = t), r < i && setTimeout(e, 20);
})(),
setTimeout(function () {
c.focus();
}, 1250);
});
}),
L(d.sections).forEach(function (e) {
0 !== e.getElementsByTagName("h2").length &&
e
.getElementsByTagName("h2")[0]
.addEventListener("focusout", function (e) {
e.target.removeAttribute("tabindex");
});
}));
},
},
]),
e
);
})(),
u = (function () {
function e() {
k(this, e),
(this.imgs = document
.getElementById("vd-2024")
.getElementsByTagName("img")),
(this.lazyImg = document
.getElementById("vd-2024")
.querySelectorAll(".lazy-img"));
}
return (
B(e, [
{
key: "lazy",
value: function () {
var n;
"IntersectionObserver" in window &&
((n = new IntersectionObserver(
function (e, t) {
e.forEach(function (e) {
e.isIntersecting &&
((e = e.target).classList.contains(
"vd-awards-img"
)
? L(
document.getElementsByClassName(
"vd-awards-img"
)
).forEach(function (e) {
(e.src =
2 === r
? e.getAttribute("data-src-pc")
: e.getAttribute("data-src-mo")),
e.classList.remove("lazy-img"),
e.classList.add("lazy-completed");
})
: ((e.src =
2 === r
? e.getAttribute("data-src-pc")
: e.getAttribute("data-src-mo")),
e.classList.remove("lazy-img"),
e.classList.add("lazy-completed")),
n.unobserve(e));
});
},
{ rootMargin: "50%", threshold: 0 }
)),
this.lazyImg.forEach(function (e) {
n.observe(e);
}));
},
},
{
key: "imgResize",
value: function () {
L(this.imgs).forEach(function (e) {
-1 === e.className.indexOf("lazy-img") &&
null !== e.getAttribute("data-src-pc") &&
null !== e.getAttribute("data-src-mo") &&
(e.src =
2 === r
? e.getAttribute("data-src-pc")
: e.getAttribute("data-src-mo"));
});
},
},
]),
e
);
})(),
m = (function () {
function e() {
k(this, e),
(this.kv = document
.getElementById("vd-2024")
.getElementsByClassName("vd-qled-kv")[0]),
(this.kvCopy1 = this.kv.querySelector(
".vd-kv-cont01 .vd-kv-copy"
)),
(this.textMotion = document
.getElementById("vd-2024")
.getElementsByClassName("vd-header"));
}
return (
B(e, [
{
key: "elementTop",
value: function (e) {
return Math.round(
window.pageYOffset + e.getBoundingClientRect().top
);
},
},
{
key: "elementTrigger",
value: function (e) {
return Math.round(
window.pageYOffset +
e.getBoundingClientRect().top +
0.8 * e.getBoundingClientRect().height
);
},
},
{
key: "scrollMotion",
value: function () {
window.innerHeight;
var e = document.querySelector(
".vd-kv-manifesto .vd-image-wrap"
),
e =
(null !== e && this.elementTop(e),
document.querySelector(
".vd-kv-manifesto .vd-txt-wrap"
));
this.elementTop(e);
},
},
]),
e
);
})(),
p = (function () {
function e() {
k(this, e),
(this.videos = document
.getElementById("vd-2024")
.getElementsByTagName("video")),
(this.options = { threshold: 0.999 }),
(this.videoObserver = []),
this.buttonEvent(),
this.videoClickEvent();
}
return (
B(e, [
{
key: "setting",
value: function () {
L(this.videos).forEach(function (e) {
e.getElementsByTagName("source") &&
L(e.getElementsByTagName("source")).forEach(
function (e) {
return e.remove();
}
);
var t =
2 === r
? e.getAttribute("data-poster-pc")
: e.getAttribute("data-poster-mobile"),
n =
2 === r
? e.getAttribute("data-video-pc")
: e.getAttribute("data-video-mobile"),
i = document.createElement("source"),
a = document.createElement("source");
i.setAttribute("src", n + ".webm"),
i.setAttribute("type", "video/webm"),
a.setAttribute("src", n + ".mp4"),
a.setAttribute("type", "video/mp4"),
e.setAttribute("poster", t),
e.appendChild(i),
e.appendChild(a),
e.load();
});
},
},
{
key: "sectionPlay",
value: function () {
var i = this;
"IntersectionObserver" in window &&
L(i.videos).forEach(function (e, t) {
var n = e.closest(".vd-video-area");
void 0 !== i.videoObserver[t] &&
i.videoObserver[t].unobserve(n),
(i.options.threshold =
window.innerHeight > n.offsetHeight
? 0.85
: 0.25),
(i.videoObserver[t] = new IntersectionObserver(
function (e, t) {
e.forEach(function (e) {
!e.isIntersecting ||
(((e = e.target.querySelector("video"))
.paused ||
e.ended) &&
((e.currentTime = 0),
e.play(),
i.control(e, "play")));
});
},
i.options
)),
i.videoObserver[t].observe(n),
e.addEventListener("ended", function () {
i.control(e, "pause");
});
});
},
},
{
key: "action",
value: function (e, t) {
t = t.classList.contains("vd-btn-play")
? "play"
: "pause";
this.control(e, t), "play" == t ? e.play() : e.pause();
},
},
{
key: "videoClickEvent",
value: function () {
var n = this;
function t(e) {
var t = e.target,
e = "playing" === e.type ? "play" : "pause";
n.control(t, e);
}
L(n.videos).forEach(function (e) {
e.addEventListener("pause", t),
e.addEventListener("playing", t);
});
},
},
{
key: "buttonEvent",
value: function () {
var a = this;
L(a.videos).forEach(function (t) {
var i = t
.closest(".vd-video-wrap")
.getElementsByClassName("vd-btn-control")[0],
n = document
.getElementsByClassName(
"floating-navigation__inner"
)[0]
.getBoundingClientRect().height;
i.addEventListener("click", function () {
a.action(t, i);
}),
i.addEventListener("keyup", function (e) {
var t = window.innerHeight,
n =
window.pageYOffset +
i.getBoundingClientRect().top;
window.scrollTo(0, n - t / 2);
}),
i.addEventListener("focus", function (e) {
var t = window.innerHeight,
t =
window.scrollY +
i.getBoundingClientRect().top -
t / 2;
i.getBoundingClientRect().top < n &&
window.scrollTo(0, t);
}),
i.addEventListener("keydown", function (e) {
"enter" === e.key.toLowerCase() &&
(e.preventDefault(), a.action(t, i));
});
});
},
},
{
key: "control",
value: function (e) {
var t =
1 < arguments.length && void 0 !== arguments[1]
? arguments[1]
: "play",
n = e
.closest(".vd-video-wrap")
.getElementsByClassName("vd-btn-control")[0];
"play" === t
? (n.classList.remove("vd-btn-play"),
n.classList.add("vd-btn-pause"),
setTimeout(function () {
n.setAttribute(
"an-la",
n.getAttribute("an-la").replace("play", "stop")
);
}, 0))
: (n.classList.remove("vd-btn-pause"),
n.classList.add("vd-btn-play"),
setTimeout(function () {
n.setAttribute(
"an-la",
n.getAttribute("an-la").replace("stop", "play")
);
}, 0));
},
},
]),
e
);
})(),
f = (function () {
function e() {
k(this, e),
(this.anchor = document
.getElementById("vd-2024")
.getElementsByClassName("vd-disc-txt")),
(this.discList = document
.getElementById("vd-2024")
.querySelectorAll(".vd-desc-list > li")),
this.move();
}
return (
B(e, [
{
key: "move",
value: function () {
var t = this;
L(t.anchor).forEach(function (i) {
i.addEventListener("click", function (e) {
e.preventDefault(), t.action(i, "click");
}),
i.addEventListener("keyup", function (e) {
var t = window.innerHeight,
n =
window.pageYOffset +
i.getBoundingClientRect().top;
window.scrollTo(0, n - t / 2);
}),
i.addEventListener("keydown", function (e) {
"enter" === e.key.toLowerCase() &&
(e.preventDefault(), t.action(i, "enter"));
});
});
},
},
{
key: "action",
value: function (e, t) {
var n = e
.getAttribute("href")
.substring(1, e.getAttribute("href").length),
i = L(this.discList).find(function (e) {
return -1 < e.getAttribute("id").indexOf(n);
}),
a = document.createElement("a"),
e =
window.pageYOffset +
i.getBoundingClientRect().top -
(0 <
document.getElementsByClassName(
"floating-navigation__inner"
).length
? 300
: 0);
(a.innerHTML = i.innerHTML),
"enter" === t &&
(a.classList.add("focus-visible"),
a.setAttribute("data-focus-visible-added", "")),
a.setAttribute("tabindex", 0),
(i.innerText = ""),
i.appendChild(a),
i.getElementsByTagName("a")[0].focus(),
window.scrollTo(0, e),
i
.getElementsByTagName("a")[0]
.addEventListener("focusout", function () {
i.innerHTML = a.innerHTML;
});
},
},
]),
e
);
})(),
v = (function () {
function e() {
k(this, e),
(this.wrap = document.querySelector(".vd-innovative-wrap")),
(this.items =
this.wrap.querySelectorAll(".innovative-item")),
(this.tabButtons =
this.wrap.querySelectorAll(".ai-innovative-tab")),
this.init();
}
return (
B(e, [
{
key: "init",
value: function () {
this.setTabProperties(0), this.bindEvents();
},
},
{
key: "bindEvents",
value: function () {
var n = this;
Array.from(this.tabButtons).forEach(function (e, t) {
e.addEventListener("click", function () {
return n.setTabProperties(t);
});
});
},
},
{
key: "setMinHeight",
value: function () {
var e =
this.items[
0 < arguments.length && void 0 !== arguments[0]
? arguments[0]
: 0
],
e = Math.round(e.getBoundingClientRect().height);
this.wrap.style.minHeight = "".concat(e, "px");
},
},
{
key: "setTabProperties",
value: function () {
var i =
0 < arguments.length && void 0 !== arguments[0]
? arguments[0]
: 0;
Array.from(this.items).forEach(function (e, t) {
var n = e.querySelector("button"),
e = e.querySelector(".vd-item-inner");
t === i &&
(n.classList.add("active"),
e.setAttribute("aria-hidden", !1),
(e.style.display = "block")),
t !== i &&
(n.classList.remove("active"),
e.setAttribute("aria-hidden", !0),
(e.style.display = "none"));
});
},
},
]),
e
);
})(),
g = (function () {
function e() {
k(this, e),
(this.designWrap = document.getElementById("design")),
(this.designSlide = this.designWrap.getElementsByClassName(
"vd-design-slide-list"
)[0]),
(this.swiperPagination =
this.designWrap.getElementsByClassName(
"swiper-pagination"
)[0]),
(this.swiper = null),
(this.swiperOption = {
init: !1,
slidesPerView: 1,
centeredSlides: !0,
loop: !0,
navigation: {
nextEl: ".vd-design-slide-wrap .swiper-button-next",
prevEl: ".vd-design-slide-wrap .swiper-button-prev",
},
pagination: {
el: this.swiperPagination,
type: "bullets",
clickable: !1,
renderBullet: function (e, t) {
return '\n
\n \n
\n '
);
},
},
a11y: {
enabled: !0,
prevSlideMessage: "Previous Slide",
nextSlideMessage: "Next Slide",
},
}),
this.slide();
}
return (
B(e, [
{
key: "slide",
value: function () {
var t = this,
n = this;
(n.swiper = new Swiper(n.designSlide, n.swiperOption)),
n.swiper.on("init", function () {
new u().lazy();
var e = t.swiper;
n.setPaginationEvent(e), n.a11yPagination(e);
}),
n.swiper.on("transitionStart", function () {
var e = this;
n.a11ySlides(e),
setTimeout(function () {
n.a11yPagination(e), n.a11yNavigation(e);
}, 10);
}),
n.swiper.init();
},
},
{
key: "setPaginationEvent",
value: function (i) {
Array.from(i.pagination.el.children).forEach(function (
e,
t
) {
function n() {
return i.slideToLoop(t, 500);
}
e = e.querySelector("button");
e.addEventListener("click", function () {
n();
}),
e.addEventListener("keydown", function (e) {
"Enter" === e.key && n();
});
});
},
},
{
key: "a11ySlides",
value: function (e) {
var t = e.activeIndex;
Array.from(e.slides).forEach(function (e) {
return e.setAttribute("aria-hidden", "true");
}),
e.slides[t].setAttribute("aria-hidden", "false");
},
},
{
key: "a11yNavigation",
value: function (e) {
var t = e.navigation.prevEl,
e = e.navigation.nextEl;
t.classList.contains("swiper-button-disabled") &&
e.focus(),
e.classList.contains("swiper-button-disabled") &&
t.focus();
},
},
{
key: "a11yPagination",
value: function (e) {
var n = document.querySelector(
".vd-design-slide-wrap h3.blind"
).textContent;
Array.from(e.pagination.el.children).forEach(function (
e,
t
) {
e = e.querySelector("button");
e.setAttribute(
"aria-label",
"".concat(n, " ").concat(t + 1)
),
e.classList.contains(
"swiper-pagination-bullet-active"
) && e.setAttribute("aria-selected", "true"),
e.classList.contains(
"swiper-pagination-bullet-active"
) || e.setAttribute("aria-selected", "false");
});
},
},
]),
e
);
})(),
h = (function () {
function e() {
k(this, e),
(this.productData = _qledProduct),
(this.compareWrap =
document.getElementsByClassName("vd-compare-wrap")[0]),
(this.compareProductWrap =
this.compareWrap.getElementsByClassName(
"vd-compare-product"
)[0]),
(this.compareProductInner =
this.compareProductWrap.getElementsByClassName(
"compare-product-inner"
)[0]),
(this.compareProductList =
this.compareProductInner.getElementsByClassName(
"compare-product-list"
)[0]),
(this.compareTab = document
.getElementsByClassName("vd-compare-tab")[0]
.getElementsByClassName("btn-compare-tab")),
(this.compareSelectItem =
this.compareWrap.getElementsByClassName(
"compare-list-item"
)),
(this.selectBoxList =
this.compareWrap.getElementsByClassName(
"select-list-cont"
)),
(this.selectBoxHiddenList =
this.compareWrap.getElementsByClassName(
"compare-hidden-list"
)),
(this.anchor =
this.compareWrap.getElementsByClassName(
"vd-compare-disc"
)),
(this.discList = document
.getElementById("vd-2024")
.querySelectorAll(".vd-desc-list > li")),
(this.compareDefaultSet = L(_defaultSet)),
(this.compareSelectOption = L(_defaultSet)),
(this.mode = "line-up"),
(this.swiper = null),
(this.swiperOption = {
pc: {
slidesPerView: "auto",
watchSlidesVisibility: !0,
navigation: {
nextEl: ".vd-compare-button-next.swiper-button-next",
prevEl: ".vd-compare-button-prev.swiper-button-prev",
},
a11y: {
enabled: !0,
prevSlideMessage: "Previous Slide",
nextSlideMessage: "Next Slide",
},
},
mobile: {
slidesPerView: 2,
watchSlidesVisibility: !0,
freeMode: !1,
mousewheel: !0,
navigation: {
nextEl: ".vd-compare-button-next.swiper-button-next",
prevEl: ".vd-compare-button-prev.swiper-button-prev",
},
a11y: {
enabled: !0,
prevSlideMessage: "Previous Slide",
nextSlideMessage: "Next Slide",
},
},
}),
(this.productTitleList = _qledProduct),
this.selectboxGrid(),
this.dataGrid(),
this.tab(),
this.selectBoxEvent(),
this.slide(),
this.tooltip(),
this.accessibilityContent(),
this.accessibilityKey(),
this.accessibilityResize(),
this.move();
}
return (
B(e, [
{
key: "productTitleList",
set: function (e) {
var t,
n = [];
for (t in e) n.push(t);
this._productTitleList = n;
},
},
{
key: "resetTarget",
value: function () {
(this.anchor =
this.compareWrap.getElementsByClassName(
"vd-compare-disc"
)),
this.move();
},
},
{
key: "onClickAnchor",
value: function (e, t) {
e.preventDefault(), this.action(t, "click");
},
},
{
key: "onKeyupAnchor",
value: function (e, t) {
var n = window.innerHeight,
t =
window.pageYOffset + t.getBoundingClientRect().top;
window.scrollTo(0, t - n / 2);
},
},
{
key: "onKeydownAnchor",
value: function (e, t) {
"enter" === e.key.toLowerCase() &&
(e.preventDefault(), this.action(t, "enter"));
},
},
{
key: "move",
value: function () {
var n = this;
L(n.anchor).forEach(function (t) {
t.addEventListener("click", function (e) {
return n.onClickAnchor(e, t);
}),
t.addEventListener("keyup", function (e) {
return n.onKeyupAnchor(e, t);
}),
t.addEventListener("keydown", function (e) {
return n.onKeydownAnchor(e, t);
});
});
},
},
{
key: "onMoveSelect",
value: function (e) {
var n = this;
L(
document
.querySelector(".compare-product-list")
.children[e].querySelectorAll(".vd-compare-disc")
).forEach(function (t) {
t.addEventListener("click", function (e) {
return n.onClickAnchor(e, t);
}),
t.addEventListener("keyup", function (e) {
return n.onKeyupAnchor(e, t);
}),
t.addEventListener("keydown", function (e) {
return n.onKeydownAnchor(e, t);
});
});
},
},
{
key: "action",
value: function (e, t) {
var n = e
.getAttribute("href")
.substring(1, e.getAttribute("href").length),
i = L(this.discList).find(function (e) {
return -1 < e.getAttribute("id").indexOf(n);
}),
a = document.createElement("a"),
e =
window.pageYOffset +
i.getBoundingClientRect().top -
(0 <
document.getElementsByClassName(
"floating-navigation__inner"
).length
? 300
: 0);
(a.innerHTML = i.innerHTML),
"enter" === t &&
(a.classList.add("focus-visible"),
a.setAttribute("data-focus-visible-added", "")),
(i.innerText = ""),
a.setAttribute("tabindex", 0),
i.appendChild(a),
i.getElementsByTagName("a")[0].focus(),
window.scrollTo(0, e),
i
.getElementsByTagName("a")[0]
.addEventListener("focusout", function (e) {
i.innerHTML = a.innerHTML;
});
},
},
{
key: "getInnerHTML",
value: function (e) {
if (0 < e.querySelectorAll("a a").length) {
var t = e.querySelectorAll("a a");
return t[t.length - 1].innerHTML;
}
return e.getElementsByTagName("a")[0].innerHTML;
},
},
{
key: "selectboxGrid",
value: function () {
var a = this;
L(a.selectBoxList).forEach(function (n, i) {
var e = document.createElement("ul");
e.classList.add("select-list-inner"),
e.setAttribute("role", "listbox"),
n.appendChild(e),
a._productTitleList.forEach(function (e) {
var t = document.createElement("li");
t.classList.add("select-list-option"),
t.setAttribute("role", "presentation"),
a.compareDefaultSet[i] === e &&
(t.classList.add("on"),
(n.parentElement.previousElementSibling.getElementsByClassName(
"compare-select-text"
)[0].innerText = e)),
(t.innerHTML =
'\n \n "
)),
n.getElementsByTagName("ul")[0].appendChild(t);
}),
n
.querySelector(".select-list-option.on")
.getElementsByTagName("button")[0]
.setAttribute("aria-selected", !0);
}),
L(a.selectBoxHiddenList).forEach(function (n, i) {
a._productTitleList.forEach(function (e) {
var t = document.createElement("option");
(t.innerText = e),
n.appendChild(t),
t.value === a.compareDefaultSet[i] &&
((t.selected = !0),
t.setAttribute("selected", ""));
});
});
},
},
{
key: "dataGrid",
value: function () {
var e,
t = document.createDocumentFragment(),
n = Array.from(
document.querySelectorAll(
".vd-compare-category-list .vd-compare-category-text"
)
).map(function (e) {
return {
title: e.dataset.categoryText.toLowerCase(),
blind: e.firstChild.textContent,
};
});
for (e in (o &&
this.compareProductInner.setAttribute("dir", "rtl"),
this.productData)) {
var i = document.createElement("div"),
a = this.productData[e];
i.classList.add("compare-product-item"),
i.classList.add("swiper-slide");
(i.innerHTML =
'\n
\n "
)),
t.appendChild(i);
}
this.compareProductList.appendChild(t);
},
},
{
key: "itemHeight",
value: function () {
var e =
0 < arguments.length && void 0 !== arguments[0]
? arguments[0]
: "init",
t = this.compareWrap.getElementsByClassName(
"vd-compare-category-item"
),
n = this.compareProductList.getElementsByClassName(
"compare-product-item"
),
i =
this.compareProductList.getElementsByClassName(
"compare-spec-item"
),
a = this.compareWrap.querySelectorAll(
".vd-compare-category-list li"
).length,
o = [],
r = [],
s = [];
"resize" === e &&
(L(t).forEach(function (e) {
return (e.style.height = "");
}),
L(i).forEach(function (e) {
return (e.style.height = "");
})),
L(t).forEach(function (e) {
o.push(e.offsetHeight);
}),
L(n).forEach(function (e, t) {
void 0 === r[t] && (r[t] = []),
L(
e.getElementsByClassName("compare-spec-item")
).forEach(function (e) {
r[t].push(e.offsetHeight);
});
}),
r.push(o),
r.forEach(function (e, t) {
e.forEach(function (e, t) {
(void 0 === s[t] || s[t] <= e) && (s[t] = e);
});
}),
L(t).forEach(function (e, t) {
e.style.height = "".concat(s[t], "px");
}),
L(i).forEach(function (e, t) {
e.style.height = "".concat(s[t % a], "px");
});
},
},
{
key: "tabAction",
value: function (e, t, n) {
var i = this;
(i.compareWrap.querySelector("h3.blind").innerText = t),
L(i.compareTab).forEach(function (e) {
e.classList.contains("on") &&
e.classList.remove("on");
}),
e.classList.add("on"),
1 === n
? i.compareWrap.classList.add("vd-compare-select")
: i.compareWrap.classList.remove(
"vd-compare-select"
),
(i.mode = 1 === n ? "compare" : "line-up"),
"line-up" === i.mode
? (L(
i.compareProductList.getElementsByClassName(
"compare-product-item"
)
).forEach(function (e) {
return e.remove();
}),
i.dataGrid(),
i.itemHeight("init"),
L(i.compareSelectItem).forEach(function (e) {
return e.classList.remove("open");
}),
i.accessibilityKey("tab"))
: ((i.compareSelectOption = L(_defaultSet)),
i.compareDefaultSet.forEach(function (t, e) {
L(
i.compareWrap
.getElementsByClassName("compare-list-item")
[e].getElementsByClassName(
"select-list-option"
)
).forEach(function (e) {
e.classList.remove("on"),
e
.getElementsByTagName("button")[0]
.removeAttribute("aria-selected"),
e
.getElementsByTagName("button")[0]
.getAttribute("data-role-model") === t &&
(e.classList.add("on"),
e
.getElementsByTagName("button")[0]
.setAttribute("aria-selected", !0));
}),
(i.compareWrap.getElementsByClassName(
"compare-select-text"
)[e].innerText = t),
i.selectBlindChange(t, e),
i.selectChange(t, e),
i.compareSelectGrid(t, e);
})),
i.slide(),
i.accessibilityContent(),
i.resetTarget();
},
},
{
key: "tab",
value: function () {
var n = this;
L(n.compareTab).forEach(function (i, t) {
i.addEventListener("click", function (e) {
e.preventDefault();
e = e.target.innerText;
n.tabAction(i, e, t);
}),
i.addEventListener("keyup", function (e) {
var t = window.innerHeight,
n =
window.pageYOffset +
i.getBoundingClientRect().top;
window.scrollTo(0, n - t / 2);
}),
i.addEventListener("keydown", function (e) {
"enter" === e.key.toLowerCase() &&
(e.preventDefault(),
(e = e.target.innerText),
n.tabAction(i, e, t));
});
});
},
},
{
key: "selectBoxEvent",
value: function () {
var s = this;
L(s.compareSelectItem).forEach(function (a, o) {
a.getElementsByClassName(
"btn-compare-select"
)[0].addEventListener("click", function (e) {
e.preventDefault(), e.stopPropagation();
var t = a.closest(".compare-list-item"),
n = s.compareSelectOption[o],
i = L(
a
.getElementsByClassName(
"select-list-inner"
)[0]
.getElementsByTagName("button")
).find(function (e) {
return e.getAttribute("data-role-model") === n;
});
2 === r &&
(-1 < t.className.indexOf("open")
? t.classList.remove("open")
: t.classList.add("open"),
-1 < t.className.indexOf("open")
? e.target.setAttribute("aria-expanded", !0)
: e.target.setAttribute("aria-expanded", !1),
t.classList.contains("open")
? t
.getElementsByClassName(
"compare-select-list"
)[0]
.setAttribute("aria-hidden", !1)
: t
.getElementsByClassName(
"compare-select-list"
)[0]
.setAttribute("aria-hidden", !0),
setTimeout(function () {
i.focus();
}, 0));
});
}),
L(s.compareSelectItem).forEach(function (e, r) {
L(
e.getElementsByClassName("select-list-option")
).forEach(function (o) {
o.getElementsByTagName(
"button"
)[0].addEventListener("click", function (e) {
e.preventDefault(), e.stopPropagation();
var t,
n = this.getAttribute("data-role-model"),
i = this.closest(".compare-select-list"),
a = i.closest(".compare-list-item"),
e = i.getAttribute("data-role-index");
L((t = o).parentElement.children)
.filter(function (e) {
return e != t;
})
.forEach(function (e) {
e.classList.remove("on"),
e
.getElementsByTagName("button")[0]
.removeAttribute("aria-selected");
}),
o.classList.add("on"),
o
.getElementsByTagName("button")[0]
.setAttribute("aria-selected", !0),
a.classList.remove("open"),
(i.previousElementSibling.getElementsByClassName(
"compare-select-text"
)[0].innerText = n),
(s.compareSelectOption[e] = n),
s.selectChange(n, e),
s.selectBlindChange(n, r),
s.compareSelectGrid(n, e),
o
.closest(".compare-select-list")
.previousElementSibling.focus(),
s.onMoveSelect(e);
});
});
}),
L(s.selectBoxHiddenList).forEach(function (e, o) {
e.addEventListener("click", function () {
L(e.getElementsByTagName("option"))
.find(function (e) {
return !0 === e.selected;
})
.focus();
}),
e.addEventListener("change", function (e) {
var t = e.target.getElementsByTagName("option"),
n = e.target.parentElement,
i = e.target.nextElementSibling,
a = e.target.value;
L(t).forEach(function (e) {
e.removeAttribute("selected"),
e.value === a &&
e.setAttribute("selected", "");
}),
n.classList.remove("open"),
(i.getElementsByClassName(
"compare-select-text"
)[0].innerText = a),
s.compareSelectGrid(a, o),
s.selectBlindChange(a, o),
s.onMoveSelect(o);
});
});
},
},
{
key: "selectBlindChange",
value: function (e, t) {
this.compareWrap
.getElementsByClassName("compare-product-item")
[t].getElementsByClassName("blind")[0].innerText = e;
},
},
{
key: "selectChange",
value: function (t, e) {
L(
this.selectBoxHiddenList[e].getElementsByTagName(
"option"
)
).filter(function (e) {
return e.value === t;
})[0].selected = !0;
},
},
{
key: "compareSelectGrid",
value: function (e, t) {
var n = this.productData[e],
i = this.compareWrap.getElementsByClassName(
"compare-product-item"
)[t],
a = i.getElementsByClassName(
"compare-product-card"
)[0],
o = a.getElementsByClassName(
"compare-product-link"
)[0],
r = a
.getElementsByClassName("compare-product-name")[0]
.getElementsByClassName(
"compare-product-txt-link"
)[0],
t = i
.getElementsByClassName("compare-spec-list")[0]
.getElementsByClassName("compare-spec-item"),
i = i
.getElementsByClassName("vd-compare-cta-wrap")[0]
.getElementsByClassName("vd-compare-btn")[0];
(a.getElementsByClassName("blind").innerText = e),
o.setAttribute("href", n.link),
o.setAttribute("aria-label", e),
o.setAttribute("data-modelcode", n.modelCode),
o.setAttribute("data-modelname", n.modelName),
a
.getElementsByClassName("compare-product-img")[0]
.getElementsByTagName("img")[0]
.setAttribute("src", n.img),
r.setAttribute("href", n.link),
r.setAttribute("data-modelcode", n.modelCode),
r.setAttribute("data-modelname", n.modelName),
(r.getElementsByTagName("span")[0].innerText = e),
L(t).forEach(function (e) {
var t = e.getAttribute("data-role-name");
e.getElementsByClassName(
"compare-spec-text"
)[0].innerHTML = n[t];
}),
i.setAttribute("href", n.link),
i.setAttribute(
"aria-label",
"".concat(i.textContent, " ").concat(e)
),
i.setAttribute("data-modelcode", n.modelCode),
i.setAttribute("data-modelname", n.modelName);
},
},
{
key: "slide",
value: function () {
var n = this;
"compare" !== n.mode
? (null !== n.swiper &&
(n.swiper.destroy(), (n.swiper = null)),
(n.swiper = new Swiper(
n.compareProductInner,
n.swiperOption[2 === r ? "pc" : "mobile"]
)),
n.accessibilityContent(),
n.compareProductWrap.classList.remove("prev-item"),
n.compareProductWrap.classList.add("next-item"),
n.swiper.on("reachBeginning", function () {
n.compareProductWrap.classList.remove(
"prev-item"
),
n.compareProductWrap.classList.add("next-item");
}),
n.swiper.on("reachEnd", function () {
n.compareProductWrap.classList.remove(
"next-item"
),
n.compareProductWrap.classList.add("prev-item");
}),
n.swiper.on("transitionEnd", function () {
var e =
n.compareProductWrap.getElementsByClassName(
"swiper-button-prev"
)[0],
t =
n.compareProductWrap.getElementsByClassName(
"swiper-button-next"
)[0];
e.classList.contains("swiper-button-disabled") &&
t.focus(),
t.classList.contains(
"swiper-button-disabled"
) && e.focus(),
n.accessibilityContent();
}))
: null !== n.swiper &&
(n.swiper.destroy(), (n.swiper = null));
},
},
{
key: "tooltipAllClose",
value: function (e) {
var t = this;
L(e).forEach(function (e) {
t.tooltipClose(e);
});
},
},
{
key: "tooltipClose",
value: function (e) {
e.classList.remove("tooltip-click"),
e.nextElementSibling.setAttribute("aria-hidden", !0),
(e.nextElementSibling.hidden = !0);
},
},
{
key: "tooltipAction",
value: function (e) {
var t = this.compareWrap.getElementsByClassName(
"vd-compare-tooltip-btn"
);
-1 === e.className.indexOf("tooltip-click")
? (this.tooltipAllClose(t),
e.classList.add("tooltip-click"),
e.nextElementSibling.setAttribute(
"aria-hidden",
!1
),
(e.nextElementSibling.hidden = !1))
: this.tooltipClose(e);
},
},
{
key: "tooltip",
value: function () {
var n = this,
e = n.compareWrap.getElementsByClassName(
"vd-compare-tooltip-btn"
),
t = n.compareWrap.getElementsByClassName(
"vd-compare-tooltip-close"
),
i = [
"vd-compare-tooltip-layer",
"vd-compare-tooltip-close",
"vd-compare-tooltip-btn",
"vd-compare-tooltip-btn tooltip-click",
"icon-help",
];
L(e).forEach(function (i) {
i.addEventListener("click", function (e) {
e.preventDefault(), n.tooltipAction(i);
}),
i.addEventListener("keyup", function (e) {
var t = window.innerHeight,
n =
window.pageYOffset +
i.getBoundingClientRect().top;
window.scrollTo(0, n - t / 2);
}),
i.addEventListener("keydown", function (e) {
"enter" === e.key.toLowerCase() &&
(e.preventDefault(), n.tooltipAction(i));
});
}),
document.addEventListener("click", function (t) {
void 0 ===
i.find(function (e) {
return e.includes(t.target.className);
}) && n.tooltipAllClose(e);
}),
L(t).forEach(function (n) {
n.addEventListener("click", function (e) {
var t = n
.closest(".vd-compare-category-tooltip")
.getElementsByClassName(
"vd-compare-tooltip-btn"
)[0];
n.focus(),
setTimeout(function () {
t.focus();
}, 100),
setTimeout(function () {
t.classList.remove("tooltip-click"),
e.target.parentNode.setAttribute(
"aria-hidden",
!0
),
(e.target.parentNode.hidden = !0);
}, 300);
}),
n.addEventListener("keydown", function (e) {
var t = e.key.toLowerCase();
(e.shiftKey && "tab" === t) ||
("tab" === t &&
(e.target.parentNode.previousElementSibling.classList.remove(
"tooltip-click"
),
e.target.parentNode.setAttribute(
"aria-hidden",
!0
),
(e.target.parentNode.hidden = !0)));
});
});
},
},
{
key: "taggingButton",
value: function (e, t) {
this.compareWrap
.getElementsByClassName("btn-compare-select")
[t].setAttribute(
"an-la",
"product compare landing:".concat(e.toLowerCase())
);
},
},
{
key: "accessibilityContent",
value: function () {
var e = this.compareProductList.getElementsByClassName(
"compare-product-item"
);
"compare" === this.mode
? L(e).forEach(function (e) {
e.removeAttribute("tabindex", -1),
e.removeAttribute("aria-hidden", !0),
L(e.querySelectorAll("a, button")).forEach(
function (e) {
e.removeAttribute("tabindex", -1);
}
);
})
: L(e).forEach(function (e) {
-1 === e.className.indexOf("swiper-slide-visible")
? (e.setAttribute("aria-hidden", !0),
L(e.querySelectorAll("a, button")).forEach(
function (e) {
e.setAttribute("tabindex", -1);
}
))
: (e.removeAttribute("aria-hidden", !0),
L(e.querySelectorAll("a, button")).forEach(
function (e) {
e.removeAttribute("tabindex", -1);
}
));
});
},
},
{
key: "accessibilityKey",
value: function () {
var e =
0 < arguments.length && void 0 !== arguments[0]
? arguments[0]
: "init",
i = this,
a = i.compareWrap.getElementsByClassName(
"vd-compare-tooltip-btn"
),
t = i.compareWrap.getElementsByClassName(
"compare-product-link"
),
n =
i.compareWrap.getElementsByClassName(
"vd-compare-btn"
),
o = i.compareWrap.getElementsByClassName(
"vd-compare-button-prev"
)[0],
r = i.compareWrap.getElementsByClassName(
"vd-compare-button-next"
)[0],
s =
i.compareWrap.getElementsByClassName(
"select-list-option"
);
"init" === e &&
L(a).forEach(function (e, t) {
a.length - 1 === t &&
e.addEventListener("keydown", function (e) {
var t = e.key.toLowerCase();
(e.shiftKey && "tab" === t) ||
("tab" === t &&
-1 === o.className.indexOf("disabled") &&
"line-up" === i.mode &&
(e.preventDefault(), o.focus()));
});
}),
L(t).forEach(function (e) {
e.addEventListener("keydown", function (e) {
var t = e.key.toLowerCase(),
n = e.target.parentNode.parentNode;
e.shiftKey &&
"tab" === t &&
null !== n.previousElementSibling &&
"line-up" === i.mode &&
-1 ===
n.previousElementSibling.className.indexOf(
"swiper-slide-visible"
) &&
-1 === o.className.indexOf("disabled") &&
(e.preventDefault(), o.focus());
});
}),
L(n).forEach(function (e) {
e.addEventListener("keydown", function (e) {
var t = e.key.toLowerCase(),
n = e.target.parentNode.parentNode;
(e.shiftKey && "tab" === t) ||
("tab" === t &&
null !== n.nextElementSibling &&
"line-up" === i.mode &&
-1 ===
n.nextElementSibling.className.indexOf(
"swiper-slide-visible"
) &&
-1 === r.className.indexOf("disabled") &&
(e.preventDefault(), r.focus()));
});
}),
o.addEventListener("keydown", function (e) {
var t = e.key.toLowerCase(),
n = L(
i.compareWrap.getElementsByClassName(
"compare-product-item"
)
).filter(function (e) {
return (
-1 <
e.className.indexOf("swiper-slide-visible")
);
})[0];
"line-up" === i.mode &&
(e.shiftKey && "tab" === t
? (e.preventDefault(),
L(a).forEach(function (e, t) {
a.length - 1 === t && e.focus();
}))
: "tab" === t &&
(e.preventDefault(),
n
.getElementsByClassName(
"compare-product-link"
)[0]
.focus()));
}),
r.addEventListener("keydown", function (e) {
var t = e.key.toLowerCase(),
n = (n = L(
i.compareWrap.getElementsByClassName(
"compare-product-item"
)
).filter(function (e) {
return (
-1 <
e.className.indexOf("swiper-slide-visible")
);
}))[n.length - 1];
e.shiftKey &&
"tab" === t &&
"line-up" === i.mode &&
(e.preventDefault(),
n
.getElementsByClassName("vd-compare-btn")[0]
.focus());
}),
L(s).forEach(function (e) {
e.getElementsByTagName(
"button"
)[0].addEventListener("keydown", function (e) {
var t,
n = e.key.toLowerCase(),
i = e.target.parentElement;
"arrowdown" === n
? (e.preventDefault(),
null !== (t = i.nextElementSibling) &&
t.getElementsByTagName("button")[0].focus())
: "arrowup" === n &&
(e.preventDefault(),
null !== (i = i.previousElementSibling) &&
i
.getElementsByTagName("button")[0]
.focus());
});
});
},
},
{
key: "accessibilityResize",
value: function () {
L(this.compareSelectItem).forEach(function (e, t) {
2 === r
? e
.getElementsByClassName("btn-compare-select")[0]
.removeAttribute("aria-hidden")
: e
.getElementsByClassName("btn-compare-select")[0]
.setAttribute("aria-hidden", !0),
2 === r
? e
.getElementsByClassName(
"btn-compare-select"
)[0]
.removeAttribute("tabindex")
: e
.getElementsByClassName(
"btn-compare-select"
)[0]
.setAttribute("tabindex", -1),
1 === r && e.classList.remove("open");
}),
L(
this.compareWrap.getElementsByClassName(
"compare-select-list"
)
).forEach(function (e) {
return e.setAttribute("aria-hidden", !0);
}),
L(this.selectBoxHiddenList).forEach(function (e) {
2 === r
? e.setAttribute("aria-hidden", !0)
: e.setAttribute("aria-hidden", !1),
2 === r
? e.setAttribute("tabindex", -1)
: e.removeAttribute("tabindex");
});
},
},
{
key: "resizeCompare",
value: function () {
this.slide(), this.accessibilityResize();
},
},
]),
e
);
})(),
y = new d(),
b = new u(),
E = new m(),
w = new p(),
C = new h();
window.addEventListener("scroll", function () {
(l = window.scrollY),
c ||
window.requestAnimationFrame(function () {
y.motion(), E.scrollMotion(), (c = !1);
}),
(c = !0);
}),
n.add(function () {
(r = 768 < window.innerWidth ? 2 : 1) !== s &&
((s = r), b.imgResize(), w.setting(), C.resizeCompare()),
w.sectionPlay(),
C.itemHeight("resize");
}),
window.addEventListener("DOMContentLoaded", function () {
document.documentElement.style.setProperty(
"--scrollbar-width",
window.innerWidth -
document.documentElement.clientWidth +
"px"
),
y.motion(),
b.lazy(),
b.imgResize(),
w.sectionPlay(),
w.setting(),
new v(),
new f(),
new g();
});
})();
},
{},
],
},
{},
[1]
);
Get stock alert
Get alert when this item is back in stock and available to buy, by adding your email to opt into alerts.
Please double check your email address.
We will email you when inventory is added.
Thank you.
Product Registration
Quick and easy product registration.. Receive up-to-date personalized services and tips.
Serial Number/IMEI
Enter your Serial Number/IMEI
QR Scan
Scan the QR code on your products for easy registration.
* This feature can only be supported on Samsung Home Appliances and non-smart B2C monitors.
Enter your Serial Number/IMEI
Quick and easy product registration.
Please enter the 11 or 15- digit number.
This product is already registered. Make sure you entered the right serial number or IMEI.
iaType
iaSubType
iaCategory
Back view
The serial number and model name are printed on the label located on the lower left side of the device’s exterior, near the front. They are also on a second label, inside the refrigerator compartment on a side wall above the top shelf.
Back view
The serial number and model name are printed on the label located on the lower left side of the device’s exterior, near the front. They are also on a second label, inside the refrigerator compartment on a side wall above the top shelf.
Product registration is almost complete!!
You've entered a valid S/N or IMEI. Now select the model of your product.
Suggested Searches
No result. Please try again.
Galaxy Book3 Ultra
SM-G996BZKGEUA
Serial Number: R3CR508WNAH
The device you are currently using does not support the camera function.