Samsung VXT
Create, Connect & Capture
The VXT Portal homepage is displayed on the monitor. A woman clicks
on the "Cloud Systems Migration" button and the VXT logo appears.
Introducing VXT 2.1: Explore the new features here!
Award Winning Technology
There are three award logos.
ISE 2024 Best of Show
by AV Technology
ISE 2024 Best of Show
by Installation
2024 Top New Technology
(TNT) Awards
Streamline your
screen
management
Samsung VXT is a cloud-based solution for digital signage, bringing
intuitive content management and remote display management together
in one secure platform. Start a free trial today, and when you’re
ready to take your signage to the next level, deploy it across your
screens instantly.
Choose the cloud and unlock your
business potential
Start a free trial, without hassle
Unlike many on-premise solutions, VXT now allows buyers to
try the solution before purchasing it by requesting a free
trial on the Cloud portal provided by Samsung, which takes
less than 10 minutes.
Versatile screen capability
Samsung VXT – an integrated solution compatible with
all display types, including LCD, LED signage, and hotel TVs
– supports a wide range of setups, from standalone and
outdoor to interactive and beyond.
Power your business to move forward faster
The cloud native structure of Samsung VXT enables businesses
to deploy and update software directly from the cloud portal
without the need to install or update each one individually.
Initial setup is also faster so businesses can stay agile
and flexible to suit their specific needs.
Save fixed server costs
VXT is a more cost-effective solution when compared to
on-premise solutions. You only pay for the license based on
what is specified in your payment plan. Plus, server
management and maintenance are handled by the cloud service
provider, saving physical space, time and money.
As the physical servers fade away, a cloud icon appears in
the center while an icon representing cost savings emerges.
Minimize failures, speed up
recovery time
Samsung VXT breaks applications down into small block
structures that are much more granular than other cloud
native solutions. In the case of an error, the shutdown
range is focused, minimizing failures and maximizing rapid
recovery for peace of mind.
Industry-leading security
Samsung VXT sets a new standard for security in the digital
signage industry by providing the highest level of
protection. With the world's first digital signage solution
to obtain ISO 27701 certification, Samsung ensures the safe
handling and storage of personally identifiable information
(PII).
Free Trial
Versatile Compatibility
Agile Deployment
Lower Cost
Faster Recovery
High-level Protection
Samsung VXT
Content Management
Effortlessly create promotional content
VXT Canvas enables anyone to create content effortlessly and
more intuitively. You can create original content with a
variety of templates and free stock images, even adding
widgets for more dynamic, visually engaging content. As the
use of interactive content for digital displays continues to
increase, VXT Canvas also allows for easy touch content
creation.
Easy, intuitive scheduling and playlist creation
Samsung VXT uses an intuitive drag and drop interface, making
content scheduling and playlist creation simple with just a
few quick clicks. It also allows for adjusting content
schedules and distributing them to connected displays anytime,
without requiring a PC.
Keep content in sync
VXT offers a SyncPlay function, synchronizing all screens
across the system and playing content in line with each
other. Regardless of the server time connected to the
display, VXT synchronizes the internal time across multiple
displays and constantly checks it during content playback to
prevent lag or streaming delay, while also eliminating gaps
as content transitions.
Two displays are promoting the morning menu. As the clock in
the upper left corner approaches 11 o'clock, the displays
are simultaneously switched to advertise the lunch set menu,
and an icon indicates that the two displays are
synchronized.
Customizable
management
with tagging
Samsung VXT introduces a flexible tag structure compared to
the tree-like folder structure typically used by businesses,
enabling easy searching of all data related to a specific
tag. The convenient tag system enables users to manage
content and screens more efficiently, enhancing overall
business operations.
Several tags are applied to the content. When a tag is
selected, other content associated with that tag appears.
Play on
any screen
VXT is compatible with a variety of displays by simply
downloading the VXT Player app via Google Playstore or
launching a Chrome browser to open the platform.
Samsung VXT Remote Management
Remote control in real-time, every time
Samsung VXT provides an intuitive interface with remote
real-time monitoring, screen management and comprehensive
security control.
Additional lock options are available for items such as USB
port, Wi-Fi and Bluetooth connections, networks port access and
remote controllers, even for multiple screens.
Take action before
a problem happens
VXT detects dangerous situations in advance, such as a severe
temperature increase or weak network signal.
By sending a warning email and SMS to the user, it proactively
addresses the issue before it affects any displays while also
ensuring stable content play.
Monthly Energy Report
Monthly Energy Report
Analyze the monthly electricity consumption of your screens,
including a comparison to the previous month.
Brightness Control
Brightness Control
Adjust the brightness settings of the screens to
conserve energy.
Automatic On/Off Timer
Automatic On/Off Timer
Set the automatic on/off timer based on day and
time for your displays.
Holiday Management
Holiday Management
To save energy during holidays, input your schedule in
advance and set your displays to turn off accordingly.
Previous
Next
Advanced functionality for corporate-level management
Samsung VXT offers a host of features that streamline
operations, eliminating common frustrations for enterprise IT
managers.
Samsung VXT PIRS App
Even more solutions for your business needs
Introducing Samsung VXT PIRS App: a brand new, innovative business
platform that allows users to easily discover, install, and
utilize additional solutions tailored to their specific needs.
With VXT PIRS App, partners can generate new business
opportunities by selling their unique apps, while customers can
test a solution and then deploy it to all displays by purchasing
a cost-effective license.
Find vertical-specific custom options
Art Content
VXT Art offers access to a range of incredible art content
by renowned artists, bringing inspiration and elegance to
your surroundings.
POS Integrated Menu Board
With Link My POS, you can integrate your digital menu board
with POS system, allowing for real-time automatic updates
including new menu items and price changes.
Real Estate Listings
Using Ngine Real Estate, you can display a variety of
property listings in database with real-time updates on
prices and photos.
Automotive Sales
Ngine Automotive allows you to easily showcase the model
names, specs, prices, and images of vehicles that are
currently in stock on your displays.
New and improved features update: VXT 2.1
Improved Sync Play, Screen Wall
Improvements in the P and X Series allow users to have the ability to enlarge or duplicate video and send multiple playlists or single playlist to Screen Wall, as well as the ability to configure the video wall screen layout from 2x1 to a maximum 10x10. This can now be configured entirely with Samsung VXT.
Tag Condition/Tag Alias
Users of the P and X Series can now add a Tag to each piece of content in a playlist, with an ‘Allow’ option to make sure the device plays the content with this tag and a ‘Skip’ option to choose what content must not be played, with tags applicable to either Web (URL) or Web (HTML).
Channel Management
This feature of the P and X Series allows users to set multiple content types based on a variety of scenarios.
Tag Explorer
A new Tag Explorer automatically structures and displays tags in a hierarchical structure, making it easy for users to find the content they need.
Content Journey Map
This feature shows the content list that is using the content, the screen list that has published the content, and the workspaces to which the content has been shared.
Chat Bot
The new Chat Bot feature covers questions regarding the Samsung VXT CMS, with X-Series customers provided with a live chat to the Samsung help desk.
The enhancements to Samsung VXT provide businesses with even more tools to deliver dynamic, engaging, and secure digital experiences.
& More!
Nested Playlist
Users will now be able to place a playlist within another playlist, with 1-depth support in the General Playlist.
Advanced Tag/Screen Management
Users of the P and X Series can now import and export Tag sets created in Excel for each workspace and pre-assign tags to each screen when creating an Excel file for Multi-Screen Enrollment.
Advanced Role Management
With VXT 2.1’s Advanced Role Management, those with an Installer role can only add screens and edit the basic information of the screens they have added, while those with a Screen Manager role can add or manage screens, but their content management abilities are limited to those given to such roles only.
Improved Screen Wall
Tag Condition
Channel Management
Tag Explorer
Content Journey Map
Chat Bot
& More!
`
)),
a.append(n)),
n
);
}
return (
Object.keys(y).forEach((t) => {
Object.keys(y[t]).forEach((e) => {
C.prototype[e] = y[t][e];
});
}),
C.use([
function (e) {
let { swiper: n, on: t, emit: i } = e;
const s = $();
let a = null,
r = null;
const l = () => {
n &&
!n.destroyed &&
n.initialized &&
(i("beforeResize"), i("resize"));
},
o = () => {
n && !n.destroyed && n.initialized && i("orientationchange");
};
t("init", () => {
n.params.resizeObserver && void 0 !== s.ResizeObserver
? n &&
!n.destroyed &&
n.initialized &&
(a = new ResizeObserver((i) => {
r = s.requestAnimationFrame(() => {
var { width: e, height: t } = n;
let s = e,
a = t;
i.forEach((e) => {
var {
contentBoxSize: e,
contentRect: t,
target: i,
} = e;
(i && i !== n.el) ||
((s = t ? t.width : (e[0] || e).inlineSize),
(a = t ? t.height : (e[0] || e).blockSize));
}),
(s === e && a === t) || l();
});
})).observe(n.el)
: (s.addEventListener("resize", l),
s.addEventListener("orientationchange", o));
}),
t("destroy", () => {
r && s.cancelAnimationFrame(r),
a && a.unobserve && n.el && (a.unobserve(n.el), (a = null)),
s.removeEventListener("resize", l),
s.removeEventListener("orientationchange", o);
});
},
function (e) {
let { swiper: i, extendParams: t, on: s, emit: a } = e;
function n(e, t) {
void 0 === t && (t = {});
const i = new (l.MutationObserver || l.WebkitMutationObserver)(
(e) => {
var t;
1 === e.length
? a("observerUpdate", e[0])
: ((t = function () {
a("observerUpdate", e[0]);
}),
l.requestAnimationFrame
? l.requestAnimationFrame(t)
: l.setTimeout(t, 0));
}
);
i.observe(e, {
attributes: void 0 === t.attributes || t.attributes,
childList: void 0 === t.childList || t.childList,
characterData: void 0 === t.characterData || t.characterData,
}),
r.push(i);
}
const r = [],
l = $();
t({ observer: !1, observeParents: !1, observeSlideChildren: !1 }),
s("init", () => {
if (i.params.observer) {
if (i.params.observeParents) {
var t = i.$el.parents();
for (let e = 0; e < t.length; e += 1) n(t[e]);
}
n(i.$el[0], { childList: i.params.observeSlideChildren }),
n(i.$wrapperEl[0], { attributes: !1 });
}
}),
s("destroy", () => {
r.forEach((e) => {
e.disconnect();
}),
r.splice(0, r.length);
});
},
]),
C.use([
function (e) {
let t,
{ swiper: y, extendParams: i, on: s, emit: T } = e;
function C(e, t) {
const i = y.params.virtual;
if (i.cache && y.virtual.cache[t]) return y.virtual.cache[t];
const s = i.renderSlide
? z(i.renderSlide.call(y, e, t))
: z(
`
${e}
`
);
return (
s.attr("data-swiper-slide-index") ||
s.attr("data-swiper-slide-index", t),
i.cache && (y.virtual.cache[t] = s),
s
);
}
function r(t) {
const {
slidesPerView: e,
slidesPerGroup: i,
centeredSlides: s,
} = y.params,
{ addSlidesBefore: a, addSlidesAfter: n } = y.params.virtual,
{
from: r,
to: l,
slides: o,
slidesGrid: d,
offset: c,
} = y.virtual;
y.params.cssMode || y.updateActiveIndex();
var p = y.activeIndex || 0;
let h, u, m;
(h = y.rtlTranslate
? "right"
: y.isHorizontal()
? "left"
: "top"),
(m = s
? ((u = Math.floor(e / 2) + i + n), Math.floor(e / 2) + i + a)
: ((u = e + (i - 1) + n), i + a));
const v = Math.max((p || 0) - m, 0),
g = Math.min((p || 0) + u, o.length - 1),
f = (y.slidesGrid[v] || 0) - (y.slidesGrid[0] || 0);
function w() {
y.updateSlides(),
y.updateProgress(),
y.updateSlidesClasses(),
y.lazy && y.params.lazy.enabled && y.lazy.load(),
T("virtualUpdate");
}
if (
(Object.assign(y.virtual, {
from: v,
to: g,
offset: f,
slidesGrid: y.slidesGrid,
}),
r === v && l === g && !t)
)
return (
y.slidesGrid !== d && f !== c && y.slides.css(h, f + "px"),
y.updateProgress(),
void T("virtualUpdate")
);
if (y.params.virtual.renderExternal)
return (
y.params.virtual.renderExternal.call(y, {
offset: f,
from: v,
to: g,
slides: (function () {
const t = [];
for (let e = v; e <= g; e += 1) t.push(o[e]);
return t;
})(),
}),
void (y.params.virtual.renderExternalUpdate
? w()
: T("virtualUpdate"))
);
const b = [],
E = [];
if (t) y.$wrapperEl.find("." + y.params.slideClass).remove();
else
for (let e = r; e <= l; e += 1)
(e < v || e > g) &&
y.$wrapperEl
.find(
`.${y.params.slideClass}[data-swiper-slide-index="${e}"]`
)
.remove();
for (let e = 0; e < o.length; e += 1)
e >= v &&
e <= g &&
(void 0 === l || t
? E.push(e)
: (e > l && E.push(e), e < r && b.push(e)));
E.forEach((e) => {
y.$wrapperEl.append(C(o[e], e));
}),
b
.sort((e, t) => t - e)
.forEach((e) => {
y.$wrapperEl.prepend(C(o[e], e));
}),
y.$wrapperEl.children(".swiper-slide").css(h, f + "px"),
w();
}
i({
virtual: {
enabled: !1,
slides: [],
cache: !0,
renderSlide: null,
renderExternal: null,
renderExternalUpdate: !0,
addSlidesBefore: 0,
addSlidesAfter: 0,
},
}),
(y.virtual = {
cache: {},
from: void 0,
to: void 0,
slides: [],
offset: 0,
slidesGrid: [],
}),
s("beforeInit", () => {
y.params.virtual.enabled &&
((y.virtual.slides = y.params.virtual.slides),
y.classNames.push(
y.params.containerModifierClass + "virtual"
),
(y.params.watchSlidesProgress = !0),
(y.originalParams.watchSlidesProgress = !0),
y.params.initialSlide || r());
}),
s("setTranslate", () => {
y.params.virtual.enabled &&
(y.params.cssMode && !y._immediateVirtual
? (clearTimeout(t),
(t = setTimeout(() => {
r();
}, 100)))
: r());
}),
s("init update resize", () => {
y.params.virtual.enabled &&
y.params.cssMode &&
L(y.wrapperEl, "--swiper-virtual-size", y.virtualSize + "px");
}),
Object.assign(y.virtual, {
appendSlide: function (t) {
if ("object" == typeof t && "length" in t)
for (let e = 0; e < t.length; e += 1)
t[e] && y.virtual.slides.push(t[e]);
else y.virtual.slides.push(t);
r(!0);
},
prependSlide: function (s) {
const a = y.activeIndex;
let e = a + 1,
n = 1;
if (Array.isArray(s)) {
for (let e = 0; e < s.length; e += 1)
s[e] && y.virtual.slides.unshift(s[e]);
(e = a + s.length), (n = s.length);
} else y.virtual.slides.unshift(s);
if (y.params.virtual.cache) {
const s = y.virtual.cache,
a = {};
Object.keys(s).forEach((e) => {
const t = s[e],
i = t.attr("data-swiper-slide-index");
i &&
t.attr("data-swiper-slide-index", parseInt(i, 10) + n),
(a[parseInt(e, 10) + n] = t);
}),
(y.virtual.cache = a);
}
r(!0), y.slideTo(e, 0);
},
removeSlide: function (i) {
if (null != i) {
let t = y.activeIndex;
if (Array.isArray(i))
for (let e = i.length - 1; 0 <= e; --e)
y.virtual.slides.splice(i[e], 1),
y.params.virtual.cache &&
delete y.virtual.cache[i[e]],
i[e] < t && --t,
(t = Math.max(t, 0));
else
y.virtual.slides.splice(i, 1),
y.params.virtual.cache && delete y.virtual.cache[i],
i < t && --t,
(t = Math.max(t, 0));
r(!0), y.slideTo(t, 0);
}
},
removeAllSlides: function () {
(y.virtual.slides = []),
y.params.virtual.cache && (y.virtual.cache = {}),
r(!0),
y.slideTo(0, 0);
},
update: r,
});
},
function (e) {
let { swiper: p, extendParams: t, on: i, emit: h } = e;
const u = S(),
m = $();
function s(t) {
if (p.enabled) {
const i = p["rtlTranslate"];
let e = t;
const s =
(e = e.originalEvent ? e.originalEvent : e).keyCode ||
e.charCode,
a = p.params.keyboard.pageUpDown,
n = a && 33 === s,
r = a && 34 === s,
l = 37 === s,
o = 39 === s,
d = 38 === s,
c = 40 === s;
if (
!p.allowSlideNext &&
((p.isHorizontal() && o) || (p.isVertical() && c) || r)
)
return !1;
if (
!p.allowSlidePrev &&
((p.isHorizontal() && l) || (p.isVertical() && d) || n)
)
return !1;
if (
!(
e.shiftKey ||
e.altKey ||
e.ctrlKey ||
e.metaKey ||
(u.activeElement &&
u.activeElement.nodeName &&
("input" === u.activeElement.nodeName.toLowerCase() ||
"textarea" === u.activeElement.nodeName.toLowerCase()))
)
) {
if (
p.params.keyboard.onlyInViewport &&
(n || r || l || o || d || c)
) {
let t = !1;
if (
0 < p.$el.parents("." + p.params.slideClass).length &&
0 ===
p.$el.parents("." + p.params.slideActiveClass).length
)
return;
const e = p.$el,
s = e[0].clientWidth,
a = e[0].clientHeight,
h = m.innerWidth,
u = m.innerHeight,
n = p.$el.offset(),
r =
(i && (n.left -= p.$el[0].scrollLeft),
[
[n.left, n.top],
[n.left + s, n.top],
[n.left, n.top + a],
[n.left + s, n.top + a],
]);
for (let e = 0; e < r.length; e += 1) {
const i = r[e];
0 <= i[0] &&
i[0] <= h &&
0 <= i[1] &&
i[1] <= u &&
((0 === i[0] && 0 === i[1]) || (t = !0));
}
if (!t) return;
}
p.isHorizontal()
? ((n || r || l || o) &&
(e.preventDefault
? e.preventDefault()
: (e.returnValue = !1)),
(((r || o) && !i) || ((n || l) && i)) && p.slideNext(),
(((n || l) && !i) || ((r || o) && i)) && p.slidePrev())
: ((n || r || d || c) &&
(e.preventDefault
? e.preventDefault()
: (e.returnValue = !1)),
(r || c) && p.slideNext(),
(n || d) && p.slidePrev()),
h("keyPress", s);
}
}
}
function a() {
p.keyboard.enabled ||
(z(u).on("keydown", s), (p.keyboard.enabled = !0));
}
function n() {
p.keyboard.enabled &&
(z(u).off("keydown", s), (p.keyboard.enabled = !1));
}
(p.keyboard = { enabled: !1 }),
t({
keyboard: { enabled: !1, onlyInViewport: !0, pageUpDown: !0 },
}),
i("init", () => {
p.params.keyboard.enabled && a();
}),
i("destroy", () => {
p.keyboard.enabled && n();
}),
Object.assign(p.keyboard, { enable: a, disable: n });
},
function (e) {
let { swiper: d, extendParams: t, on: i, emit: c } = e;
const s = $();
let p;
t({
mousewheel: {
enabled: !1,
releaseOnEdges: !1,
invert: !1,
forceToAxis: !1,
sensitivity: 1,
eventsTarget: "container",
thresholdDelta: null,
thresholdTime: null,
},
}),
(d.mousewheel = { enabled: !1 });
let h,
a = f();
const u = [];
function n() {
d.enabled && (d.mouseEntered = !0);
}
function r() {
d.enabled && (d.mouseEntered = !1);
}
function m(e) {
(d.params.mousewheel.thresholdDelta &&
e.delta < d.params.mousewheel.thresholdDelta) ||
(d.params.mousewheel.thresholdTime &&
f() - a < d.params.mousewheel.thresholdTime) ||
(6 <= e.delta && f() - a < 60) ||
(e.direction < 0
? (d.isEnd && !d.params.loop) ||
d.animating ||
(d.slideNext(), c("scroll", e.raw))
: (d.isBeginning && !d.params.loop) ||
d.animating ||
(d.slidePrev(), c("scroll", e.raw)),
(a = new s.Date().getTime()));
}
function l(s) {
let a = s,
n = !0;
if (d.enabled) {
var r = d.params.mousewheel;
d.params.cssMode && a.preventDefault();
let e = d.$el;
if (
("container" !== d.params.mousewheel.eventsTarget &&
(e = z(d.params.mousewheel.eventsTarget)),
!d.mouseEntered &&
!e[0].contains(a.target) &&
!r.releaseOnEdges)
)
return !0;
a.originalEvent && (a = a.originalEvent);
let t = 0;
var l = d.rtlTranslate ? -1 : 1,
o = (function (e) {
let t = 0,
i = 0,
s = 0,
a = 0;
return (
"detail" in e && (i = e.detail),
"wheelDelta" in e && (i = -e.wheelDelta / 120),
"wheelDeltaY" in e && (i = -e.wheelDeltaY / 120),
"wheelDeltaX" in e && (t = -e.wheelDeltaX / 120),
"axis" in e &&
e.axis === e.HORIZONTAL_AXIS &&
((t = i), (i = 0)),
(s = 10 * t),
(a = 10 * i),
"deltaY" in e && (a = e.deltaY),
"deltaX" in e && (s = e.deltaX),
e.shiftKey && !s && ((s = a), (a = 0)),
(s || a) &&
e.deltaMode &&
(1 === e.deltaMode
? ((s *= 40), (a *= 40))
: ((s *= 800), (a *= 800))),
s && !t && (t = s < 1 ? -1 : 1),
a && !i && (i = a < 1 ? -1 : 1),
{ spinX: t, spinY: i, pixelX: s, pixelY: a }
);
})(a);
if (r.forceToAxis)
if (d.isHorizontal()) {
if (!(Math.abs(o.pixelX) > Math.abs(o.pixelY))) return !0;
t = -o.pixelX * l;
} else {
if (!(Math.abs(o.pixelY) > Math.abs(o.pixelX))) return !0;
t = -o.pixelY;
}
else
t =
Math.abs(o.pixelX) > Math.abs(o.pixelY)
? -o.pixelX * l
: -o.pixelY;
if (0 === t) return !0;
r.invert && (t = -t);
let i = d.getTranslate() + t * r.sensitivity;
if (
((i = i >= d.minTranslate() ? d.minTranslate() : i) <=
d.maxTranslate() && (i = d.maxTranslate()),
(n =
!!d.params.loop ||
!(i === d.minTranslate() || i === d.maxTranslate())) &&
d.params.nested &&
a.stopPropagation(),
d.params.freeMode && d.params.freeMode.enabled)
) {
const s = {
time: f(),
delta: Math.abs(t),
direction: Math.sign(t),
},
n =
h &&
s.time < h.time + 500 &&
s.delta <= h.delta &&
s.direction === h.direction;
if (!n) {
(h = void 0), d.params.loop && d.loopFix();
let e = d.getTranslate() + t * r.sensitivity;
const z = d.isBeginning,
f = d.isEnd;
if (
((e = e >= d.minTranslate() ? d.minTranslate() : e) <=
d.maxTranslate() && (e = d.maxTranslate()),
d.setTransition(0),
d.setTranslate(e),
d.updateProgress(),
d.updateActiveIndex(),
d.updateSlidesClasses(),
((!z && d.isBeginning) || (!f && d.isEnd)) &&
d.updateSlidesClasses(),
d.params.freeMode.sticky)
) {
clearTimeout(p),
(p = void 0),
15 <= u.length && u.shift();
const a = u.length ? u[u.length - 1] : void 0,
n = u[0];
if (
(u.push(s),
a && (s.delta > a.delta || s.direction !== a.direction))
)
u.splice(0);
else if (
15 <= u.length &&
s.time - n.time < 500 &&
1 <= n.delta - s.delta &&
s.delta <= 6
) {
const a = 0 < t ? 0.8 : 0.2;
(h = s),
u.splice(0),
(p = x(() => {
d.slideToClosest(d.params.speed, !0, void 0, a);
}, 0));
}
p =
p ||
x(() => {
(h = s),
u.splice(0),
d.slideToClosest(d.params.speed, !0, void 0, 0.5);
}, 500);
}
if (
(n || c("scroll", a),
d.params.autoplay &&
d.params.autoplayDisableOnInteraction &&
d.autoplay.stop(),
e === d.minTranslate() || e === d.maxTranslate())
)
return !0;
}
} else {
const a = {
time: f(),
delta: Math.abs(t),
direction: Math.sign(t),
raw: s,
},
n =
(2 <= u.length && u.shift(),
u.length ? u[u.length - 1] : void 0);
if (
(u.push(a),
(!n ||
a.direction !== n.direction ||
a.delta > n.delta ||
a.time > n.time + 150) &&
m(a),
(function (e) {
var t = d.params.mousewheel;
if (e.direction < 0) {
if (d.isEnd && !d.params.loop && t.releaseOnEdges)
return 1;
} else if (
d.isBeginning &&
!d.params.loop &&
t.releaseOnEdges
)
return 1;
})(a))
)
return !0;
}
return (
a.preventDefault ? a.preventDefault() : (a.returnValue = !1),
!1
);
}
}
function o(e) {
let t = d.$el;
(t =
"container" !== d.params.mousewheel.eventsTarget
? z(d.params.mousewheel.eventsTarget)
: t)[e]("mouseenter", n),
t[e]("mouseleave", r),
t[e]("wheel", l);
}
function v() {
return d.params.cssMode
? (d.wrapperEl.removeEventListener("wheel", l), !0)
: !d.mousewheel.enabled &&
(o("on"), (d.mousewheel.enabled = !0));
}
function g() {
return d.params.cssMode
? (d.wrapperEl.addEventListener(event, l), !0)
: !!d.mousewheel.enabled &&
(o("off"), !(d.mousewheel.enabled = !1));
}
i("init", () => {
!d.params.mousewheel.enabled && d.params.cssMode && g(),
d.params.mousewheel.enabled && v();
}),
i("destroy", () => {
d.params.cssMode && v(), d.mousewheel.enabled && g();
}),
Object.assign(d.mousewheel, { enable: v, disable: g });
},
function (e) {
let { swiper: n, extendParams: t, on: i, emit: r } = e;
function s(e) {
let t;
return (
e &&
((t = z(e)),
n.params.uniqueNavElements &&
"string" == typeof e &&
1 < t.length &&
1 === n.$el.find(e).length &&
(t = n.$el.find(e))),
t
);
}
function a(e, t) {
var i = n.params.navigation;
e &&
0 < e.length &&
(e[t ? "addClass" : "removeClass"](i.disabledClass),
e[0] && "BUTTON" === e[0].tagName && (e[0].disabled = t),
n.params.watchOverflow &&
n.enabled &&
e[n.isLocked ? "addClass" : "removeClass"](i.lockClass));
}
function l() {
var e, t;
n.params.loop ||
(({ $nextEl: e, $prevEl: t } = n.navigation),
a(t, n.isBeginning && !n.params.rewind),
a(e, n.isEnd && !n.params.rewind));
}
function o(e) {
e.preventDefault(),
(n.isBeginning && !n.params.loop && !n.params.rewind) ||
(n.slidePrev(), r("navigationPrev"));
}
function d(e) {
e.preventDefault(),
(n.isEnd && !n.params.loop && !n.params.rewind) ||
(n.slideNext(), r("navigationNext"));
}
function c() {
var e = n.params.navigation;
if (
((n.params.navigation = M(
n,
n.originalParams.navigation,
n.params.navigation,
{ nextEl: "swiper-button-next", prevEl: "swiper-button-prev" }
)),
e.nextEl || e.prevEl)
) {
const t = s(e.nextEl),
i = s(e.prevEl);
t && 0 < t.length && t.on("click", d),
i && 0 < i.length && i.on("click", o),
Object.assign(n.navigation, {
$nextEl: t,
nextEl: t && t[0],
$prevEl: i,
prevEl: i && i[0],
}),
n.enabled ||
(t && t.addClass(e.lockClass),
i && i.addClass(e.lockClass));
}
}
function p() {
const { $nextEl: e, $prevEl: t } = n.navigation;
e &&
e.length &&
(e.off("click", d),
e.removeClass(n.params.navigation.disabledClass)),
t &&
t.length &&
(t.off("click", o),
t.removeClass(n.params.navigation.disabledClass));
}
t({
navigation: {
nextEl: null,
prevEl: null,
hideOnClick: !1,
disabledClass: "swiper-button-disabled",
hiddenClass: "swiper-button-hidden",
lockClass: "swiper-button-lock",
navigationDisabledClass: "swiper-navigation-disabled",
},
}),
(n.navigation = {
nextEl: null,
$nextEl: null,
prevEl: null,
$prevEl: null,
}),
i("init", () => {
!1 === n.params.navigation.enabled ? h() : (c(), l());
}),
i("toEdge fromEdge lock unlock", () => {
l();
}),
i("destroy", () => {
p();
}),
i("enable disable", () => {
const { $nextEl: e, $prevEl: t } = n.navigation;
e &&
e[n.enabled ? "removeClass" : "addClass"](
n.params.navigation.lockClass
),
t &&
t[n.enabled ? "removeClass" : "addClass"](
n.params.navigation.lockClass
);
}),
i("click", (e, t) => {
const { $nextEl: i, $prevEl: s } = n.navigation,
a = t.target;
if (
n.params.navigation.hideOnClick &&
!z(a).is(s) &&
!z(a).is(i) &&
(!(
n.pagination &&
n.params.pagination &&
n.params.pagination.clickable
) ||
(n.pagination.el !== a && !n.pagination.el.contains(a)))
) {
let e;
i
? (e = i.hasClass(n.params.navigation.hiddenClass))
: s && (e = s.hasClass(n.params.navigation.hiddenClass)),
r(!0 === e ? "navigationShow" : "navigationHide"),
i && i.toggleClass(n.params.navigation.hiddenClass),
s && s.toggleClass(n.params.navigation.hiddenClass);
}
});
const h = () => {
n.$el.addClass(n.params.navigation.navigationDisabledClass), p();
};
Object.assign(n.navigation, {
enable: () => {
n.$el.removeClass(n.params.navigation.navigationDisabledClass),
c(),
l();
},
disable: h,
update: l,
init: c,
destroy: p,
});
},
function (e) {
let { swiper: d, extendParams: t, on: i, emit: c } = e;
e = "swiper-pagination";
let p,
h =
(t({
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: (e) => e,
formatFractionTotal: (e) => e,
bulletClass: e + "-bullet",
bulletActiveClass: e + "-bullet-active",
modifierClass: e + "-",
currentClass: e + "-current",
totalClass: e + "-total",
hiddenClass: e + "-hidden",
progressbarFillClass: e + "-progressbar-fill",
progressbarOppositeClass: e + "-progressbar-opposite",
clickableClass: e + "-clickable",
lockClass: e + "-lock",
horizontalClass: e + "-horizontal",
verticalClass: e + "-vertical",
paginationDisabledClass: e + "-disabled",
},
}),
(d.pagination = { el: null, $el: null, bullets: [] }),
0);
function n() {
return (
!d.params.pagination.el ||
!d.pagination.el ||
!d.pagination.$el ||
0 === d.pagination.$el.length
);
}
function u(e, t) {
var i = d.params.pagination["bulletActiveClass"];
e[t]()
.addClass(i + "-" + t)
[t]()
.addClass(i + `-${t}-` + t);
}
function s() {
const t = d.rtl,
r = d.params.pagination;
if (!n()) {
const l = (
d.virtual && d.params.virtual.enabled ? d.virtual : d
).slides.length,
o = d.pagination.$el;
let n;
var i = d.params.loop
? Math.ceil(
(l - 2 * d.loopedSlides) / d.params.slidesPerGroup
)
: d.snapGrid.length;
if (
(d.params.loop
? ((n = Math.ceil(
(d.activeIndex - d.loopedSlides) /
d.params.slidesPerGroup
)) >
l - 1 - 2 * d.loopedSlides &&
(n -= l - 2 * d.loopedSlides),
n > i - 1 && (n -= i),
n < 0 &&
"bullets" !== d.params.paginationType &&
(n = i + n))
: (n =
void 0 !== d.snapIndex
? d.snapIndex
: d.activeIndex || 0),
"bullets" === r.type &&
d.pagination.bullets &&
0 < d.pagination.bullets.length)
) {
const l = d.pagination.bullets;
let s, a, e;
if (
(r.dynamicBullets &&
((p = l
.eq(0)
[d.isHorizontal() ? "outerWidth" : "outerHeight"](!0)),
o.css(
d.isHorizontal() ? "width" : "height",
p * (r.dynamicMainBullets + 4) + "px"
),
1 < r.dynamicMainBullets &&
void 0 !== d.previousIndex &&
((h += n - (d.previousIndex - d.loopedSlides || 0)) >
r.dynamicMainBullets - 1
? (h = r.dynamicMainBullets - 1)
: h < 0 && (h = 0)),
(s = Math.max(n - h, 0)),
(a = s + (Math.min(l.length, r.dynamicMainBullets) - 1)),
(e = (a + s) / 2)),
l.removeClass(
[
"",
"-next",
"-next-next",
"-prev",
"-prev-prev",
"-main",
]
.map((e) => "" + r.bulletActiveClass + e)
.join(" ")
),
1 < o.length)
)
l.each((e) => {
const t = z(e),
i = t.index();
i === n && t.addClass(r.bulletActiveClass),
r.dynamicBullets &&
(i >= s &&
i <= a &&
t.addClass(r.bulletActiveClass + "-main"),
i === s && u(t, "prev"),
i === a && u(t, "next"));
});
else {
const t = l.eq(n),
o = t.index();
if ((t.addClass(r.bulletActiveClass), r.dynamicBullets)) {
const t = l.eq(s),
p = l.eq(a);
for (let e = s; e <= a; e += 1)
l.eq(e).addClass(r.bulletActiveClass + "-main");
if (d.params.loop)
if (o >= l.length) {
for (let e = r.dynamicMainBullets; 0 <= e; --e)
l.eq(l.length - e).addClass(
r.bulletActiveClass + "-main"
);
l.eq(l.length - r.dynamicMainBullets - 1).addClass(
r.bulletActiveClass + "-prev"
);
} else u(t, "prev"), u(p, "next");
else u(t, "prev"), u(p, "next");
}
}
if (r.dynamicBullets) {
const c = Math.min(l.length, r.dynamicMainBullets + 4),
o = (p * c - p) / 2 - e * p,
h = t ? "right" : "left";
l.css(d.isHorizontal() ? h : "top", o + "px");
}
}
if (
("fraction" === r.type &&
(o
.find(A(r.currentClass))
.text(r.formatFractionCurrent(n + 1)),
o.find(A(r.totalClass)).text(r.formatFractionTotal(i))),
"progressbar" === r.type)
) {
var s = r.progressbarOpposite
? d.isHorizontal()
? "vertical"
: "horizontal"
: d.isHorizontal()
? "horizontal"
: "vertical";
const l = (n + 1) / i;
let e = 1,
t = 1;
"horizontal" == s ? (e = l) : (t = l),
o
.find(A(r.progressbarFillClass))
.transform(`translate3d(0,0,0) scaleX(${e}) scaleY(${t})`)
.transition(d.params.speed);
}
"custom" === r.type && r.renderCustom
? (o.html(r.renderCustom(d, n + 1, i)),
c("paginationRender", o[0]))
: c("paginationUpdate", o[0]),
d.params.watchOverflow &&
d.enabled &&
o[d.isLocked ? "addClass" : "removeClass"](r.lockClass);
}
}
function a() {
const s = d.params.pagination;
if (!n()) {
const e = (
d.virtual && d.params.virtual.enabled ? d.virtual : d
).slides.length,
a = d.pagination.$el;
let i = "";
if ("bullets" === s.type) {
let t = d.params.loop
? Math.ceil(
(e - 2 * d.loopedSlides) / d.params.slidesPerGroup
)
: d.snapGrid.length;
d.params.freeMode &&
d.params.freeMode.enabled &&
!d.params.loop &&
t > e &&
(t = e);
for (let e = 0; e < t; e += 1)
s.renderBullet
? (i += s.renderBullet.call(d, e, s.bulletClass))
: (i += `<${s.bulletElement} class="${s.bulletClass}">${s.bulletElement}>`);
a.html(i), (d.pagination.bullets = a.find(A(s.bulletClass)));
}
"fraction" === s.type &&
((i = s.renderFraction
? s.renderFraction.call(d, s.currentClass, s.totalClass)
: `
/
`),
a.html(i)),
"progressbar" === s.type &&
((i = s.renderProgressbar
? s.renderProgressbar.call(d, s.progressbarFillClass)
: `
`),
a.html(i)),
"custom" !== s.type &&
c("paginationRender", d.pagination.$el[0]);
}
}
function r() {
d.params.pagination = M(
d,
d.originalParams.pagination,
d.params.pagination,
{ el: "swiper-pagination" }
);
const t = d.params.pagination;
if (t.el) {
let e = z(t.el);
0 !== e.length &&
(d.params.uniqueNavElements &&
"string" == typeof t.el &&
1 < e.length &&
1 < (e = d.$el.find(t.el)).length &&
(e = e.filter((e) => z(e).parents(".swiper")[0] === d.el)),
"bullets" === t.type &&
t.clickable &&
e.addClass(t.clickableClass),
e.addClass(t.modifierClass + t.type),
e.addClass(
d.isHorizontal() ? t.horizontalClass : t.verticalClass
),
"bullets" === t.type &&
t.dynamicBullets &&
(e.addClass("" + t.modifierClass + t.type + "-dynamic"),
(h = 0),
t.dynamicMainBullets < 1 && (t.dynamicMainBullets = 1)),
"progressbar" === t.type &&
t.progressbarOpposite &&
e.addClass(t.progressbarOppositeClass),
t.clickable &&
e.on("click", A(t.bulletClass), function (e) {
e.preventDefault();
let t = z(this).index() * d.params.slidesPerGroup;
d.params.loop && (t += d.loopedSlides), d.slideTo(t);
}),
Object.assign(d.pagination, { $el: e, el: e[0] }),
d.enabled || e.addClass(t.lockClass));
}
}
function l() {
var e = d.params.pagination;
if (!n()) {
const t = d.pagination.$el;
t.removeClass(e.hiddenClass),
t.removeClass(e.modifierClass + e.type),
t.removeClass(
d.isHorizontal() ? e.horizontalClass : e.verticalClass
),
d.pagination.bullets &&
d.pagination.bullets.removeClass &&
d.pagination.bullets.removeClass(e.bulletActiveClass),
e.clickable && t.off("click", A(e.bulletClass));
}
}
i("init", () => {
!1 === d.params.pagination.enabled ? o() : (r(), a(), s());
}),
i("activeIndexChange", () => {
(!d.params.loop && void 0 !== d.snapIndex) || s();
}),
i("snapIndexChange", () => {
d.params.loop || s();
}),
i("slidesLengthChange", () => {
d.params.loop && (a(), s());
}),
i("snapGridLengthChange", () => {
d.params.loop || (a(), s());
}),
i("destroy", () => {
l();
}),
i("enable disable", () => {
const e = d.pagination["$el"];
e &&
e[d.enabled ? "removeClass" : "addClass"](
d.params.pagination.lockClass
);
}),
i("lock unlock", () => {
s();
}),
i("click", (e, t) => {
const i = t.target,
s = d.pagination["$el"];
if (
d.params.pagination.el &&
d.params.pagination.hideOnClick &&
s &&
0 < s.length &&
!z(i).hasClass(d.params.pagination.bulletClass) &&
(!d.navigation ||
!(
(d.navigation.nextEl && i === d.navigation.nextEl) ||
(d.navigation.prevEl && i === d.navigation.prevEl)
))
) {
const e = s.hasClass(d.params.pagination.hiddenClass);
c(!0 === e ? "paginationShow" : "paginationHide"),
s.toggleClass(d.params.pagination.hiddenClass);
}
});
const o = () => {
d.$el.addClass(d.params.pagination.paginationDisabledClass),
d.pagination.$el &&
d.pagination.$el.addClass(
d.params.pagination.paginationDisabledClass
),
l();
};
Object.assign(d.pagination, {
enable: () => {
d.$el.removeClass(d.params.pagination.paginationDisabledClass),
d.pagination.$el &&
d.pagination.$el.removeClass(
d.params.pagination.paginationDisabledClass
),
r(),
a(),
s();
},
disable: o,
render: a,
update: s,
init: r,
destroy: l,
});
},
function (e) {
let { swiper: d, extendParams: t, on: i, emit: r } = e;
const c = S();
let l,
o,
p,
s,
h = !1,
u = null,
m = null;
function a() {
if (d.params.scrollbar.el && d.scrollbar.el) {
const { scrollbar: i, rtlTranslate: s, progress: a } = d,
{ $dragEl: n, $el: r } = i,
l = d.params.scrollbar;
let e = o,
t = (p - o) * a;
s
? 0 < (t = -t)
? ((e = o - t), (t = 0))
: -t + o > p && (e = p + t)
: t < 0
? ((e = o + t), (t = 0))
: t + o > p && (e = p - t),
d.isHorizontal()
? (n.transform(`translate3d(${t}px, 0, 0)`),
(n[0].style.width = e + "px"))
: (n.transform(`translate3d(0px, ${t}px, 0)`),
(n[0].style.height = e + "px")),
l.hide &&
(clearTimeout(u),
(r[0].style.opacity = 1),
(u = setTimeout(() => {
(r[0].style.opacity = 0), r.transition(400);
}, 1e3)));
}
}
function n() {
if (d.params.scrollbar.el && d.scrollbar.el) {
const e = d["scrollbar"],
{ $dragEl: t, $el: i } = e;
(t[0].style.width = ""),
(t[0].style.height = ""),
(p = d.isHorizontal() ? i[0].offsetWidth : i[0].offsetHeight),
(s =
d.size /
(d.virtualSize +
d.params.slidesOffsetBefore -
(d.params.centeredSlides ? d.snapGrid[0] : 0))),
(o =
"auto" === d.params.scrollbar.dragSize
? p * s
: parseInt(d.params.scrollbar.dragSize, 10)),
d.isHorizontal()
? (t[0].style.width = o + "px")
: (t[0].style.height = o + "px"),
(i[0].style.display = 1 <= s ? "none" : ""),
d.params.scrollbar.hide && (i[0].style.opacity = 0),
d.params.watchOverflow &&
d.enabled &&
e.$el[d.isLocked ? "addClass" : "removeClass"](
d.params.scrollbar.lockClass
);
}
}
function v(e) {
return d.isHorizontal()
? ("touchstart" === e.type || "touchmove" === e.type
? e.targetTouches[0]
: e
).clientX
: ("touchstart" === e.type || "touchmove" === e.type
? e.targetTouches[0]
: e
).clientY;
}
function g(e) {
const { scrollbar: t, rtlTranslate: i } = d,
s = t["$el"];
let a;
(a =
(v(e) -
s.offset()[d.isHorizontal() ? "left" : "top"] -
(null !== l ? l : o / 2)) /
(p - o)),
(a = Math.max(Math.min(a, 1), 0)),
i && (a = 1 - a);
e = d.minTranslate() + (d.maxTranslate() - d.minTranslate()) * a;
d.updateProgress(e),
d.setTranslate(e),
d.updateActiveIndex(),
d.updateSlidesClasses();
}
function f(e) {
const t = d.params.scrollbar,
{ scrollbar: i, $wrapperEl: s } = d,
{ $el: a, $dragEl: n } = i;
(h = !0),
(l =
e.target === n[0] || e.target === n
? v(e) -
e.target.getBoundingClientRect()[
d.isHorizontal() ? "left" : "top"
]
: null),
e.preventDefault(),
e.stopPropagation(),
s.transition(100),
n.transition(100),
g(e),
clearTimeout(m),
a.transition(0),
t.hide && a.css("opacity", 1),
d.params.cssMode &&
d.$wrapperEl.css("scroll-snap-type", "none"),
r("scrollbarDragStart", e);
}
function w(e) {
const { scrollbar: t, $wrapperEl: i } = d,
{ $el: s, $dragEl: a } = t;
h &&
(e.preventDefault ? e.preventDefault() : (e.returnValue = !1),
g(e),
i.transition(0),
s.transition(0),
a.transition(0),
r("scrollbarDragMove", e));
}
function b(e) {
const t = d.params.scrollbar,
{ scrollbar: i, $wrapperEl: s } = d,
a = i["$el"];
h &&
((h = !1),
d.params.cssMode &&
(d.$wrapperEl.css("scroll-snap-type", ""), s.transition("")),
t.hide &&
(clearTimeout(m),
(m = x(() => {
a.css("opacity", 0), a.transition(400);
}, 1e3))),
r("scrollbarDragEnd", e),
t.snapOnRelease && d.slideToClosest());
}
function E(e) {
var {
scrollbar: t,
touchEventsTouch: i,
touchEventsDesktop: s,
params: a,
support: n,
} = d,
t = t.$el;
if (t) {
const r = t[0],
l = !(!n.passiveListener || !a.passiveListeners) && {
passive: !1,
capture: !1,
},
o = !(!n.passiveListener || !a.passiveListeners) && {
passive: !0,
capture: !1,
};
r &&
((t =
"on" === e ? "addEventListener" : "removeEventListener"),
n.touch
? (r[t](i.start, f, l),
r[t](i.move, w, l),
r[t](i.end, b, o))
: (r[t](s.start, f, l),
c[t](s.move, w, l),
c[t](s.end, b, o)));
}
}
function y() {
const { scrollbar: i, $el: s } = d;
d.params.scrollbar = M(
d,
d.originalParams.scrollbar,
d.params.scrollbar,
{ el: "swiper-scrollbar" }
);
var a = d.params.scrollbar;
if (a.el) {
let e = z(a.el),
t =
((e =
d.params.uniqueNavElements &&
"string" == typeof a.el &&
1 < e.length &&
1 === s.find(a.el).length
? s.find(a.el)
: e).addClass(
d.isHorizontal() ? a.horizontalClass : a.verticalClass
),
e.find("." + d.params.scrollbar.dragClass));
0 === t.length &&
((t = z(
`
`
)),
e.append(t)),
Object.assign(i, {
$el: e,
el: e[0],
$dragEl: t,
dragEl: t[0],
}),
a.draggable &&
d.params.scrollbar.el &&
d.scrollbar.el &&
E("on"),
e &&
e[d.enabled ? "removeClass" : "addClass"](
d.params.scrollbar.lockClass
);
}
}
function T() {
const e = d.params.scrollbar,
t = d.scrollbar.$el;
t &&
t.removeClass(
d.isHorizontal() ? e.horizontalClass : e.verticalClass
),
d.params.scrollbar.el && d.scrollbar.el && E("off");
}
t({
scrollbar: {
el: null,
dragSize: "auto",
hide: !1,
draggable: !1,
snapOnRelease: !0,
lockClass: "swiper-scrollbar-lock",
dragClass: "swiper-scrollbar-drag",
scrollbarDisabledClass: "swiper-scrollbar-disabled",
horizontalClass: "swiper-scrollbar-horizontal",
verticalClass: "swiper-scrollbar-vertical",
},
}),
(d.scrollbar = {
el: null,
dragEl: null,
$el: null,
$dragEl: null,
}),
i("init", () => {
!1 === d.params.scrollbar.enabled ? C() : (y(), n(), a());
}),
i("update resize observerUpdate lock unlock", () => {
n();
}),
i("setTranslate", () => {
a();
}),
i("setTransition", (e, t) => {
(t = t),
d.params.scrollbar.el &&
d.scrollbar.el &&
d.scrollbar.$dragEl.transition(t);
}),
i("enable disable", () => {
const e = d.scrollbar["$el"];
e &&
e[d.enabled ? "removeClass" : "addClass"](
d.params.scrollbar.lockClass
);
}),
i("destroy", () => {
T();
});
const C = () => {
d.$el.addClass(d.params.scrollbar.scrollbarDisabledClass),
d.scrollbar.$el &&
d.scrollbar.$el.addClass(
d.params.scrollbar.scrollbarDisabledClass
),
T();
};
Object.assign(d.scrollbar, {
enable: () => {
d.$el.removeClass(d.params.scrollbar.scrollbarDisabledClass),
d.scrollbar.$el &&
d.scrollbar.$el.removeClass(
d.params.scrollbar.scrollbarDisabledClass
),
y(),
n(),
a();
},
disable: C,
updateSize: n,
setTranslate: a,
init: y,
destroy: T,
});
},
function (e) {
let { swiper: c, extendParams: t, on: i } = e;
t({ parallax: { enabled: !1 } });
const n = (e, t) => {
const i = c["rtl"],
s = z(e),
a = i ? -1 : 1,
n = s.attr("data-swiper-parallax") || "0";
let r = s.attr("data-swiper-parallax-x"),
l = s.attr("data-swiper-parallax-y");
var o = s.attr("data-swiper-parallax-scale"),
d = s.attr("data-swiper-parallax-opacity");
if (
(r || l
? ((r = r || "0"), (l = l || "0"))
: c.isHorizontal()
? ((r = n), (l = "0"))
: ((l = n), (r = "0")),
(r =
0 <= r.indexOf("%")
? parseInt(r, 10) * t * a + "%"
: r * t * a + "px"),
(l =
0 <= l.indexOf("%")
? parseInt(l, 10) * t + "%"
: l * t + "px"),
null != d)
) {
const e = d - (d - 1) * (1 - Math.abs(t));
s[0].style.opacity = e;
}
if (null == o) s.transform(`translate3d(${r}, ${l}, 0px)`);
else {
const e = o - (o - 1) * (1 - Math.abs(t));
s.transform(`translate3d(${r}, ${l}, 0px) scale(${e})`);
}
},
s = () => {
const { $el: e, slides: t, progress: s, snapGrid: a } = c;
e
.children(
"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]"
)
.each((e) => {
n(e, s);
}),
t.each((e, t) => {
let i = e.progress;
1 < c.params.slidesPerGroup &&
"auto" !== c.params.slidesPerView &&
(i += Math.ceil(t / 2) - s * (a.length - 1)),
(i = Math.min(Math.max(i, -1), 1)),
z(e)
.find(
"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]"
)
.each((e) => {
n(e, i);
});
});
};
i("beforeInit", () => {
c.params.parallax.enabled &&
((c.params.watchSlidesProgress = !0),
(c.originalParams.watchSlidesProgress = !0));
}),
i("init", () => {
c.params.parallax.enabled && s();
}),
i("setTranslate", () => {
c.params.parallax.enabled && s();
}),
i("setTransition", (e, t) => {
if (c.params.parallax.enabled) {
var s = t;
void 0 === s && (s = c.params.speed);
const i = c["$el"];
i.find(
"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]"
).each((e) => {
const t = z(e);
let i =
parseInt(t.attr("data-swiper-parallax-duration"), 10) ||
s;
0 === s && (i = 0), t.transition(i);
});
}
});
},
function (e) {
let { swiper: y, extendParams: t, on: i, emit: s } = e;
const T = $();
t({
zoom: {
enabled: !1,
maxRatio: 3,
minRatio: 1,
toggle: !0,
containerClass: "swiper-zoom-container",
zoomedSlideClass: "swiper-slide-zoomed",
},
}),
(y.zoom = { enabled: !1 });
let a,
n,
r,
C = 1,
l = !1;
const S = {
$slideEl: void 0,
slideWidth: void 0,
slideHeight: void 0,
$imageEl: void 0,
$imageWrapEl: void 0,
maxRatio: 3,
},
x = {
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: {},
},
o = {
x: void 0,
y: void 0,
prevPositionX: void 0,
prevPositionY: void 0,
prevTime: void 0,
};
let d = 1;
function c(e) {
if (e.targetTouches.length < 2) return 1;
var t = e.targetTouches[0].pageX,
i = e.targetTouches[0].pageY,
s = e.targetTouches[1].pageX,
e = e.targetTouches[1].pageY;
return Math.sqrt((s - t) ** 2 + (e - i) ** 2);
}
function p(e) {
var t = y.support,
i = y.params.zoom;
if (((n = !1), (r = !1), !t.gestures)) {
if (
"touchstart" !== e.type ||
("touchstart" === e.type && e.targetTouches.length < 2)
)
return;
(n = !0), (S.scaleStart = c(e));
}
(S.$slideEl && S.$slideEl.length) ||
((S.$slideEl = z(e.target).closest("." + y.params.slideClass)),
0 === S.$slideEl.length &&
(S.$slideEl = y.slides.eq(y.activeIndex)),
(S.$imageEl = S.$slideEl
.find("." + i.containerClass)
.eq(0)
.find("picture, img, svg, canvas, .swiper-zoom-target")
.eq(0)),
(S.$imageWrapEl = S.$imageEl.parent("." + i.containerClass)),
(S.maxRatio =
S.$imageWrapEl.attr("data-swiper-zoom") || i.maxRatio),
0 !== S.$imageWrapEl.length)
? (S.$imageEl && S.$imageEl.transition(0), (l = !0))
: (S.$imageEl = void 0);
}
function h(e) {
const t = y.support,
i = y.params.zoom,
s = y.zoom;
if (!t.gestures) {
if (
"touchmove" !== e.type ||
("touchmove" === e.type && e.targetTouches.length < 2)
)
return;
(r = !0), (S.scaleMove = c(e));
}
S.$imageEl && 0 !== S.$imageEl.length
? (t.gestures
? (s.scale = e.scale * C)
: (s.scale = (S.scaleMove / S.scaleStart) * C),
s.scale > S.maxRatio &&
(s.scale =
S.maxRatio - 1 + (s.scale - S.maxRatio + 1) ** 0.5),
s.scale < i.minRatio &&
(s.scale =
i.minRatio + 1 - (i.minRatio - s.scale + 1) ** 0.5),
S.$imageEl.transform(`translate3d(0,0,0) scale(${s.scale})`))
: "gesturechange" === e.type && p(e);
}
function u(e) {
const t = y.device,
i = y.support,
s = y.params.zoom,
a = y.zoom;
if (!i.gestures) {
if (!n || !r) return;
if (
"touchend" !== e.type ||
("touchend" === e.type &&
e.changedTouches.length < 2 &&
!t.android)
)
return;
(n = !1), (r = !1);
}
S.$imageEl &&
0 !== S.$imageEl.length &&
((a.scale = Math.max(
Math.min(a.scale, S.maxRatio),
s.minRatio
)),
S.$imageEl
.transition(y.params.speed)
.transform(`translate3d(0,0,0) scale(${a.scale})`),
(C = a.scale),
(l = !1),
1 === a.scale && (S.$slideEl = void 0));
}
function m(e) {
var t = y.zoom;
if (
S.$imageEl &&
0 !== S.$imageEl.length &&
((y.allowClick = !1), x.isTouched && S.$slideEl)
) {
x.isMoved ||
((x.width = S.$imageEl[0].offsetWidth),
(x.height = S.$imageEl[0].offsetHeight),
(x.startX = k(S.$imageWrapEl[0], "x") || 0),
(x.startY = k(S.$imageWrapEl[0], "y") || 0),
(S.slideWidth = S.$slideEl[0].offsetWidth),
(S.slideHeight = S.$slideEl[0].offsetHeight),
S.$imageWrapEl.transition(0));
var i = x.width * t.scale,
t = x.height * t.scale;
if (!(i < S.slideWidth && t < S.slideHeight)) {
if (
((x.minX = Math.min(S.slideWidth / 2 - i / 2, 0)),
(x.maxX = -x.minX),
(x.minY = Math.min(S.slideHeight / 2 - t / 2, 0)),
(x.maxY = -x.minY),
(x.touchesCurrent.x = (
"touchmove" === e.type ? e.targetTouches[0] : e
).pageX),
(x.touchesCurrent.y = (
"touchmove" === e.type ? e.targetTouches[0] : e
).pageY),
!x.isMoved && !l)
) {
if (
y.isHorizontal() &&
((Math.floor(x.minX) === Math.floor(x.startX) &&
x.touchesCurrent.x < x.touchesStart.x) ||
(Math.floor(x.maxX) === Math.floor(x.startX) &&
x.touchesCurrent.x > x.touchesStart.x))
)
return void (x.isTouched = !1);
if (
!y.isHorizontal() &&
((Math.floor(x.minY) === Math.floor(x.startY) &&
x.touchesCurrent.y < x.touchesStart.y) ||
(Math.floor(x.maxY) === Math.floor(x.startY) &&
x.touchesCurrent.y > x.touchesStart.y))
)
return void (x.isTouched = !1);
}
e.cancelable && e.preventDefault(),
e.stopPropagation(),
(x.isMoved = !0),
(x.currentX =
x.touchesCurrent.x - x.touchesStart.x + x.startX),
(x.currentY =
x.touchesCurrent.y - x.touchesStart.y + x.startY),
x.currentX < x.minX &&
(x.currentX =
x.minX + 1 - (x.minX - x.currentX + 1) ** 0.8),
x.currentX > x.maxX &&
(x.currentX =
x.maxX - 1 + (x.currentX - x.maxX + 1) ** 0.8),
x.currentY < x.minY &&
(x.currentY =
x.minY + 1 - (x.minY - x.currentY + 1) ** 0.8),
x.currentY > x.maxY &&
(x.currentY =
x.maxY - 1 + (x.currentY - x.maxY + 1) ** 0.8),
o.prevPositionX || (o.prevPositionX = x.touchesCurrent.x),
o.prevPositionY || (o.prevPositionY = x.touchesCurrent.y),
o.prevTime || (o.prevTime = Date.now()),
(o.x =
(x.touchesCurrent.x - o.prevPositionX) /
(Date.now() - o.prevTime) /
2),
(o.y =
(x.touchesCurrent.y - o.prevPositionY) /
(Date.now() - o.prevTime) /
2),
Math.abs(x.touchesCurrent.x - o.prevPositionX) < 2 &&
(o.x = 0),
Math.abs(x.touchesCurrent.y - o.prevPositionY) < 2 &&
(o.y = 0),
(o.prevPositionX = x.touchesCurrent.x),
(o.prevPositionY = x.touchesCurrent.y),
(o.prevTime = Date.now()),
S.$imageWrapEl.transform(
`translate3d(${x.currentX}px, ${x.currentY}px,0)`
);
}
}
}
function v() {
const e = y.zoom;
S.$slideEl &&
y.previousIndex !== y.activeIndex &&
(S.$imageEl &&
S.$imageEl.transform("translate3d(0,0,0) scale(1)"),
S.$imageWrapEl &&
S.$imageWrapEl.transform("translate3d(0,0,0)"),
(e.scale = 1),
(C = 1),
(S.$slideEl = void 0),
(S.$imageEl = void 0),
(S.$imageWrapEl = void 0));
}
function g(w) {
const b = y.zoom,
E = y.params.zoom;
if (
(S.$slideEl ||
(w &&
w.target &&
(S.$slideEl = z(w.target).closest(
"." + y.params.slideClass
)),
S.$slideEl ||
(y.params.virtual && y.params.virtual.enabled && y.virtual
? (S.$slideEl = y.$wrapperEl.children(
"." + y.params.slideActiveClass
))
: (S.$slideEl = y.slides.eq(y.activeIndex))),
(S.$imageEl = S.$slideEl
.find("." + E.containerClass)
.eq(0)
.find("picture, img, svg, canvas, .swiper-zoom-target")
.eq(0)),
(S.$imageWrapEl = S.$imageEl.parent("." + E.containerClass))),
S.$imageEl &&
0 !== S.$imageEl.length &&
S.$imageWrapEl &&
0 !== S.$imageWrapEl.length)
) {
let e, t, i, s, a, n, r, l, o, d, c, p, h, u, m, v, g, f;
y.params.cssMode &&
((y.wrapperEl.style.overflow = "hidden"),
(y.wrapperEl.style.touchAction = "none")),
S.$slideEl.addClass("" + E.zoomedSlideClass),
(t =
void 0 === x.touchesStart.x && w
? ((e = ("touchend" === w.type ? w.changedTouches[0] : w)
.pageX),
("touchend" === w.type ? w.changedTouches[0] : w).pageY)
: ((e = x.touchesStart.x), x.touchesStart.y)),
(b.scale =
S.$imageWrapEl.attr("data-swiper-zoom") || E.maxRatio),
(C = S.$imageWrapEl.attr("data-swiper-zoom") || E.maxRatio),
w
? ((g = S.$slideEl[0].offsetWidth),
(f = S.$slideEl[0].offsetHeight),
(i = S.$slideEl.offset().left + T.scrollX),
(s = S.$slideEl.offset().top + T.scrollY),
(a = i + g / 2 - e),
(n = s + f / 2 - t),
(o = S.$imageEl[0].offsetWidth),
(d = S.$imageEl[0].offsetHeight),
(c = o * b.scale),
(p = d * b.scale),
(m = -(h = Math.min(g / 2 - c / 2, 0))),
(v = -(u = Math.min(f / 2 - p / 2, 0))),
(r = a * b.scale),
(l = n * b.scale),
(r = r < h ? h : r) > m && (r = m),
(l = l < u ? u : l) > v && (l = v))
: ((r = 0), (l = 0)),
S.$imageWrapEl
.transition(300)
.transform(`translate3d(${r}px, ${l}px,0)`),
S.$imageEl
.transition(300)
.transform(`translate3d(0,0,0) scale(${b.scale})`);
}
}
function f() {
const e = y.zoom,
t = y.params.zoom;
S.$slideEl ||
(y.params.virtual && y.params.virtual.enabled && y.virtual
? (S.$slideEl = y.$wrapperEl.children(
"." + y.params.slideActiveClass
))
: (S.$slideEl = y.slides.eq(y.activeIndex)),
(S.$imageEl = S.$slideEl
.find("." + t.containerClass)
.eq(0)
.find("picture, img, svg, canvas, .swiper-zoom-target")
.eq(0)),
(S.$imageWrapEl = S.$imageEl.parent("." + t.containerClass))),
S.$imageEl &&
0 !== S.$imageEl.length &&
S.$imageWrapEl &&
0 !== S.$imageWrapEl.length &&
(y.params.cssMode &&
((y.wrapperEl.style.overflow = ""),
(y.wrapperEl.style.touchAction = "")),
(e.scale = 1),
(C = 1),
S.$imageWrapEl
.transition(300)
.transform("translate3d(0,0,0)"),
S.$imageEl
.transition(300)
.transform("translate3d(0,0,0) scale(1)"),
S.$slideEl.removeClass("" + t.zoomedSlideClass),
(S.$slideEl = void 0));
}
function w(e) {
var t = y.zoom;
t.scale && 1 !== t.scale ? f() : g(e);
}
function b() {
var e = y.support;
return {
passiveListener: !(
"touchstart" !== y.touchEvents.start ||
!e.passiveListener ||
!y.params.passiveListeners
) && { passive: !0, capture: !1 },
activeListenerWithCapture: !e.passiveListener || {
passive: !1,
capture: !0,
},
};
}
function E() {
return "." + y.params.slideClass;
}
function L(e) {
var t = b()["passiveListener"],
i = E();
y.$wrapperEl[e]("gesturestart", i, p, t),
y.$wrapperEl[e]("gesturechange", i, h, t),
y.$wrapperEl[e]("gestureend", i, u, t);
}
function M() {
a || ((a = !0), L("on"));
}
function A() {
a && ((a = !1), L("off"));
}
function P() {
const e = y.zoom;
var t, i, s, a;
e.enabled ||
((e.enabled = !0),
(t = y.support),
({ passiveListener: i, activeListenerWithCapture: s } = b()),
(a = E()),
t.gestures
? (y.$wrapperEl.on(y.touchEvents.start, M, i),
y.$wrapperEl.on(y.touchEvents.end, A, i))
: "touchstart" === y.touchEvents.start &&
(y.$wrapperEl.on(y.touchEvents.start, a, p, i),
y.$wrapperEl.on(y.touchEvents.move, a, h, s),
y.$wrapperEl.on(y.touchEvents.end, a, u, i),
y.touchEvents.cancel &&
y.$wrapperEl.on(y.touchEvents.cancel, a, u, i)),
y.$wrapperEl.on(
y.touchEvents.move,
"." + y.params.zoom.containerClass,
m,
s
));
}
function I() {
const e = y.zoom;
var t, i, s, a;
e.enabled &&
((t = y.support),
({ passiveListener: i, activeListenerWithCapture: s } =
((e.enabled = !1), b())),
(a = E()),
t.gestures
? (y.$wrapperEl.off(y.touchEvents.start, M, i),
y.$wrapperEl.off(y.touchEvents.end, A, i))
: "touchstart" === y.touchEvents.start &&
(y.$wrapperEl.off(y.touchEvents.start, a, p, i),
y.$wrapperEl.off(y.touchEvents.move, a, h, s),
y.$wrapperEl.off(y.touchEvents.end, a, u, i),
y.touchEvents.cancel &&
y.$wrapperEl.off(y.touchEvents.cancel, a, u, i)),
y.$wrapperEl.off(
y.touchEvents.move,
"." + y.params.zoom.containerClass,
m,
s
));
}
Object.defineProperty(y.zoom, "scale", {
get: () => d,
set(e) {
var t, i;
d !== e &&
((t = S.$imageEl ? S.$imageEl[0] : void 0),
(i = S.$slideEl ? S.$slideEl[0] : void 0),
s("zoomChange", e, t, i)),
(d = e);
},
}),
i("init", () => {
y.params.zoom.enabled && P();
}),
i("destroy", () => {
I();
}),
i("touchStart", (e, t) => {
var i;
y.zoom.enabled &&
((t = t),
(i = y.device),
S.$imageEl &&
0 !== S.$imageEl.length &&
!x.isTouched &&
(i.android && t.cancelable && t.preventDefault(),
(x.isTouched = !0),
(x.touchesStart.x = (
"touchstart" === t.type ? t.targetTouches[0] : t
).pageX),
(x.touchesStart.y = (
"touchstart" === t.type ? t.targetTouches[0] : t
).pageY)));
}),
i("touchEnd", (e, t) => {
if (y.zoom.enabled) {
var i = y.zoom;
if (S.$imageEl && 0 !== S.$imageEl.length) {
if (!x.isTouched || !x.isMoved)
return void ((x.isTouched = !1), (x.isMoved = !1));
(x.isTouched = !1), (x.isMoved = !1);
let e = 300,
t = 300;
var s = o.x * e,
s = x.currentX + s,
a = o.y * t,
a = x.currentY + a,
n =
(0 !== o.x && (e = Math.abs((s - x.currentX) / o.x)),
0 !== o.y && (t = Math.abs((a - x.currentY) / o.y)),
Math.max(e, t)),
s =
((x.currentX = s), (x.currentY = a), x.width * i.scale),
a = x.height * i.scale;
(x.minX = Math.min(S.slideWidth / 2 - s / 2, 0)),
(x.maxX = -x.minX),
(x.minY = Math.min(S.slideHeight / 2 - a / 2, 0)),
(x.maxY = -x.minY),
(x.currentX = Math.max(
Math.min(x.currentX, x.maxX),
x.minX
)),
(x.currentY = Math.max(
Math.min(x.currentY, x.maxY),
x.minY
)),
S.$imageWrapEl
.transition(n)
.transform(
`translate3d(${x.currentX}px, ${x.currentY}px,0)`
);
}
}
}),
i("doubleTap", (e, t) => {
!y.animating &&
y.params.zoom.enabled &&
y.zoom.enabled &&
y.params.zoom.toggle &&
w(t);
}),
i("transitionEnd", () => {
y.zoom.enabled && y.params.zoom.enabled && v();
}),
i("slideChange", () => {
y.zoom.enabled &&
y.params.zoom.enabled &&
y.params.cssMode &&
v();
}),
Object.assign(y.zoom, {
enable: P,
disable: I,
in: g,
out: f,
toggle: w,
});
},
function (e) {
let { swiper: c, extendParams: t, on: i, emit: p } = e,
d =
(t({
lazy: {
checkInView: !1,
enabled: !1,
loadPrevNext: !1,
loadPrevNextAmount: 1,
loadOnTransitionStart: !1,
scrollingElement: "",
elementClass: "swiper-lazy",
loadingClass: "swiper-lazy-loading",
loadedClass: "swiper-lazy-loaded",
preloaderClass: "swiper-lazy-preloader",
},
}),
!(c.lazy = {})),
h = !1;
function u(e, l) {
void 0 === l && (l = !0);
const o = c.params.lazy;
if (void 0 !== e && 0 !== c.slides.length) {
const d =
c.virtual && c.params.virtual.enabled
? c.$wrapperEl.children(
`.${c.params.slideClass}[data-swiper-slide-index="${e}"]`
)
: c.slides.eq(e),
t = d.find(
`.${o.elementClass}:not(.${o.loadedClass}):not(.${o.loadingClass})`
);
!d.hasClass(o.elementClass) ||
d.hasClass(o.loadedClass) ||
d.hasClass(o.loadingClass) ||
t.push(d[0]),
0 !== t.length &&
t.each((e) => {
const t = z(e),
i =
(t.addClass(o.loadingClass),
t.attr("data-background")),
s = t.attr("data-src"),
a = t.attr("data-srcset"),
n = t.attr("data-sizes"),
r = t.parent("picture");
c.loadImage(t[0], s || i, a, n, !1, () => {
var e;
null == c ||
!c ||
(c && !c.params) ||
c.destroyed ||
(i
? (t.css("background-image", `url("${i}")`),
t.removeAttr("data-background"))
: (a &&
(t.attr("srcset", a),
t.removeAttr("data-srcset")),
n &&
(t.attr("sizes", n),
t.removeAttr("data-sizes")),
r.length &&
r.children("source").each((e) => {
const t = z(e);
t.attr("data-srcset") &&
(t.attr("srcset", t.attr("data-srcset")),
t.removeAttr("data-srcset"));
}),
s &&
(t.attr("src", s), t.removeAttr("data-src"))),
t.addClass(o.loadedClass).removeClass(o.loadingClass),
d.find("." + o.preloaderClass).remove(),
c.params.loop &&
l &&
((e = d.attr("data-swiper-slide-index")),
d.hasClass(c.params.slideDuplicateClass)
? u(
c.$wrapperEl
.children(
`[data-swiper-slide-index="${e}"]:not(.${c.params.slideDuplicateClass})`
)
.index(),
!1
)
: u(
c.$wrapperEl
.children(
`.${c.params.slideDuplicateClass}[data-swiper-slide-index="${e}"]`
)
.index(),
!1
)),
p("lazyImageReady", d[0], t[0]),
c.params.autoHeight && c.updateAutoHeight());
}),
p("lazyImageLoad", d[0], t[0]);
});
}
}
function m() {
const { $wrapperEl: t, params: i, slides: s, activeIndex: a } = c,
n = c.virtual && i.virtual.enabled,
e = i.lazy;
let r = i.slidesPerView;
function l(e) {
if (n) {
if (
t.children(
`.${i.slideClass}[data-swiper-slide-index="${e}"]`
).length
)
return 1;
} else if (s[e]) return 1;
}
function o(e) {
return n ? z(e).attr("data-swiper-slide-index") : z(e).index();
}
if (
("auto" === r && (r = 0),
(h = h || !0),
c.params.watchSlidesProgress)
)
t.children("." + i.slideVisibleClass).each((e) => {
u(n ? z(e).attr("data-swiper-slide-index") : z(e).index());
});
else if (1 < r) for (let e = a; e < a + r; e += 1) l(e) && u(e);
else u(a);
if (e.loadPrevNext)
if (
1 < r ||
(e.loadPrevNextAmount && 1 < e.loadPrevNextAmount)
) {
const t = e.loadPrevNextAmount,
c = Math.ceil(r),
i = Math.min(a + c + Math.max(t, c), s.length),
n = Math.max(a - Math.max(c, t), 0);
for (let e = a + c; e < i; e += 1) l(e) && u(e);
for (let e = n; e < a; e += 1) l(e) && u(e);
} else {
const c = t.children("." + i.slideNextClass),
s =
(0 < c.length && u(o(c)),
t.children("." + i.slidePrevClass));
0 < s.length && u(o(s));
}
}
function v() {
var e = $();
if (c && !c.destroyed) {
const s = c.params.lazy.scrollingElement
? z(c.params.lazy.scrollingElement)
: z(e),
a = s[0] === e,
n = a ? e.innerWidth : s[0].offsetWidth,
r = a ? e.innerHeight : s[0].offsetHeight,
l = c.$el.offset(),
o = c["rtlTranslate"];
let t = !1;
o && (l.left -= c.$el[0].scrollLeft);
var i = [
[l.left, l.top],
[l.left + c.width, l.top],
[l.left, l.top + c.height],
[l.left + c.width, l.top + c.height],
];
for (let e = 0; e < i.length; e += 1) {
const c = i[e];
0 <= c[0] &&
c[0] <= n &&
0 <= c[1] &&
c[1] <= r &&
((0 === c[0] && 0 === c[1]) || (t = !0));
}
e = !(
"touchstart" !== c.touchEvents.start ||
!c.support.passiveListener ||
!c.params.passiveListeners
) && { passive: !0, capture: !1 };
t
? (m(), s.off("scroll", v, e))
: d || ((d = !0), s.on("scroll", v, e));
}
}
i("beforeInit", () => {
c.params.lazy.enabled &&
c.params.preloadImages &&
(c.params.preloadImages = !1);
}),
i("init", () => {
c.params.lazy.enabled && (c.params.lazy.checkInView ? v : m)();
}),
i("scroll", () => {
c.params.freeMode &&
c.params.freeMode.enabled &&
!c.params.freeMode.sticky &&
m();
}),
i("scrollbarDragMove resize _freeModeNoMomentumRelease", () => {
c.params.lazy.enabled && (c.params.lazy.checkInView ? v : m)();
}),
i("transitionStart", () => {
c.params.lazy.enabled &&
(c.params.lazy.loadOnTransitionStart ||
(!c.params.lazy.loadOnTransitionStart && !h)) &&
(c.params.lazy.checkInView ? v : m)();
}),
i("transitionEnd", () => {
c.params.lazy.enabled &&
!c.params.lazy.loadOnTransitionStart &&
(c.params.lazy.checkInView ? v : m)();
}),
i("slideChange", () => {
var {
lazy: e,
cssMode: t,
watchSlidesProgress: i,
touchReleaseOnEdges: s,
resistanceRatio: a,
} = c.params;
e.enabled && (t || (i && (s || 0 === a))) && m();
}),
i("destroy", () => {
c.$el &&
c.$el
.find("." + c.params.lazy.loadingClass)
.removeClass(c.params.lazy.loadingClass);
}),
Object.assign(c.lazy, { load: m, loadInSlide: u });
},
function (e) {
let { swiper: l, extendParams: t, on: i } = e;
function o(e, t) {
const i = (function () {
let i, s, a;
return (e, t) => {
for (s = -1, i = e.length; 1 < i - s; )
e[(a = (i + s) >> 1)] <= t ? (s = a) : (i = a);
return i;
};
})();
let s, a;
return (
(this.x = e),
(this.y = t),
(this.lastIndex = e.length - 1),
(this.interpolate = function (e) {
return e
? ((a = i(this.x, e)),
(s = a - 1),
((e - this.x[s]) * (this.y[a] - this.y[s])) /
(this.x[a] - this.x[s]) +
this.y[s])
: 0;
}),
this
);
}
function s() {
l.controller.control &&
l.controller.spline &&
((l.controller.spline = void 0), delete l.controller.spline);
}
t({ controller: { control: void 0, inverse: !1, by: "slide" } }),
(l.controller = { control: void 0 }),
i("beforeInit", () => {
l.controller.control = l.params.controller.control;
}),
i("update", () => {
s();
}),
i("resize", () => {
s();
}),
i("observerUpdate", () => {
s();
}),
i("setTranslate", (e, t, i) => {
l.controller.control && l.controller.setTranslate(t, i);
}),
i("setTransition", (e, t, i) => {
l.controller.control && l.controller.setTransition(t, i);
}),
Object.assign(l.controller, {
setTranslate: function (e, t) {
var i = l.controller.control;
let s, a;
var n = l.constructor;
function r(e) {
var t,
i = l.rtlTranslate ? -l.translate : l.translate;
"slide" === l.params.controller.by &&
((t = e),
l.controller.spline ||
(l.controller.spline = l.params.loop
? new o(l.slidesGrid, t.slidesGrid)
: new o(l.snapGrid, t.snapGrid)),
(a = -l.controller.spline.interpolate(-i))),
(a && "container" !== l.params.controller.by) ||
((s =
(e.maxTranslate() - e.minTranslate()) /
(l.maxTranslate() - l.minTranslate())),
(a = (i - l.minTranslate()) * s + e.minTranslate())),
l.params.controller.inverse && (a = e.maxTranslate() - a),
e.updateProgress(a),
e.setTranslate(a, l),
e.updateActiveIndex(),
e.updateSlidesClasses();
}
if (Array.isArray(i))
for (let e = 0; e < i.length; e += 1)
i[e] !== t && i[e] instanceof n && r(i[e]);
else i instanceof n && t !== i && r(i);
},
setTransition: function (t, e) {
const i = l.constructor,
s = l.controller.control;
let a;
function n(e) {
e.setTransition(t, l),
0 !== t &&
(e.transitionStart(),
e.params.autoHeight &&
x(() => {
e.updateAutoHeight();
}),
e.$wrapperEl.transitionEnd(() => {
s &&
(e.params.loop &&
"slide" === l.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 i && n(s[a]);
else s instanceof i && e !== s && n(s);
},
});
},
function (e) {
let { swiper: r, extendParams: t, on: i } = e,
l =
(t({
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}}",
slideLabelMessage: "{{index}} / {{slidesLength}}",
containerMessage: null,
containerRoleDescriptionMessage: null,
itemRoleDescriptionMessage: null,
slideRole: "group",
id: null,
},
}),
(r.a11y = { clicked: !1 }),
null);
function s(e) {
const t = l;
0 !== t.length && (t.html(""), t.html(e));
}
function a(e) {
e.attr("tabIndex", "0");
}
function n(e) {
e.attr("tabIndex", "-1");
}
function o(e, t) {
e.attr("role", t);
}
function d(e, t) {
e.attr("aria-roledescription", t);
}
function c(e, t) {
e.attr("aria-label", t);
}
function p(e) {
e.attr("aria-disabled", !0);
}
function h(e) {
e.attr("aria-disabled", !1);
}
function u(e) {
if (13 === e.keyCode || 32 === e.keyCode) {
const t = r.params.a11y,
i = z(e.target);
r.navigation &&
r.navigation.$nextEl &&
i.is(r.navigation.$nextEl) &&
((r.isEnd && !r.params.loop) || r.slideNext(),
r.isEnd ? s(t.lastSlideMessage) : s(t.nextSlideMessage)),
r.navigation &&
r.navigation.$prevEl &&
i.is(r.navigation.$prevEl) &&
((r.isBeginning && !r.params.loop) || r.slidePrev(),
r.isBeginning
? s(t.firstSlideMessage)
: s(t.prevSlideMessage)),
r.pagination &&
i.is(A(r.params.pagination.bulletClass)) &&
i[0].click();
}
}
function m() {
return (
r.pagination &&
r.pagination.bullets &&
r.pagination.bullets.length
);
}
function v() {
return m() && r.params.pagination.clickable;
}
const g = (e, t, i) => {
a(e),
"BUTTON" !== e[0].tagName &&
(o(e, "button"), e.on("keydown", u)),
c(e, i),
e.attr("aria-controls", t);
},
f = () => {
r.a11y.clicked = !0;
},
w = () => {
requestAnimationFrame(() => {
requestAnimationFrame(() => {
r.destroyed || (r.a11y.clicked = !1);
});
});
},
b = (e) => {
var t, i, s;
r.a11y.clicked ||
((t = e.target.closest("." + r.params.slideClass)) &&
r.slides.includes(t) &&
((i = r.slides.indexOf(t) === r.activeIndex),
(s =
r.params.watchSlidesProgress &&
r.visibleSlides &&
r.visibleSlides.includes(t)),
i ||
s ||
(e.sourceCapabilities &&
e.sourceCapabilities.firesTouchEvents) ||
(r.isHorizontal()
? (r.el.scrollLeft = 0)
: (r.el.scrollTop = 0),
r.slideTo(r.slides.indexOf(t), 0))));
},
E = () => {
const a = r.params.a11y,
n =
(a.itemRoleDescriptionMessage &&
d(z(r.slides), a.itemRoleDescriptionMessage),
a.slideRole && o(z(r.slides), a.slideRole),
(r.params.loop
? r.slides.filter(
(e) =>
!e.classList.contains(r.params.slideDuplicateClass)
)
: r.slides
).length);
a.slideLabelMessage &&
r.slides.each((e, t) => {
const i = z(e),
s = r.params.loop
? parseInt(i.attr("data-swiper-slide-index"), 10)
: t;
c(
i,
a.slideLabelMessage
.replace(/\{\{index\}\}/, s + 1)
.replace(/\{\{slidesLength\}\}/, n)
);
});
};
i("beforeInit", () => {
l = z(
`
`
);
}),
i("afterInit", () => {
if (r.params.a11y.enabled) {
var i = r.params.a11y,
s = (r.$el.append(l), r.$el);
i.containerRoleDescriptionMessage &&
d(s, i.containerRoleDescriptionMessage),
i.containerMessage && c(s, i.containerMessage);
const a = r.$wrapperEl,
n =
i.id ||
a.attr("id") ||
"swiper-wrapper-" +
"x"
.repeat((s = void 0 === (s = 16) ? 16 : s))
.replace(/x/g, () =>
Math.round(16 * Math.random()).toString(16)
);
s =
r.params.autoplay && r.params.autoplay.enabled
? "off"
: "polite";
let e, t;
a.attr("id", n),
a.attr("aria-live", s),
E(),
r.navigation &&
r.navigation.$nextEl &&
(e = r.navigation.$nextEl),
r.navigation &&
r.navigation.$prevEl &&
(t = r.navigation.$prevEl),
e && e.length && g(e, n, i.nextSlideMessage),
t && t.length && g(t, n, i.prevSlideMessage),
v() &&
r.pagination.$el.on(
"keydown",
A(r.params.pagination.bulletClass),
u
),
r.$el.on("focus", b, !0),
r.$el.on("pointerdown", f, !0),
r.$el.on("pointerup", w, !0);
}
}),
i(
"slidesLengthChange snapGridLengthChange slidesGridLengthChange",
() => {
r.params.a11y.enabled && E();
}
),
i("fromEdge toEdge afterInit lock unlock", () => {
var e, t;
r.params.a11y.enabled &&
!r.params.loop &&
!r.params.rewind &&
r.navigation &&
(({ $nextEl: e, $prevEl: t } = r.navigation),
t &&
0 < t.length &&
(r.isBeginning ? (p(t), n(t)) : (h(t), a(t))),
e && 0 < e.length && (r.isEnd ? (p(e), n(e)) : (h(e), a(e))));
}),
i("paginationUpdate", () => {
if (r.params.a11y.enabled) {
const i = r.params.a11y;
m() &&
r.pagination.bullets.each((e) => {
const t = z(e);
r.params.pagination.clickable &&
(a(t),
r.params.pagination.renderBullet ||
(o(t, "button"),
c(
t,
i.paginationBulletMessage.replace(
/\{\{index\}\}/,
t.index() + 1
)
))),
t.is("." + r.params.pagination.bulletActiveClass)
? t.attr("aria-current", "true")
: t.removeAttr("aria-current");
});
}
}),
i("destroy", () => {
if (r.params.a11y.enabled) {
let e, t;
l && 0 < l.length && l.remove(),
r.navigation &&
r.navigation.$nextEl &&
(e = r.navigation.$nextEl),
r.navigation &&
r.navigation.$prevEl &&
(t = r.navigation.$prevEl),
e && e.off("keydown", u),
t && t.off("keydown", u),
v() &&
r.pagination.$el.off(
"keydown",
A(r.params.pagination.bulletClass),
u
),
r.$el.off("focus", b, !0),
r.$el.off("pointerdown", f, !0),
r.$el.off("pointerup", w, !0);
}
});
},
function (e) {
let { swiper: r, extendParams: t, on: i } = e,
l =
(t({
history: {
enabled: !1,
root: "",
replaceState: !1,
key: "slides",
keepQuery: !1,
},
}),
!1),
s = {};
const o = (e) =>
e
.toString()
.replace(/\s+/g, "-")
.replace(/[^\w-]+/g, "")
.replace(/--+/g, "-")
.replace(/^-+/, "")
.replace(/-+$/, ""),
a = (e) => {
var t = $();
let i;
(e = (i = e ? new URL(e) : t.location).pathname
.slice(1)
.split("/")
.filter((e) => "" !== e)),
(t = e.length);
return { key: e[t - 2], value: e[t - 1] };
},
n = (i, s) => {
const a = $();
if (l && r.params.history.enabled) {
let e;
e = r.params.url ? new URL(r.params.url) : a.location;
const n = r.slides.eq(s);
let t = o(n.attr("data-history"));
if (0 < r.params.history.root.length) {
let e = r.params.history.root;
"/" === e[e.length - 1] && (e = e.slice(0, e.length - 1)),
(t = e + `/${i}/` + t);
} else e.pathname.includes(i) || (t = i + "/" + t);
r.params.history.keepQuery && (t += e.search);
s = a.history.state;
(s && s.value === t) ||
(r.params.history.replaceState
? a.history.replaceState({ value: t }, null, t)
: a.history.pushState({ value: t }, null, t));
}
},
d = (i, s, a) => {
if (s)
for (let e = 0, t = r.slides.length; e < t; e += 1) {
const n = r.slides.eq(e);
if (
o(n.attr("data-history")) === s &&
!n.hasClass(r.params.slideDuplicateClass)
) {
const s = n.index();
r.slideTo(s, i, a);
}
}
else r.slideTo(0, i, a);
},
c = () => {
(s = a(r.params.url)), d(r.params.speed, s.value, !1);
};
i("init", () => {
if (r.params.history.enabled) {
const e = $();
if (r.params.history) {
if (!e.history || !e.history.pushState)
return void ((r.params.history.enabled = !1),
(r.params.hashNavigation.enabled = !0));
(l = !0),
((s = a(r.params.url)).key || s.value) &&
(d(0, s.value, r.params.runCallbacksOnInit),
r.params.history.replaceState ||
e.addEventListener("popstate", c));
}
}
}),
i("destroy", () => {
if (r.params.history.enabled) {
const e = $();
r.params.history.replaceState ||
e.removeEventListener("popstate", c);
}
}),
i("transitionEnd _freeModeNoMomentumRelease", () => {
l && n(r.params.history.key, r.activeIndex);
}),
i("slideChange", () => {
l && r.params.cssMode && n(r.params.history.key, r.activeIndex);
});
},
function (e) {
let { swiper: a, extendParams: t, emit: i, on: s } = e,
n = !1;
const r = S(),
l = $(),
o =
(t({
hashNavigation: {
enabled: !1,
replaceState: !1,
watchState: !1,
},
}),
() => {
i("hashChange");
var e = r.location.hash.replace("#", "");
e !== a.slides.eq(a.activeIndex).attr("data-hash") &&
void 0 !==
(e = a.$wrapperEl
.children(`.${a.params.slideClass}[data-hash="${e}"]`)
.index()) &&
a.slideTo(e);
}),
d = () => {
if (n && a.params.hashNavigation.enabled)
if (
a.params.hashNavigation.replaceState &&
l.history &&
l.history.replaceState
)
l.history.replaceState(
null,
null,
"#" + a.slides.eq(a.activeIndex).attr("data-hash") || ""
),
i("hashSet");
else {
const e = a.slides.eq(a.activeIndex),
t = e.attr("data-hash") || e.attr("data-history");
(r.location.hash = t || ""), i("hashSet");
}
};
s("init", () => {
if (
a.params.hashNavigation.enabled &&
!(
!a.params.hashNavigation.enabled ||
(a.params.history && a.params.history.enabled)
)
) {
n = !0;
const i = r.location.hash.replace("#", "");
if (i)
for (let e = 0, t = a.slides.length; e < t; e += 1) {
const s = a.slides.eq(e);
if (
(s.attr("data-hash") || s.attr("data-history")) === i &&
!s.hasClass(a.params.slideDuplicateClass)
) {
const i = s.index();
a.slideTo(i, 0, a.params.runCallbacksOnInit, !0);
}
}
a.params.hashNavigation.watchState && z(l).on("hashchange", o);
}
}),
s("destroy", () => {
a.params.hashNavigation.enabled &&
a.params.hashNavigation.watchState &&
z(l).off("hashchange", o);
}),
s("transitionEnd _freeModeNoMomentumRelease", () => {
n && d();
}),
s("slideChange", () => {
n && a.params.cssMode && d();
});
},
function (e) {
let i,
{ swiper: s, extendParams: t, on: a, emit: n } = e;
function r() {
if (!s.size)
return (s.autoplay.running = !1), void (s.autoplay.paused = !1);
const e = s.slides.eq(s.activeIndex);
let t = s.params.autoplay.delay;
e.attr("data-swiper-autoplay") &&
(t = e.attr("data-swiper-autoplay") || s.params.autoplay.delay),
clearTimeout(i),
(i = x(() => {
let e;
s.params.autoplay.reverseDirection
? s.params.loop
? (s.loopFix(),
(e = s.slidePrev(s.params.speed, !0, !0)),
n("autoplay"))
: s.isBeginning
? s.params.autoplay.stopOnLastSlide
? o()
: ((e = s.slideTo(
s.slides.length - 1,
s.params.speed,
!0,
!0
)),
n("autoplay"))
: ((e = s.slidePrev(s.params.speed, !0, !0)),
n("autoplay"))
: s.params.loop
? (s.loopFix(),
(e = s.slideNext(s.params.speed, !0, !0)),
n("autoplay"))
: s.isEnd
? s.params.autoplay.stopOnLastSlide
? o()
: ((e = s.slideTo(0, s.params.speed, !0, !0)),
n("autoplay"))
: ((e = s.slideNext(s.params.speed, !0, !0)),
n("autoplay")),
((s.params.cssMode && s.autoplay.running) || !1 === e) &&
r();
}, t));
}
function l() {
return (
void 0 === i &&
!s.autoplay.running &&
((s.autoplay.running = !0), n("autoplayStart"), r(), !0)
);
}
function o() {
return (
!!s.autoplay.running &&
void 0 !== i &&
(i && (clearTimeout(i), (i = void 0)),
(s.autoplay.running = !1),
n("autoplayStop"),
!0)
);
}
function d(e) {
!s.autoplay.running ||
s.autoplay.paused ||
(i && clearTimeout(i),
(s.autoplay.paused = !0),
0 !== e && s.params.autoplay.waitForTransition
? ["transitionend", "webkitTransitionEnd"].forEach((e) => {
s.$wrapperEl[0].addEventListener(e, p);
})
: ((s.autoplay.paused = !1), r()));
}
function c() {
var e = S();
"hidden" === e.visibilityState && s.autoplay.running && d(),
"visible" === e.visibilityState &&
s.autoplay.paused &&
(r(), (s.autoplay.paused = !1));
}
function p(e) {
s &&
!s.destroyed &&
s.$wrapperEl &&
e.target === s.$wrapperEl[0] &&
(["transitionend", "webkitTransitionEnd"].forEach((e) => {
s.$wrapperEl[0].removeEventListener(e, p);
}),
(s.autoplay.paused = !1),
(s.autoplay.running ? r : o)());
}
function h() {
s.params.autoplay.disableOnInteraction
? o()
: (n("autoplayPause"), d()),
["transitionend", "webkitTransitionEnd"].forEach((e) => {
s.$wrapperEl[0].removeEventListener(e, p);
});
}
function u() {
s.params.autoplay.disableOnInteraction ||
((s.autoplay.paused = !1), n("autoplayResume"), r());
}
(s.autoplay = { running: !1, paused: !1 }),
t({
autoplay: {
enabled: !1,
delay: 3e3,
waitForTransition: !0,
disableOnInteraction: !0,
stopOnLastSlide: !1,
reverseDirection: !1,
pauseOnMouseEnter: !1,
},
}),
a("init", () => {
s.params.autoplay.enabled &&
(l(),
S().addEventListener("visibilitychange", c),
s.params.autoplay.pauseOnMouseEnter &&
(s.$el.on("mouseenter", h), s.$el.on("mouseleave", u)));
}),
a("beforeTransitionStart", (e, t, i) => {
s.autoplay.running &&
(i || !s.params.autoplay.disableOnInteraction
? s.autoplay.pause(t)
: o());
}),
a("sliderFirstMove", () => {
s.autoplay.running &&
(s.params.autoplay.disableOnInteraction ? o : d)();
}),
a("touchEnd", () => {
s.params.cssMode &&
s.autoplay.paused &&
!s.params.autoplay.disableOnInteraction &&
r();
}),
a("destroy", () => {
s.$el.off("mouseenter", h),
s.$el.off("mouseleave", u),
s.autoplay.running && o(),
S().removeEventListener("visibilitychange", c);
}),
Object.assign(s.autoplay, {
pause: d,
run: r,
start: l,
stop: o,
});
},
function (e) {
let { swiper: o, extendParams: t, on: i } = e,
s =
(t({
thumbs: {
swiper: null,
multipleActiveThumbs: !0,
autoScrollOffset: 0,
slideThumbActiveClass: "swiper-slide-thumb-active",
thumbsContainerClass: "swiper-thumbs",
},
}),
!1),
a = !1;
function n() {
var e = o.thumbs.swiper;
if (e && !e.destroyed) {
const i = e.clickedIndex,
s = e.clickedSlide;
if (
!(
(s &&
z(s).hasClass(o.params.thumbs.slideThumbActiveClass)) ||
null == i
)
) {
let t;
if (
((t = e.params.loop
? parseInt(
z(e.clickedSlide).attr("data-swiper-slide-index"),
10
)
: i),
o.params.loop)
) {
let e = o.activeIndex;
o.slides.eq(e).hasClass(o.params.slideDuplicateClass) &&
(o.loopFix(),
(o._clientLeft = o.$wrapperEl[0].clientLeft),
(e = o.activeIndex));
const i = o.slides
.eq(e)
.prevAll(`[data-swiper-slide-index="${t}"]`)
.eq(0)
.index(),
s = o.slides
.eq(e)
.nextAll(`[data-swiper-slide-index="${t}"]`)
.eq(0)
.index();
t = void 0 === i || (void 0 !== s && s - e < e - i) ? s : i;
}
o.slideTo(t);
}
}
}
function r() {
var e = o.params["thumbs"];
if (s) return !1;
s = !0;
const t = o.constructor;
return (
e.swiper instanceof t
? ((o.thumbs.swiper = e.swiper),
Object.assign(o.thumbs.swiper.originalParams, {
watchSlidesProgress: !0,
slideToClickedSlide: !1,
}),
Object.assign(o.thumbs.swiper.params, {
watchSlidesProgress: !0,
slideToClickedSlide: !1,
}))
: d(e.swiper) &&
((e = Object.assign({}, e.swiper)),
Object.assign(e, {
watchSlidesProgress: !0,
slideToClickedSlide: !1,
}),
(o.thumbs.swiper = new t(e)),
(a = !0)),
o.thumbs.swiper.$el.addClass(
o.params.thumbs.thumbsContainerClass
),
o.thumbs.swiper.on("tap", n),
!0
);
}
function l(s) {
const a = o.thumbs.swiper;
if (a && !a.destroyed) {
const l =
"auto" === a.params.slidesPerView
? a.slidesPerViewDynamic()
: a.params.slidesPerView;
let t = 1;
var i = o.params.thumbs.slideThumbActiveClass;
if (
(1 < o.params.slidesPerView &&
!o.params.centeredSlides &&
(t = o.params.slidesPerView),
o.params.thumbs.multipleActiveThumbs || (t = 1),
(t = Math.floor(t)),
a.slides.removeClass(i),
a.params.loop ||
(a.params.virtual && a.params.virtual.enabled))
)
for (let e = 0; e < t; e += 1)
a.$wrapperEl
.children(
`[data-swiper-slide-index="${o.realIndex + e}"]`
)
.addClass(i);
else
for (let e = 0; e < t; e += 1)
a.slides.eq(o.realIndex + e).addClass(i);
var n = o.params.thumbs.autoScrollOffset,
r = n && !a.params.loop;
if (o.realIndex !== a.realIndex || r) {
let e,
t,
i = a.activeIndex;
if (a.params.loop) {
a.slides.eq(i).hasClass(a.params.slideDuplicateClass) &&
(a.loopFix(),
(a._clientLeft = a.$wrapperEl[0].clientLeft),
(i = a.activeIndex));
const s = a.slides
.eq(i)
.prevAll(`[data-swiper-slide-index="${o.realIndex}"]`)
.eq(0)
.index(),
l = a.slides
.eq(i)
.nextAll(`[data-swiper-slide-index="${o.realIndex}"]`)
.eq(0)
.index();
(e =
void 0 === s
? l
: void 0 === l
? s
: l - i == i - s
? 1 < a.params.slidesPerGroup
? l
: i
: l - i < i - s
? l
: s),
(t = o.activeIndex > o.previousIndex ? "next" : "prev");
} else
(e = o.realIndex),
(t = e > o.previousIndex ? "next" : "prev");
r && (e += "next" === t ? n : -1 * n),
a.visibleSlidesIndexes &&
a.visibleSlidesIndexes.indexOf(e) < 0 &&
(a.params.centeredSlides
? (e =
e > i
? e - Math.floor(l / 2) + 1
: e + Math.floor(l / 2) - 1)
: e > i && a.params.slidesPerGroup,
a.slideTo(e, s ? 0 : void 0));
}
}
}
(o.thumbs = { swiper: null }),
i("beforeInit", () => {
var e = o.params["thumbs"];
e && e.swiper && (r(), l(!0));
}),
i("slideChange update resize observerUpdate", () => {
l();
}),
i("setTransition", (e, t) => {
const i = o.thumbs.swiper;
i && !i.destroyed && i.setTransition(t);
}),
i("beforeDestroy", () => {
const e = o.thumbs.swiper;
e && !e.destroyed && a && e.destroy();
}),
Object.assign(o.thumbs, { init: r, update: l });
},
function (e) {
let { swiper: h, extendParams: t, emit: u, once: m } = e;
t({
freeMode: {
enabled: !1,
momentum: !0,
momentumRatio: 1,
momentumBounce: !0,
momentumBounceRatio: 1,
momentumVelocityRatio: 1,
sticky: !1,
minimumVelocity: 0.02,
},
}),
Object.assign(h, {
freeMode: {
onTouchStart: function () {
var e = h.getTranslate();
h.setTranslate(e),
h.setTransition(0),
(h.touchEventsData.velocities.length = 0),
h.freeMode.onTouchEnd({
currentPos: h.rtl ? h.translate : -h.translate,
});
},
onTouchMove: function () {
const { touchEventsData: e, touches: t } = h;
0 === e.velocities.length &&
e.velocities.push({
position: t[h.isHorizontal() ? "startX" : "startY"],
time: e.touchStartTime,
}),
e.velocities.push({
position: t[h.isHorizontal() ? "currentX" : "currentY"],
time: f(),
});
},
onTouchEnd: function (n) {
let r = n["currentPos"];
const {
params: l,
$wrapperEl: o,
rtlTranslate: d,
snapGrid: c,
touchEventsData: p,
} = h,
e = f() - p.touchStartTime;
if (r < -h.minTranslate()) h.slideTo(h.activeIndex);
else if (r > -h.maxTranslate())
h.slides.length < c.length
? h.slideTo(c.length - 1)
: h.slideTo(h.slides.length - 1);
else {
if (l.freeMode.momentum) {
if (1 < p.velocities.length) {
const n = p.velocities.pop(),
r = p.velocities.pop(),
u = n.position - r.position,
m = n.time - r.time;
(h.velocity = u / m),
(h.velocity /= 2),
Math.abs(h.velocity) < l.freeMode.minimumVelocity &&
(h.velocity = 0),
(150 < m || 300 < f() - n.time) && (h.velocity = 0);
} else h.velocity = 0;
(h.velocity *= l.freeMode.momentumVelocityRatio),
(p.velocities.length = 0);
let e = 1e3 * l.freeMode.momentumRatio;
const r = h.velocity * e;
let i = h.translate + r;
d && (i = -i);
let t,
s = !1;
n =
20 *
Math.abs(h.velocity) *
l.freeMode.momentumBounceRatio;
let a;
if (i < h.maxTranslate())
l.freeMode.momentumBounce
? (i + h.maxTranslate() < -n &&
(i = h.maxTranslate() - n),
(t = h.maxTranslate()),
(s = !0),
(p.allowMomentumBounce = !0))
: (i = h.maxTranslate()),
l.loop && l.centeredSlides && (a = !0);
else if (i > h.minTranslate())
l.freeMode.momentumBounce
? (i - h.minTranslate() > n &&
(i = h.minTranslate() + n),
(t = h.minTranslate()),
(s = !0),
(p.allowMomentumBounce = !0))
: (i = h.minTranslate()),
l.loop && l.centeredSlides && (a = !0);
else if (l.freeMode.sticky) {
let t;
for (let e = 0; e < c.length; e += 1)
if (c[e] > -i) {
t = e;
break;
}
i = -(i =
Math.abs(c[t] - i) < Math.abs(c[t - 1] - i) ||
"next" === h.swipeDirection
? c[t]
: c[t - 1]);
}
if (
(a &&
m("transitionEnd", () => {
h.loopFix();
}),
0 !== h.velocity)
) {
if (
((e = d
? Math.abs((-i - h.translate) / h.velocity)
: Math.abs((i - h.translate) / h.velocity)),
l.freeMode.sticky)
) {
const r = Math.abs((d ? -i : i) - h.translate),
u = h.slidesSizesGrid[h.activeIndex];
e =
r < u
? l.speed
: r < 2 * u
? 1.5 * l.speed
: 2.5 * l.speed;
}
} else if (l.freeMode.sticky)
return void h.slideToClosest();
l.freeMode.momentumBounce && s
? (h.updateProgress(t),
h.setTransition(e),
h.setTranslate(i),
h.transitionStart(!0, h.swipeDirection),
(h.animating = !0),
o.transitionEnd(() => {
h &&
!h.destroyed &&
p.allowMomentumBounce &&
(u("momentumBounce"),
h.setTransition(l.speed),
setTimeout(() => {
h.setTranslate(t),
o.transitionEnd(() => {
h && !h.destroyed && h.transitionEnd();
});
}, 0));
}))
: h.velocity
? (u("_freeModeNoMomentumRelease"),
h.updateProgress(i),
h.setTransition(e),
h.setTranslate(i),
h.transitionStart(!0, h.swipeDirection),
h.animating ||
((h.animating = !0),
o.transitionEnd(() => {
h && !h.destroyed && h.transitionEnd();
})))
: h.updateProgress(i),
h.updateActiveIndex(),
h.updateSlidesClasses();
} else {
if (l.freeMode.sticky) return void h.slideToClosest();
l.freeMode && u("_freeModeNoMomentumRelease");
}
(!l.freeMode.momentum || e >= l.longSwipesMs) &&
(h.updateProgress(),
h.updateActiveIndex(),
h.updateSlidesClasses());
}
},
},
});
},
function (e) {
let p,
h,
u,
{ swiper: m, extendParams: t } = e;
t({ grid: { rows: 1, fill: "column" } }),
(m.grid = {
initSlides: (e) => {
var t = m.params["slidesPerView"],
{ rows: i, fill: s } = m.params.grid;
(h = p / i),
(u = Math.floor(e / i)),
(p =
Math.floor(e / i) === e / i ? e : Math.ceil(e / i) * i),
"auto" !== t && "row" === s && (p = Math.max(p, t * i));
},
updateSlide: (e, t, i, s) => {
var { slidesPerGroup: a, spaceBetween: n } = m.params,
{ rows: r, fill: l } = m.params.grid;
let o, d, c;
if ("row" === l && 1 < a) {
const h = Math.floor(e / (a * r)),
u = e - r * a * h,
m =
0 === h
? a
: Math.min(Math.ceil((i - h * r * a) / r), a);
(c = Math.floor(u / m)),
(o = (d = u - c * m + h * a) + (c * p) / r),
t.css({ "-webkit-order": o, order: o });
} else
"column" === l
? ((d = Math.floor(e / r)),
(c = e - d * r),
(d > u || (d === u && c === r - 1)) &&
(c += 1) >= r &&
((c = 0), (d += 1)))
: ((c = Math.floor(e / h)), (d = e - c * h));
t.css(s("margin-top"), 0 !== c ? n && n + "px" : "");
},
updateWrapperSize: (i, s, e) => {
var {
spaceBetween: t,
centeredSlides: a,
roundLengths: n,
} = m.params,
r = m.params.grid["rows"];
if (
((m.virtualSize = (i + t) * p),
(m.virtualSize = Math.ceil(m.virtualSize / r) - t),
m.$wrapperEl.css({
[e("width")]: m.virtualSize + t + "px",
}),
a)
) {
s.splice(0, s.length);
const i = [];
for (let t = 0; t < s.length; t += 1) {
let e = s[t];
n && (e = Math.floor(e)),
s[t] < m.virtualSize + s[0] && i.push(e);
}
s.push(...i);
}
},
});
},
function (e) {
e = e.swiper;
Object.assign(e, {
appendSlide: function (t) {
const { $wrapperEl: i, params: e } = this;
if (
(e.loop && this.loopDestroy(),
"object" == typeof t && "length" in t)
)
for (let e = 0; e < t.length; e += 1) t[e] && i.append(t[e]);
else i.append(t);
e.loop && this.loopCreate(), e.observer || this.update();
}.bind(e),
prependSlide: function (t) {
const e = this,
{ params: i, $wrapperEl: s, activeIndex: a } = e;
i.loop && e.loopDestroy();
let n = a + 1;
if ("object" == typeof t && "length" in t) {
for (let e = 0; e < t.length; e += 1) t[e] && s.prepend(t[e]);
n = a + t.length;
} else s.prepend(t);
i.loop && e.loopCreate(),
i.observer || e.update(),
e.slideTo(n, 0, !1);
}.bind(e),
addSlide: function (t, i) {
const s = this,
{ $wrapperEl: a, params: n, activeIndex: e } = s;
let r = e;
n.loop &&
((r -= s.loopedSlides),
s.loopDestroy(),
(s.slides = a.children("." + n.slideClass)));
var l = s.slides.length;
if (t <= 0) s.prependSlide(i);
else if (l <= t) s.appendSlide(i);
else {
let e = r > t ? r + 1 : r;
const o = [];
for (let e = l - 1; e >= t; --e) {
const t = s.slides.eq(e);
t.remove(), o.unshift(t);
}
if ("object" == typeof i && "length" in i) {
for (let e = 0; e < i.length; e += 1)
i[e] && a.append(i[e]);
e = r > t ? r + i.length : r;
} else a.append(i);
for (let e = 0; e < o.length; e += 1) a.append(o[e]);
n.loop && s.loopCreate(),
n.observer || s.update(),
n.loop
? s.slideTo(e + s.loopedSlides, 0, !1)
: s.slideTo(e, 0, !1);
}
}.bind(e),
removeSlide: function (t) {
const i = this,
{ params: e, $wrapperEl: s, activeIndex: a } = i;
let n = a;
e.loop &&
((n -= i.loopedSlides),
i.loopDestroy(),
(i.slides = s.children("." + e.slideClass)));
let r,
l = n;
if ("object" == typeof t && "length" in t) {
for (let e = 0; e < t.length; e += 1)
(r = t[e]),
i.slides[r] && i.slides.eq(r).remove(),
r < l && --l;
l = Math.max(l, 0);
} else
(r = t),
i.slides[r] && i.slides.eq(r).remove(),
r < l && --l,
(l = Math.max(l, 0));
e.loop && i.loopCreate(),
e.observer || i.update(),
e.loop
? i.slideTo(l + i.loopedSlides, 0, !1)
: i.slideTo(l, 0, !1);
}.bind(e),
removeAllSlides: function () {
const t = [];
for (let e = 0; e < this.slides.length; e += 1) t.push(e);
this.removeSlide(t);
}.bind(e),
});
},
function (e) {
let { swiper: r, extendParams: t, on: i } = e;
t({ fadeEffect: { crossFade: !1, transformEl: null } }),
P({
effect: "fade",
swiper: r,
on: i,
setTranslate: () => {
const s = r["slides"],
a = r.params.fadeEffect;
for (let i = 0; i < s.length; i += 1) {
const s = r.slides.eq(i);
let e = -s[0].swiperSlideOffset,
t = (r.params.virtualTranslate || (e -= r.translate), 0);
r.isHorizontal() || ((t = e), (e = 0));
var n = r.params.fadeEffect.crossFade
? Math.max(1 - Math.abs(s[0].progress), 0)
: 1 + Math.min(Math.max(s[0].progress, -1), 0);
I(a, s)
.css({ opacity: n })
.transform(`translate3d(${e}px, ${t}px, 0px)`);
}
},
setTransition: (e) => {
var t = r.params.fadeEffect["transformEl"];
(t ? r.slides.find(t) : r.slides).transition(e),
O({
swiper: r,
duration: e,
transformEl: t,
allSlides: !0,
});
},
overwriteParams: () => ({
slidesPerView: 1,
slidesPerGroup: 1,
watchSlidesProgress: !0,
spaceBetween: 0,
virtualTranslate: !r.params.cssMode,
}),
});
},
function (e) {
let { swiper: v, extendParams: t, on: i } = e;
t({
cubeEffect: {
slideShadows: !0,
shadow: !0,
shadowOffset: 20,
shadowScale: 0.94,
},
});
const g = (e, t, i) => {
let s = i
? e.find(".swiper-slide-shadow-left")
: e.find(".swiper-slide-shadow-top"),
a = i
? e.find(".swiper-slide-shadow-right")
: e.find(".swiper-slide-shadow-bottom");
0 === s.length &&
((s = z(
`
`
)),
e.append(s)),
0 === a.length &&
((a = z(
`
`
)),
e.append(a)),
s.length && (s[0].style.opacity = Math.max(-t, 0)),
a.length && (a[0].style.opacity = Math.max(t, 0));
};
P({
effect: "cube",
swiper: v,
on: i,
setTranslate: () => {
const {
$el: e,
$wrapperEl: t,
slides: l,
width: i,
height: s,
rtlTranslate: o,
size: d,
browser: a,
} = v,
c = v.params.cubeEffect,
p = v.isHorizontal(),
h = v.virtual && v.params.virtual.enabled;
let n,
u = 0;
c.shadow &&
(p
? (0 === (n = t.find(".swiper-cube-shadow")).length &&
((n = z('
')),
t.append(n)),
n.css({ height: i + "px" }))
: 0 === (n = e.find(".swiper-cube-shadow")).length &&
((n = z('
')),
e.append(n)));
for (let r = 0; r < l.length; r += 1) {
const v = l.eq(r);
let e = r,
t =
90 *
(e = h
? parseInt(v.attr("data-swiper-slide-index"), 10)
: e),
i = Math.floor(t / 360);
o && ((t = -t), (i = Math.floor(-t / 360)));
const z = Math.max(Math.min(v[0].progress, 1), -1);
let s = 0,
a = 0,
n = 0;
e % 4 == 0
? ((s = 4 * -i * d), (n = 0))
: (e - 1) % 4 == 0
? ((s = 0), (n = 4 * -i * d))
: (e - 2) % 4 == 0
? ((s = d + 4 * i * d), (n = d))
: (e - 3) % 4 == 0 && ((s = -d), (n = 3 * d + 4 * d * i)),
o && (s = -s),
p || ((a = s), (s = 0));
var m = `rotateX(${p ? 0 : -t}deg) rotateY(${
p ? t : 0
}deg) translate3d(${s}px, ${a}px, ${n}px)`;
z <= 1 &&
-1 < z &&
((u = 90 * e + 90 * z), o && (u = 90 * -e - 90 * z)),
v.transform(m),
c.slideShadows && g(v, z, p);
}
if (
(t.css({
"-webkit-transform-origin": `50% 50% -${d / 2}px`,
"transform-origin": `50% 50% -${d / 2}px`,
}),
c.shadow)
)
if (p)
n.transform(
`translate3d(0px, ${i / 2 + c.shadowOffset}px, ${
-i / 2
}px) rotateX(90deg) rotateZ(0deg) scale(${c.shadowScale})`
);
else {
const e = Math.abs(u) - 90 * Math.floor(Math.abs(u) / 90),
v =
1.5 -
(Math.sin((2 * e * Math.PI) / 360) / 2 +
Math.cos((2 * e * Math.PI) / 360) / 2),
t = c.shadowScale,
l = c.shadowScale / v,
g = c.shadowOffset;
n.transform(
`scale3d(${t}, 1, ${l}) translate3d(0px, ${
s / 2 + g
}px, ${-s / 2 / l}px) rotateX(-90deg)`
);
}
var r = a.isSafari || a.isWebView ? -d / 2 : 0;
t.transform(
`translate3d(0px,0,${r}px) rotateX(${
v.isHorizontal() ? 0 : u
}deg) rotateY(${v.isHorizontal() ? -u : 0}deg)`
),
t[0].style.setProperty("--swiper-cube-translate-z", r + "px");
},
setTransition: (e) => {
const { $el: t, slides: i } = v;
i
.transition(e)
.find(
".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left"
)
.transition(e),
v.params.cubeEffect.shadow &&
!v.isHorizontal() &&
t.find(".swiper-cube-shadow").transition(e);
},
recreateShadows: () => {
const i = v.isHorizontal();
v.slides.each((e) => {
var t = Math.max(Math.min(e.progress, 1), -1);
g(z(e), t, i);
});
},
getEffectParams: () => v.params.cubeEffect,
perspective: () => !0,
overwriteParams: () => ({
slidesPerView: 1,
slidesPerGroup: 1,
watchSlidesProgress: !0,
resistanceRatio: 0,
spaceBetween: 0,
centeredSlides: !1,
virtualTranslate: !0,
}),
});
},
function (e) {
let { swiper: p, extendParams: t, on: i } = e;
t({
flipEffect: {
slideShadows: !0,
limitRotation: !0,
transformEl: null,
},
});
const h = (e, t, i) => {
let s = p.isHorizontal()
? e.find(".swiper-slide-shadow-left")
: e.find(".swiper-slide-shadow-top"),
a = p.isHorizontal()
? e.find(".swiper-slide-shadow-right")
: e.find(".swiper-slide-shadow-bottom");
0 === s.length &&
(s = D(i, e, p.isHorizontal() ? "left" : "top")),
0 === a.length &&
(a = D(i, e, p.isHorizontal() ? "right" : "bottom")),
s.length && (s[0].style.opacity = Math.max(-t, 0)),
a.length && (a[0].style.opacity = Math.max(t, 0));
};
P({
effect: "flip",
swiper: p,
on: i,
setTranslate: () => {
const { slides: r, rtlTranslate: l } = p,
o = p.params.flipEffect;
for (let n = 0; n < r.length; n += 1) {
const c = r.eq(n);
let e = c[0].progress;
p.params.flipEffect.limitRotation &&
(e = Math.max(Math.min(c[0].progress, 1), -1));
var d = c[0].swiperSlideOffset;
let t = -180 * e,
i = 0,
s = p.params.cssMode ? -d - p.translate : -d,
a = 0;
p.isHorizontal()
? l && (t = -t)
: ((a = s), (s = 0), (i = -t), (t = 0)),
(c[0].style.zIndex = -Math.abs(Math.round(e)) + r.length),
o.slideShadows && h(c, e, o);
d = `translate3d(${s}px, ${a}px, 0px) rotateX(${i}deg) rotateY(${t}deg)`;
I(o, c).transform(d);
}
},
setTransition: (e) => {
var t = p.params.flipEffect["transformEl"];
(t ? p.slides.find(t) : p.slides)
.transition(e)
.find(
".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left"
)
.transition(e),
O({ swiper: p, duration: e, transformEl: t });
},
recreateShadows: () => {
const s = p.params.flipEffect;
p.slides.each((e) => {
var t = z(e);
let i = t[0].progress;
p.params.flipEffect.limitRotation &&
(i = Math.max(Math.min(e.progress, 1), -1)),
h(t, i, s);
});
},
getEffectParams: () => p.params.flipEffect,
perspective: () => !0,
overwriteParams: () => ({
slidesPerView: 1,
slidesPerGroup: 1,
watchSlidesProgress: !0,
spaceBetween: 0,
virtualTranslate: !p.params.cssMode,
}),
});
},
function (e) {
let { swiper: b, extendParams: t, on: i } = e;
t({
coverflowEffect: {
rotate: 50,
stretch: 0,
depth: 100,
scale: 1,
modifier: 1,
slideShadows: !0,
transformEl: null,
},
}),
P({
effect: "coverflow",
swiper: b,
on: i,
setTranslate: () => {
const {
width: e,
height: o,
slides: d,
slidesSizesGrid: c,
} = b,
p = b.params.coverflowEffect,
h = b.isHorizontal(),
u = b.translate,
m = h ? e / 2 - u : o / 2 - u,
v = h ? p.rotate : -p.rotate,
g = p.depth;
for (let l = 0, e = d.length; l < e; l += 1) {
const b = d.eq(l),
o = c[l],
u = (m - b[0].swiperSlideOffset - o / 2) / o,
w =
"function" == typeof p.modifier
? p.modifier(u)
: u * p.modifier;
let e = h ? v * w : 0,
t = h ? 0 : v * w,
i = -g * Math.abs(w),
s = p.stretch,
a =
("string" == typeof s &&
-1 !== s.indexOf("%") &&
(s = (parseFloat(p.stretch) / 100) * o),
h ? 0 : s * w),
n = h ? s * w : 0,
r = 1 - (1 - p.scale) * Math.abs(w);
Math.abs(n) < 0.001 && (n = 0),
Math.abs(a) < 0.001 && (a = 0),
Math.abs(i) < 0.001 && (i = 0),
Math.abs(e) < 0.001 && (e = 0),
Math.abs(t) < 0.001 && (t = 0),
Math.abs(r) < 0.001 && (r = 0);
var f = `translate3d(${n}px,${a}px,${i}px) rotateX(${t}deg) rotateY(${e}deg) scale(${r})`;
if (
(I(p, b).transform(f),
(b[0].style.zIndex = 1 - Math.abs(Math.round(w))),
p.slideShadows)
) {
let e = h
? b.find(".swiper-slide-shadow-left")
: b.find(".swiper-slide-shadow-top"),
t = h
? b.find(".swiper-slide-shadow-right")
: b.find(".swiper-slide-shadow-bottom");
0 === e.length && (e = D(p, b, h ? "left" : "top")),
0 === t.length && (t = D(p, b, h ? "right" : "bottom")),
e.length && (e[0].style.opacity = 0 < w ? w : 0),
t.length && (t[0].style.opacity = 0 < -w ? -w : 0);
}
}
},
setTransition: (e) => {
var t = b.params.coverflowEffect["transformEl"];
(t ? b.slides.find(t) : b.slides)
.transition(e)
.find(
".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left"
)
.transition(e);
},
perspective: () => !0,
overwriteParams: () => ({ watchSlidesProgress: !0 }),
});
},
function (e) {
let { swiper: b, extendParams: t, on: i } = e;
t({
creativeEffect: {
transformEl: null,
limitProgress: 1,
shadowPerProgress: !1,
progressMultiplier: 1,
perspective: !0,
prev: {
translate: [0, 0, 0],
rotate: [0, 0, 0],
opacity: 1,
scale: 1,
},
next: {
translate: [0, 0, 0],
rotate: [0, 0, 0],
opacity: 1,
scale: 1,
},
},
});
P({
effect: "creative",
swiper: b,
on: i,
setTranslate: () => {
const { slides: a, $wrapperEl: e, slidesSizesGrid: n } = b,
r = b.params.creativeEffect,
l = r["progressMultiplier"],
o = b.params.centeredSlides;
if (o) {
const a = n[0] / 2 - b.params.slidesOffsetBefore || 0;
e.transform(`translateX(calc(50% - ${a}px))`);
}
for (let s = 0; s < a.length; s += 1) {
const n = a.eq(s),
u = n[0].progress,
m = Math.min(
Math.max(n[0].progress, -r.limitProgress),
r.limitProgress
);
let e = m;
o ||
(e = Math.min(
Math.max(n[0].originalProgress, -r.limitProgress),
r.limitProgress
));
const v = n[0].swiperSlideOffset,
g = [b.params.cssMode ? -v - b.translate : -v, 0, 0],
f = [0, 0, 0];
let t = !1,
i =
(b.isHorizontal() || ((g[1] = g[0]), (g[0] = 0)),
{
translate: [0, 0, 0],
rotate: [0, 0, 0],
scale: 1,
opacity: 1,
});
m < 0
? ((i = r.next), (t = !0))
: 0 < m && ((i = r.prev), (t = !0)),
g.forEach((e, t) => {
g[t] = `calc(${e}px + (${
((e = i.translate[t]),
"string" == typeof e ? e : e + "px")
} * ${Math.abs(m * l)}))`;
}),
f.forEach((e, t) => {
f[t] = i.rotate[t] * Math.abs(m * l);
}),
(n[0].style.zIndex = -Math.abs(Math.round(u)) + a.length);
var d = g.join(", "),
c = `rotateX(${f[0]}deg) rotateY(${f[1]}deg) rotateZ(${f[2]}deg)`,
p =
e < 0
? `scale(${1 + (1 - i.scale) * e * l})`
: `scale(${1 - (1 - i.scale) * e * l})`,
h =
e < 0
? 1 + (1 - i.opacity) * e * l
: 1 - (1 - i.opacity) * e * l,
d = `translate3d(${d}) ${c} ` + p;
if ((t && i.shadow) || !t) {
let e = n.children(".swiper-slide-shadow");
if ((e = 0 === e.length && i.shadow ? D(r, n) : e).length) {
const b = r.shadowPerProgress
? m * (1 / r.limitProgress)
: m;
e[0].style.opacity = Math.min(
Math.max(Math.abs(b), 0),
1
);
}
}
const w = I(r, n);
w.transform(d).css({ opacity: h }),
i.origin && w.css("transform-origin", i.origin);
}
},
setTransition: (e) => {
var t = b.params.creativeEffect["transformEl"];
(t ? b.slides.find(t) : b.slides)
.transition(e)
.find(".swiper-slide-shadow")
.transition(e),
O({ swiper: b, duration: e, transformEl: t, allSlides: !0 });
},
perspective: () => b.params.creativeEffect.perspective,
overwriteParams: () => ({
watchSlidesProgress: !0,
virtualTranslate: !b.params.cssMode,
}),
});
},
function (e) {
let { swiper: b, extendParams: t, on: i } = e;
t({
cardsEffect: {
slideShadows: !0,
transformEl: null,
rotate: !0,
perSlideRotate: 2,
perSlideOffset: 8,
},
}),
P({
effect: "cards",
swiper: b,
on: i,
setTranslate: () => {
const { slides: l, activeIndex: o } = b,
d = b.params.cardsEffect,
{ startTranslate: c, isTouched: p } = b.touchEventsData,
h = b.translate;
for (let r = 0; r < l.length; r += 1) {
const g = l.eq(r),
f = g[0].progress,
w = Math.min(Math.max(f, -4), 4);
let e = g[0].swiperSlideOffset,
t =
(b.params.centeredSlides &&
!b.params.cssMode &&
b.$wrapperEl.transform(
`translateX(${b.minTranslate()}px)`
),
b.params.centeredSlides &&
b.params.cssMode &&
(e -= l[0].swiperSlideOffset),
b.params.cssMode ? -e - b.translate : -e),
i = 0;
var u = -100 * Math.abs(w);
let s = 1,
a = -d.perSlideRotate * w,
n = d.perSlideOffset - 0.75 * Math.abs(w);
var m =
b.virtual && b.params.virtual.enabled
? b.virtual.from + r
: r,
v =
(m === o || m === o - 1) &&
0 < w &&
w < 1 &&
(p || b.params.cssMode) &&
h < c,
m =
(m === o || m === o + 1) &&
w < 0 &&
-1 < w &&
(p || b.params.cssMode) &&
c < h;
if (v || m) {
const l =
(1 - Math.abs((Math.abs(w) - 0.5) / 0.5)) ** 0.5;
(a += -28 * w * l),
(s += -0.5 * l),
(n += 96 * l),
(i = -25 * l * Math.abs(w) + "%");
}
if (
((t =
w < 0
? `calc(${t}px + (${n * Math.abs(w)}%))`
: 0 < w
? `calc(${t}px + (-${n * Math.abs(w)}%))`
: t + "px"),
!b.isHorizontal())
) {
const l = i;
(i = t), (t = l);
}
(v =
w < 0 ? "" + (1 + (1 - s) * w) : "" + (1 - (1 - s) * w)),
(m = `
translate3d(${t}, ${i}, ${u}px)
rotateZ(${d.rotate ? a : 0}deg)
scale(${v})
`);
if (d.slideShadows) {
let e = g.find(".swiper-slide-shadow");
(e = 0 === e.length ? D(d, g) : e).length &&
(e[0].style.opacity = Math.min(
Math.max((Math.abs(w) - 0.5) / 0.5, 0),
1
));
}
(g[0].style.zIndex = -Math.abs(Math.round(f)) + l.length),
I(d, g).transform(m);
}
},
setTransition: (e) => {
var t = b.params.cardsEffect["transformEl"];
(t ? b.slides.find(t) : b.slides)
.transition(e)
.find(".swiper-slide-shadow")
.transition(e),
O({ swiper: b, duration: e, transformEl: t });
},
perspective: () => !0,
overwriteParams: () => ({
watchSlidesProgress: !0,
virtualTranslate: !b.params.cssMode,
}),
});
},
]),
C
);
});
var ANIUTIL = (function () {
function t(e) {
function t(e) {
(this.opts = e),
(this.resizeTiming = e.resizeTiming || 100),
this.setElement(),
this.setVideoStyle(),
this.bindEvent();
}
var i = t.prototype;
(i.setElement = function () {
void 0 !== this.opts.wrapElement &&
(this.wrapElement = this.opts.wrapElement.jquery
? this.opts.wrapElement[0]
: this.opts.wrapElement),
void 0 !== this.opts.targetVideo &&
(this.targetVideo = this.opts.targetVideo.jquery
? this.opts.targetVideo[0]
: this.opts.targetVideo);
}),
(i.setVideoStyle = function () {
(this.wrapElement.style.overflow = "hidden"),
(this.targetVideo.style.position = "absolute"),
(this.targetVideo.style.top = "50%"),
(this.targetVideo.style.left = "50%"),
(this.targetVideo.style.transform = "translate(-50%, -50%)");
}),
(i.bindEvent = function () {
var e = this;
window.addEventListener("load", function () {
e.setVideoSize();
}),
window.addEventListener("resize", function () {
e.setVideoSize();
});
}),
(i.getVideoInfo = function () {
(this.wrapWidth = this.wrapElement.clientWidth),
(this.wrapHeight = this.wrapElement.clientHeight),
(this.videoWidth = this.targetVideo.clientWidth),
(this.videoHeight = this.targetVideo.clientHeight),
(this.wrapRatio = this.wrapHeight / this.wrapWidth),
(this.videoRatio = this.videoHeight / this.videoWidth);
}),
(i.setVideoSize = function () {
var e = this;
clearTimeout(null),
setTimeout(function () {
e.getVideoInfo(),
e.wrapRatio < e.videoRatio
? ((e.targetVideo.style.width = "100%"),
(e.targetVideo.style.height = "auto"))
: ((e.targetVideo.style.width = "auto"),
(e.targetVideo.style.height = "100%"));
}, this.resizeTiming);
}),
new t(e);
}
function i(e) {
var t,
i,
s = null,
a = null,
n = e ? e + 200 : 200,
r = function () {
null == s
? ((i =
document.scrollingElement ||
document.documentElement ||
document.body.parentNode ||
document.body),
(t = document.body.clientHeight),
(i = window.pageYOffset + i.clientHeight),
(s = i / t))
: (t = document.body.clientHeight);
},
l = function () {
clearTimeout(a),
(a = setTimeout(function () {
window.scrollTo(0, t * s - window.innerHeight), (s = null);
}, n));
};
window.addEventListener("resize", function () {
r(), l();
});
}
function s() {
return (
!(
-1 < navigator.userAgent.indexOf("Windows") ||
-1 < navigator.userAgent.indexOf("Macintosh")
) &&
(!!(
"ontouchstart" in window ||
(window.DocumentTouch && document instanceof window.DocumentTouch)
) ||
void 0)
);
}
return {
calRange: function (e) {
return (
0 <
(e = {
targetValue: (e = e).targetValue,
progress: e.progress,
startPoint: e.startPoint || 0,
endPoint: e.endPoint || 100,
}).startPoint &&
(e.endPoint =
0 < e.endPoint - e.startPoint
? e.endPoint - e.startPoint
: e.endPoint),
(t =
(t =
(t =
(e.targetValue * (e.progress - e.startPoint)) / e.endPoint) >
e.targetValue
? e.targetValue
: t) < 0
? 0
: t)
);
var t;
},
videoObjectFit: function (e) {
t(e);
},
addClass: function (e) {
for (var t = e, i = t.classList.length, s = 0; s < i; s++)
t.targetElement.classList.add(t.classList[s]);
},
removeClass: function (e) {
for (var t = e, i = t.classList.length, s = 0; s < i; s++)
t.targetElement.classList.remove(t.classList[s]);
},
scrollController: function (e) {
var i,
s = (s = e) || {},
t = navigator.userAgent.toLowerCase(),
a =
document.scrollingElement ||
document.documentElement ||
document.body.parentNode ||
document.body,
n = s.speed || 120,
r = 0 <= s.duration ? s.duration : 1,
l = a.scrollTop,
o =
a === document.body && document.documentElement
? document.documentElement
: a,
d = !1,
c = null,
e = function () {
("Netscape" == navigator.appName &&
-1 != navigator.userAgent.search("Trident")) ||
-1 != t.indexOf("msie")
? document.addEventListener(
"mousewheel",
function (e) {
"hidden" != document.documentElement.style.overflow &&
h.scrollEvent(e);
},
{ passive: !1 }
)
: document.addEventListener(
"wheel",
function (e) {
h.hasScrollBox(e.target) || h.scrollEvent(e);
},
{ passive: !1 }
);
},
p = function () {
window.addEventListener("scroll", function () {
"hidden" == document.documentElement.style.overflow ||
d ||
(l = a.scrollTop);
});
},
h = {
scrollEvent: function (e) {
e.preventDefault();
var t = document.body.getAttribute("data-scroll-speed"),
e = this.normalizeWheelDelta(e),
t = s.currDelta && t ? t : t || n ? n : 120;
(l += -e * t),
(i = Math.max(
0,
Math.min(l, a.scrollHeight - o.clientHeight)
)),
this.update();
},
normalizeWheelDelta: function (e) {
return e.detail
? e.wheelDelta
? (e.wheelDelta / e.detail / 40) * (0 < e.detail ? 1 : -1)
: -e.detail / 3
: e.wheelDelta / 120;
},
update: function () {
var e = i - a.scrollTop,
e =
Math.ceil(a.scrollTop + e) <= 0
? 0
: i < l
? i
: Math.ceil(a.scrollTop + e);
(d = !0),
TweenMax.to(a, r, {
ease: "power1.out",
scrollTop: e,
onComplete: function () {
clearTimeout(c),
(c = null),
(c = setTimeout(function () {
(d = !1), (l = a.scrollTop);
}, 500));
},
}),
l <= 0 ? (l = 0) : i <= l && (l = i);
},
hasScrollBox: function (e) {
for (; e && e !== document.body && e !== document; ) {
var t = window.getComputedStyle(e).overflow;
if (t && (-1 < t.indexOf("auto") || -1 < t.indexOf("scroll")))
return !0;
e = e.parentNode;
}
return !1;
},
};
window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame,
(-1 == t.indexOf("chrome") && -1 != t.indexOf("safari")) ||
(e(), p());
},
resizeScrollOffset: function (e) {
i(e);
},
checkTouchDevice: s,
checkFold: function () {
var e,
t = screen.width / screen.height,
i =
s() &&
0.7137 < t &&
t < 0.8 &&
"width=768" == document.getElementsByName("viewport")[0].content,
t =
s() &&
0.8 < t &&
t < 0.95 &&
"width=768" == document.getElementsByName("viewport")[0].content;
return i ? (e = "isFold") : t && (e = "isFoldLatest"), e;
},
deviceConsole: function (e, t) {
var i, s;
document.querySelector(".console-layer") ||
((i = document.createElement("div")).classList.add("console-layer"),
i.setAttribute(
"style",
"position: fixed; left: 0; top: 0; padding: 20px; z-index:1000000000; background: #fff;"
),
document.querySelector("body").append(i)),
"multi" == t
? ((i = document.querySelector(".console-layer")),
(s = document.createElement("div")).classList.add(
"console-value"
),
s.setAttribute(
"style",
"border: 1px #ddd solid; float: left; padding: 10px;"
),
i.append(s))
: (s =
(document.querySelector(".console-value") ||
((s = document.createElement("div")).classList.add(
"console-value"
),
s.setAttribute(
"style",
"border: 1px #ddd solid; float: left; padding: 10px;"
),
i.append(s)),
document.querySelector(".console-value"))),
(s.innerHTML = e);
},
percentToPixel: function (e) {
return e.targetValue * (e.progress / 100);
},
responsiveHandler: function (s) {
var a,
e,
n,
r,
t = (window.resolutionStatus = null),
s =
(window.innerWidth,
{
resolution: s.resolution,
statusName: s.statusName || [],
callback: s.callback || [],
activeTiming: s.activeTiming || 100,
}),
i = function () {
r = window.innerWidth;
for (var e = 0; e < s.resolution.length; e++) {
var t = s.resolution[e],
i = s.resolution[e + 1] || 0;
(r <= t && i < r && a != s.statusName[e]) ||
(r <= t && i < r && n != e)
? (document.documentElement.classList.remove(a),
(a = s.statusName[e] || e),
(n = e),
document.documentElement.classList.add(a))
: ((r >= s.resolution[0] && a != s.statusName[0]) ||
(r >= s.resolution[0] && !n)) &&
(document.documentElement.classList.remove(a),
(a = s.statusName[0] || e),
(n = e),
document.documentElement.classList.add(a));
}
},
l = function () {
clearTimeout(t),
console.log(s.activeTiming),
e != n &&
s.callback[n] &&
(t = setTimeout(function () {
s.callback[n](), (t = null), (e = n);
}, s.activeTiming));
};
return (function () {
return (
window.addEventListener("DOMContentLoaded", function () {
i(), (e = n);
}),
window.addEventListener("resize", function () {
i(), l();
}),
this
);
})();
},
};
})();
window.VXT = window.VXT || {};
const UTILS = (function () {
return {
isIosDevice:
((s = /iPad|iPhone|iPod/.test(navigator.userAgent))
? document.documentElement.classList.add("isIosDevice")
: document.documentElement.classList.add("isNotIosDevice"),
s),
checkGlobal: void (0 === location.pathname.indexOf("/global/galaxy") ||
!0 === window.IS_CAMPAIGN
? document.documentElement.classList.add("global")
: document.documentElement.classList.add("dotcom")),
checkOS:
((s = (s = navigator.appVersion.match(/(mac|win|linux)/i))
? s[1].toLowerCase()
: ""),
void document.documentElement.classList.add(s)),
isFireFox: void (
/firefox/i.test(navigator.userAgent) &&
document.documentElement.classList.add("firefox")
),
isWebkit: void (
/applewebkit/i.test(navigator.userAgent) &&
document.documentElement.classList.add("webkit")
),
isChrome: void (
/chrome/i.test(navigator.userAgent) &&
document.documentElement.classList.add("chrome")
),
isOpera: void (
/opera/i.test(navigator.userAgent) &&
document.documentElement.classList.add("opera")
),
isIos: void (
/ip(ad|hone|od)/i.test(navigator.userAgent) &&
document.documentElement.classList.add("ios")
),
isCrIos: void (
/crios/i.test(navigator.userAgent) &&
document.documentElement.classList.add("crios")
),
isAndroid: void (
/android/i.test(navigator.userAgent) &&
document.documentElement.classList.add("android")
),
isSafari:
((s = /applewebkit/i.test(navigator.userAgent)),
(i = /chrome/i.test(navigator.userAgent)),
void (s && !i && document.documentElement.classList.add("safari"))),
isHuawei: void (
/HUAWEICLT/i.test(navigator.userAgent) &&
document.documentElement.classList.add("huawei")
),
isUCBrowser: void (
/UCBrowser/i.test(navigator.userAgent) &&
document.documentElement.classList.add("ucbrowser")
),
winSize:
((s = "Netscape" === navigator.appName),
(i = -1 !== navigator.appVersion.indexOf("Mac")),
(e = -1 !== navigator.userAgent.indexOf("Safari")),
(t = -1 !== navigator.userAgent.indexOf("Chrome")),
s && !i && e && !t
? function () {
return { w: $(win).width(), h: $(win).height() };
}
: function () {
return {
w:
window.innerWidth ||
document.documentElement.clientWidth ||
document.body.clientWidth,
h:
window.innerHeight ||
document.documentElement.clientHeight ||
document.body.clientHeight,
};
}),
requestAFrame:
window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function (e) {
return window.setTimeout(e, 1e3 / 60);
},
cancelAFrame:
window.cancelAnimationFrame ||
window.webkitCancelAnimationFrame ||
window.webkitCancelRequestAnimationFrame ||
window.mozCancelAnimationFrame ||
window.oCancelAnimationFrame ||
window.msCancelAnimationFrame ||
function (e) {
window.clearTimeout(e);
},
isInVerticalViewPort: function (e) {
e = e.getBoundingClientRect();
return e.top - 200 <= UTILS.getViewPort().height && 0 <= e.bottom;
},
isInHorizontalViewPort: function (e) {
e = e.getBoundingClientRect();
return (
e.left - 200 <= UTILS.getViewPort().width && 0 <= e.right + 200
);
},
isInViewPort(e) {
return (
UTILS.isInVerticalViewPort(e) && UTILS.isInHorizontalViewPort(e)
);
},
isVisible(e) {
return (
UTILS.isInViewPort(e) &&
!!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)
);
},
isObject: function (e) {
return (
"object" == typeof e &&
null !== e &&
e.constructor &&
e.constructor === Object
);
},
def: function () {
for (var e = [], t = arguments.length; t--; ) e[t] = arguments[t];
for (var i = Object(e[0]), s = 1; s < e.length; s += 1) {
var a = e[s];
if (null != a)
for (
var n = Object.keys(Object(a)), r = 0, l = n.length;
r < l;
r += 1
) {
var o = n[r],
d = Object.getOwnPropertyDescriptor(a, o);
void 0 !== d &&
d.enumerable &&
(this.isObject(i[o]) && this.isObject(a[o])
? this.def(i[o], a[o])
: !this.isObject(i[o]) && this.isObject(a[o])
? ((i[o] = {}), this.def(i[o], a[o]))
: (i[o] = a[o]));
}
}
return i;
},
convertArray: function (e) {
return Array.prototype.slice.call(e);
},
getOffset: function (e) {
var t = e.getBoundingClientRect().top + window.pageYOffset,
i = e.getBoundingClientRect().bottom + window.pageYOffset;
return {
top: t,
left: e.getBoundingClientRect().left + window.scrollX,
bottom: i,
};
},
getScroll: function () {
var e = window.pageYOffset;
return { top: e, bottom: e + window.innerHeight };
},
getViewPort: function () {
var e = window,
t = "inner";
return (
"innerWidth" in window ||
((t = "client"), (e = document.documentElement || document.body)),
{ width: e[t + "Width"], height: e[t + "Height"] }
);
},
getCurrentDevice: function () {
var e = UTILS.getViewPort().width;
return 1024 <= e
? "desktop"
: e < 1024 && 768 <= e
? "tablet"
: "mobile";
},
isVerticalVisible: function (e) {
return (
UTILS.isInVerticalViewPort(e) &&
!!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)
);
},
isHorizontalVisible: function (e) {
return (
UTILS.isInHorizontalViewPort(e) &&
!!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)
);
},
setCookie: function (e, t, i) {
var s = new Date();
s.setTime(s.getTime() + 60 * i * 60 * 24 * 1e3),
(document.cookie =
e + "=" + t + "; exprires=" + s.toUTCString() + "; path=/");
},
getCookie: function (e) {
e = document.cookie.match("(^|;) ?" + e + "=([^;]*)(;|$)");
return e ? e[2] : null;
},
triggerEvent: function (e, t, i, s, a) {
var n,
i = i || null,
s = s || !1,
a = a || !0;
null == i
? (n = document.createEvent("HTMLEvents")).initEvent(t, s, a)
: (n = document.createEvent("CustomEvent")).initCustomEvent(
t,
s,
a,
i
),
e.dispatchEvent(n);
},
visibleScroll: function () {
document.documentElement.classList.contains("isTouchDevice") ||
(!0 === this.scrollFlag &&
((this.scrollFlag = !1),
(document.body.style.position = ""),
(document.body.style.width = ""),
(document.body.style.top = ""),
(document.body.style.boxSizing = ""),
(document.body.style.paddingRight = ""),
(document.documentElement.style.overflow = ""),
null !== this.popupEl &&
((this.popupEl.style.paddingRight = ""), (this.popupEl = null)),
window.scrollTo(0, this.currentPos)));
},
hiddenScroll: function (e) {
var t;
document.documentElement.classList.contains("isTouchDevice") ||
((this.popupEl = e || null),
(this.scrollFlag = !0),
(this.currentPos =
window.pageYOffset || document.documentElement.scrollTop),
(e = window.innerWidth - document.documentElement.clientWidth),
(t = 0 < this.currentPos ? "-" + this.currentPos + "px" : 0),
(document.body.style.position = "fixed"),
(document.body.style.width = "100%"),
(document.body.style.top = t),
(document.body.style.boxSizing = "border-box"),
(document.body.style.paddingRight = e + "px"),
(document.documentElement.style.overflow = "hidden"),
null !== this.popupEl &&
(this.popupEl.style.paddingRight = e + "px"));
},
closest: function (e, t) {
do {
if (e == document.documentElement) return null;
if (e.matches ? e.matches(t) : e.msMatchesSelector(t)) return e;
} while (
null !== (e = e.parentElement || e.parentNode) ||
1 === e.nodeType
);
return null;
},
onPopupAccessibility: function (e) {
e.setAttribute("aria-hidden", !0), e.setAttribute("tabindex", -1);
for (
var t = e.querySelectorAll("a, button, input, select, iframe"),
i = 0;
i < t.length;
i++
) {
var s = t[i].getAttribute("aria-hidden"),
a = t[i].getAttribute("tabindex");
null != s &&
null == t[i].getAttribute("data-prev-aria-hidden") &&
t[i].setAttribute("data-prev-aria-hidden", s),
null != a &&
null == t[i].getAttribute("data-prev-tabindex") &&
t[i].setAttribute("data-prev-tabindex", a),
t[i].setAttribute("tabindex", -1),
t[i].setAttribute("aria-hidden", !0);
}
},
offPopupAccessibility: function (e) {
e.removeAttribute("aria-hidden"), e.removeAttribute("tabindex");
for (
var t = e.querySelectorAll("a, button, input, select, iframe"),
i = 0;
i < t.length;
i++
) {
var s = t[i].getAttribute("data-prev-aria-hidden"),
a = t[i].getAttribute("data-prev-tabindex");
null != s
? t[i].setAttribute("aria-hidden", s)
: t[i].removeAttribute("aria-hidden"),
null != a
? t[i].setAttribute("tabindex", a)
: t[i].removeAttribute("tabindex"),
t[i].removeAttribute("data-prev-aria-hidden"),
t[i].removeAttribute("data-prev-tabindex");
}
},
onAccessibility: function (e) {
if (
!document.documentElement.classList.contains(
"is-layer-popup-opened"
)
) {
e.setAttribute("aria-hidden", !0), e.setAttribute("tabindex", -1);
for (
var t = e.querySelectorAll("a, button, input, select, iframe"),
i = 0;
i < t.length;
i++
)
t[i].setAttribute("tabindex", -1),
t[i].setAttribute("aria-hidden", !0);
}
},
offAccessibility: function (e) {
if (
!document.documentElement.classList.contains(
"is-layer-popup-opened"
)
) {
e.removeAttribute("aria-hidden"), e.removeAttribute("tabindex");
for (
var t = e.querySelectorAll("a, button, input, select, iframe"),
i = 0;
i < t.length;
i++
)
t[i].removeAttribute("tabindex"),
t[i].removeAttribute("aria-hidden");
}
},
extend: function (t, i) {
return (
Object.keys(i).forEach(function (e) {
t[e] = i[e];
}),
t
);
},
getHeight: function (e) {
var t, i, s;
return e
? ((t = (i = window.getComputedStyle(e)).display),
(i = parseInt(i.maxHeight)),
(s = 0),
"none" != t && 0 != i
? e.offsetHeight
: ((e.style.position = "absolute"),
(e.style.visibility = "hidden"),
(e.style.display = "block"),
(s = e.offsetHeight),
(e.style.display = ""),
(e.style.position = ""),
(e.style.visibility = ""),
s))
: 0;
},
setLastActiveItem: function (e) {
this.lastActiveItem = e || null;
},
getLastActiveItem: function () {
return null != this.lastActiveItem ? this.lastActiveItem : null;
},
isRTL: function () {
return document.documentElement.classList.contains("rtl");
},
checkRegion: function () {
for (
var e = document.getElementsByTagName("meta"), t = "", i = 0;
i < e.length;
i++
)
if ("sitecode" == e[i].getAttribute("name"))
return (t = e[i].getAttribute("content"));
if ("" == t)
return -1 < document.location.pathname.indexOf("global")
? "global"
: "jp";
},
isLowNetwork: function () {
var e =
"global" == UTILS.checkRegion() || "jp" == UTILS.checkRegion()
? "___GALAXY_SPEED"
: "__COM_SPEED";
return null == UTILS.getCookie(e) || null == UTILS.getCookie(e)
? null
: "L" == UTILS.getCookie(e) ||
("H" != UTILS.getCookie(e) && void 0);
},
getQueryString: function (e) {
var t = (s = location.href).indexOf("?") + 1,
i = -1 < s.indexOf("#") ? s.indexOf("#") + 1 : s.length;
if (0 == t) return "";
for (
var s = (s = s.substring(t, i)).split("&"), a = "", n = 0;
n < s.length;
n++
) {
var r = s[n].split("=");
if (2 != r.length) break;
r[0] == e && (a = r[1]);
break;
}
return a;
},
customParallax: function (e) {
var t = e.mode || "center",
i = e.delay || 0,
s = e.ease || "Power0.easeNone",
a = e.transZ || 0,
n = e.duration || 0.3,
r = e.distance || 0,
l = e.correction || 0,
o = e.windowCorrection
? window.innerHeight * e.windowCorrection
: 0,
d = e.direction || 1,
c = e.activeElement,
p = e.targetElement || c,
h = e.wrapperElement || c,
e = e.unit || "px",
u = window.pageYOffset,
m = window.pageYOffset + window.innerHeight,
c = c.getBoundingClientRect(),
v = u + h.getBoundingClientRect().top,
h = v + h.getBoundingClientRect().height,
g = window.innerHeight + c.height + 2 * o,
f =
"center" == t
? c.top - (window.innerHeight - c.height) / 2
: c.top - window.innerHeight;
"px" == e && (r = (c.height * r) / 100),
v <= m + o &&
u - o <= h &&
TweenMax.to(p, n, {
y: l + ((f * ("center" == t ? 2 * r : r)) / g) * d + e,
z: a,
ease: s,
delay: i,
});
},
getNavHeight: function () {
var e,
t,
i = 0,
s =
document.querySelector(".pd-g-header-navigation") ||
document.querySelector("#subnav") ||
document.querySelector(".sticky-menu") ||
document.querySelector(".pd-g-floating-nav");
return (i = s
? s.classList.contains("pd-g-header-navigation")
? ((t = (e = s.querySelector(
".pd-header-navigation"
)).querySelector(".pd-header-navigation__menu-wrap")),
e.clientHeight + t.clientHeight)
: s.clientHeight
: i);
},
isBrokenFixed: function () {
var e = window.innerWidth,
t = window.innerHeight,
i = !1;
return (
document.documentElement.classList.remove("is-broken-fixed"),
(1440 <= e && t <= 540) ||
(e <= 810 && t / e < 0.5277) ||
e / window.outerWidth < 0.4 ||
t < UTILS.MIN_VIEW_HEIGHT
? (document.documentElement.classList.add("is-broken-fixed"),
(i = !0))
: document.documentElement.classList.remove("is-broken-fixed"),
i
);
},
isFullAnimationBrokenFixed: () => {
var e = window.innerWidth,
t = window.innerHeight,
i =
!!UTILS.isTouchDevice &&
window.matchMedia("(orientation: landscape)").matches;
let s = !1;
return (
(!!UTILS.isTouchDevice &&
!window.matchMedia("(orientation: landscape)").matches &&
t / e < 1.5) ||
i ||
t < 700
? (document.documentElement.classList.add(
"is-animation-broken-fixed"
),
(s = !0))
: document.documentElement.classList.remove(
"is-animation-broken-fixed"
),
s
);
},
isTouchDevice:
((s =
"ontouchstart" in window ||
(window.DocumentTouch && document instanceof window.DocumentTouch))
? document.documentElement.classList.add("isTouchDevice")
: document.documentElement.classList.add("isNotTouchDevice"),
s),
isIEorEdge: (function () {
var e,
t = navigator.userAgent.toLowerCase();
if ("Microsoft Internet Explorer" == navigator.appName) e = "msie ";
else if (-1 < t.search("trident")) e = "trident/.*rv:";
else {
if (!(-1 < t.search("edge/"))) return -1;
e = "edge/";
}
return null !=
new RegExp(e + "([0-9]{1,})(\\.{0,}[0-9]{0,1})").exec(t)
? (document.documentElement.classList.add("isIEorEdge"),
parseFloat(RegExp.$1 + RegExp.$2))
: -1;
})(),
page: {
scrollLock: {
className: "is-no-scroll",
barWidth: function () {
return window.innerWidth - document.documentElement.clientWidth;
},
el: $("html"),
run: function (e) {
document.documentElement.style.paddingRight = e + "px";
},
off: function () {
this.barWidth();
this.el.removeClass(this.className),
this.el.removeClass("hive-layer-scroll-lock"),
this.run(0);
},
on: function () {
var e = this.barWidth();
this.el.addClass(this.className), this.run(e);
},
},
},
MIN_VIEW_HEIGHT: 400,
RESPONSIVE: {
PC: { NAME: "pc", WIDTH: 1440 },
TABLET: { NAME: "tablet", WIDTH: 1024 },
MOBILE: { NAME: "mobile", WIDTH: 767 },
},
};
var e, t, i, s;
})();
(VXT.UTILS = UTILS),
(function () {
"use strict";
window.VXT = window.VXT || {};
const m = VXT.UTILS;
VXT.ImageLoader = class {
constructor(e = container, t) {
t = {
el: e,
lazyClass: ".js-img-src",
lazyCompleteClass: "load-complete",
startLazyClass: t.startLazyClass || ".js-start-img-src",
endLazyClass: t.endLazyClass || ".js-end-img-src",
responsiveClass: t.responsiveClass || ".js-res-img",
loadOption: t.loadOption,
visiblePoint: t.visiblePoint || 0,
useDefaultImg: t.useDefaultImg,
resizeStart: null,
};
(this.opts = t),
(this.classes = t.classes),
(this.el = document.querySelector(e)),
this.init();
}
init() {
this.initOpts(),
this.getLazyImage(),
this.getResponsiveImage(),
this.bindEvents();
}
initOpts() {
(this.targetAttr = this.opts.loadOption[0].attribute),
(this.responsiveCheck = this.opts.loadOption),
(this.dynamicCallCount = 0),
(this.dynamicLoadedComplate = !1),
this.opts.useDefaultImg && this.setDefaultImage();
}
getLazyImage() {
const e = Array.from(this.el.querySelectorAll(this.opts.lazyClass));
var t = Array.from(
this.el.querySelectorAll(this.opts.startLazyClass)
),
t = e.concat(t);
(this.lazyImages = t), (this.lazyLength = t.length);
}
getResponsiveImage() {
var e = this.el.querySelectorAll(this.opts.responsiveClass);
(this.responsiveImages = e), (this.responsiveLength = e.length);
}
bindEvents() {
window.addEventListener("load", this.onLoadHandler.bind(this)),
window.addEventListener("scroll", this.lazyEvent.bind(this)),
this.responsiveCheck &&
window.addEventListener(
"resize",
this.onResizeHandler.bind(this)
);
}
onLoadHandler() {
this.responsiveHandler(), this.lazyEvent();
}
onResizeHandler() {
clearTimeout(this.opts.resizeStart),
(this.opts.resizeStart = setTimeout(() => {
this.responsiveHandler(), this.lazyEvent();
}, 80));
}
lazyEvent() {
this.setLazyImage(),
this.lazyLength === this.lazyCompleteLength &&
window.removeEventListener("scroll", this.lazyEvent.bind(this));
}
responsiveHandler() {
this.windowWidth = window.innerWidth;
var a = this.opts.loadOption.length;
for (let s = 0; s < a; s++) {
let e = s + 1,
t = e == a ? 0 : this.opts.loadOption[e].resolution,
i = !1;
(i =
(0 == s ||
this.windowWidth <= this.opts.loadOption[s].resolution) &&
this.windowWidth > t) &&
this.opts.loadOption[s].attribute !== this.oldAttr &&
((this.targetAttr = this.opts.loadOption[s].attribute),
(this.oldAttr = this.targetAttr),
(this.attrIndex = s),
(this.dynamicCallCount = 0),
this.setResponsiveImage());
}
}
setResponsiveImage(i) {
var e = this.opts.lazyClass.split("."),
s = e[e.length - 1],
e = this.opts.startLazyClass.split("."),
a = e[e.length - 1];
if (i)
for (let t = 0; t < i.length; t++) {
var n = i[t];
let e = i[t].getAttribute(this.targetAttr);
(e = e || this.findImageHandler(n)),
i[t].classList.contains(this.opts.lazyCompleteClass) ||
(i[t].setAttribute("src", e),
i[t].classList.add(this.opts.lazyCompleteClass),
1 == this.opts.startLazyClass.split(" ").length &&
i[t].classList.remove(a),
1 == this.opts.lazyClass.split(" ").length &&
i[t].classList.remove(s));
}
else
for (let i = 0; i < this.responsiveLength; i++) {
let e = this.responsiveImages[i],
t = e.getAttribute(this.targetAttr);
(t = t || this.findImageHandler(e)),
e.classList.contains(this.opts.lazyCompleteClass) &&
e.setAttribute("src", t);
}
}
checkCompleteImage() {
var e = this.el.querySelectorAll("." + this.opts.lazyCompleteClass);
this.lazyCompleteLength = e.length;
}
setDefaultImage() {
for (var e = 0; e < this.lazyLength; e++)
this.lazyImages[e].setAttribute(
"src",
"data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH/C1hNUCBEYXRhWE1QAz94cAAh+QQFAAAAACwAAAAAAQABAAACAkQBADs="
);
}
setLazyImage() {
this.windowHeight = window.innerHeight;
for (let p = 0; p < this.lazyLength; p++) {
let t = this.lazyImages[p],
e = this.windowHeight * this.opts.visiblePoint,
i = m.getScroll.call(this).top - e,
s = m.getScroll.call(this).bottom + e,
a = m.getOffset.call(this, t).top,
n = m.getOffset.call(this, t).bottom,
r = this.opts.lazyClass.split("."),
l = r[r.length - 1],
o = this.opts.startLazyClass.split("."),
d = o[o.length - 1],
c;
var h, u;
if (
("none" === window.getComputedStyle(t).display
? null != (h = t.parentNode).offsetParent &&
((c = h.offsetParent),
(a = m.getOffset.call(this, h).top),
(n = m.getOffset.call(this, h).bottom))
: (c = t.offsetParent),
((s > a && i <= a) ||
(i < n && s > n) ||
(i < a && s > n) ||
(i > a && s < n)) &&
null != c)
) {
let e = t.getAttribute(this.targetAttr);
(e = e || this.findImageHandler(t)),
t.classList.contains(this.opts.lazyCompleteClass) ||
(t.setAttribute("src", e),
(u = () => {
1 == this.opts.startLazyClass.split(" ").length &&
t.classList.remove(d),
1 == this.opts.lazyClass.split(" ").length &&
t.classList.remove(l),
this.checkCompleteImage(),
t.removeEventListener("load", u);
}),
t.addEventListener("load", u),
t.classList.add(this.opts.lazyCompleteClass));
}
}
}
findRemainingImageAttr(e) {
for (var t = this.opts.loadOption.length, i = 0; i < t; i++) {
var s = e.getAttribute(this.opts.loadOption[i].attribute);
if (s) return s;
}
}
findNextImageAttr(t) {
for (let e = this.attrIndex; 0 <= e; e--) {
var i = t.getAttribute(this.opts.loadOption[e].attribute);
if (i) return i;
if (0 == e && null == i) return this.findRemainingImageAttr(t);
}
}
findImageHandler(e) {
return 0 !== this.attrIndex
? this.findNextImageAttr(e)
: this.findRemainingImageAttr(e);
}
updateResponsiveImage(t) {
for (let e = 0; e < t.length; e++) {
const s = t[e];
var i = s.getAttribute(this.targetAttr);
i !== s.getAttribute("src") && s.setAttribute("src", i);
}
}
};
})(),
(function () {
"use strict";
window.VXT = window.VXT || {};
const e = VXT.UTILS,
t = e.RESPONSIVE;
VXT.VideoLoader = class {
constructor(e = container, t) {
t = {
el: e,
lazyClass: t.lazyClass || ".js-video-src",
responsiveClass: t.responsiveClass || ".js-res-video",
imageLazyCompleteClass: "load-complete",
imageEndLazyClass: t.imageEndLazyClass || ".js-end-img-src",
notLoadElement: t.notLoadElement || [],
loadOption: t.loadOption,
visiblePoint: t.visiblePoint || 0,
resizeStart: null,
classes: { loaded: "loaded", ended: "ended" },
};
(this.opts = t),
(this.classes = t.classes),
(this.el = document.querySelector(e)),
this.init();
}
init() {
this.initOpts(),
this.getLazyVideo(),
this.getResponsiveVideo(),
this.bindEvents();
}
initOpts() {
this.getCurrentDevice();
var e = "mobile" !== this.currentDevice ? 0 : 1;
(this.prevVideoSrc = ""),
(this.targetAttr = this.opts.loadOption[e].attribute),
(this.responsiveCheck = this.opts.loadOption),
(this.videoCallStack = []);
}
getLazyVideo() {
let e = Array.from(
this.el.querySelectorAll(this.opts.lazyClass)
).filter((t) => {
t.isVideoInit = !1;
{
let e = 0;
if (e < this.opts.notLoadElement.length)
return !t.closest(this.opts.notLoadElement[e]);
}
});
(e = e.filter((e) => {
if (e.querySelector("video")) return e;
})),
(this.lazyVideos = e),
(this.lazyLength = e.length);
}
getResponsiveVideo() {
var e = Array.from(
this.el.querySelectorAll(this.opts.responsiveClass)
).filter((t) => {
{
let e = 0;
if (e < this.opts.notLoadElement.length)
return !t.closest(this.opts.notLoadElement[e]);
}
});
(this.responsiveVideos = e), (this.responsiveLength = e.length);
}
bindEvents() {
window.addEventListener("load", this.onLoadHandler.bind(this)),
window.addEventListener("scroll", this.lazyEvent.bind(this)),
this.responsiveCheck &&
window.addEventListener(
"resize",
this.onResizeHandler.bind(this)
);
}
getCurrentDevice() {
(this.winWidth = e.winSize().w),
this.winWidth >= t.TABLET.WIDTH
? (this.currentDevice = "desktop")
: this.winWidth > t.MOBILE.WIDTH &&
this.winWidth < t.TABLET.WIDTH
? (this.currentDevice = "tablet")
: (this.currentDevice = "mobile"),
(this.prevDevice = this.currentDevice);
}
onLoadHandler() {
this.getCurrentDevice(), this.responsiveHandler(), this.lazyEvent();
}
onResizeHandler() {
clearTimeout(this.opts.resizeStart),
(this.opts.resizeStart = setTimeout(() => {
this.getCurrentDevice(),
this.responsiveHandler(),
this.lazyEvent();
}, 80));
}
lazyEvent() {
this.setLazyVideo(),
this.lazyLength === this.lazyCompleteLength &&
window.removeEventListener("scroll", this.lazyEvent.bind(this));
}
responsiveHandler() {
this.windowWidth = window.innerWidth;
var a = this.opts.loadOption.length;
for (let s = 0; s < a; s++) {
let e = s + 1,
t = e == a ? 0 : this.opts.loadOption[e].resolution,
i = !1;
(i =
(0 == s ||
this.windowWidth <= this.opts.loadOption[s].resolution) &&
this.windowWidth > t) &&
this.opts.loadOption[s].attribute !== this.oldAttr &&
((this.targetAttr = this.opts.loadOption[s].attribute),
(this.oldAttr = this.targetAttr),
(this.attrIndex = s),
this.setResponsiveVideo());
}
}
setResponsiveVideo() {
for (let e = 0; e < this.responsiveLength; e++) {
const s = this.responsiveVideos[e],
a = s.querySelector("video");
let i = s.getAttribute(this.targetAttr);
(i = i.split(".mp4")[0]),
s.classList.contains(this.classes.loaded) &&
s.isVideoInit &&
a.querySelectorAll("source").forEach((e) => {
const t = e.getAttribute("type");
-1 < t.indexOf("webm") && (e.src = i + ".webm"),
-1 < t.indexOf("mp4") && (e.src = i + ".mp4"),
a.load(),
a.addEventListener(
"canplaythrough",
() => {
window.setTimeout(() => {
s.classList.add(this.classes.loaded);
}, 500),
this.checkCompleteVideo(),
this.getEndImage(s);
},
{ once: !0 }
);
});
}
}
setLazyVideo() {
for (let e = 0; e < this.lazyLength; e++) {
var t = window.pageYOffset,
i = t + window.innerHeight;
const n = this.lazyVideos[e];
var s = n.getBoundingClientRect(),
a = t + s.top,
s = t + s.bottom;
i >
a -
window.innerHeight *
(0 != window.pageYOffset ? this.opts.visiblePoint : 0) &&
t <
s +
window.innerHeight *
(0 != window.pageYOffset ? this.opts.visiblePoint : 0) &&
!n.isVideoInit &&
this.videoCallStack.indexOf(e) < 0 &&
(this.videoCallStack.push(e), this.setVideoSrc());
}
}
setVideoSrc() {
var e = this.videoCallStack[0];
const t = this.lazyVideos[e],
i = t.querySelector("video");
let s = t.getAttribute(this.targetAttr);
s = s.split(".mp4")[0];
e = this.opts.lazyClass.split(".");
const a = e[e.length - 1];
e = s;
this.prevVideoSrc !== e &&
(i.querySelectorAll("source").forEach((e) => {
const t = e.getAttribute("type");
-1 < t.indexOf("webm") && (e.src = s + ".webm"),
-1 < t.indexOf("mp4") && (e.src = s + ".mp4");
}),
i.load(),
i.addEventListener(
"canplaythrough",
() => {
window.setTimeout(() => {
t.classList.add(this.classes.loaded);
}, 500),
1 == this.opts.lazyClass.split(" ").length &&
t.classList.remove(a),
this.checkCompleteVideo(),
this.getEndImage(t),
this.videoCallStack.splice(0, 1),
0 < this.videoCallStack.length && this.setVideoSrc();
},
{ once: !0 }
),
(t.isVideoInit = !0)),
(this.prevVideoSrc = e);
}
getEndImage(e) {
var t =
"desktop" === this.currentDevice
? "data-src-pc"
: "tablet" === this.currentDevice
? "data-src-tablet"
: "data-src-mobile";
const i = e.querySelector(this.opts.imageEndLazyClass);
e = this.opts.imageEndLazyClass.split(".");
const s = e[e.length - 1];
i &&
!i.classList.contains(this.opts.imageLazyCompleteClass) &&
((i.src = i.getAttribute(t)),
i.addEventListener(
"load",
() => {
1 == this.opts.imageEndLazyClass.split(" ").length &&
i.classList.remove(s),
i.classList.add(this.opts.imageLazyCompleteClass);
},
{ once: !0 }
));
}
checkCompleteVideo() {
var e = Array.from(
this.el.querySelectorAll("." + this.classes.loaded)
).filter((t) => {
{
let e = 0;
if (e < this.opts.notLoadElement.length)
return !t.closest(this.opts.notLoadElement[e]);
}
});
this.lazyCompleteLength = e.length;
}
};
})(),
(function () {
"use strict";
window.VXT = window.VXT || {};
const o = VXT.UTILS,
e = o.RESPONSIVE;
VXT.VideoPlayer = class {
constructor(e, t) {
e = {
sectionElement: t.sectionElement,
videoParentElement: null,
videoElement: e,
videoController: ".video__controller",
hiddenElement: ".blind",
endImage: ".video__end-frame img",
videoLazyClass: ".js-video-src",
lazyCompleteClass: "load-complete",
imageEndLazyClass: ".js-end-img-src",
visiblePoint: t.visiblePoint || 0,
classes: {
loaded: "loaded",
ended: "ended",
paused: "paused",
playing: "playing",
isPaused: "is-paused",
},
resizeStart: null,
on: { updateController: null, updatePlayState: null },
};
(this.opts = o.def(e, t || {})),
(this.classes = e.classes),
this.init();
}
init() {
this.setElements(),
this.initOpts(),
null !== this.video &&
(this.video.paused || this.video.pause(),
(this.videoElement.playState = !1),
this.updateController(),
this.bindEvents());
}
setElements() {
(this.videoElement = this.opts.videoElement),
(this.video = this.videoElement.querySelector("video")),
null !== this.video &&
(null !== this.opts.videoParentElement
? (this.videoParentElement = this.video.closest(
this.opts.videoParentElement
))
: (this.videoParentElement = this.videoElement),
(this.videoController = this.videoParentElement.querySelector(
this.opts.videoController
)));
}
initOpts() {
this.getCurrentDevice(),
(this.autoPlay =
!!this.videoElement.dataset.autoPlay &&
JSON.parse(this.videoElement.dataset.autoPlay)),
(this.videoElement.playState = !1),
(this.videoElement.autoPlayState = !1),
(this.useController = !!this.videoController),
(this.isReset = !1);
}
getCurrentDevice() {
(this.winWidth = o.winSize().w),
this.winWidth >= e.TABLET.WIDTH
? (this.currentDevice = "desktop")
: this.winWidth > e.MOBILE.WIDTH &&
this.winWidth < e.TABLET.WIDTH
? (this.currentDevice = "tablet")
: (this.currentDevice = "mobile"),
(this.prevDevice = this.currentDevice);
}
getEndImage() {
var e =
"desktop" === this.currentDevice
? "data-src-pc"
: "tablet" === this.currentDevice
? "data-src-tablet"
: "data-src-mobile";
const t = this.videoElement.querySelector(
this.opts.imageEndLazyClass
);
var i = this.opts.imageEndLazyClass.split(".");
const s = i[i.length - 1];
t &&
((t.src = t.getAttribute(e)),
t.addEventListener(
"load",
() => {
1 == this.opts.imageEndLazyClass.split(" ").length &&
t.classList.remove(s),
t.classList.add(this.opts.lazyCompleteClass);
},
{ once: !0 }
));
}
bindEvents() {
window.addEventListener("resize", this.onResizeHandler.bind(this)),
window.addEventListener(
"scroll",
this.onScrollHandler.bind(this)
),
this.video.addEventListener(
"canplaythrough",
this.onCanplayThrough.bind(this),
{ once: !0 }
),
this.useController &&
this.videoController.addEventListener(
"click",
this.onClickController.bind(this)
);
}
onChange(e) {
if (e === this.videoElement) {
e =
"mobile" !== this.currentDevice
? "data-src-pc"
: "data-src-mobile";
let i = this.videoElement.getAttribute(e);
e = i = i.split(".mp4")[0];
this.prevVideoSrc !== e &&
((this.videoElement.playState = !1),
this.video.querySelectorAll("source").forEach((e) => {
const t = e.getAttribute("type");
-1 < t.indexOf("webm") && (e.src = i + ".webm"),
-1 < t.indexOf("mp4") && (e.src = i + ".mp4"),
this.video.load();
}),
this.videoElement.classList.remove(this.classes.playing),
this.videoElement.classList.remove(this.classes.paused),
this.video.addEventListener(
"canplaythrough",
() => {
o.isLowNetwork() || this.onPlay(), this.getEndImage();
},
{ once: !0 }
)),
(this.prevVideoSrc = e);
}
}
onLoad(e) {
if (e === this.videoElement) {
e =
"mobile" !== this.currentDevice
? "data-src-pc"
: "data-src-mobile";
let i = this.videoElement.getAttribute(e);
(i = i.split(".mp4")[0]),
(this.videoElement.playState = !1),
this.video.querySelectorAll("source").forEach((e) => {
const t = e.getAttribute("type");
-1 < t.indexOf("webm") && (e.src = i + ".webm"),
-1 < t.indexOf("mp4") && (e.src = i + ".mp4"),
this.video.load();
}),
this.video.addEventListener(
"canplaythrough",
() => {
o.isLowNetwork() || this.onPlay(), this.getEndImage();
},
{ once: !0 }
);
}
}
onPlay(e) {
var t = () => {
0 < this.video.readyState &&
!this.videoElement.playState &&
(this.video.currentTime === this.video.duration &&
(this.video.currentTime = 0),
this.autoPlay && (this.videoElement.autoPlayState = !0),
(this.videoElement.playState = !0),
this.videoElement.classList.contains(this.classes.paused)
? this.videoElement.classList.add(this.classes.playing)
: window.setTimeout(() => {
this.videoElement.classList.add(this.classes.playing);
}, 350),
this.videoElement.classList.remove(this.classes.ended),
this.videoElement.classList.remove(this.classes.paused),
window.setTimeout(() => {
this.video.play(),
(this.isReset = !1),
this.updateController(),
this.outCallback("updatePlayState", !0);
}, 350),
this.video.addEventListener(
"ended",
this.updatePlayEnded.bind(this),
{ once: !0 }
));
};
(e && e !== this.videoElement) || t();
}
onPause() {
this.video.paused || this.video.pause(),
(this.videoElement.playState = !1),
this.videoElement.classList.remove(this.classes.ended),
this.videoElement.classList.remove(this.classes.playing),
this.videoElement.classList.add(this.classes.paused),
this.updateController();
}
onEnded() {
3 < this.video.readyState &&
(this.video.ended || this.video.pause(),
(this.video.currentTime = this.video.duration),
(this.videoElement.playState = !1),
this.videoElement.classList.add(this.classes.ended),
this.videoElement.classList.remove(this.classes.playing),
this.videoElement.classList.remove(this.classes.paused),
this.updateController());
}
onReset(e) {
var t = () => {
this.video.pause(),
(this.video.currentTime = 0),
(this.videoElement.playState = !1),
(this.isReset = !0),
this.autoPlay && (this.videoElement.autoPlayState = !1),
this.videoElement.classList.remove(this.classes.ended),
this.videoElement.classList.remove(this.classes.playing),
this.videoElement.classList.remove(this.classes.paused),
this.updateController();
};
(e && e !== this.videoElement) || t();
}
onCanplayThrough() {
var e = this.opts.videoLazyClass.split("."),
e = e[e.length - 1];
this.useController &&
window.setTimeout(() => {
this.videoController.style.display = "block";
}, 500),
this.videoElement.classList.add(this.classes.loaded),
1 == this.opts.videoLazyClass.split(" ").length &&
this.videoElement.classList.remove(e),
(this.isCanplay = !0),
this.onScrollHandler(),
(this.isCanplay = !1);
}
onClickController(e) {
e.preventDefault(),
this.videoElement.playState ? this.onPause() : this.onPlay();
}
updatePlayEnded() {
this.onPause();
}
updateController() {
var e;
this.useController &&
(this.videoElement.playState
? this.videoController.classList.add(this.classes.isPaused)
: this.videoController.classList.remove(this.classes.isPaused),
(e = {
el: this.videoController,
playState: this.videoElement.playState,
}),
this.outCallback("updateController", e));
}
onScrollHandler() {
if (!this.videoElement.closest(".cm-layer")) {
var e = window.scrollY,
t =
(this.lastScrollY,
o.getHeight(this.videoElement),
o.winSize().h,
o.getNavHeight()),
i = o.getScroll().top,
s = o.getScroll().bottom,
a = o.getOffset(this.videoElement).top,
t = o.getOffset(this.videoElement).bottom - t;
const l =
this.videoElement.classList.contains(this.classes.playing) &&
this.videoElement.playState;
var n =
this.videoElement.classList.contains(this.classes.paused) &&
!this.videoElement.playState,
r =
this.videoElement.classList.contains(this.classes.ended) &&
!this.videoElement.playState;
if (
(a < s && i <= a) ||
(i < t && t < s) ||
(i < a && t < s) ||
(a < i && s < t)
) {
const l = this.isCanplay || this.isReset;
!l ||
!this.autoPlay ||
this.videoElement.playState ||
this.videoElement.autoPlayState ||
(!o.isLowNetwork() &&
o.isInViewPort(this.videoElement) &&
this.onPlay());
} else
((this.autoPlay && this.videoElement.autoPlayState) ||
this.isReset) &&
(l || n || r) &&
this.onReset();
this.lastScrollY = e;
}
}
onResponsiveChange() {
window.setTimeout(() => {
(this.isCanplay = !0),
this.onReset(),
this.onScrollHandler(),
(this.isCanplay = !1);
}, 20);
}
onResizeHandler() {
o.winSize().w !== this.winWidth &&
((this.winWidth = o.winSize().w),
null == this.opts.resizeStart &&
((this.opts.resizeStart = this.winWidth),
this.resizeAnimateFunc()),
window.clearTimeout(this.resizeEndTime),
(this.resizeEndTime = window.setTimeout(
this.resizeEndFunc.bind(this),
150
)));
}
resizeAnimateFunc() {
this.setLayout(),
(this.resizeRequestFrame = o.requestAFrame.call(
window,
this.resizeAnimateFunc.bind(this)
));
}
resizeEndFunc() {
(this.opts.resizeStart = null),
o.cancelAFrame.call(window, this.resizeRequestFrame);
}
setLayout() {
this.winWidth >= e.TABLET.WIDTH
? (this.currentDevice = "desktop")
: this.winWidth > e.MOBILE.WIDTH && this.winWidth < e.TABLET.WIDTH
? (this.currentDevice = "tablet")
: (this.currentDevice = "mobile"),
this.currentDevice !== this.prevDevice &&
this.onResponsiveChange(),
(this.prevDevice = this.currentDevice);
}
outCallback(e, t) {
e = this.opts.on[e];
null != e && e(t);
}
};
})(),
(function () {
"use strict";
(e = !(r = {})),
(t = null),
(s = function () {
a(),
n(),
UTILS.isLowNetwork() &&
document.documentElement.classList.add("low_network"),
document.documentElement.classList.add("load"),
window.removeEventListener("load", s);
}),
(a = function () {
(e =
1024 <= window.innerWidth
? "desktop"
: 768 <= window.innerWidth && window.innerWidth < 1024
? "tablet"
: "mobile"),
clearTimeout(r.resizeTimeout),
(r.resizeTimeout = setTimeout(function () {
UTILS.isBrokenFixed();
}, 100)),
e != t &&
(document.documentElement.classList.add(e),
document.documentElement.classList.remove(t),
(t = e));
}),
(n = function () {
for (
var e = window.pageYOffset, t = e + window.innerHeight, i = 0;
i < r.allClickables.length;
i++
) {
var s = r.allClickables[i],
a = e + s.getBoundingClientRect().top,
n = e + UTILS.getNavHeight();
n <= a && a <= t
? (s.isVisible = !0)
: (a < n || t < a) && (s.isVisible = !1);
}
}),
(l = function (e) {
var s;
(!document.documentElement.classList.contains("ios") &&
e &&
null == e.relatedTarget) ||
((s = this).isClicked ||
this.isVisible ||
i(this) ||
setTimeout(function () {
var e = window.pageYOffset,
t = s.getBoundingClientRect(),
i = (window.innerHeight - UTILS.getNavHeight()) / 2,
e = e - UTILS.getNavHeight() + t.top + t.height / 2;
window.scrollTo(0, e - i);
}, 10),
(this.isClicked = !1));
}),
(i = function (e) {
var e = e.parentNode,
t = e.getAttribute("id");
return (
"contents" != t &&
e != document.body &&
(!("subnav" != t && !e.classList.contains("sc-s22ultra-popup")) ||
i(e))
);
}),
(o = function () {
this.isClicked = !0;
});
var r,
e,
t,
s,
a,
n,
l,
i,
o,
d = {
init: function () {
(r.resizeTimeout = null),
(r.contents =
document.getElementById("contents") ||
document.getElementById("content")),
(r.allClickables = r.contents.querySelectorAll(
"a, button, input, select"
));
var e = 0;
for (
window.addEventListener("load", s),
window.addEventListener("resize", a),
window.addEventListener("scroll", n),
e = 0;
e < r.allClickables.length;
e++
) {
var t = r.allClickables[e];
(t.isClicked = !1),
(t.isVisible = !1),
t.addEventListener("focusin", l),
t.addEventListener("mousedown", o);
}
var i = document.documentElement.classList;
"global" == UTILS.checkRegion() ||
i.contains("mac") ||
i.contains("safari") ||
ANIUTIL.scrollController({ speed: 120, duration: 0.5 });
},
};
window.initialize = d;
})(),
(function () {
"use strict";
window.VXT = window.VXT || {};
VXT.Choose = class {
constructor(e = container, t) {
var i = {
el: e,
swiperEl: ".vxt-choose__container",
swiperSlideEl: ".vxt-choose__list-item",
tabEl: ".vxt-choose__tab",
tabList: ".vxt-choose__tab-list",
tabItem: ".vxt-choose__tab-item",
tabCta: ".vxt-choose__tab-cta",
btnPrev: ".swiper-button-prev",
btnNext: ".swiper-button-next",
videoEl: ".video__container",
classes: { loaded: "loaded" },
on: { updateResponsiveImage: null },
};
(this.opts = i),
(this.classes = i.classes),
(document.querySelectorAll(e).length > 0 && document.querySelectorAll(e).forEach(ele => {
this.el = ele;
this.init();
}))
}
init() {
null === this.el ||
this.el.classList.contains(this.opts.featureHide) ||
(this.setElements(),
this.initOpts(),
this.buildTabSwiper(),
this.buildSwiper(),
this.buildVideoPlayer(),
this.bindEvents());
}
setElements() {
(this.swiperEl = this.el.querySelector(this.opts.swiperEl)),
(this.swiperSlideEl = this.swiperEl.querySelectorAll(
this.opts.swiperSlideEl
)),
(this.tabEl = this.el.querySelector(this.opts.tabEl)),
(this.tabList = this.tabEl.querySelector(this.opts.tabList)),
(this.tabItem = this.tabList.querySelectorAll(this.opts.tabItem)),
(this.tabCta = this.tabList.querySelectorAll(this.opts.tabCta)),
(this.btnPrev = this.el.querySelector(this.opts.btnPrev)),
(this.btnNext = this.el.querySelector(this.opts.btnNext)),
(this.videoEl = this.el.querySelector(this.opts.videoEl));
}
getCurrentDevice() {
window.innerWidth >= UTILS.RESPONSIVE.TABLET.WIDTH
? (this.currDevice = "desktop")
: window.innerWidth > UTILS.RESPONSIVE.MOBILE.WIDTH &&
window.innerWidth < UTILS.RESPONSIVE.TABLET.WIDTH
? (this.currDevice = "tablet")
: (this.currDevice = "mobile");
}
initOpts() {
this.getCurrentDevice();
}
bindEvents() {
window.addEventListener("load", this.onLoadHandler.bind(this)),
window.addEventListener(
"resize",
this.onResizeHandler.bind(this)
),
this.tabItem.forEach((e) => {
const t = e.querySelector(this.opts.tabCta);
t.addEventListener("focus", this.onFocusTab.bind(this)),
t.addEventListener("click", this.onClickTab.bind(this));
});
}
getDirection(e) {
return UTILS.isRTL() ? ("left" === e ? "right" : "left") : e;
}
createSlidePosition() {
this.slidePositionArray = [];
for (let i = 0; i < this.tabItem.length; i++) {
let e, t;
var s = this.tabEl.getBoundingClientRect(),
a = this.tabItem[i].getBoundingClientRect();
UTILS.isRTL()
? ((e = a.x - s.x), (t = s - (e + a.width)), (e = t + a.width))
: ((e = a.x - s.x), (t = e + a.width)),
this.slidePositionArray.push({ left: e, right: t });
}
}
buildSwiper() {
(this.swiper = {
instance: null,
options: {
slidesPerView: "auto",
a11y: !1,
observer: !0,
observeParents: !0,
centeredSlides: !0,
navigation: {
prevEl: this.opts.btnPrev,
nextEl: this.opts.btnNext,
},
thumbs: { swiper: this.swiperTab.instance },
controller: { control: this.swiperTab.instance },
},
slideChange: () => {
const i = this.swiper.instance.realIndex,
e = this.swiperSlideEl[i],
t = e.querySelector(this.opts.videoEl);
t &&
(t.classList.contains(this.classes.loaded)
? UTILS.isLowNetwork() || this.videoPlayer.play(t)
: this.videoPlayer.load(t)),
this.swiperSlideEl.forEach((e, t) => {
t !== i &&
(t = e.querySelector(this.opts.videoEl)) &&
this.videoPlayer.reset(t);
});
},
build: () => {
null === this.swiper.instance &&
((this.swiper.options.on = {
slideChange: this.swiper.slideChange.bind(this),
}),
(this.swiper.instance = new Swiper(
this.swiperEl,
this.swiper.options
)));
},
destroy: () => {
null != this.swiper.instance &&
(this.swiper.instance.destroy(),
(this.swiper.instance = null));
},
}),
this.swiper.build();
}
buildTabSwiper() {
(this.swiperTab = {
instance: null,
options: {
a11y: !1,
observer: !0,
observeParents: !0,
slidesPerView: "auto",
freeMode: !0,
},
updateMove: (e) => {
this.swiperTab.instance.translateTo(e, 400, !1, !1),
this.swiperTab.instance.updateSize(),
this.swiperTab.instance.updateSlides(),
this.swiperTab.instance.updateProgress();
},
build: () => {
null === this.swiperTab.instance &&
(this.swiperTab.instance = new Swiper(
this.tabEl,
this.swiperTab.options
));
},
destroy: () => {
null != this.swiperTab.instance &&
(this.swiperTab.instance.destroy(),
(this.swiperTab.instance = null));
},
}),
this.swiperTab.build();
}
buildVideoPlayer() {
(this.videoPlayer = {
instance: null,
load: (e) => {
null !== this.swiper.instance &&
this.videoPlayer.instance.onLoad(e);
},
reset: (e) => {
null !== this.swiper.instance &&
this.videoPlayer.instance.onReset(e);
},
play: (e) => {
null !== this.swiper.instance &&
this.videoPlayer.instance.onPlay(e);
},
build: () => {
null === this.videoPlayer.instance &&
(this.videoPlayer.instance = new VXT.VideoPlayer(
this.videoEl,
{
sectionElement: this.opts.el,
on: {
updateController: (e) => {
const t = e.el;
var e = e.playState,
i = t.getAttribute("an-la").split(":")[0];
e
? t.setAttribute("an-la", i + ":stop video")
: t.setAttribute("an-la", i + ":play video");
},
},
}
));
},
}),
this.videoPlayer.build();
}
onClickTab(e) {
var t = e.currentTarget.parentNode,
t = Array.from(this.tabList.children).indexOf(t);
this.tabCta.forEach((e) => {
e.setAttribute("aria-selected", !1);
}),
e.currentTarget.setAttribute("aria-selected", !0),
this.swiper.instance.slideTo(t),
this.swiperTab.instance.slideTo(t);
}
onFocusTab(t) {
if ("desktop" !== this.currDevice && "tablet" !== this.currDevice) {
var t = t.currentTarget.parentNode,
t = Array.from(this.tabList.children).indexOf(t),
i =
this.tabEl.getBoundingClientRect().width -
this.tabList.getBoundingClientRect().width,
s = Math.ceil(
-1 *
(this.tabEl.getBoundingClientRect().width -
this.tabList.scrollWidth -
i)
);
let e = this.slidePositionArray[t][this.getDirection("left")] - i;
(e = (e = e <= 0 ? 0 : e) >= s ? s : e),
(e *= -1),
this.swiperTab.updateMove(e);
}
}
updateResponsiveImage() {
var e = this.swiperEl.querySelectorAll("img");
this.outCallback("updateResponsiveImage", e);
}
onLoadHandler() {
this.onResizeHandler(),
window.removeEventListener("load", this.onLoadHandler.bind(this));
}
onResizeHandler() {
this.getCurrentDevice(),
clearTimeout(this.resizeTimeout),
(this.resizeTimeout = setTimeout(() => {
this.onResponsive();
}, 100)),
this.currDevice != this.prevDevice &&
(this.onResponsiveChange(),
(this.prevDevice = this.currDevice));
}
onResponsive() {
this.createSlidePosition(),
"mobile" === this.currDevice && this.updateResponsiveImage();
}
onResponsiveChange() {
this.onResponsive();
}
outCallback(e, t) {
e = this.opts.on[e];
null != e && e(t);
}
};
})(),
(function () {
"use strict";
window.VXT = window.VXT || {};
VXT.Content = class {
constructor(e = container, t) {
var i = {
el: e,
swiperEl: ".vxt-content__slide",
swiperSlide: ".vxt-content__slide-item",
swiperArrow: ".vxt-content__arrow-cta",
nextArrow: ".vxt-content__arrow-next",
prevArrow: ".vxt-content__arrow-prev",
navigaionEl: ".vxt-content__nav",
pagination: ".vxt-content__pagination",
paginationItem: "li",
paginationCta: ".s-line-wrap",
featureHide: "is-feature-hide",
videoElement: ".vxt-content__player",
classes: {
isActive: "is-active",
loaded: "loaded",
ended: "ended",
paused: "paused",
playing: "playing",
},
on: { updateResponsiveImage: null },
};
(this.opts = UTILS.def(i, t || {})),
(this.classes = i.classes),
(this.el = document.querySelector(e)),
this.init();
}
init() {
null === this.el ||
this.el.classList.contains(this.opts.featureHide) ||
(this.setElements(),
this.initOpts(),
this.initLayout(),
this.buildSwiper(),
this.bindEvents(),
this.buildVideoPlayer());
}
setElements() {
(this.swiperEl = this.el.querySelector(this.opts.swiperEl)),
(this.swiperSlide = this.swiperEl.querySelectorAll(
this.opts.swiperSlide
)),
(this.swiperArrow = this.el.querySelectorAll(
this.opts.swiperArrow
)),
(this.nextArrow = this.el.querySelector(this.opts.nextArrow)),
(this.prevArrow = this.el.querySelector(this.opts.prevArrow)),
(this.navigaionEl = this.el.querySelector(this.opts.navigaionEl)),
(this.pagination = this.el.querySelector(this.opts.pagination)),
(this.paginationItem = this.pagination.querySelectorAll(
this.opts.paginationItem
)),
(this.paginationCta = this.pagination.querySelectorAll(
this.opts.paginationCta
)),
(this.videoElement = this.el.querySelectorAll(
this.opts.videoElement
));
}
getCurrentDevice() {
window.innerWidth >= UTILS.RESPONSIVE.TABLET.WIDTH
? (this.currDevice = "desktop")
: window.innerWidth > UTILS.RESPONSIVE.MOBILE.WIDTH &&
window.innerWidth < UTILS.RESPONSIVE.TABLET.WIDTH
? (this.currDevice = "tablet")
: (this.currDevice = "mobile");
}
initOpts() {
this.getCurrentDevice();
}
initLayout() {
this.paginationItem[0].classList.add(this.classes.isActive);
}
bindEvents() {
window.addEventListener("load", this.onLoadHandler.bind(this)),
window.addEventListener(
"resize",
this.onResizeHandler.bind(this)
);
}
buildSwiper() {
(this.swiper = {
instance: null,
options: {
slidesPerView: "auto",
a11y: !1,
observer: !0,
observeParents: !0,
navigation: { nextEl: this.nextArrow, prevEl: this.prevArrow },
pagination: {
el: ".vxt-content__pagination",
clickable: !0,
type: "bullets",
renderBullet: function (e, t) {
const i = this.slides[e];
return `
Slide${e + 1}: ${
i.querySelector(".vxt-common__title").innerText
} `;
},
},
},
slideChange: () => {
const i = this.swiper.instance.realIndex,
e = this.swiperSlide[i],
t = e.querySelector(this.opts.videoElement);
t &&
(t.classList.contains(this.classes.loaded)
? UTILS.isLowNetwork() || this.videoPlayer.play(t)
: this.videoPlayer.load(t)),
this.swiperSlide.forEach((e, t) => {
t !== i &&
(t = e.querySelector(this.opts.videoElement)) &&
this.videoPlayer.reset(t);
}),
this.paginationCta.forEach((e) => {
e.removeAttribute("title");
}),
this.paginationCta[i].setAttribute("title", "selected");
},
destroy: () => {
null !== this.swiper.instance &&
(this.swiper.instance.destroy(),
(this.swiper.instance = null));
},
build: () => {
null === this.swiper.instance &&
((this.swiper.options.on = {
slideChange: this.swiper.slideChange.bind(this),
}),
(this.swiper.instance = new Swiper(
this.opts.swiperEl,
this.swiper.options
)),
(this.paginationCta = this.pagination.querySelectorAll(
this.opts.paginationCta
)),
this.paginationCta[0].setAttribute("title", "selected"));
},
}),
this.swiper.build();
}
buildVideoPlayer() {
(this.videoPlayer = {
instance: [],
load: (t) => {
this.videoPlayer.instance.length &&
this.videoPlayer.instance.forEach((e) => {
e.onLoad(t);
});
},
reset: (t) => {
this.videoPlayer.instance.length &&
this.videoPlayer.instance.forEach((e) => {
e.onReset(t);
});
},
play: (t) => {
this.videoPlayer.instance.length &&
this.videoPlayer.instance.forEach((e) => {
e.onPlay(t);
});
},
build: () => {
this.videoPlayer.instance.length ||
this.videoElement.forEach((e, t) => {
this.videoPlayer.instance.push(
new VXT.VideoPlayer(e, {
sectionElement: this.opts.el,
on: {
updateController: (e) => {
const t = e.el;
var e = e.playState,
i = t.getAttribute("an-la").split(":")[0];
e
? t.setAttribute("an-la", i + ":stop video")
: t.setAttribute("an-la", i + ":play video");
},
},
})
);
});
},
}),
this.videoPlayer.build();
}
updateResponsiveImage() {
var e = this.swiperEl.querySelectorAll("img");
this.outCallback("updateResponsiveImage", e);
}
onLoadHandler() {
this.onResizeHandler(),
window.removeEventListener("load", this.onLoadHandler.bind(this));
}
onResizeHandler() {
this.getCurrentDevice(),
clearTimeout(this.resizeTimeout),
(this.resizeTimeout = setTimeout(() => {
this.onResponsive();
}, 100)),
this.currDevice != this.prevDevice &&
(this.onResponsiveChange(),
(this.prevDevice = this.currDevice));
}
onResponsive() {
"mobile" === this.currDevice && this.updateResponsiveImage();
}
onResponsiveChange() {
this.onResponsive();
}
outCallback(e, t) {
e = this.opts.on[e];
null != e && e(t);
}
};
})(),
(function () {
"use strict";
window.VXT = window.VXT || {};
const t = VXT.UTILS;
t.RESPONSIVE;
VXT.Contrast = class {
constructor(e = container, t) {
var i = {
el: e,
defaultBtn: ".type-default",
contrastBtn: ".type-contrast",
cookieName: "highContrastMode",
featureHide: "is-feature-hide",
};
(this.opts = i),
(this.classes = i.classes),
(this.el = document.querySelector(e)),
this.init();
}
init() {
null === this.el ||
this.el.classList.contains(this.opts.featureHide) ||
(this.setElements(), this.bindEvents());
}
setElements() {
(this.defaultBtn = this.el.querySelector(this.opts.defaultBtn)),
(this.defaultBtnTitle = this.defaultBtn
.getAttribute("title")
.trim()),
(this.contrastBtn = this.el.querySelector(this.opts.contrastBtn)),
(this.contrastBtnTitle = this.contrastBtn
.getAttribute("title")
.trim()),
(this.cookieName = this.opts.cookieName);
}
bindEvents() {
window.addEventListener("load", this.onLoadHandler.bind(this)),
this.defaultBtn &&
this.defaultBtn.addEventListener(
"click",
this.onClickDefaultBtn.bind(this)
),
this.contrastBtn &&
this.contrastBtn.addEventListener(
"click",
this.onClickContrastBtn.bind(this)
);
}
onLoadHandler() {
this.activeContrast();
}
onClickDefaultBtn(e) {
e.preventDefault(),
t.setCookie(this.cookieName, "0", 1),
this.activeContrast();
}
onClickContrastBtn(e) {
e.preventDefault(),
t.setCookie(this.cookieName, "1", 1),
this.activeContrast();
}
activeContrast() {
var e = t.getCookie(this.cookieName);
null != e && e.length && "1" == e
? (document.documentElement.classList.add("color_yb"),
this.contrastBtn.setAttribute(
"title",
this.contrastBtnTitle + " selected"
),
this.defaultBtn.setAttribute("title", this.defaultBtnTitle))
: (document.documentElement.classList.remove("color_yb"),
this.contrastBtn.setAttribute("title", this.contrastBtnTitle),
this.defaultBtn.setAttribute(
"title",
this.defaultBtnTitle + " selected"
));
}
};
})(),
(function () {
"use strict";
window.VXT = window.VXT || {};
VXT.KeyVisual = class {
constructor(e = container, t) {
var i = {
el: e,
classes: {},
titleEl: ".vxt-common__title",
descriptionEl: ".vxt-common__description",
videoElement: ".video__container",
featureHide: "is-feature-hide",
};
(this.opts = i),
(this.classes = i.classes),
(this.el = document.querySelector(e)),
this.init();
}
init() {
null === this.el ||
this.el.classList.contains(this.opts.featureHide) ||
(this.setElements(), this.buildVideoPlayer());
}
setElements() {
(this.titleEl = this.el.querySelector(this.opts.titleEl)),
(this.descriptionEl = this.el.querySelector(
this.opts.descriptionEl
)),
(this.videoElement = this.el.querySelector(
this.opts.videoElement
));
}
buildVideoPlayer() {
(this.videoPlayer = {
instance: null,
build: () => {
null === this.videoPlayer.instance &&
(this.videoPlayer.instance = new VXT.VideoPlayer(
this.videoElement,
{
sectionElement: this.opts.el,
on: {
updateController: (e) => {
const t = e.el;
var e = e.playState,
i = t.getAttribute("an-la").split(":")[0];
e
? t.setAttribute("an-la", i + ":stop video")
: t.setAttribute("an-la", i + ":play video");
},
},
}
));
},
}),
this.videoPlayer.build();
}
};
})(),
(function () {
"use strict";
window.VXT = window.VXT || {};
VXT.LNB = class {
constructor(e = container, t) {
var i = {
el: e,
navEl: ".vxt-lnb__nav",
navArea: ".vxt-lnb__area",
navList: ".vxt-lnb__nav-list",
navItem: ".vxt-lnb__nav-item",
navLink: "a",
navContents: ".js-content",
btnPrev: ".swiper-nav-prev",
btnNext: ".swiper-nav-next",
classes: {
isFixed: "is-fixed",
isActive: "is-active",
isHold: "is-hold",
},
};
(this.opts = i),
(this.classes = i.classes),
(this.el = document.querySelector(e)),
this.init();
}
init() {
null !== this.el &&
(this.setElements(),
this.initOpts(),
this.buildSwiper(),
this.bindEvents());
}
setElements() {
(this.navEl = this.el.querySelector(this.opts.navEl)),
(this.navArea = this.el.querySelector(this.opts.navArea)),
(this.btnPrev = this.el.querySelector(this.opts.btnPrev)),
(this.btnNext = this.el.querySelector(this.opts.btnNext)),
(this.navList = this.el.querySelector(this.opts.navList)),
(this.navItem = this.el.querySelectorAll(this.opts.navItem)),
(this.navContents = Array.from(
document.documentElement.querySelectorAll(this.opts.navContents)
));
}
getCurrentDevice() {
window.innerWidth >= UTILS.RESPONSIVE.TABLET.WIDTH
? (this.currDevice = "desktop")
: window.innerWidth > UTILS.RESPONSIVE.MOBILE.WIDTH &&
window.innerWidth < UTILS.RESPONSIVE.TABLET.WIDTH
? (this.currDevice = "tablet")
: (this.currDevice = "mobile");
}
initOpts() {
(this.navTop = UTILS.getOffset(this.el).top),
(this.navCount = -1),
this.navContents.forEach((e) => {
e.dataset.visIndex = ++this.navCount;
}),
this.getCurrentDevice(),
this.createSlidePosition();
}
bindEvents() {
this.onScrollHandler(),
window.addEventListener(
"resize",
this.onResizeHandler.bind(this)
),
window.addEventListener(
"scroll",
this.onScrollHandler.bind(this)
);
const s = window.location.hash;
this.navItem.forEach((e, t) => {
const i = e.querySelector(this.opts.navLink);
i.addEventListener("focus", this.onFocusNavItem.bind(this)),
-1 < i.getAttribute("href").indexOf("#") &&
((i.dataset.navIndex = t),
i.addEventListener("click", this.onFocusNavItem.bind(this))),
s &&
-1 < i.getAttribute("href").indexOf(s) &&
(i.parentNode.classList.remove(this.classes.isActive),
i.click());
});
}
getDirection(e) {
return UTILS.isRTL() ? ("left" === e ? "right" : "left") : e;
}
createSlidePosition() {
this.slidePositionArray = [];
for (let i = 0; i < this.navItem.length; i++) {
let e, t;
var s = this.navEl.getBoundingClientRect(),
a = this.navItem[i].getBoundingClientRect();
UTILS.isRTL()
? ((e = a.x - s.x),
(t = s.width - (e + a.width)),
(e = t + a.width))
: ((e = a.x - s.x), (t = e + a.width)),
this.slidePositionArray.push({ left: e, right: t });
}
}
onFocusNavItem(e) {
e.preventDefault();
const t = e.currentTarget.parentNode;
if (
(this.updateNavMove(t),
"click" === e.type &&
!this.el.classList.contains(this.classes.isHold) &&
!t.classList.contains(this.classes.isActive))
) {
this.navItem.forEach((e) => {
e.classList.remove(this.classes.isActive);
}),
t.classList.contains(this.classes.isActive) ||
t.classList.add(this.classes.isActive);
e = e.currentTarget.dataset.navIndex;
const i = this.navContents[e];
(e = i.getBoundingClientRect()),
(e =
(parseInt(window.getComputedStyle(i).paddingTop),
window.scrollY + e.top - UTILS.getNavHeight()));
this.el.classList.add(this.classes.isHold),
$("html, body")
.stop()
.animate({ scrollTop: e }, 400, "swing", () => {
this.el.classList.remove(this.classes.isHold);
});
}
}
updateNavMove(e) {
var e = Array.from(this.navItem).indexOf(e),
t =
this.navEl.getBoundingClientRect().width -
this.navList.getBoundingClientRect().width,
i =
this.swiper.instance.snapGrid[
this.swiper.instance.snapGrid.length - 1
];
let s = this.slidePositionArray[e][this.getDirection("left")] - t;
(s = (s = s <= 0 ? 0 : s) >= i ? i : s),
(s *= -1),
this.swiper.updateMove(s);
}
buildSwiper() {
(this.swiper = {
instance: null,
options: {
a11y: !1,
observer: !0,
slidesPerView: "auto",
navigation: {
prevEl: this.opts.btnPrev,
nextEl: this.opts.btnNext,
},
},
updateMove: (e) => {
this.swiper.instance.translateTo(e, 400, !1, !1),
this.swiper.instance.updateSize(),
this.swiper.instance.updateSlides(),
this.swiper.instance.updateProgress();
},
build: () => {
null === this.swiper.instance &&
(this.swiper.instance = new Swiper(
this.opts.navEl,
this.swiper.options
));
},
}),
this.swiper.build();
}
onScrollHandler() {
const a = window.scrollY,
n =
(this.navTop < a
? this.navArea.classList.add(this.classes.isFixed)
: this.navArea.classList.remove(this.classes.isFixed),
(window.innerHeight + UTILS.getNavHeight()) / 2);
this.navContents.forEach((e) => {
var t = e.getBoundingClientRect(),
i = a + t.top,
t = a + t.bottom;
if (
!this.el.classList.contains(this.classes.isHold) &&
a + n >= i &&
a + n <= t
) {
const s = e.dataset.visIndex;
this.navItem.forEach((e, t) => {
t != s &&
e.classList.contains(this.classes.isActive) &&
e.classList.remove(this.classes.isActive),
t != s ||
e.classList.contains(this.classes.isActive) ||
(e.classList.add(this.classes.isActive),
window.setTimeout(() => {
this.updateNavMove(e);
}, 100));
});
}
});
}
onResizeHandler() {
this.getCurrentDevice(),
clearTimeout(this.resizeTimeout),
(this.resizeTimeout = setTimeout(() => {
this.onResponsive();
}, 100)),
this.currDevice != this.prevDevice &&
(this.onResponsiveChange(),
(this.prevDevice = this.currDevice));
}
onResponsive() {
this.onScrollHandler(), this.createSlidePosition();
}
onResponsiveChange() {
this.onResponsive();
}
};
})(),
(function () {
"use strict";
window.VXT = window.VXT || {};
VXT.Pirs = class {
constructor(e = container, t) {
var i = {
el: e,
swiperEl: ".vxt-pirs__swiper",
swiperSlide: ".vxt-pirs__item",
swiperArrow: ".vxt-pirs__arrow-cta",
nextArrow: ".vxt-pirs__arrow-next",
prevArrow: ".vxt-pirs__arrow-prev",
navigaionEl: ".vxt-pirs__nav",
pagination: ".vxt-pirs__pagination",
paginationItem: "li",
paginationCta: ".s-line-wrap",
classes: { isActive: "is-active" },
on: { updateResponsiveImage: null },
};
(this.opts = UTILS.def(i, t || {})),
(this.classes = i.classes),
(this.el = document.querySelector(e)),
this.init();
}
init() {
null === this.el ||
this.el.classList.contains(this.opts.featureHide) ||
(this.setElements(),
this.initOpts(),
this.initLayout(),
this.bindEvents(),
this.buildSwiper());
}
setElements() {
(this.swiperEl = this.el.querySelector(this.opts.swiperEl)),
(this.swiperSlide = this.swiperEl.querySelectorAll(
this.opts.swiperSlide
)),
(this.swiperArrow = this.el.querySelectorAll(
this.opts.swiperArrow
)),
(this.nextArrow = this.el.querySelector(this.opts.nextArrow)),
(this.prevArrow = this.el.querySelector(this.opts.prevArrow)),
(this.navigaionEl = this.el.querySelector(this.opts.navigaionEl)),
(this.pagination = this.el.querySelector(this.opts.pagination)),
(this.paginationItem = this.pagination.querySelectorAll(
this.opts.paginationItem
)),
(this.paginationCta = this.pagination.querySelectorAll(
this.opts.paginationCta
));
}
getCurrentDevice() {
window.innerWidth >= UTILS.RESPONSIVE.TABLET.WIDTH
? (this.currDevice = "desktop")
: window.innerWidth > UTILS.RESPONSIVE.MOBILE.WIDTH &&
window.innerWidth < UTILS.RESPONSIVE.TABLET.WIDTH
? (this.currDevice = "tablet")
: (this.currDevice = "mobile");
}
initOpts() {
this.getCurrentDevice();
}
initLayout() {
this.paginationItem[0].classList.add("this.classes.isActive");
}
bindEvents() {
window.addEventListener("load", this.onLoadHandler.bind(this)),
window.addEventListener(
"resize",
this.onResizeHandler.bind(this)
);
}
buildSwiper() {
(this.swiper = {
instance: null,
options: {
slidesPerView: "auto",
a11y: !1,
observer: !0,
observeParents: !0,
navigation: { nextEl: this.nextArrow, prevEl: this.prevArrow },
pagination: {
el: ".vxt-pirs__pagination",
clickable: !0,
type: "bullets",
renderBullet: function (e, t) {
const i = this.slides[e];
return `
Slide${e + 1}: ${
i.querySelector(".vxt-pirs__title").innerText
} `;
},
},
},
slideChange: () => {
var e = this.swiper.instance.realIndex;
this.paginationCta.forEach((e) => {
e.removeAttribute("title");
}),
this.paginationCta[e].setAttribute("title", "selected");
},
destroy: () => {
null !== this.swiper.instance &&
(this.swiper.instance.destroy(),
(this.swiper.instance = null));
},
build: () => {
null === this.swiper.instance &&
((this.swiper.options.on = {
slideChange: this.swiper.slideChange.bind(this),
}),
(this.swiper.instance = new Swiper(
this.opts.swiperEl,
this.swiper.options
)),
(this.paginationCta = this.pagination.querySelectorAll(
this.opts.paginationCta
)),
this.paginationCta[0].setAttribute("title", "selected"));
},
}),
this.swiper.build();
}
updateResponsiveImage() {
var e = this.swiperEl.querySelectorAll("img");
this.outCallback("updateResponsiveImage", e);
}
onLoadHandler() {
this.onResizeHandler(),
window.removeEventListener("load", this.onLoadHandler.bind(this));
}
onResizeHandler() {
this.getCurrentDevice(),
clearTimeout(this.resizeTimeout),
(this.resizeTimeout = setTimeout(() => {
this.onResponsive();
}, 100)),
this.currDevice != this.prevDevice &&
(this.onResponsiveChange(),
(this.prevDevice = this.currDevice));
}
onResponsive() {
"mobile" === this.currDevice && this.updateResponsiveImage();
}
onResponsiveChange() {
this.onResponsive();
}
outCallback(e, t) {
e = this.opts.on[e];
null != e && e(t);
}
};
})(),
(function () {
"use strict";
window.VXT = window.VXT || {};
const s = VXT.UTILS;
s.RESPONSIVE;
VXT.RemoteManagement = class {
constructor(e = container, t) {
var i = {
el: e,
classes: {},
accodianItemEl: ".vxt-remote-management__accodian-item",
accodianTitleEl: ".vxt-remote-management__accodian-title",
accodianTitleTextEl: ".vxt-common__title",
accodianMobileTitleEl:
".vxt-remote-management__accodian-title--mobile",
accodianImageEl: ".vxt-remote-management__accodian-image",
featureHide: "is-feature-hide",
swiperContainer: ".vxt-remote-management__accodian-wrap",
swiperWrapper: ".vxt-remote-management__accodian-list",
swiperPagination: ".vxt-remote-management__pagination",
btnPrev: ".vxt-remote-management__prev",
btnNext: ".vxt-remote-management__next",
ariaData: {
ariaSelected: "aria-selected",
ariaLabel: "aria-label",
ariaExpanded: "aria-expanded",
ariaHidden: "aria-hidden",
},
on: { updateResponsiveImage: null },
};
(this.opts = s.def(i, t || {})),
(this.classes = i.classes),
(this.el = document.querySelector(e)),
this.init();
}
init() {
null === this.el ||
this.el.classList.contains(this.opts.featureHide) ||
(this.initOpts(),
this.setElements(),
this.buildSwiper(),
this.bindEvents());
}
initOpts() {
this.getCurrentDevice(), (this.currentIndex = 0);
}
getCurrentDevice() {
window.innerWidth >= s.RESPONSIVE.TABLET.WIDTH
? (this.currDevice = "desktop")
: window.innerWidth > s.RESPONSIVE.MOBILE.WIDTH &&
window.innerWidth < s.RESPONSIVE.TABLET.WIDTH
? (this.currDevice = "tablet")
: (this.currDevice = "mobile");
}
setElements() {
(this.accodianItemEl = this.el.querySelectorAll(
this.opts.accodianItemEl
)),
(this.accodianTitleEl = this.el.querySelectorAll(
this.opts.accodianTitleEl
)),
(this.accodianMobileTitleEl = this.el.querySelectorAll(
this.opts.accodianMobileTitleEl
)),
(this.accodianImageEl = this.el.querySelectorAll(
this.opts.accodianImageEl
)),
(this.swiperContainer = this.el.querySelector(
this.opts.swiperContainer
)),
(this.swiperWrapper = this.el.querySelector(
this.opts.swiperWrapper
));
}
bindEvents() {
window.addEventListener("load", this.onLoadHandler.bind(this)),
window.addEventListener(
"resize",
this.onResizeHandler.bind(this)
),
this.accodianTitleEl.forEach((e) => {
e.addEventListener(
"focus",
this.onClickAccodianItem.bind(this)
);
});
}
setMobileLayout() {
this.setMobileAccodianTitle(),
this.destroyAccodian(),
this.reinitSwiper();
}
setPcLayout() {
this.buildAccodian(), this.swiper.destroy();
}
onClickAccodianItem(e) {
"mobile" != this.currentDevice &&
((this.currentIndex = Array.from(this.accodianItemEl).indexOf(
e.target.parentNode
)),
this.accodianTitleEl.forEach((e) => {
e.setAttribute(this.opts.ariaData.ariaExpanded, "false");
}),
this.accodianImageEl.forEach((e) => {
e.setAttribute(this.opts.ariaData.ariaHidden, "true");
}),
e.target.setAttribute(this.opts.ariaData.ariaExpanded, "true"),
e.target.parentNode
.querySelector(this.opts.accodianImageEl)
.setAttribute(this.opts.ariaData.ariaHidden, "false"));
}
buildAccodian() {
this.accodianTitleEl.forEach((e) => {
e.setAttribute(this.opts.ariaData.ariaExpanded, "false");
}),
this.accodianImageEl.forEach((e) => {
e.setAttribute(this.opts.ariaData.ariaHidden, "true");
}),
this.accodianTitleEl[this.currentIndex].setAttribute(
this.opts.ariaData.ariaExpanded,
"true"
),
this.accodianImageEl[this.currentIndex].setAttribute(
this.opts.ariaData.ariaHidden,
"false"
);
}
destroyAccodian() {
this.accodianTitleEl.forEach((e) => {
e.setAttribute(this.opts.ariaData.ariaExpanded, "true");
}),
this.accodianImageEl.forEach((e) => {
e.setAttribute(this.opts.ariaData.ariaHidden, "false");
});
}
setMobileAccodianTitle() {
var i = [];
this.accodianTitleEl.forEach((e) => {
i.push(e.querySelector(this.opts.accodianTitleTextEl).innerHTML);
}),
this.accodianMobileTitleEl.forEach((e, t) => {
e.innerHTML = i[t];
});
}
reinitSwiper() {
this.swiper.destroy(), this.swiper.build();
}
buildSwiper() {
const s = this;
(this.swiper = {
instance: null,
options: {
a11y: !1,
slideToClickedSlide: !0,
spaceBetween: 0,
loop: !0,
loopedSlides: 4,
initialSlide: this.currentIndex,
navigation: {
prevEl: this.opts.btnPrev,
nextEl: this.opts.btnNext,
},
pagination: {
el: this.opts.swiperPagination,
clickable: "true",
renderBullet: function (e, t) {
var i = [];
return (
s.accodianTitleEl.forEach((e) => {
i.push(
e.querySelector(s.opts.accodianTitleTextEl).innerText
);
}),
`
Slide${e + 1}: ${i[e]} `
);
},
},
},
init: () => {
var e = this.swiper.instance.realIndex;
this.swiper.instance.pagination.bullets.length &&
this.swiper.paginationChange(e);
},
paginationChange: (e) => {
this.swiper.instance.slides.attr(
s.opts.ariaData.ariaSelected,
"false"
),
this.swiper.instance.slides
.eq(e)
.attr(s.opts.ariaData.ariaSelected, "true"),
this.swiper.instance.pagination.bullets
.find("button")
.removeAttr("title"),
this.swiper.instance.pagination.bullets
.eq(e)
.find("button")
.attr("title", "selected");
},
destroy: () => {
null != this.swiper.instance &&
(this.swiper.instance.destroy(),
(this.swiper.instance = null));
},
build: () => {
null === this.swiper.instance &&
((this.swiper.options.initialSlide = this.currentIndex),
(this.swiper.instance = new Swiper(
this.opts.swiperContainer,
this.swiper.options
)),
this.swiper.init(),
this.swiper.instance.on(
"slideChangeTransitionStart",
function () {
var e = this.realIndex;
(s.currentIndex = e), s.swiper.paginationChange(e);
}
));
},
}),
this.swiper.build();
}
updateResponsiveImage() {
var e = this.swiperWrapper.querySelectorAll("img");
this.outCallback("updateResponsiveImage", e);
}
onLoadHandler(e) {
this.onResizeHandler(),
window.removeEventListener("load", this.onLoadHandler.bind(this));
}
onResizeHandler() {
this.getCurrentDevice(),
clearTimeout(this.resizeTimeout),
(this.resizeTimeout = setTimeout(() => {
this.onResponsive();
}, 100)),
this.currDevice != this.prevDevice &&
(this.onResponsiveChange(),
(this.prevDevice = this.currDevice));
}
onResponsive() {
"mobile" === this.currDevice && this.updateResponsiveImage();
}
onResponsiveChange() {
this.onResponsive(),
"desktop" === this.currDevice || "tablet" === this.currDevice
? this.setPcLayout()
: this.setMobileLayout();
}
outCallback(e, t) {
e = this.opts.on[e];
null != e && e(t);
}
};
})(),
(function () {
"use strict";
VXT.UTILS.RESPONSIVE;
new (class {
constructor(e = container) {
(this.opts = {
el: e,
wrapEl: "#wrap",
lnbEl: ".vxt-lnb",
keyVisualEl: ".vxt-kv",
chooseEl: ".vxt-choose",
contentEl: ".vxt-content",
remoteManagementEl: ".vxt-remote-management",
pirsEl: ".vxt-pirs",
contrastEl: ".cp-high-contrast",
subNavEl: "#subnav",
}),
(this.el = document.querySelector(e)),
this.init();
}
init() {
null !== this.el && (this.buildComponents(), initialize.init());
}
buildComponents() {
(this.imageLoader = new VXT.ImageLoader(this.opts.el, {
loadOption: [
{ resolution: 1920, attribute: "data-src-pc" },
{ resolution: 1080, attribute: "data-src-tablet" },
{ resolution: 767, attribute: "data-src-mobile" },
],
})),
(this.videoLoader = new VXT.VideoLoader(this.opts.el, {
notLoadElement: [".cm-layer"],
loadOption: [
{ resolution: 1920, attribute: "data-src-pc" },
{ resolution: 767, attribute: "data-src-mobile" },
],
})),
(this.lnb = new VXT.LNB(this.opts.lnbEl)),
(this.keyVisual = new VXT.KeyVisual(this.opts.keyVisualEl)),
(this.choose = new VXT.Choose(this.opts.chooseEl)),
(this.content = new VXT.Content(this.opts.contentEl, {
on: {
updateResponsiveImage: (e) => {
this.imageLoader.updateResponsiveImage(e);
},
},
})),
(this.remoteManagement = new VXT.RemoteManagement(
this.opts.remoteManagementEl,
{
on: {
updateResponsiveImage: (e) => {
this.imageLoader.updateResponsiveImage(e);
},
},
}
)),
(this.pirs = new VXT.Pirs(this.opts.pirsEl, {
on: {
updateResponsiveImage: (e) => {
this.imageLoader.updateResponsiveImage(e);
},
},
})),
(this.contrast = new VXT.Contrast(this.opts.contrastEl));
}
})(".vxt");
})();
});