The Odyssey Neo monitor is shown, and on the monitor's screen is a
lush jungle scene with a dragon. Screen text reads "Odyssey Neo:
Ultimate Immersion." The Odyssey OLED shows a futuristic racing game
with the text "Odyssey OLED: Electrifying Speed." The Odyssey Ark is
shown in vertical Cockpit mode, with a fighter jet simulator on
screen. Text appears that reads "Odyssey Ark: All-New view." All three
monitors are then shown on screen, with "Epic Screen. Epic Play." text
appearing. Lastly, "Odyssey" text appears as "Epic Screen. Epic Play"
moves upward.
Samsung Odyssey,
The No. 1 Gaming Monitor Worldwide
As the world’s #1 revenue-generating gaming monitor series,1
the Odyssey lineup continues to earn new accolades globally based on
its advanced technologies.
* Source: IDC_23.Q3_PC_Monitor, market share based on revenue
(2021~2023.Q3, over 144Hz)
"…it’s a fantastic monitor for gamers and pulls
double duty for productivity."
"...this is easily one of the best, most spec- packed
monitors ever made."
"...it offers one of the best and most immersive
experiences around."
"...accurate and vivid image quality, flexible
placement and configuration, extreme gaming
immersion, and suitability for production- oriented PC
tasks combine to make this the
"complete package"..."
"The result is a luxurious gaming monitor
with
lavish color and is the best gaming monitor we’ve tested
to date."
"…it’s a fantastic monitor for gamers and pulls
double duty for productivity."
"...this is easily one of the best, most spec- packed
monitors ever made."
"...it offers one of the best and most immersive
experiences around."
"...accurate and vivid image quality, flexible
placement and configuration, extreme gaming
immersion, and suitability for production- oriented PC
tasks combine to make this the
"complete package"..."
"The result is a luxurious gaming monitor
with
lavish color and is the best gaming monitor we’ve tested
to date."
"…it’s a fantastic monitor for gamers and pulls
double duty for productivity."
"...this is easily one of the best, most spec- packed
monitors ever made."
"...it offers one of the best and most immersive
experiences around."
Unmatched
Visuals
Quantum Matrix Technology with Quantum Mini LEDSamsung OLED with Neo Quantum Processor Pro2High resolution up to Dual UHDVESA certified DisplayHDR™
* Features vary by model.
Game-winning
Performance
Fast refresh rate up to 240HzResponse time as low as 0.03ms (GtG)3G-Sync compatibleAMD FreeSync certified
* Features vary by model.
Multitasking
Flexibility
Wide screen size up to 57”Multi View with up to 4 inputs4Picture-by-Picture & Picture-in-Picture for 2
inputs
* Features vary by model.
Integrated
Entertainment
Samsung streaming services: Gaming Hub & Smart TV
apps5Built-in speaker
A groundbreaking visual experience. The Odyssey Neo taps into
Quantum Matrix Technology with Quantum Mini LED to pull you into
your games with ultimate immersion. Color-rich scenery and
incredible detail wrap around you in 1000R curve, while a
beautiful design and ambient Core Lighting set the tone for your
gaming sessions.6
Quantum Mini
LED
Dual UHD
240Hz refresh
rate
1ms response time
(GtG)
AMD FreeSync Premium
Pro
Display Port
2.1
* Features vary by model.
Full Feature RevealOdyssey Neo G9
Launching Film with T1Odyssey Neo G9
A Look From the Experts- mryeester
Odyssey Neo G9
Full Feature RevealOdyssey Neo G8
Launching Film with T1Odyssey Neo G8
A Look From the Experts- ShortCircuitOdyssey Neo G8
Experience the difference of Samsung OLED tech, which creates
the fastest Odyssey model and brings upgraded visual quality and
blazing performance together. The Neo Quantum Processor Pro
enhances the OLED screen for brighter whites, deeper blacks and
near infinite color contrast. Dominate your opponents with
lighting fast and ultra smooth video, a 240Hz refresh rate,
0.03ms response time and G-Sync technology.7
OLED
Dual QHD
240Hz refresh
rate
0.03ms response time
(GtG)
Nvidia G-Sync
Compatible
Smart TV Apps
* Features vary by model.
Full Feature RevealOdyssey OLED G9
Launching Film with T1Odyssey OLED G9
A Look From the Experts - Unbox TherapyOdyssey OLED G9
Full Feature RevealOdyssey OLED G8
A Look From the Experts - Linus Tech TipsOdyssey OLED G8
A world of innovative gaming experiences awaits. A 55” 4K
picture wraps around you, and when you’re ready for a new
perspective, swap over to Cockpit Mode for a vertical view. And
it’s not just for gaming - an upgraded Multi View lets you
master your multitasking by viewing up to 4 sources at once
without interruption.8
Quantum Mini
LED
UHD
165Hz refresh
rate
1ms response time
(GtG)
Multi View
Smart TV Apps
Full Feature RevealOdyssey Ark
Introducing upgraded Multi ViewOdyssey Ark
Launching Film with T1Odyssey Ark
A Look From the Experts - Unbox TherapyOdyssey Ark
Source: IDC_23.Q3_PC_Monitor, market share based on revenue
(2021~2023.Q3, over 144Hz)
Features vary by model.
Features vary by model. Response time is based on internal
tests. Results may vary by content and settings.
Features vary by model. Game Mode, VRR, and Cloud Game are
not supported while in Multi View mode. While in Multi View
mode, refresh rates of up to 120Hz are supported for external
inputs. Some Smart Hub features may not be supported
depending on the service provider, language, or geographical
area.
App availability may vary by country and separate subscriptions
may be required. Accessing Gaming Hub is free of charge.
Subscription may be required to access content offered by
game-stream providers on the Gaming Hub platform. Requires
internet connection and TV tuner is not included. You will
need a Samsung Account to access our network-based smart
services. If you choose not to log-in, you will only get
connection to external devices, e.g. via HDMI.
Features vary by model.
Features vary by model.
Screen should be manually rotated for cockpit mode. In
Cockpit Mode, Multi View can show up to 3 screens on one
display.
`
)),
a.append(n)),
n
);
}
return (
Object.keys(E).forEach((t) => {
Object.keys(E[t]).forEach((e) => {
C.prototype[e] = E[t][e];
});
}),
C.use([
function (e) {
let { swiper: n, on: t, emit: s } = e;
const i = I();
let a = null,
r = null;
const o = () => {
n &&
!n.destroyed &&
n.initialized &&
(s("beforeResize"), s("resize"));
},
l = () => {
n && !n.destroyed && n.initialized && s("orientationchange");
};
t("init", () => {
n.params.resizeObserver && void 0 !== i.ResizeObserver
? n &&
!n.destroyed &&
n.initialized &&
(a = new ResizeObserver((s) => {
r = i.requestAnimationFrame(() => {
var { width: e, height: t } = n;
let i = e,
a = t;
s.forEach((e) => {
var {
contentBoxSize: e,
contentRect: t,
target: s,
} = e;
(s && s !== n.el) ||
((i = t ? t.width : (e[0] || e).inlineSize),
(a = t ? t.height : (e[0] || e).blockSize));
}),
(i === e && a === t) || o();
});
})).observe(n.el)
: (i.addEventListener("resize", o),
i.addEventListener("orientationchange", l));
}),
t("destroy", () => {
r && i.cancelAnimationFrame(r),
a && a.unobserve && n.el && (a.unobserve(n.el), (a = null)),
i.removeEventListener("resize", o),
i.removeEventListener("orientationchange", l);
});
},
function (e) {
let { swiper: s, extendParams: t, on: i, emit: a } = e;
function n(e, t) {
void 0 === t && (t = {});
const s = new (o.MutationObserver || o.WebkitMutationObserver)(
(e) => {
var t;
1 === e.length
? a("observerUpdate", e[0])
: ((t = function () {
a("observerUpdate", e[0]);
}),
o.requestAnimationFrame
? o.requestAnimationFrame(t)
: o.setTimeout(t, 0));
}
);
s.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(s);
}
const r = [],
o = I();
t({ observer: !1, observeParents: !1, observeSlideChildren: !1 }),
i("init", () => {
if (s.params.observer) {
if (s.params.observeParents) {
var t = s.$el.parents();
for (let e = 0; e < t.length; e += 1) n(t[e]);
}
n(s.$el[0], { childList: s.params.observeSlideChildren }),
n(s.$wrapperEl[0], { attributes: !1 });
}
}),
i("destroy", () => {
r.forEach((e) => {
e.disconnect();
}),
r.splice(0, r.length);
});
},
]),
C.use([
function (e) {
let t,
{ swiper: E, extendParams: s, on: i, emit: S } = e;
function C(e, t) {
const s = E.params.virtual;
if (s.cache && E.virtual.cache[t]) return E.virtual.cache[t];
const i = s.renderSlide
? D(s.renderSlide.call(E, e, t))
: D(
`
${e}
`
);
return (
i.attr("data-swiper-slide-index") ||
i.attr("data-swiper-slide-index", t),
s.cache && (E.virtual.cache[t] = i),
i
);
}
function r(t) {
const {
slidesPerView: e,
slidesPerGroup: s,
centeredSlides: i,
} = E.params,
{ addSlidesBefore: a, addSlidesAfter: n } = E.params.virtual,
{
from: r,
to: o,
slides: l,
slidesGrid: d,
offset: c,
} = E.virtual;
E.params.cssMode || E.updateActiveIndex();
var h = E.activeIndex || 0;
let p, u, m;
(p = E.rtlTranslate
? "right"
: E.isHorizontal()
? "left"
: "top"),
(m = i
? ((u = Math.floor(e / 2) + s + n), Math.floor(e / 2) + s + a)
: ((u = e + (s - 1) + n), s + a));
const f = Math.max((h || 0) - m, 0),
v = Math.min((h || 0) + u, l.length - 1),
g = (E.slidesGrid[f] || 0) - (E.slidesGrid[0] || 0);
function w() {
E.updateSlides(),
E.updateProgress(),
E.updateSlidesClasses(),
E.lazy && E.params.lazy.enabled && E.lazy.load(),
S("virtualUpdate");
}
if (
(Object.assign(E.virtual, {
from: f,
to: v,
offset: g,
slidesGrid: E.slidesGrid,
}),
r === f && o === v && !t)
)
return (
E.slidesGrid !== d && g !== c && E.slides.css(p, g + "px"),
E.updateProgress(),
void S("virtualUpdate")
);
if (E.params.virtual.renderExternal)
return (
E.params.virtual.renderExternal.call(E, {
offset: g,
from: f,
to: v,
slides: (function () {
const t = [];
for (let e = f; e <= v; e += 1) t.push(l[e]);
return t;
})(),
}),
void (E.params.virtual.renderExternalUpdate
? w()
: S("virtualUpdate"))
);
const y = [],
b = [];
if (t) E.$wrapperEl.find("." + E.params.slideClass).remove();
else
for (let e = r; e <= o; e += 1)
(e < f || e > v) &&
E.$wrapperEl
.find(
`.${E.params.slideClass}[data-swiper-slide-index="${e}"]`
)
.remove();
for (let e = 0; e < l.length; e += 1)
e >= f &&
e <= v &&
(void 0 === o || t
? b.push(e)
: (e > o && b.push(e), e < r && y.push(e)));
b.forEach((e) => {
E.$wrapperEl.append(C(l[e], e));
}),
y
.sort((e, t) => t - e)
.forEach((e) => {
E.$wrapperEl.prepend(C(l[e], e));
}),
E.$wrapperEl.children(".swiper-slide").css(p, g + "px"),
w();
}
s({
virtual: {
enabled: !1,
slides: [],
cache: !0,
renderSlide: null,
renderExternal: null,
renderExternalUpdate: !0,
addSlidesBefore: 0,
addSlidesAfter: 0,
},
}),
(E.virtual = {
cache: {},
from: void 0,
to: void 0,
slides: [],
offset: 0,
slidesGrid: [],
}),
i("beforeInit", () => {
E.params.virtual.enabled &&
((E.virtual.slides = E.params.virtual.slides),
E.classNames.push(
E.params.containerModifierClass + "virtual"
),
(E.params.watchSlidesProgress = !0),
(E.originalParams.watchSlidesProgress = !0),
E.params.initialSlide || r());
}),
i("setTranslate", () => {
E.params.virtual.enabled &&
(E.params.cssMode && !E._immediateVirtual
? (clearTimeout(t),
(t = setTimeout(() => {
r();
}, 100)))
: r());
}),
i("init update resize", () => {
E.params.virtual.enabled &&
E.params.cssMode &&
L(E.wrapperEl, "--swiper-virtual-size", E.virtualSize + "px");
}),
Object.assign(E.virtual, {
appendSlide: function (t) {
if ("object" == typeof t && "length" in t)
for (let e = 0; e < t.length; e += 1)
t[e] && E.virtual.slides.push(t[e]);
else E.virtual.slides.push(t);
r(!0);
},
prependSlide: function (i) {
const a = E.activeIndex;
let e = a + 1,
n = 1;
if (Array.isArray(i)) {
for (let e = 0; e < i.length; e += 1)
i[e] && E.virtual.slides.unshift(i[e]);
(e = a + i.length), (n = i.length);
} else E.virtual.slides.unshift(i);
if (E.params.virtual.cache) {
const i = E.virtual.cache,
a = {};
Object.keys(i).forEach((e) => {
const t = i[e],
s = t.attr("data-swiper-slide-index");
s &&
t.attr("data-swiper-slide-index", parseInt(s, 10) + n),
(a[parseInt(e, 10) + n] = t);
}),
(E.virtual.cache = a);
}
r(!0), E.slideTo(e, 0);
},
removeSlide: function (s) {
if (null != s) {
let t = E.activeIndex;
if (Array.isArray(s))
for (let e = s.length - 1; 0 <= e; --e)
E.virtual.slides.splice(s[e], 1),
E.params.virtual.cache &&
delete E.virtual.cache[s[e]],
s[e] < t && --t,
(t = Math.max(t, 0));
else
E.virtual.slides.splice(s, 1),
E.params.virtual.cache && delete E.virtual.cache[s],
s < t && --t,
(t = Math.max(t, 0));
r(!0), E.slideTo(t, 0);
}
},
removeAllSlides: function () {
(E.virtual.slides = []),
E.params.virtual.cache && (E.virtual.cache = {}),
r(!0),
E.slideTo(0, 0);
},
update: r,
});
},
function (e) {
let { swiper: h, extendParams: t, on: s, emit: p } = e;
const u = T(),
m = I();
function i(t) {
if (h.enabled) {
const s = h["rtlTranslate"];
let e = t;
const i =
(e = e.originalEvent ? e.originalEvent : e).keyCode ||
e.charCode,
a = h.params.keyboard.pageUpDown,
n = a && 33 === i,
r = a && 34 === i,
o = 37 === i,
l = 39 === i,
d = 38 === i,
c = 40 === i;
if (
!h.allowSlideNext &&
((h.isHorizontal() && l) || (h.isVertical() && c) || r)
)
return !1;
if (
!h.allowSlidePrev &&
((h.isHorizontal() && o) || (h.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 (
h.params.keyboard.onlyInViewport &&
(n || r || o || l || d || c)
) {
let t = !1;
if (
0 < h.$el.parents("." + h.params.slideClass).length &&
0 ===
h.$el.parents("." + h.params.slideActiveClass).length
)
return;
const e = h.$el,
i = e[0].clientWidth,
a = e[0].clientHeight,
p = m.innerWidth,
u = m.innerHeight,
n = h.$el.offset(),
r =
(s && (n.left -= h.$el[0].scrollLeft),
[
[n.left, n.top],
[n.left + i, n.top],
[n.left, n.top + a],
[n.left + i, n.top + a],
]);
for (let e = 0; e < r.length; e += 1) {
const s = r[e];
0 <= s[0] &&
s[0] <= p &&
0 <= s[1] &&
s[1] <= u &&
((0 === s[0] && 0 === s[1]) || (t = !0));
}
if (!t) return;
}
h.isHorizontal()
? ((n || r || o || l) &&
(e.preventDefault
? e.preventDefault()
: (e.returnValue = !1)),
(((r || l) && !s) || ((n || o) && s)) && h.slideNext(),
(((n || o) && !s) || ((r || l) && s)) && h.slidePrev())
: ((n || r || d || c) &&
(e.preventDefault
? e.preventDefault()
: (e.returnValue = !1)),
(r || c) && h.slideNext(),
(n || d) && h.slidePrev()),
p("keyPress", i);
}
}
}
function a() {
h.keyboard.enabled ||
(D(u).on("keydown", i), (h.keyboard.enabled = !0));
}
function n() {
h.keyboard.enabled &&
(D(u).off("keydown", i), (h.keyboard.enabled = !1));
}
(h.keyboard = { enabled: !1 }),
t({
keyboard: { enabled: !1, onlyInViewport: !0, pageUpDown: !0 },
}),
s("init", () => {
h.params.keyboard.enabled && a();
}),
s("destroy", () => {
h.keyboard.enabled && n();
}),
Object.assign(h.keyboard, { enable: a, disable: n });
},
function (e) {
let { swiper: d, extendParams: t, on: s, emit: c } = e;
const i = I();
let h;
t({
mousewheel: {
enabled: !1,
releaseOnEdges: !1,
invert: !1,
forceToAxis: !1,
sensitivity: 1,
eventsTarget: "container",
thresholdDelta: null,
thresholdTime: null,
},
}),
(d.mousewheel = { enabled: !1 });
let p,
a = g();
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 &&
g() - a < d.params.mousewheel.thresholdTime) ||
(6 <= e.delta && g() - 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 i.Date().getTime()));
}
function o(i) {
let a = i,
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 = D(d.params.mousewheel.eventsTarget)),
!d.mouseEntered &&
!e[0].contains(a.target) &&
!r.releaseOnEdges)
)
return !0;
a.originalEvent && (a = a.originalEvent);
let t = 0;
var o = d.rtlTranslate ? -1 : 1,
l = (function (e) {
let t = 0,
s = 0,
i = 0,
a = 0;
return (
"detail" in e && (s = e.detail),
"wheelDelta" in e && (s = -e.wheelDelta / 120),
"wheelDeltaY" in e && (s = -e.wheelDeltaY / 120),
"wheelDeltaX" in e && (t = -e.wheelDeltaX / 120),
"axis" in e &&
e.axis === e.HORIZONTAL_AXIS &&
((t = s), (s = 0)),
(i = 10 * t),
(a = 10 * s),
"deltaY" in e && (a = e.deltaY),
"deltaX" in e && (i = e.deltaX),
e.shiftKey && !i && ((i = a), (a = 0)),
(i || a) &&
e.deltaMode &&
(1 === e.deltaMode
? ((i *= 40), (a *= 40))
: ((i *= 800), (a *= 800))),
i && !t && (t = i < 1 ? -1 : 1),
a && !s && (s = a < 1 ? -1 : 1),
{ spinX: t, spinY: s, pixelX: i, pixelY: a }
);
})(a);
if (r.forceToAxis)
if (d.isHorizontal()) {
if (!(Math.abs(l.pixelX) > Math.abs(l.pixelY))) return !0;
t = -l.pixelX * o;
} else {
if (!(Math.abs(l.pixelY) > Math.abs(l.pixelX))) return !0;
t = -l.pixelY;
}
else
t =
Math.abs(l.pixelX) > Math.abs(l.pixelY)
? -l.pixelX * o
: -l.pixelY;
if (0 === t) return !0;
r.invert && (t = -t);
let s = d.getTranslate() + t * r.sensitivity;
if (
((s = s >= d.minTranslate() ? d.minTranslate() : s) <=
d.maxTranslate() && (s = d.maxTranslate()),
(n =
!!d.params.loop ||
!(s === d.minTranslate() || s === d.maxTranslate())) &&
d.params.nested &&
a.stopPropagation(),
d.params.freeMode && d.params.freeMode.enabled)
) {
const i = {
time: g(),
delta: Math.abs(t),
direction: Math.sign(t),
},
n =
p &&
i.time < p.time + 500 &&
i.delta <= p.delta &&
i.direction === p.direction;
if (!n) {
(p = void 0), d.params.loop && d.loopFix();
let e = d.getTranslate() + t * r.sensitivity;
const D = d.isBeginning,
g = 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(),
((!D && d.isBeginning) || (!g && d.isEnd)) &&
d.updateSlidesClasses(),
d.params.freeMode.sticky)
) {
clearTimeout(h),
(h = void 0),
15 <= u.length && u.shift();
const a = u.length ? u[u.length - 1] : void 0,
n = u[0];
if (
(u.push(i),
a && (i.delta > a.delta || i.direction !== a.direction))
)
u.splice(0);
else if (
15 <= u.length &&
i.time - n.time < 500 &&
1 <= n.delta - i.delta &&
i.delta <= 6
) {
const a = 0 < t ? 0.8 : 0.2;
(p = i),
u.splice(0),
(h = x(() => {
d.slideToClosest(d.params.speed, !0, void 0, a);
}, 0));
}
h =
h ||
x(() => {
(p = i),
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: g(),
delta: Math.abs(t),
direction: Math.sign(t),
raw: i,
},
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 l(e) {
let t = d.$el;
(t =
"container" !== d.params.mousewheel.eventsTarget
? D(d.params.mousewheel.eventsTarget)
: t)[e]("mouseenter", n),
t[e]("mouseleave", r),
t[e]("wheel", o);
}
function f() {
return d.params.cssMode
? (d.wrapperEl.removeEventListener("wheel", o), !0)
: !d.mousewheel.enabled &&
(l("on"), (d.mousewheel.enabled = !0));
}
function v() {
return d.params.cssMode
? (d.wrapperEl.addEventListener(event, o), !0)
: !!d.mousewheel.enabled &&
(l("off"), !(d.mousewheel.enabled = !1));
}
s("init", () => {
!d.params.mousewheel.enabled && d.params.cssMode && v(),
d.params.mousewheel.enabled && f();
}),
s("destroy", () => {
d.params.cssMode && f(), d.mousewheel.enabled && v();
}),
Object.assign(d.mousewheel, { enable: f, disable: v });
},
function (e) {
let { swiper: n, extendParams: t, on: s, emit: r } = e;
function i(e) {
let t;
return (
e &&
((t = D(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 s = n.params.navigation;
e &&
0 < e.length &&
(e[t ? "addClass" : "removeClass"](s.disabledClass),
e[0] && "BUTTON" === e[0].tagName && (e[0].disabled = t),
n.params.watchOverflow &&
n.enabled &&
e[n.isLocked ? "addClass" : "removeClass"](s.lockClass));
}
function o() {
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 l(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 = A(
n,
n.originalParams.navigation,
n.params.navigation,
{ nextEl: "swiper-button-next", prevEl: "swiper-button-prev" }
)),
e.nextEl || e.prevEl)
) {
const t = i(e.nextEl),
s = i(e.prevEl);
t && 0 < t.length && t.on("click", d),
s && 0 < s.length && s.on("click", l),
Object.assign(n.navigation, {
$nextEl: t,
nextEl: t && t[0],
$prevEl: s,
prevEl: s && s[0],
}),
n.enabled ||
(t && t.addClass(e.lockClass),
s && s.addClass(e.lockClass));
}
}
function h() {
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", l),
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,
}),
s("init", () => {
!1 === n.params.navigation.enabled ? p() : (c(), o());
}),
s("toEdge fromEdge lock unlock", () => {
o();
}),
s("destroy", () => {
h();
}),
s("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
);
}),
s("click", (e, t) => {
const { $nextEl: s, $prevEl: i } = n.navigation,
a = t.target;
if (
n.params.navigation.hideOnClick &&
!D(a).is(i) &&
!D(a).is(s) &&
(!(
n.pagination &&
n.params.pagination &&
n.params.pagination.clickable
) ||
(n.pagination.el !== a && !n.pagination.el.contains(a)))
) {
let e;
s
? (e = s.hasClass(n.params.navigation.hiddenClass))
: i && (e = i.hasClass(n.params.navigation.hiddenClass)),
r(!0 === e ? "navigationShow" : "navigationHide"),
s && s.toggleClass(n.params.navigation.hiddenClass),
i && i.toggleClass(n.params.navigation.hiddenClass);
}
});
const p = () => {
n.$el.addClass(n.params.navigation.navigationDisabledClass), h();
};
Object.assign(n.navigation, {
enable: () => {
n.$el.removeClass(n.params.navigation.navigationDisabledClass),
c(),
o();
},
disable: p,
update: o,
init: c,
destroy: h,
});
},
function (e) {
let { swiper: d, extendParams: t, on: s, emit: c } = e;
e = "swiper-pagination";
let h,
p =
(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 s = d.params.pagination["bulletActiveClass"];
e[t]()
.addClass(s + "-" + t)
[t]()
.addClass(s + `-${t}-` + t);
}
function i() {
const t = d.rtl,
r = d.params.pagination;
if (!n()) {
const o = (
d.virtual && d.params.virtual.enabled ? d.virtual : d
).slides.length,
l = d.pagination.$el;
let n;
var s = d.params.loop
? Math.ceil(
(o - 2 * d.loopedSlides) / d.params.slidesPerGroup
)
: d.snapGrid.length;
if (
(d.params.loop
? ((n = Math.ceil(
(d.activeIndex - d.loopedSlides) /
d.params.slidesPerGroup
)) >
o - 1 - 2 * d.loopedSlides &&
(n -= o - 2 * d.loopedSlides),
n > s - 1 && (n -= s),
n < 0 &&
"bullets" !== d.params.paginationType &&
(n = s + n))
: (n =
void 0 !== d.snapIndex
? d.snapIndex
: d.activeIndex || 0),
"bullets" === r.type &&
d.pagination.bullets &&
0 < d.pagination.bullets.length)
) {
const o = d.pagination.bullets;
let i, a, e;
if (
(r.dynamicBullets &&
((h = o
.eq(0)
[d.isHorizontal() ? "outerWidth" : "outerHeight"](!0)),
l.css(
d.isHorizontal() ? "width" : "height",
h * (r.dynamicMainBullets + 4) + "px"
),
1 < r.dynamicMainBullets &&
void 0 !== d.previousIndex &&
((p += n - (d.previousIndex - d.loopedSlides || 0)) >
r.dynamicMainBullets - 1
? (p = r.dynamicMainBullets - 1)
: p < 0 && (p = 0)),
(i = Math.max(n - p, 0)),
(a = i + (Math.min(o.length, r.dynamicMainBullets) - 1)),
(e = (a + i) / 2)),
o.removeClass(
[
"",
"-next",
"-next-next",
"-prev",
"-prev-prev",
"-main",
]
.map((e) => "" + r.bulletActiveClass + e)
.join(" ")
),
1 < l.length)
)
o.each((e) => {
const t = D(e),
s = t.index();
s === n && t.addClass(r.bulletActiveClass),
r.dynamicBullets &&
(s >= i &&
s <= a &&
t.addClass(r.bulletActiveClass + "-main"),
s === i && u(t, "prev"),
s === a && u(t, "next"));
});
else {
const t = o.eq(n),
l = t.index();
if ((t.addClass(r.bulletActiveClass), r.dynamicBullets)) {
const t = o.eq(i),
h = o.eq(a);
for (let e = i; e <= a; e += 1)
o.eq(e).addClass(r.bulletActiveClass + "-main");
if (d.params.loop)
if (l >= o.length) {
for (let e = r.dynamicMainBullets; 0 <= e; --e)
o.eq(o.length - e).addClass(
r.bulletActiveClass + "-main"
);
o.eq(o.length - r.dynamicMainBullets - 1).addClass(
r.bulletActiveClass + "-prev"
);
} else u(t, "prev"), u(h, "next");
else u(t, "prev"), u(h, "next");
}
}
if (r.dynamicBullets) {
const c = Math.min(o.length, r.dynamicMainBullets + 4),
l = (h * c - h) / 2 - e * h,
p = t ? "right" : "left";
o.css(d.isHorizontal() ? p : "top", l + "px");
}
}
if (
("fraction" === r.type &&
(l
.find(k(r.currentClass))
.text(r.formatFractionCurrent(n + 1)),
l.find(k(r.totalClass)).text(r.formatFractionTotal(s))),
"progressbar" === r.type)
) {
var i = r.progressbarOpposite
? d.isHorizontal()
? "vertical"
: "horizontal"
: d.isHorizontal()
? "horizontal"
: "vertical";
const o = (n + 1) / s;
let e = 1,
t = 1;
"horizontal" == i ? (e = o) : (t = o),
l
.find(k(r.progressbarFillClass))
.transform(`translate3d(0,0,0) scaleX(${e}) scaleY(${t})`)
.transition(d.params.speed);
}
"custom" === r.type && r.renderCustom
? (l.html(r.renderCustom(d, n + 1, s)),
c("paginationRender", l[0]))
: c("paginationUpdate", l[0]),
d.params.watchOverflow &&
d.enabled &&
l[d.isLocked ? "addClass" : "removeClass"](r.lockClass);
}
}
function a() {
const i = d.params.pagination;
if (!n()) {
const e = (
d.virtual && d.params.virtual.enabled ? d.virtual : d
).slides.length,
a = d.pagination.$el;
let s = "";
if ("bullets" === i.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)
i.renderBullet
? (s += i.renderBullet.call(d, e, i.bulletClass))
: (s += `<${i.bulletElement} class="${i.bulletClass}">${i.bulletElement}>`);
a.html(s), (d.pagination.bullets = a.find(k(i.bulletClass)));
}
"fraction" === i.type &&
((s = i.renderFraction
? i.renderFraction.call(d, i.currentClass, i.totalClass)
: ` / `),
a.html(s)),
"progressbar" === i.type &&
((s = i.renderProgressbar
? i.renderProgressbar.call(d, i.progressbarFillClass)
: ``),
a.html(s)),
"custom" !== i.type &&
c("paginationRender", d.pagination.$el[0]);
}
}
function r() {
d.params.pagination = A(
d,
d.originalParams.pagination,
d.params.pagination,
{ el: "swiper-pagination" }
);
const t = d.params.pagination;
if (t.el) {
let e = D(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) => D(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"),
(p = 0),
t.dynamicMainBullets < 1 && (t.dynamicMainBullets = 1)),
"progressbar" === t.type &&
t.progressbarOpposite &&
e.addClass(t.progressbarOppositeClass),
t.clickable &&
e.on("click", k(t.bulletClass), function (e) {
e.preventDefault();
let t = D(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 o() {
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", k(e.bulletClass));
}
}
s("init", () => {
!1 === d.params.pagination.enabled ? l() : (r(), a(), i());
}),
s("activeIndexChange", () => {
(!d.params.loop && void 0 !== d.snapIndex) || i();
}),
s("snapIndexChange", () => {
d.params.loop || i();
}),
s("slidesLengthChange", () => {
d.params.loop && (a(), i());
}),
s("snapGridLengthChange", () => {
d.params.loop || (a(), i());
}),
s("destroy", () => {
o();
}),
s("enable disable", () => {
const e = d.pagination["$el"];
e &&
e[d.enabled ? "removeClass" : "addClass"](
d.params.pagination.lockClass
);
}),
s("lock unlock", () => {
i();
}),
s("click", (e, t) => {
const s = t.target,
i = d.pagination["$el"];
if (
d.params.pagination.el &&
d.params.pagination.hideOnClick &&
i &&
0 < i.length &&
!D(s).hasClass(d.params.pagination.bulletClass) &&
(!d.navigation ||
!(
(d.navigation.nextEl && s === d.navigation.nextEl) ||
(d.navigation.prevEl && s === d.navigation.prevEl)
))
) {
const e = i.hasClass(d.params.pagination.hiddenClass);
c(!0 === e ? "paginationShow" : "paginationHide"),
i.toggleClass(d.params.pagination.hiddenClass);
}
});
const l = () => {
d.$el.addClass(d.params.pagination.paginationDisabledClass),
d.pagination.$el &&
d.pagination.$el.addClass(
d.params.pagination.paginationDisabledClass
),
o();
};
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(),
i();
},
disable: l,
render: a,
update: i,
init: r,
destroy: o,
});
},
function (e) {
let { swiper: d, extendParams: t, on: s, emit: r } = e;
const c = T();
let o,
l,
h,
i,
p = !1,
u = null,
m = null;
function a() {
if (d.params.scrollbar.el && d.scrollbar.el) {
const { scrollbar: s, rtlTranslate: i, progress: a } = d,
{ $dragEl: n, $el: r } = s,
o = d.params.scrollbar;
let e = l,
t = (h - l) * a;
i
? 0 < (t = -t)
? ((e = l - t), (t = 0))
: -t + l > h && (e = h + t)
: t < 0
? ((e = l + t), (t = 0))
: t + l > h && (e = h - 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")),
o.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: s } = e;
(t[0].style.width = ""),
(t[0].style.height = ""),
(h = d.isHorizontal() ? s[0].offsetWidth : s[0].offsetHeight),
(i =
d.size /
(d.virtualSize +
d.params.slidesOffsetBefore -
(d.params.centeredSlides ? d.snapGrid[0] : 0))),
(l =
"auto" === d.params.scrollbar.dragSize
? h * i
: parseInt(d.params.scrollbar.dragSize, 10)),
d.isHorizontal()
? (t[0].style.width = l + "px")
: (t[0].style.height = l + "px"),
(s[0].style.display = 1 <= i ? "none" : ""),
d.params.scrollbar.hide && (s[0].style.opacity = 0),
d.params.watchOverflow &&
d.enabled &&
e.$el[d.isLocked ? "addClass" : "removeClass"](
d.params.scrollbar.lockClass
);
}
}
function f(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 v(e) {
const { scrollbar: t, rtlTranslate: s } = d,
i = t["$el"];
let a;
(a =
(f(e) -
i.offset()[d.isHorizontal() ? "left" : "top"] -
(null !== o ? o : l / 2)) /
(h - l)),
(a = Math.max(Math.min(a, 1), 0)),
s && (a = 1 - a);
e = d.minTranslate() + (d.maxTranslate() - d.minTranslate()) * a;
d.updateProgress(e),
d.setTranslate(e),
d.updateActiveIndex(),
d.updateSlidesClasses();
}
function g(e) {
const t = d.params.scrollbar,
{ scrollbar: s, $wrapperEl: i } = d,
{ $el: a, $dragEl: n } = s;
(p = !0),
(o =
e.target === n[0] || e.target === n
? f(e) -
e.target.getBoundingClientRect()[
d.isHorizontal() ? "left" : "top"
]
: null),
e.preventDefault(),
e.stopPropagation(),
i.transition(100),
n.transition(100),
v(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: s } = d,
{ $el: i, $dragEl: a } = t;
p &&
(e.preventDefault ? e.preventDefault() : (e.returnValue = !1),
v(e),
s.transition(0),
i.transition(0),
a.transition(0),
r("scrollbarDragMove", e));
}
function y(e) {
const t = d.params.scrollbar,
{ scrollbar: s, $wrapperEl: i } = d,
a = s["$el"];
p &&
((p = !1),
d.params.cssMode &&
(d.$wrapperEl.css("scroll-snap-type", ""), i.transition("")),
t.hide &&
(clearTimeout(m),
(m = x(() => {
a.css("opacity", 0), a.transition(400);
}, 1e3))),
r("scrollbarDragEnd", e),
t.snapOnRelease && d.slideToClosest());
}
function b(e) {
var {
scrollbar: t,
touchEventsTouch: s,
touchEventsDesktop: i,
params: a,
support: n,
} = d,
t = t.$el;
if (t) {
const r = t[0],
o = !(!n.passiveListener || !a.passiveListeners) && {
passive: !1,
capture: !1,
},
l = !(!n.passiveListener || !a.passiveListeners) && {
passive: !0,
capture: !1,
};
r &&
((t =
"on" === e ? "addEventListener" : "removeEventListener"),
n.touch
? (r[t](s.start, g, o),
r[t](s.move, w, o),
r[t](s.end, y, l))
: (r[t](i.start, g, o),
c[t](i.move, w, o),
c[t](i.end, y, l)));
}
}
function E() {
const { scrollbar: s, $el: i } = d;
d.params.scrollbar = A(
d,
d.originalParams.scrollbar,
d.params.scrollbar,
{ el: "swiper-scrollbar" }
);
var a = d.params.scrollbar;
if (a.el) {
let e = D(a.el),
t =
((e =
d.params.uniqueNavElements &&
"string" == typeof a.el &&
1 < e.length &&
1 === i.find(a.el).length
? i.find(a.el)
: e).addClass(
d.isHorizontal() ? a.horizontalClass : a.verticalClass
),
e.find("." + d.params.scrollbar.dragClass));
0 === t.length &&
((t = D(
``
)),
e.append(t)),
Object.assign(s, {
$el: e,
el: e[0],
$dragEl: t,
dragEl: t[0],
}),
a.draggable &&
d.params.scrollbar.el &&
d.scrollbar.el &&
b("on"),
e &&
e[d.enabled ? "removeClass" : "addClass"](
d.params.scrollbar.lockClass
);
}
}
function S() {
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 && b("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,
}),
s("init", () => {
!1 === d.params.scrollbar.enabled ? C() : (E(), n(), a());
}),
s("update resize observerUpdate lock unlock", () => {
n();
}),
s("setTranslate", () => {
a();
}),
s("setTransition", (e, t) => {
(t = t),
d.params.scrollbar.el &&
d.scrollbar.el &&
d.scrollbar.$dragEl.transition(t);
}),
s("enable disable", () => {
const e = d.scrollbar["$el"];
e &&
e[d.enabled ? "removeClass" : "addClass"](
d.params.scrollbar.lockClass
);
}),
s("destroy", () => {
S();
});
const C = () => {
d.$el.addClass(d.params.scrollbar.scrollbarDisabledClass),
d.scrollbar.$el &&
d.scrollbar.$el.addClass(
d.params.scrollbar.scrollbarDisabledClass
),
S();
};
Object.assign(d.scrollbar, {
enable: () => {
d.$el.removeClass(d.params.scrollbar.scrollbarDisabledClass),
d.scrollbar.$el &&
d.scrollbar.$el.removeClass(
d.params.scrollbar.scrollbarDisabledClass
),
E(),
n(),
a();
},
disable: C,
updateSize: n,
setTranslate: a,
init: E,
destroy: S,
});
},
function (e) {
let { swiper: c, extendParams: t, on: s } = e;
t({ parallax: { enabled: !1 } });
const n = (e, t) => {
const s = c["rtl"],
i = D(e),
a = s ? -1 : 1,
n = i.attr("data-swiper-parallax") || "0";
let r = i.attr("data-swiper-parallax-x"),
o = i.attr("data-swiper-parallax-y");
var l = i.attr("data-swiper-parallax-scale"),
d = i.attr("data-swiper-parallax-opacity");
if (
(r || o
? ((r = r || "0"), (o = o || "0"))
: c.isHorizontal()
? ((r = n), (o = "0"))
: ((o = n), (r = "0")),
(r =
0 <= r.indexOf("%")
? parseInt(r, 10) * t * a + "%"
: r * t * a + "px"),
(o =
0 <= o.indexOf("%")
? parseInt(o, 10) * t + "%"
: o * t + "px"),
null != d)
) {
const e = d - (d - 1) * (1 - Math.abs(t));
i[0].style.opacity = e;
}
if (null == l) i.transform(`translate3d(${r}, ${o}, 0px)`);
else {
const e = l - (l - 1) * (1 - Math.abs(t));
i.transform(`translate3d(${r}, ${o}, 0px) scale(${e})`);
}
},
i = () => {
const { $el: e, slides: t, progress: i, 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, i);
}),
t.each((e, t) => {
let s = e.progress;
1 < c.params.slidesPerGroup &&
"auto" !== c.params.slidesPerView &&
(s += Math.ceil(t / 2) - i * (a.length - 1)),
(s = Math.min(Math.max(s, -1), 1)),
D(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, s);
});
});
};
s("beforeInit", () => {
c.params.parallax.enabled &&
((c.params.watchSlidesProgress = !0),
(c.originalParams.watchSlidesProgress = !0));
}),
s("init", () => {
c.params.parallax.enabled && i();
}),
s("setTranslate", () => {
c.params.parallax.enabled && i();
}),
s("setTransition", (e, t) => {
if (c.params.parallax.enabled) {
var i = t;
void 0 === i && (i = c.params.speed);
const s = c["$el"];
s.find(
"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]"
).each((e) => {
const t = D(e);
let s =
parseInt(t.attr("data-swiper-parallax-duration"), 10) ||
i;
0 === i && (s = 0), t.transition(s);
});
}
});
},
function (e) {
let { swiper: E, extendParams: t, on: s, emit: i } = e;
const S = I();
t({
zoom: {
enabled: !1,
maxRatio: 3,
minRatio: 1,
toggle: !0,
containerClass: "swiper-zoom-container",
zoomedSlideClass: "swiper-slide-zoomed",
},
}),
(E.zoom = { enabled: !1 });
let a,
n,
r,
C = 1,
o = !1;
const T = {
$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: {},
},
l = {
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,
s = e.targetTouches[0].pageY,
i = e.targetTouches[1].pageX,
e = e.targetTouches[1].pageY;
return Math.sqrt((i - t) ** 2 + (e - s) ** 2);
}
function h(e) {
var t = E.support,
s = E.params.zoom;
if (((n = !1), (r = !1), !t.gestures)) {
if (
"touchstart" !== e.type ||
("touchstart" === e.type && e.targetTouches.length < 2)
)
return;
(n = !0), (T.scaleStart = c(e));
}
(T.$slideEl && T.$slideEl.length) ||
((T.$slideEl = D(e.target).closest("." + E.params.slideClass)),
0 === T.$slideEl.length &&
(T.$slideEl = E.slides.eq(E.activeIndex)),
(T.$imageEl = T.$slideEl
.find("." + s.containerClass)
.eq(0)
.find("picture, img, svg, canvas, .swiper-zoom-target")
.eq(0)),
(T.$imageWrapEl = T.$imageEl.parent("." + s.containerClass)),
(T.maxRatio =
T.$imageWrapEl.attr("data-swiper-zoom") || s.maxRatio),
0 !== T.$imageWrapEl.length)
? (T.$imageEl && T.$imageEl.transition(0), (o = !0))
: (T.$imageEl = void 0);
}
function p(e) {
const t = E.support,
s = E.params.zoom,
i = E.zoom;
if (!t.gestures) {
if (
"touchmove" !== e.type ||
("touchmove" === e.type && e.targetTouches.length < 2)
)
return;
(r = !0), (T.scaleMove = c(e));
}
T.$imageEl && 0 !== T.$imageEl.length
? (t.gestures
? (i.scale = e.scale * C)
: (i.scale = (T.scaleMove / T.scaleStart) * C),
i.scale > T.maxRatio &&
(i.scale =
T.maxRatio - 1 + (i.scale - T.maxRatio + 1) ** 0.5),
i.scale < s.minRatio &&
(i.scale =
s.minRatio + 1 - (s.minRatio - i.scale + 1) ** 0.5),
T.$imageEl.transform(`translate3d(0,0,0) scale(${i.scale})`))
: "gesturechange" === e.type && h(e);
}
function u(e) {
const t = E.device,
s = E.support,
i = E.params.zoom,
a = E.zoom;
if (!s.gestures) {
if (!n || !r) return;
if (
"touchend" !== e.type ||
("touchend" === e.type &&
e.changedTouches.length < 2 &&
!t.android)
)
return;
(n = !1), (r = !1);
}
T.$imageEl &&
0 !== T.$imageEl.length &&
((a.scale = Math.max(
Math.min(a.scale, T.maxRatio),
i.minRatio
)),
T.$imageEl
.transition(E.params.speed)
.transform(`translate3d(0,0,0) scale(${a.scale})`),
(C = a.scale),
(o = !1),
1 === a.scale && (T.$slideEl = void 0));
}
function m(e) {
var t = E.zoom;
if (
T.$imageEl &&
0 !== T.$imageEl.length &&
((E.allowClick = !1), x.isTouched && T.$slideEl)
) {
x.isMoved ||
((x.width = T.$imageEl[0].offsetWidth),
(x.height = T.$imageEl[0].offsetHeight),
(x.startX = P(T.$imageWrapEl[0], "x") || 0),
(x.startY = P(T.$imageWrapEl[0], "y") || 0),
(T.slideWidth = T.$slideEl[0].offsetWidth),
(T.slideHeight = T.$slideEl[0].offsetHeight),
T.$imageWrapEl.transition(0));
var s = x.width * t.scale,
t = x.height * t.scale;
if (!(s < T.slideWidth && t < T.slideHeight)) {
if (
((x.minX = Math.min(T.slideWidth / 2 - s / 2, 0)),
(x.maxX = -x.minX),
(x.minY = Math.min(T.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 && !o)
) {
if (
E.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 (
!E.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),
l.prevPositionX || (l.prevPositionX = x.touchesCurrent.x),
l.prevPositionY || (l.prevPositionY = x.touchesCurrent.y),
l.prevTime || (l.prevTime = Date.now()),
(l.x =
(x.touchesCurrent.x - l.prevPositionX) /
(Date.now() - l.prevTime) /
2),
(l.y =
(x.touchesCurrent.y - l.prevPositionY) /
(Date.now() - l.prevTime) /
2),
Math.abs(x.touchesCurrent.x - l.prevPositionX) < 2 &&
(l.x = 0),
Math.abs(x.touchesCurrent.y - l.prevPositionY) < 2 &&
(l.y = 0),
(l.prevPositionX = x.touchesCurrent.x),
(l.prevPositionY = x.touchesCurrent.y),
(l.prevTime = Date.now()),
T.$imageWrapEl.transform(
`translate3d(${x.currentX}px, ${x.currentY}px,0)`
);
}
}
}
function f() {
const e = E.zoom;
T.$slideEl &&
E.previousIndex !== E.activeIndex &&
(T.$imageEl &&
T.$imageEl.transform("translate3d(0,0,0) scale(1)"),
T.$imageWrapEl &&
T.$imageWrapEl.transform("translate3d(0,0,0)"),
(e.scale = 1),
(C = 1),
(T.$slideEl = void 0),
(T.$imageEl = void 0),
(T.$imageWrapEl = void 0));
}
function v(w) {
const y = E.zoom,
b = E.params.zoom;
if (
(T.$slideEl ||
(w &&
w.target &&
(T.$slideEl = D(w.target).closest(
"." + E.params.slideClass
)),
T.$slideEl ||
(E.params.virtual && E.params.virtual.enabled && E.virtual
? (T.$slideEl = E.$wrapperEl.children(
"." + E.params.slideActiveClass
))
: (T.$slideEl = E.slides.eq(E.activeIndex))),
(T.$imageEl = T.$slideEl
.find("." + b.containerClass)
.eq(0)
.find("picture, img, svg, canvas, .swiper-zoom-target")
.eq(0)),
(T.$imageWrapEl = T.$imageEl.parent("." + b.containerClass))),
T.$imageEl &&
0 !== T.$imageEl.length &&
T.$imageWrapEl &&
0 !== T.$imageWrapEl.length)
) {
let e, t, s, i, a, n, r, o, l, d, c, h, p, u, m, f, v, g;
E.params.cssMode &&
((E.wrapperEl.style.overflow = "hidden"),
(E.wrapperEl.style.touchAction = "none")),
T.$slideEl.addClass("" + b.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)),
(y.scale =
T.$imageWrapEl.attr("data-swiper-zoom") || b.maxRatio),
(C = T.$imageWrapEl.attr("data-swiper-zoom") || b.maxRatio),
w
? ((v = T.$slideEl[0].offsetWidth),
(g = T.$slideEl[0].offsetHeight),
(s = T.$slideEl.offset().left + S.scrollX),
(i = T.$slideEl.offset().top + S.scrollY),
(a = s + v / 2 - e),
(n = i + g / 2 - t),
(l = T.$imageEl[0].offsetWidth),
(d = T.$imageEl[0].offsetHeight),
(c = l * y.scale),
(h = d * y.scale),
(m = -(p = Math.min(v / 2 - c / 2, 0))),
(f = -(u = Math.min(g / 2 - h / 2, 0))),
(r = a * y.scale),
(o = n * y.scale),
(r = r < p ? p : r) > m && (r = m),
(o = o < u ? u : o) > f && (o = f))
: ((r = 0), (o = 0)),
T.$imageWrapEl
.transition(300)
.transform(`translate3d(${r}px, ${o}px,0)`),
T.$imageEl
.transition(300)
.transform(`translate3d(0,0,0) scale(${y.scale})`);
}
}
function g() {
const e = E.zoom,
t = E.params.zoom;
T.$slideEl ||
(E.params.virtual && E.params.virtual.enabled && E.virtual
? (T.$slideEl = E.$wrapperEl.children(
"." + E.params.slideActiveClass
))
: (T.$slideEl = E.slides.eq(E.activeIndex)),
(T.$imageEl = T.$slideEl
.find("." + t.containerClass)
.eq(0)
.find("picture, img, svg, canvas, .swiper-zoom-target")
.eq(0)),
(T.$imageWrapEl = T.$imageEl.parent("." + t.containerClass))),
T.$imageEl &&
0 !== T.$imageEl.length &&
T.$imageWrapEl &&
0 !== T.$imageWrapEl.length &&
(E.params.cssMode &&
((E.wrapperEl.style.overflow = ""),
(E.wrapperEl.style.touchAction = "")),
(e.scale = 1),
(C = 1),
T.$imageWrapEl
.transition(300)
.transform("translate3d(0,0,0)"),
T.$imageEl
.transition(300)
.transform("translate3d(0,0,0) scale(1)"),
T.$slideEl.removeClass("" + t.zoomedSlideClass),
(T.$slideEl = void 0));
}
function w(e) {
var t = E.zoom;
t.scale && 1 !== t.scale ? g() : v(e);
}
function y() {
var e = E.support;
return {
passiveListener: !(
"touchstart" !== E.touchEvents.start ||
!e.passiveListener ||
!E.params.passiveListeners
) && { passive: !0, capture: !1 },
activeListenerWithCapture: !e.passiveListener || {
passive: !1,
capture: !0,
},
};
}
function b() {
return "." + E.params.slideClass;
}
function L(e) {
var t = y()["passiveListener"],
s = b();
E.$wrapperEl[e]("gesturestart", s, h, t),
E.$wrapperEl[e]("gesturechange", s, p, t),
E.$wrapperEl[e]("gestureend", s, u, t);
}
function A() {
a || ((a = !0), L("on"));
}
function k() {
a && ((a = !1), L("off"));
}
function M() {
const e = E.zoom;
var t, s, i, a;
e.enabled ||
((e.enabled = !0),
(t = E.support),
({ passiveListener: s, activeListenerWithCapture: i } = y()),
(a = b()),
t.gestures
? (E.$wrapperEl.on(E.touchEvents.start, A, s),
E.$wrapperEl.on(E.touchEvents.end, k, s))
: "touchstart" === E.touchEvents.start &&
(E.$wrapperEl.on(E.touchEvents.start, a, h, s),
E.$wrapperEl.on(E.touchEvents.move, a, p, i),
E.$wrapperEl.on(E.touchEvents.end, a, u, s),
E.touchEvents.cancel &&
E.$wrapperEl.on(E.touchEvents.cancel, a, u, s)),
E.$wrapperEl.on(
E.touchEvents.move,
"." + E.params.zoom.containerClass,
m,
i
));
}
function O() {
const e = E.zoom;
var t, s, i, a;
e.enabled &&
((t = E.support),
({ passiveListener: s, activeListenerWithCapture: i } =
((e.enabled = !1), y())),
(a = b()),
t.gestures
? (E.$wrapperEl.off(E.touchEvents.start, A, s),
E.$wrapperEl.off(E.touchEvents.end, k, s))
: "touchstart" === E.touchEvents.start &&
(E.$wrapperEl.off(E.touchEvents.start, a, h, s),
E.$wrapperEl.off(E.touchEvents.move, a, p, i),
E.$wrapperEl.off(E.touchEvents.end, a, u, s),
E.touchEvents.cancel &&
E.$wrapperEl.off(E.touchEvents.cancel, a, u, s)),
E.$wrapperEl.off(
E.touchEvents.move,
"." + E.params.zoom.containerClass,
m,
i
));
}
Object.defineProperty(E.zoom, "scale", {
get: () => d,
set(e) {
var t, s;
d !== e &&
((t = T.$imageEl ? T.$imageEl[0] : void 0),
(s = T.$slideEl ? T.$slideEl[0] : void 0),
i("zoomChange", e, t, s)),
(d = e);
},
}),
s("init", () => {
E.params.zoom.enabled && M();
}),
s("destroy", () => {
O();
}),
s("touchStart", (e, t) => {
var s;
E.zoom.enabled &&
((t = t),
(s = E.device),
T.$imageEl &&
0 !== T.$imageEl.length &&
!x.isTouched &&
(s.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)));
}),
s("touchEnd", (e, t) => {
if (E.zoom.enabled) {
var s = E.zoom;
if (T.$imageEl && 0 !== T.$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 i = l.x * e,
i = x.currentX + i,
a = l.y * t,
a = x.currentY + a,
n =
(0 !== l.x && (e = Math.abs((i - x.currentX) / l.x)),
0 !== l.y && (t = Math.abs((a - x.currentY) / l.y)),
Math.max(e, t)),
i =
((x.currentX = i), (x.currentY = a), x.width * s.scale),
a = x.height * s.scale;
(x.minX = Math.min(T.slideWidth / 2 - i / 2, 0)),
(x.maxX = -x.minX),
(x.minY = Math.min(T.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
)),
T.$imageWrapEl
.transition(n)
.transform(
`translate3d(${x.currentX}px, ${x.currentY}px,0)`
);
}
}
}),
s("doubleTap", (e, t) => {
!E.animating &&
E.params.zoom.enabled &&
E.zoom.enabled &&
E.params.zoom.toggle &&
w(t);
}),
s("transitionEnd", () => {
E.zoom.enabled && E.params.zoom.enabled && f();
}),
s("slideChange", () => {
E.zoom.enabled &&
E.params.zoom.enabled &&
E.params.cssMode &&
f();
}),
Object.assign(E.zoom, {
enable: M,
disable: O,
in: v,
out: g,
toggle: w,
});
},
function (e) {
let { swiper: c, extendParams: t, on: s, emit: h } = 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 = {})),
p = !1;
function u(e, o) {
void 0 === o && (o = !0);
const l = 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(
`.${l.elementClass}:not(.${l.loadedClass}):not(.${l.loadingClass})`
);
!d.hasClass(l.elementClass) ||
d.hasClass(l.loadedClass) ||
d.hasClass(l.loadingClass) ||
t.push(d[0]),
0 !== t.length &&
t.each((e) => {
const t = D(e),
s =
(t.addClass(l.loadingClass),
t.attr("data-background")),
i = t.attr("data-src"),
a = t.attr("data-srcset"),
n = t.attr("data-sizes"),
r = t.parent("picture");
c.loadImage(t[0], i || s, a, n, !1, () => {
var e;
null == c ||
!c ||
(c && !c.params) ||
c.destroyed ||
(s
? (t.css("background-image", `url("${s}")`),
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 = D(e);
t.attr("data-srcset") &&
(t.attr("srcset", t.attr("data-srcset")),
t.removeAttr("data-srcset"));
}),
i &&
(t.attr("src", i), t.removeAttr("data-src"))),
t.addClass(l.loadedClass).removeClass(l.loadingClass),
d.find("." + l.preloaderClass).remove(),
c.params.loop &&
o &&
((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
)),
h("lazyImageReady", d[0], t[0]),
c.params.autoHeight && c.updateAutoHeight());
}),
h("lazyImageLoad", d[0], t[0]);
});
}
}
function m() {
const { $wrapperEl: t, params: s, slides: i, activeIndex: a } = c,
n = c.virtual && s.virtual.enabled,
e = s.lazy;
let r = s.slidesPerView;
function o(e) {
if (n) {
if (
t.children(
`.${s.slideClass}[data-swiper-slide-index="${e}"]`
).length
)
return 1;
} else if (i[e]) return 1;
}
function l(e) {
return n ? D(e).attr("data-swiper-slide-index") : D(e).index();
}
if (
("auto" === r && (r = 0),
(p = p || !0),
c.params.watchSlidesProgress)
)
t.children("." + s.slideVisibleClass).each((e) => {
u(n ? D(e).attr("data-swiper-slide-index") : D(e).index());
});
else if (1 < r) for (let e = a; e < a + r; e += 1) o(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),
s = Math.min(a + c + Math.max(t, c), i.length),
n = Math.max(a - Math.max(c, t), 0);
for (let e = a + c; e < s; e += 1) o(e) && u(e);
for (let e = n; e < a; e += 1) o(e) && u(e);
} else {
const c = t.children("." + s.slideNextClass),
i =
(0 < c.length && u(l(c)),
t.children("." + s.slidePrevClass));
0 < i.length && u(l(i));
}
}
function f() {
var e = I();
if (c && !c.destroyed) {
const i = c.params.lazy.scrollingElement
? D(c.params.lazy.scrollingElement)
: D(e),
a = i[0] === e,
n = a ? e.innerWidth : i[0].offsetWidth,
r = a ? e.innerHeight : i[0].offsetHeight,
o = c.$el.offset(),
l = c["rtlTranslate"];
let t = !1;
l && (o.left -= c.$el[0].scrollLeft);
var s = [
[o.left, o.top],
[o.left + c.width, o.top],
[o.left, o.top + c.height],
[o.left + c.width, o.top + c.height],
];
for (let e = 0; e < s.length; e += 1) {
const c = s[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(), i.off("scroll", f, e))
: d || ((d = !0), i.on("scroll", f, e));
}
}
s("beforeInit", () => {
c.params.lazy.enabled &&
c.params.preloadImages &&
(c.params.preloadImages = !1);
}),
s("init", () => {
c.params.lazy.enabled && (c.params.lazy.checkInView ? f : m)();
}),
s("scroll", () => {
c.params.freeMode &&
c.params.freeMode.enabled &&
!c.params.freeMode.sticky &&
m();
}),
s("scrollbarDragMove resize _freeModeNoMomentumRelease", () => {
c.params.lazy.enabled && (c.params.lazy.checkInView ? f : m)();
}),
s("transitionStart", () => {
c.params.lazy.enabled &&
(c.params.lazy.loadOnTransitionStart ||
(!c.params.lazy.loadOnTransitionStart && !p)) &&
(c.params.lazy.checkInView ? f : m)();
}),
s("transitionEnd", () => {
c.params.lazy.enabled &&
!c.params.lazy.loadOnTransitionStart &&
(c.params.lazy.checkInView ? f : m)();
}),
s("slideChange", () => {
var {
lazy: e,
cssMode: t,
watchSlidesProgress: s,
touchReleaseOnEdges: i,
resistanceRatio: a,
} = c.params;
e.enabled && (t || (s && (i || 0 === a))) && m();
}),
s("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: o, extendParams: t, on: s } = e;
function l(e, t) {
const s = (function () {
let s, i, a;
return (e, t) => {
for (i = -1, s = e.length; 1 < s - i; )
e[(a = (s + i) >> 1)] <= t ? (i = a) : (s = a);
return s;
};
})();
let i, a;
return (
(this.x = e),
(this.y = t),
(this.lastIndex = e.length - 1),
(this.interpolate = function (e) {
return e
? ((a = s(this.x, e)),
(i = a - 1),
((e - this.x[i]) * (this.y[a] - this.y[i])) /
(this.x[a] - this.x[i]) +
this.y[i])
: 0;
}),
this
);
}
function i() {
o.controller.control &&
o.controller.spline &&
((o.controller.spline = void 0), delete o.controller.spline);
}
t({ controller: { control: void 0, inverse: !1, by: "slide" } }),
(o.controller = { control: void 0 }),
s("beforeInit", () => {
o.controller.control = o.params.controller.control;
}),
s("update", () => {
i();
}),
s("resize", () => {
i();
}),
s("observerUpdate", () => {
i();
}),
s("setTranslate", (e, t, s) => {
o.controller.control && o.controller.setTranslate(t, s);
}),
s("setTransition", (e, t, s) => {
o.controller.control && o.controller.setTransition(t, s);
}),
Object.assign(o.controller, {
setTranslate: function (e, t) {
var s = o.controller.control;
let i, a;
var n = o.constructor;
function r(e) {
var t,
s = o.rtlTranslate ? -o.translate : o.translate;
"slide" === o.params.controller.by &&
((t = e),
o.controller.spline ||
(o.controller.spline = o.params.loop
? new l(o.slidesGrid, t.slidesGrid)
: new l(o.snapGrid, t.snapGrid)),
(a = -o.controller.spline.interpolate(-s))),
(a && "container" !== o.params.controller.by) ||
((i =
(e.maxTranslate() - e.minTranslate()) /
(o.maxTranslate() - o.minTranslate())),
(a = (s - o.minTranslate()) * i + e.minTranslate())),
o.params.controller.inverse && (a = e.maxTranslate() - a),
e.updateProgress(a),
e.setTranslate(a, o),
e.updateActiveIndex(),
e.updateSlidesClasses();
}
if (Array.isArray(s))
for (let e = 0; e < s.length; e += 1)
s[e] !== t && s[e] instanceof n && r(s[e]);
else s instanceof n && t !== s && r(s);
},
setTransition: function (t, e) {
const s = o.constructor,
i = o.controller.control;
let a;
function n(e) {
e.setTransition(t, o),
0 !== t &&
(e.transitionStart(),
e.params.autoHeight &&
x(() => {
e.updateAutoHeight();
}),
e.$wrapperEl.transitionEnd(() => {
i &&
(e.params.loop &&
"slide" === o.params.controller.by &&
e.loopFix(),
e.transitionEnd());
}));
}
if (Array.isArray(i))
for (a = 0; a < i.length; a += 1)
i[a] !== e && i[a] instanceof s && n(i[a]);
else i instanceof s && e !== i && n(i);
},
});
},
function (e) {
let { swiper: r, extendParams: t, on: s } = e,
o =
(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 i(e) {
const t = o;
0 !== t.length && (t.html(""), t.html(e));
}
function a(e) {
e.attr("tabIndex", "0");
}
function n(e) {
e.attr("tabIndex", "-1");
}
function l(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 h(e) {
e.attr("aria-disabled", !0);
}
function p(e) {
e.attr("aria-disabled", !1);
}
function u(e) {
if (13 === e.keyCode || 32 === e.keyCode) {
const t = r.params.a11y,
s = D(e.target);
r.navigation &&
r.navigation.$nextEl &&
s.is(r.navigation.$nextEl) &&
((r.isEnd && !r.params.loop) || r.slideNext(),
r.isEnd ? i(t.lastSlideMessage) : i(t.nextSlideMessage)),
r.navigation &&
r.navigation.$prevEl &&
s.is(r.navigation.$prevEl) &&
((r.isBeginning && !r.params.loop) || r.slidePrev(),
r.isBeginning
? i(t.firstSlideMessage)
: i(t.prevSlideMessage)),
r.pagination &&
s.is(k(r.params.pagination.bulletClass)) &&
s[0].click();
}
}
function m() {
return (
r.pagination &&
r.pagination.bullets &&
r.pagination.bullets.length
);
}
function f() {
return m() && r.params.pagination.clickable;
}
const v = (e, t, s) => {
a(e),
"BUTTON" !== e[0].tagName &&
(l(e, "button"), e.on("keydown", u)),
c(e, s),
e.attr("aria-controls", t);
},
g = () => {
r.a11y.clicked = !0;
},
w = () => {
requestAnimationFrame(() => {
requestAnimationFrame(() => {
r.destroyed || (r.a11y.clicked = !1);
});
});
},
y = (e) => {
var t, s, i;
r.a11y.clicked ||
((t = e.target.closest("." + r.params.slideClass)) &&
r.slides.includes(t) &&
((s = r.slides.indexOf(t) === r.activeIndex),
(i =
r.params.watchSlidesProgress &&
r.visibleSlides &&
r.visibleSlides.includes(t)),
s ||
i ||
(e.sourceCapabilities &&
e.sourceCapabilities.firesTouchEvents) ||
(r.isHorizontal()
? (r.el.scrollLeft = 0)
: (r.el.scrollTop = 0),
r.slideTo(r.slides.indexOf(t), 0))));
},
b = () => {
const a = r.params.a11y,
n =
(a.itemRoleDescriptionMessage &&
d(D(r.slides), a.itemRoleDescriptionMessage),
a.slideRole && l(D(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 s = D(e),
i = r.params.loop
? parseInt(s.attr("data-swiper-slide-index"), 10)
: t;
c(
s,
a.slideLabelMessage
.replace(/\{\{index\}\}/, i + 1)
.replace(/\{\{slidesLength\}\}/, n)
);
});
};
s("beforeInit", () => {
o = D(
``
);
}),
s("afterInit", () => {
if (r.params.a11y.enabled) {
var s = r.params.a11y,
i = (r.$el.append(o), r.$el);
s.containerRoleDescriptionMessage &&
d(i, s.containerRoleDescriptionMessage),
s.containerMessage && c(i, s.containerMessage);
const a = r.$wrapperEl,
n =
s.id ||
a.attr("id") ||
"swiper-wrapper-" +
"x"
.repeat((i = void 0 === (i = 16) ? 16 : i))
.replace(/x/g, () =>
Math.round(16 * Math.random()).toString(16)
);
i =
r.params.autoplay && r.params.autoplay.enabled
? "off"
: "polite";
let e, t;
a.attr("id", n),
a.attr("aria-live", i),
b(),
r.navigation &&
r.navigation.$nextEl &&
(e = r.navigation.$nextEl),
r.navigation &&
r.navigation.$prevEl &&
(t = r.navigation.$prevEl),
e && e.length && v(e, n, s.nextSlideMessage),
t && t.length && v(t, n, s.prevSlideMessage),
f() &&
r.pagination.$el.on(
"keydown",
k(r.params.pagination.bulletClass),
u
),
r.$el.on("focus", y, !0),
r.$el.on("pointerdown", g, !0),
r.$el.on("pointerup", w, !0);
}
}),
s(
"slidesLengthChange snapGridLengthChange slidesGridLengthChange",
() => {
r.params.a11y.enabled && b();
}
),
s("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 ? (h(t), n(t)) : (p(t), a(t))),
e && 0 < e.length && (r.isEnd ? (h(e), n(e)) : (p(e), a(e))));
}),
s("paginationUpdate", () => {
if (r.params.a11y.enabled) {
const s = r.params.a11y;
m() &&
r.pagination.bullets.each((e) => {
const t = D(e);
r.params.pagination.clickable &&
(a(t),
r.params.pagination.renderBullet ||
(l(t, "button"),
c(
t,
s.paginationBulletMessage.replace(
/\{\{index\}\}/,
t.index() + 1
)
))),
t.is("." + r.params.pagination.bulletActiveClass)
? t.attr("aria-current", "true")
: t.removeAttr("aria-current");
});
}
}),
s("destroy", () => {
if (r.params.a11y.enabled) {
let e, t;
o && 0 < o.length && o.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),
f() &&
r.pagination.$el.off(
"keydown",
k(r.params.pagination.bulletClass),
u
),
r.$el.off("focus", y, !0),
r.$el.off("pointerdown", g, !0),
r.$el.off("pointerup", w, !0);
}
});
},
function (e) {
let { swiper: r, extendParams: t, on: s } = e,
o =
(t({
history: {
enabled: !1,
root: "",
replaceState: !1,
key: "slides",
keepQuery: !1,
},
}),
!1),
i = {};
const l = (e) =>
e
.toString()
.replace(/\s+/g, "-")
.replace(/[^\w-]+/g, "")
.replace(/--+/g, "-")
.replace(/^-+/, "")
.replace(/-+$/, ""),
a = (e) => {
var t = I();
let s;
(e = (s = 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 = (s, i) => {
const a = I();
if (o && r.params.history.enabled) {
let e;
e = r.params.url ? new URL(r.params.url) : a.location;
const n = r.slides.eq(i);
let t = l(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 + `/${s}/` + t);
} else e.pathname.includes(s) || (t = s + "/" + t);
r.params.history.keepQuery && (t += e.search);
i = a.history.state;
(i && i.value === t) ||
(r.params.history.replaceState
? a.history.replaceState({ value: t }, null, t)
: a.history.pushState({ value: t }, null, t));
}
},
d = (s, i, a) => {
if (i)
for (let e = 0, t = r.slides.length; e < t; e += 1) {
const n = r.slides.eq(e);
if (
l(n.attr("data-history")) === i &&
!n.hasClass(r.params.slideDuplicateClass)
) {
const i = n.index();
r.slideTo(i, s, a);
}
}
else r.slideTo(0, s, a);
},
c = () => {
(i = a(r.params.url)), d(r.params.speed, i.value, !1);
};
s("init", () => {
if (r.params.history.enabled) {
const e = I();
if (r.params.history) {
if (!e.history || !e.history.pushState)
return void ((r.params.history.enabled = !1),
(r.params.hashNavigation.enabled = !0));
(o = !0),
((i = a(r.params.url)).key || i.value) &&
(d(0, i.value, r.params.runCallbacksOnInit),
r.params.history.replaceState ||
e.addEventListener("popstate", c));
}
}
}),
s("destroy", () => {
if (r.params.history.enabled) {
const e = I();
r.params.history.replaceState ||
e.removeEventListener("popstate", c);
}
}),
s("transitionEnd _freeModeNoMomentumRelease", () => {
o && n(r.params.history.key, r.activeIndex);
}),
s("slideChange", () => {
o && r.params.cssMode && n(r.params.history.key, r.activeIndex);
});
},
function (e) {
let { swiper: a, extendParams: t, emit: s, on: i } = e,
n = !1;
const r = T(),
o = I(),
l =
(t({
hashNavigation: {
enabled: !1,
replaceState: !1,
watchState: !1,
},
}),
() => {
s("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 &&
o.history &&
o.history.replaceState
)
o.history.replaceState(
null,
null,
"#" + a.slides.eq(a.activeIndex).attr("data-hash") || ""
),
s("hashSet");
else {
const e = a.slides.eq(a.activeIndex),
t = e.attr("data-hash") || e.attr("data-history");
(r.location.hash = t || ""), s("hashSet");
}
};
i("init", () => {
if (
a.params.hashNavigation.enabled &&
!(
!a.params.hashNavigation.enabled ||
(a.params.history && a.params.history.enabled)
)
) {
n = !0;
const s = r.location.hash.replace("#", "");
if (s)
for (let e = 0, t = a.slides.length; e < t; e += 1) {
const i = a.slides.eq(e);
if (
(i.attr("data-hash") || i.attr("data-history")) === s &&
!i.hasClass(a.params.slideDuplicateClass)
) {
const s = i.index();
a.slideTo(s, 0, a.params.runCallbacksOnInit, !0);
}
}
a.params.hashNavigation.watchState && D(o).on("hashchange", l);
}
}),
i("destroy", () => {
a.params.hashNavigation.enabled &&
a.params.hashNavigation.watchState &&
D(o).off("hashchange", l);
}),
i("transitionEnd _freeModeNoMomentumRelease", () => {
n && d();
}),
i("slideChange", () => {
n && a.params.cssMode && d();
});
},
function (e) {
let s,
{ swiper: i, extendParams: t, on: a, emit: n } = e;
function r() {
if (!i.size)
return (i.autoplay.running = !1), void (i.autoplay.paused = !1);
const e = i.slides.eq(i.activeIndex);
let t = i.params.autoplay.delay;
e.attr("data-swiper-autoplay") &&
(t = e.attr("data-swiper-autoplay") || i.params.autoplay.delay),
clearTimeout(s),
(s = x(() => {
let e;
i.params.autoplay.reverseDirection
? i.params.loop
? (i.loopFix(),
(e = i.slidePrev(i.params.speed, !0, !0)),
n("autoplay"))
: i.isBeginning
? i.params.autoplay.stopOnLastSlide
? l()
: ((e = i.slideTo(
i.slides.length - 1,
i.params.speed,
!0,
!0
)),
n("autoplay"))
: ((e = i.slidePrev(i.params.speed, !0, !0)),
n("autoplay"))
: i.params.loop
? (i.loopFix(),
(e = i.slideNext(i.params.speed, !0, !0)),
n("autoplay"))
: i.isEnd
? i.params.autoplay.stopOnLastSlide
? l()
: ((e = i.slideTo(0, i.params.speed, !0, !0)),
n("autoplay"))
: ((e = i.slideNext(i.params.speed, !0, !0)),
n("autoplay")),
((i.params.cssMode && i.autoplay.running) || !1 === e) &&
r();
}, t));
}
function o() {
return (
void 0 === s &&
!i.autoplay.running &&
((i.autoplay.running = !0), n("autoplayStart"), r(), !0)
);
}
function l() {
return (
!!i.autoplay.running &&
void 0 !== s &&
(s && (clearTimeout(s), (s = void 0)),
(i.autoplay.running = !1),
n("autoplayStop"),
!0)
);
}
function d(e) {
!i.autoplay.running ||
i.autoplay.paused ||
(s && clearTimeout(s),
(i.autoplay.paused = !0),
0 !== e && i.params.autoplay.waitForTransition
? ["transitionend", "webkitTransitionEnd"].forEach((e) => {
i.$wrapperEl[0].addEventListener(e, h);
})
: ((i.autoplay.paused = !1), r()));
}
function c() {
var e = T();
"hidden" === e.visibilityState && i.autoplay.running && d(),
"visible" === e.visibilityState &&
i.autoplay.paused &&
(r(), (i.autoplay.paused = !1));
}
function h(e) {
i &&
!i.destroyed &&
i.$wrapperEl &&
e.target === i.$wrapperEl[0] &&
(["transitionend", "webkitTransitionEnd"].forEach((e) => {
i.$wrapperEl[0].removeEventListener(e, h);
}),
(i.autoplay.paused = !1),
(i.autoplay.running ? r : l)());
}
function p() {
i.params.autoplay.disableOnInteraction
? l()
: (n("autoplayPause"), d()),
["transitionend", "webkitTransitionEnd"].forEach((e) => {
i.$wrapperEl[0].removeEventListener(e, h);
});
}
function u() {
i.params.autoplay.disableOnInteraction ||
((i.autoplay.paused = !1), n("autoplayResume"), r());
}
(i.autoplay = { running: !1, paused: !1 }),
t({
autoplay: {
enabled: !1,
delay: 3e3,
waitForTransition: !0,
disableOnInteraction: !0,
stopOnLastSlide: !1,
reverseDirection: !1,
pauseOnMouseEnter: !1,
},
}),
a("init", () => {
i.params.autoplay.enabled &&
(o(),
T().addEventListener("visibilitychange", c),
i.params.autoplay.pauseOnMouseEnter &&
(i.$el.on("mouseenter", p), i.$el.on("mouseleave", u)));
}),
a("beforeTransitionStart", (e, t, s) => {
i.autoplay.running &&
(s || !i.params.autoplay.disableOnInteraction
? i.autoplay.pause(t)
: l());
}),
a("sliderFirstMove", () => {
i.autoplay.running &&
(i.params.autoplay.disableOnInteraction ? l : d)();
}),
a("touchEnd", () => {
i.params.cssMode &&
i.autoplay.paused &&
!i.params.autoplay.disableOnInteraction &&
r();
}),
a("destroy", () => {
i.$el.off("mouseenter", p),
i.$el.off("mouseleave", u),
i.autoplay.running && l(),
T().removeEventListener("visibilitychange", c);
}),
Object.assign(i.autoplay, {
pause: d,
run: r,
start: o,
stop: l,
});
},
function (e) {
let { swiper: l, extendParams: t, on: s } = e,
i =
(t({
thumbs: {
swiper: null,
multipleActiveThumbs: !0,
autoScrollOffset: 0,
slideThumbActiveClass: "swiper-slide-thumb-active",
thumbsContainerClass: "swiper-thumbs",
},
}),
!1),
a = !1;
function n() {
var e = l.thumbs.swiper;
if (e && !e.destroyed) {
const s = e.clickedIndex,
i = e.clickedSlide;
if (
!(
(i &&
D(i).hasClass(l.params.thumbs.slideThumbActiveClass)) ||
null == s
)
) {
let t;
if (
((t = e.params.loop
? parseInt(
D(e.clickedSlide).attr("data-swiper-slide-index"),
10
)
: s),
l.params.loop)
) {
let e = l.activeIndex;
l.slides.eq(e).hasClass(l.params.slideDuplicateClass) &&
(l.loopFix(),
(l._clientLeft = l.$wrapperEl[0].clientLeft),
(e = l.activeIndex));
const s = l.slides
.eq(e)
.prevAll(`[data-swiper-slide-index="${t}"]`)
.eq(0)
.index(),
i = l.slides
.eq(e)
.nextAll(`[data-swiper-slide-index="${t}"]`)
.eq(0)
.index();
t = void 0 === s || (void 0 !== i && i - e < e - s) ? i : s;
}
l.slideTo(t);
}
}
}
function r() {
var e = l.params["thumbs"];
if (i) return !1;
i = !0;
const t = l.constructor;
return (
e.swiper instanceof t
? ((l.thumbs.swiper = e.swiper),
Object.assign(l.thumbs.swiper.originalParams, {
watchSlidesProgress: !0,
slideToClickedSlide: !1,
}),
Object.assign(l.thumbs.swiper.params, {
watchSlidesProgress: !0,
slideToClickedSlide: !1,
}))
: d(e.swiper) &&
((e = Object.assign({}, e.swiper)),
Object.assign(e, {
watchSlidesProgress: !0,
slideToClickedSlide: !1,
}),
(l.thumbs.swiper = new t(e)),
(a = !0)),
l.thumbs.swiper.$el.addClass(
l.params.thumbs.thumbsContainerClass
),
l.thumbs.swiper.on("tap", n),
!0
);
}
function o(i) {
const a = l.thumbs.swiper;
if (a && !a.destroyed) {
const o =
"auto" === a.params.slidesPerView
? a.slidesPerViewDynamic()
: a.params.slidesPerView;
let t = 1;
var s = l.params.thumbs.slideThumbActiveClass;
if (
(1 < l.params.slidesPerView &&
!l.params.centeredSlides &&
(t = l.params.slidesPerView),
l.params.thumbs.multipleActiveThumbs || (t = 1),
(t = Math.floor(t)),
a.slides.removeClass(s),
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="${l.realIndex + e}"]`
)
.addClass(s);
else
for (let e = 0; e < t; e += 1)
a.slides.eq(l.realIndex + e).addClass(s);
var n = l.params.thumbs.autoScrollOffset,
r = n && !a.params.loop;
if (l.realIndex !== a.realIndex || r) {
let e,
t,
s = a.activeIndex;
if (a.params.loop) {
a.slides.eq(s).hasClass(a.params.slideDuplicateClass) &&
(a.loopFix(),
(a._clientLeft = a.$wrapperEl[0].clientLeft),
(s = a.activeIndex));
const i = a.slides
.eq(s)
.prevAll(`[data-swiper-slide-index="${l.realIndex}"]`)
.eq(0)
.index(),
o = a.slides
.eq(s)
.nextAll(`[data-swiper-slide-index="${l.realIndex}"]`)
.eq(0)
.index();
(e =
void 0 === i
? o
: void 0 === o
? i
: o - s == s - i
? 1 < a.params.slidesPerGroup
? o
: s
: o - s < s - i
? o
: i),
(t = l.activeIndex > l.previousIndex ? "next" : "prev");
} else
(e = l.realIndex),
(t = e > l.previousIndex ? "next" : "prev");
r && (e += "next" === t ? n : -1 * n),
a.visibleSlidesIndexes &&
a.visibleSlidesIndexes.indexOf(e) < 0 &&
(a.params.centeredSlides
? (e =
e > s
? e - Math.floor(o / 2) + 1
: e + Math.floor(o / 2) - 1)
: e > s && a.params.slidesPerGroup,
a.slideTo(e, i ? 0 : void 0));
}
}
}
(l.thumbs = { swiper: null }),
s("beforeInit", () => {
var e = l.params["thumbs"];
e && e.swiper && (r(), o(!0));
}),
s("slideChange update resize observerUpdate", () => {
o();
}),
s("setTransition", (e, t) => {
const s = l.thumbs.swiper;
s && !s.destroyed && s.setTransition(t);
}),
s("beforeDestroy", () => {
const e = l.thumbs.swiper;
e && !e.destroyed && a && e.destroy();
}),
Object.assign(l.thumbs, { init: r, update: o });
},
function (e) {
let { swiper: p, 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(p, {
freeMode: {
onTouchStart: function () {
var e = p.getTranslate();
p.setTranslate(e),
p.setTransition(0),
(p.touchEventsData.velocities.length = 0),
p.freeMode.onTouchEnd({
currentPos: p.rtl ? p.translate : -p.translate,
});
},
onTouchMove: function () {
const { touchEventsData: e, touches: t } = p;
0 === e.velocities.length &&
e.velocities.push({
position: t[p.isHorizontal() ? "startX" : "startY"],
time: e.touchStartTime,
}),
e.velocities.push({
position: t[p.isHorizontal() ? "currentX" : "currentY"],
time: g(),
});
},
onTouchEnd: function (n) {
let r = n["currentPos"];
const {
params: o,
$wrapperEl: l,
rtlTranslate: d,
snapGrid: c,
touchEventsData: h,
} = p,
e = g() - h.touchStartTime;
if (r < -p.minTranslate()) p.slideTo(p.activeIndex);
else if (r > -p.maxTranslate())
p.slides.length < c.length
? p.slideTo(c.length - 1)
: p.slideTo(p.slides.length - 1);
else {
if (o.freeMode.momentum) {
if (1 < h.velocities.length) {
const n = h.velocities.pop(),
r = h.velocities.pop(),
u = n.position - r.position,
m = n.time - r.time;
(p.velocity = u / m),
(p.velocity /= 2),
Math.abs(p.velocity) < o.freeMode.minimumVelocity &&
(p.velocity = 0),
(150 < m || 300 < g() - n.time) && (p.velocity = 0);
} else p.velocity = 0;
(p.velocity *= o.freeMode.momentumVelocityRatio),
(h.velocities.length = 0);
let e = 1e3 * o.freeMode.momentumRatio;
const r = p.velocity * e;
let s = p.translate + r;
d && (s = -s);
let t,
i = !1;
n =
20 *
Math.abs(p.velocity) *
o.freeMode.momentumBounceRatio;
let a;
if (s < p.maxTranslate())
o.freeMode.momentumBounce
? (s + p.maxTranslate() < -n &&
(s = p.maxTranslate() - n),
(t = p.maxTranslate()),
(i = !0),
(h.allowMomentumBounce = !0))
: (s = p.maxTranslate()),
o.loop && o.centeredSlides && (a = !0);
else if (s > p.minTranslate())
o.freeMode.momentumBounce
? (s - p.minTranslate() > n &&
(s = p.minTranslate() + n),
(t = p.minTranslate()),
(i = !0),
(h.allowMomentumBounce = !0))
: (s = p.minTranslate()),
o.loop && o.centeredSlides && (a = !0);
else if (o.freeMode.sticky) {
let t;
for (let e = 0; e < c.length; e += 1)
if (c[e] > -s) {
t = e;
break;
}
s = -(s =
Math.abs(c[t] - s) < Math.abs(c[t - 1] - s) ||
"next" === p.swipeDirection
? c[t]
: c[t - 1]);
}
if (
(a &&
m("transitionEnd", () => {
p.loopFix();
}),
0 !== p.velocity)
) {
if (
((e = d
? Math.abs((-s - p.translate) / p.velocity)
: Math.abs((s - p.translate) / p.velocity)),
o.freeMode.sticky)
) {
const r = Math.abs((d ? -s : s) - p.translate),
u = p.slidesSizesGrid[p.activeIndex];
e =
r < u
? o.speed
: r < 2 * u
? 1.5 * o.speed
: 2.5 * o.speed;
}
} else if (o.freeMode.sticky)
return void p.slideToClosest();
o.freeMode.momentumBounce && i
? (p.updateProgress(t),
p.setTransition(e),
p.setTranslate(s),
p.transitionStart(!0, p.swipeDirection),
(p.animating = !0),
l.transitionEnd(() => {
p &&
!p.destroyed &&
h.allowMomentumBounce &&
(u("momentumBounce"),
p.setTransition(o.speed),
setTimeout(() => {
p.setTranslate(t),
l.transitionEnd(() => {
p && !p.destroyed && p.transitionEnd();
});
}, 0));
}))
: p.velocity
? (u("_freeModeNoMomentumRelease"),
p.updateProgress(s),
p.setTransition(e),
p.setTranslate(s),
p.transitionStart(!0, p.swipeDirection),
p.animating ||
((p.animating = !0),
l.transitionEnd(() => {
p && !p.destroyed && p.transitionEnd();
})))
: p.updateProgress(s),
p.updateActiveIndex(),
p.updateSlidesClasses();
} else {
if (o.freeMode.sticky) return void p.slideToClosest();
o.freeMode && u("_freeModeNoMomentumRelease");
}
(!o.freeMode.momentum || e >= o.longSwipesMs) &&
(p.updateProgress(),
p.updateActiveIndex(),
p.updateSlidesClasses());
}
},
},
});
},
function (e) {
let h,
p,
u,
{ swiper: m, extendParams: t } = e;
t({ grid: { rows: 1, fill: "column" } }),
(m.grid = {
initSlides: (e) => {
var t = m.params["slidesPerView"],
{ rows: s, fill: i } = m.params.grid;
(p = h / s),
(u = Math.floor(e / s)),
(h =
Math.floor(e / s) === e / s ? e : Math.ceil(e / s) * s),
"auto" !== t && "row" === i && (h = Math.max(h, t * s));
},
updateSlide: (e, t, s, i) => {
var { slidesPerGroup: a, spaceBetween: n } = m.params,
{ rows: r, fill: o } = m.params.grid;
let l, d, c;
if ("row" === o && 1 < a) {
const p = Math.floor(e / (a * r)),
u = e - r * a * p,
m =
0 === p
? a
: Math.min(Math.ceil((s - p * r * a) / r), a);
(c = Math.floor(u / m)),
(l = (d = u - c * m + p * a) + (c * h) / r),
t.css({ "-webkit-order": l, order: l });
} else
"column" === o
? ((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 / p)), (d = e - c * p));
t.css(i("margin-top"), 0 !== c ? n && n + "px" : "");
},
updateWrapperSize: (s, i, e) => {
var {
spaceBetween: t,
centeredSlides: a,
roundLengths: n,
} = m.params,
r = m.params.grid["rows"];
if (
((m.virtualSize = (s + t) * h),
(m.virtualSize = Math.ceil(m.virtualSize / r) - t),
m.$wrapperEl.css({
[e("width")]: m.virtualSize + t + "px",
}),
a)
) {
i.splice(0, i.length);
const s = [];
for (let t = 0; t < i.length; t += 1) {
let e = i[t];
n && (e = Math.floor(e)),
i[t] < m.virtualSize + i[0] && s.push(e);
}
i.push(...s);
}
},
});
},
function (e) {
e = e.swiper;
Object.assign(e, {
appendSlide: function (t) {
const { $wrapperEl: s, 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] && s.append(t[e]);
else s.append(t);
e.loop && this.loopCreate(), e.observer || this.update();
}.bind(e),
prependSlide: function (t) {
const e = this,
{ params: s, $wrapperEl: i, activeIndex: a } = e;
s.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] && i.prepend(t[e]);
n = a + t.length;
} else i.prepend(t);
s.loop && e.loopCreate(),
s.observer || e.update(),
e.slideTo(n, 0, !1);
}.bind(e),
addSlide: function (t, s) {
const i = this,
{ $wrapperEl: a, params: n, activeIndex: e } = i;
let r = e;
n.loop &&
((r -= i.loopedSlides),
i.loopDestroy(),
(i.slides = a.children("." + n.slideClass)));
var o = i.slides.length;
if (t <= 0) i.prependSlide(s);
else if (o <= t) i.appendSlide(s);
else {
let e = r > t ? r + 1 : r;
const l = [];
for (let e = o - 1; e >= t; --e) {
const t = i.slides.eq(e);
t.remove(), l.unshift(t);
}
if ("object" == typeof s && "length" in s) {
for (let e = 0; e < s.length; e += 1)
s[e] && a.append(s[e]);
e = r > t ? r + s.length : r;
} else a.append(s);
for (let e = 0; e < l.length; e += 1) a.append(l[e]);
n.loop && i.loopCreate(),
n.observer || i.update(),
n.loop
? i.slideTo(e + i.loopedSlides, 0, !1)
: i.slideTo(e, 0, !1);
}
}.bind(e),
removeSlide: function (t) {
const s = this,
{ params: e, $wrapperEl: i, activeIndex: a } = s;
let n = a;
e.loop &&
((n -= s.loopedSlides),
s.loopDestroy(),
(s.slides = i.children("." + e.slideClass)));
let r,
o = n;
if ("object" == typeof t && "length" in t) {
for (let e = 0; e < t.length; e += 1)
(r = t[e]),
s.slides[r] && s.slides.eq(r).remove(),
r < o && --o;
o = Math.max(o, 0);
} else
(r = t),
s.slides[r] && s.slides.eq(r).remove(),
r < o && --o,
(o = Math.max(o, 0));
e.loop && s.loopCreate(),
e.observer || s.update(),
e.loop
? s.slideTo(o + s.loopedSlides, 0, !1)
: s.slideTo(o, 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: s } = e;
t({ fadeEffect: { crossFade: !1, transformEl: null } }),
M({
effect: "fade",
swiper: r,
on: s,
setTranslate: () => {
const i = r["slides"],
a = r.params.fadeEffect;
for (let s = 0; s < i.length; s += 1) {
const i = r.slides.eq(s);
let e = -i[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(i[0].progress), 0)
: 1 + Math.min(Math.max(i[0].progress, -1), 0);
O(a, i)
.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),
z({
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: f, extendParams: t, on: s } = e;
t({
cubeEffect: {
slideShadows: !0,
shadow: !0,
shadowOffset: 20,
shadowScale: 0.94,
},
});
const v = (e, t, s) => {
let i = s
? e.find(".swiper-slide-shadow-left")
: e.find(".swiper-slide-shadow-top"),
a = s
? e.find(".swiper-slide-shadow-right")
: e.find(".swiper-slide-shadow-bottom");
0 === i.length &&
((i = D(
``
)),
e.append(i)),
0 === a.length &&
((a = D(
``
)),
e.append(a)),
i.length && (i[0].style.opacity = Math.max(-t, 0)),
a.length && (a[0].style.opacity = Math.max(t, 0));
};
M({
effect: "cube",
swiper: f,
on: s,
setTranslate: () => {
const {
$el: e,
$wrapperEl: t,
slides: o,
width: s,
height: i,
rtlTranslate: l,
size: d,
browser: a,
} = f,
c = f.params.cubeEffect,
h = f.isHorizontal(),
p = f.virtual && f.params.virtual.enabled;
let n,
u = 0;
c.shadow &&
(h
? (0 === (n = t.find(".swiper-cube-shadow")).length &&
((n = D('')),
t.append(n)),
n.css({ height: s + "px" }))
: 0 === (n = e.find(".swiper-cube-shadow")).length &&
((n = D('')),
e.append(n)));
for (let r = 0; r < o.length; r += 1) {
const f = o.eq(r);
let e = r,
t =
90 *
(e = p
? parseInt(f.attr("data-swiper-slide-index"), 10)
: e),
s = Math.floor(t / 360);
l && ((t = -t), (s = Math.floor(-t / 360)));
const D = Math.max(Math.min(f[0].progress, 1), -1);
let i = 0,
a = 0,
n = 0;
e % 4 == 0
? ((i = 4 * -s * d), (n = 0))
: (e - 1) % 4 == 0
? ((i = 0), (n = 4 * -s * d))
: (e - 2) % 4 == 0
? ((i = d + 4 * s * d), (n = d))
: (e - 3) % 4 == 0 && ((i = -d), (n = 3 * d + 4 * d * s)),
l && (i = -i),
h || ((a = i), (i = 0));
var m = `rotateX(${h ? 0 : -t}deg) rotateY(${
h ? t : 0
}deg) translate3d(${i}px, ${a}px, ${n}px)`;
D <= 1 &&
-1 < D &&
((u = 90 * e + 90 * D), l && (u = 90 * -e - 90 * D)),
f.transform(m),
c.slideShadows && v(f, D, h);
}
if (
(t.css({
"-webkit-transform-origin": `50% 50% -${d / 2}px`,
"transform-origin": `50% 50% -${d / 2}px`,
}),
c.shadow)
)
if (h)
n.transform(
`translate3d(0px, ${s / 2 + c.shadowOffset}px, ${
-s / 2
}px) rotateX(90deg) rotateZ(0deg) scale(${c.shadowScale})`
);
else {
const e = Math.abs(u) - 90 * Math.floor(Math.abs(u) / 90),
f =
1.5 -
(Math.sin((2 * e * Math.PI) / 360) / 2 +
Math.cos((2 * e * Math.PI) / 360) / 2),
t = c.shadowScale,
o = c.shadowScale / f,
v = c.shadowOffset;
n.transform(
`scale3d(${t}, 1, ${o}) translate3d(0px, ${
i / 2 + v
}px, ${-i / 2 / o}px) rotateX(-90deg)`
);
}
var r = a.isSafari || a.isWebView ? -d / 2 : 0;
t.transform(
`translate3d(0px,0,${r}px) rotateX(${
f.isHorizontal() ? 0 : u
}deg) rotateY(${f.isHorizontal() ? -u : 0}deg)`
),
t[0].style.setProperty("--swiper-cube-translate-z", r + "px");
},
setTransition: (e) => {
const { $el: t, slides: s } = f;
s
.transition(e)
.find(
".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left"
)
.transition(e),
f.params.cubeEffect.shadow &&
!f.isHorizontal() &&
t.find(".swiper-cube-shadow").transition(e);
},
recreateShadows: () => {
const s = f.isHorizontal();
f.slides.each((e) => {
var t = Math.max(Math.min(e.progress, 1), -1);
v(D(e), t, s);
});
},
getEffectParams: () => f.params.cubeEffect,
perspective: () => !0,
overwriteParams: () => ({
slidesPerView: 1,
slidesPerGroup: 1,
watchSlidesProgress: !0,
resistanceRatio: 0,
spaceBetween: 0,
centeredSlides: !1,
virtualTranslate: !0,
}),
});
},
function (e) {
let { swiper: h, extendParams: t, on: s } = e;
t({
flipEffect: {
slideShadows: !0,
limitRotation: !0,
transformEl: null,
},
});
const p = (e, t, s) => {
let i = h.isHorizontal()
? e.find(".swiper-slide-shadow-left")
: e.find(".swiper-slide-shadow-top"),
a = h.isHorizontal()
? e.find(".swiper-slide-shadow-right")
: e.find(".swiper-slide-shadow-bottom");
0 === i.length &&
(i = $(s, e, h.isHorizontal() ? "left" : "top")),
0 === a.length &&
(a = $(s, e, h.isHorizontal() ? "right" : "bottom")),
i.length && (i[0].style.opacity = Math.max(-t, 0)),
a.length && (a[0].style.opacity = Math.max(t, 0));
};
M({
effect: "flip",
swiper: h,
on: s,
setTranslate: () => {
const { slides: r, rtlTranslate: o } = h,
l = h.params.flipEffect;
for (let n = 0; n < r.length; n += 1) {
const c = r.eq(n);
let e = c[0].progress;
h.params.flipEffect.limitRotation &&
(e = Math.max(Math.min(c[0].progress, 1), -1));
var d = c[0].swiperSlideOffset;
let t = -180 * e,
s = 0,
i = h.params.cssMode ? -d - h.translate : -d,
a = 0;
h.isHorizontal()
? o && (t = -t)
: ((a = i), (i = 0), (s = -t), (t = 0)),
(c[0].style.zIndex = -Math.abs(Math.round(e)) + r.length),
l.slideShadows && p(c, e, l);
d = `translate3d(${i}px, ${a}px, 0px) rotateX(${s}deg) rotateY(${t}deg)`;
O(l, c).transform(d);
}
},
setTransition: (e) => {
var t = h.params.flipEffect["transformEl"];
(t ? h.slides.find(t) : h.slides)
.transition(e)
.find(
".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left"
)
.transition(e),
z({ swiper: h, duration: e, transformEl: t });
},
recreateShadows: () => {
const i = h.params.flipEffect;
h.slides.each((e) => {
var t = D(e);
let s = t[0].progress;
h.params.flipEffect.limitRotation &&
(s = Math.max(Math.min(e.progress, 1), -1)),
p(t, s, i);
});
},
getEffectParams: () => h.params.flipEffect,
perspective: () => !0,
overwriteParams: () => ({
slidesPerView: 1,
slidesPerGroup: 1,
watchSlidesProgress: !0,
spaceBetween: 0,
virtualTranslate: !h.params.cssMode,
}),
});
},
function (e) {
let { swiper: y, extendParams: t, on: s } = e;
t({
coverflowEffect: {
rotate: 50,
stretch: 0,
depth: 100,
scale: 1,
modifier: 1,
slideShadows: !0,
transformEl: null,
},
}),
M({
effect: "coverflow",
swiper: y,
on: s,
setTranslate: () => {
const {
width: e,
height: l,
slides: d,
slidesSizesGrid: c,
} = y,
h = y.params.coverflowEffect,
p = y.isHorizontal(),
u = y.translate,
m = p ? e / 2 - u : l / 2 - u,
f = p ? h.rotate : -h.rotate,
v = h.depth;
for (let o = 0, e = d.length; o < e; o += 1) {
const y = d.eq(o),
l = c[o],
u = (m - y[0].swiperSlideOffset - l / 2) / l,
w =
"function" == typeof h.modifier
? h.modifier(u)
: u * h.modifier;
let e = p ? f * w : 0,
t = p ? 0 : f * w,
s = -v * Math.abs(w),
i = h.stretch,
a =
("string" == typeof i &&
-1 !== i.indexOf("%") &&
(i = (parseFloat(h.stretch) / 100) * l),
p ? 0 : i * w),
n = p ? i * w : 0,
r = 1 - (1 - h.scale) * Math.abs(w);
Math.abs(n) < 0.001 && (n = 0),
Math.abs(a) < 0.001 && (a = 0),
Math.abs(s) < 0.001 && (s = 0),
Math.abs(e) < 0.001 && (e = 0),
Math.abs(t) < 0.001 && (t = 0),
Math.abs(r) < 0.001 && (r = 0);
var g = `translate3d(${n}px,${a}px,${s}px) rotateX(${t}deg) rotateY(${e}deg) scale(${r})`;
if (
(O(h, y).transform(g),
(y[0].style.zIndex = 1 - Math.abs(Math.round(w))),
h.slideShadows)
) {
let e = p
? y.find(".swiper-slide-shadow-left")
: y.find(".swiper-slide-shadow-top"),
t = p
? y.find(".swiper-slide-shadow-right")
: y.find(".swiper-slide-shadow-bottom");
0 === e.length && (e = $(h, y, p ? "left" : "top")),
0 === t.length && (t = $(h, y, p ? "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 = y.params.coverflowEffect["transformEl"];
(t ? y.slides.find(t) : y.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: y, extendParams: t, on: s } = 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,
},
},
});
M({
effect: "creative",
swiper: y,
on: s,
setTranslate: () => {
const { slides: a, $wrapperEl: e, slidesSizesGrid: n } = y,
r = y.params.creativeEffect,
o = r["progressMultiplier"],
l = y.params.centeredSlides;
if (l) {
const a = n[0] / 2 - y.params.slidesOffsetBefore || 0;
e.transform(`translateX(calc(50% - ${a}px))`);
}
for (let i = 0; i < a.length; i += 1) {
const n = a.eq(i),
u = n[0].progress,
m = Math.min(
Math.max(n[0].progress, -r.limitProgress),
r.limitProgress
);
let e = m;
l ||
(e = Math.min(
Math.max(n[0].originalProgress, -r.limitProgress),
r.limitProgress
));
const f = n[0].swiperSlideOffset,
v = [y.params.cssMode ? -f - y.translate : -f, 0, 0],
g = [0, 0, 0];
let t = !1,
s =
(y.isHorizontal() || ((v[1] = v[0]), (v[0] = 0)),
{
translate: [0, 0, 0],
rotate: [0, 0, 0],
scale: 1,
opacity: 1,
});
m < 0
? ((s = r.next), (t = !0))
: 0 < m && ((s = r.prev), (t = !0)),
v.forEach((e, t) => {
v[t] = `calc(${e}px + (${
((e = s.translate[t]),
"string" == typeof e ? e : e + "px")
} * ${Math.abs(m * o)}))`;
}),
g.forEach((e, t) => {
g[t] = s.rotate[t] * Math.abs(m * o);
}),
(n[0].style.zIndex = -Math.abs(Math.round(u)) + a.length);
var d = v.join(", "),
c = `rotateX(${g[0]}deg) rotateY(${g[1]}deg) rotateZ(${g[2]}deg)`,
h =
e < 0
? `scale(${1 + (1 - s.scale) * e * o})`
: `scale(${1 - (1 - s.scale) * e * o})`,
p =
e < 0
? 1 + (1 - s.opacity) * e * o
: 1 - (1 - s.opacity) * e * o,
d = `translate3d(${d}) ${c} ` + h;
if ((t && s.shadow) || !t) {
let e = n.children(".swiper-slide-shadow");
if ((e = 0 === e.length && s.shadow ? $(r, n) : e).length) {
const y = r.shadowPerProgress
? m * (1 / r.limitProgress)
: m;
e[0].style.opacity = Math.min(
Math.max(Math.abs(y), 0),
1
);
}
}
const w = O(r, n);
w.transform(d).css({ opacity: p }),
s.origin && w.css("transform-origin", s.origin);
}
},
setTransition: (e) => {
var t = y.params.creativeEffect["transformEl"];
(t ? y.slides.find(t) : y.slides)
.transition(e)
.find(".swiper-slide-shadow")
.transition(e),
z({ swiper: y, duration: e, transformEl: t, allSlides: !0 });
},
perspective: () => y.params.creativeEffect.perspective,
overwriteParams: () => ({
watchSlidesProgress: !0,
virtualTranslate: !y.params.cssMode,
}),
});
},
function (e) {
let { swiper: y, extendParams: t, on: s } = e;
t({
cardsEffect: {
slideShadows: !0,
transformEl: null,
rotate: !0,
perSlideRotate: 2,
perSlideOffset: 8,
},
}),
M({
effect: "cards",
swiper: y,
on: s,
setTranslate: () => {
const { slides: o, activeIndex: l } = y,
d = y.params.cardsEffect,
{ startTranslate: c, isTouched: h } = y.touchEventsData,
p = y.translate;
for (let r = 0; r < o.length; r += 1) {
const v = o.eq(r),
g = v[0].progress,
w = Math.min(Math.max(g, -4), 4);
let e = v[0].swiperSlideOffset,
t =
(y.params.centeredSlides &&
!y.params.cssMode &&
y.$wrapperEl.transform(
`translateX(${y.minTranslate()}px)`
),
y.params.centeredSlides &&
y.params.cssMode &&
(e -= o[0].swiperSlideOffset),
y.params.cssMode ? -e - y.translate : -e),
s = 0;
var u = -100 * Math.abs(w);
let i = 1,
a = -d.perSlideRotate * w,
n = d.perSlideOffset - 0.75 * Math.abs(w);
var m =
y.virtual && y.params.virtual.enabled
? y.virtual.from + r
: r,
f =
(m === l || m === l - 1) &&
0 < w &&
w < 1 &&
(h || y.params.cssMode) &&
p < c,
m =
(m === l || m === l + 1) &&
w < 0 &&
-1 < w &&
(h || y.params.cssMode) &&
c < p;
if (f || m) {
const o =
(1 - Math.abs((Math.abs(w) - 0.5) / 0.5)) ** 0.5;
(a += -28 * w * o),
(i += -0.5 * o),
(n += 96 * o),
(s = -25 * o * 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"),
!y.isHorizontal())
) {
const o = s;
(s = t), (t = o);
}
(f =
w < 0 ? "" + (1 + (1 - i) * w) : "" + (1 - (1 - i) * w)),
(m = `
translate3d(${t}, ${s}, ${u}px)
rotateZ(${d.rotate ? a : 0}deg)
scale(${f})
`);
if (d.slideShadows) {
let e = v.find(".swiper-slide-shadow");
(e = 0 === e.length ? $(d, v) : e).length &&
(e[0].style.opacity = Math.min(
Math.max((Math.abs(w) - 0.5) / 0.5, 0),
1
));
}
(v[0].style.zIndex = -Math.abs(Math.round(g)) + o.length),
O(d, v).transform(m);
}
},
setTransition: (e) => {
var t = y.params.cardsEffect["transformEl"];
(t ? y.slides.find(t) : y.slides)
.transition(e)
.find(".swiper-slide-shadow")
.transition(e),
z({ swiper: y, duration: e, transformEl: t });
},
perspective: () => !0,
overwriteParams: () => ({
watchSlidesProgress: !0,
virtualTranslate: !y.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 s = t.prototype;
(s.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);
}),
(s.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%)");
}),
(s.bindEvent = function () {
var e = this;
window.addEventListener("load", function () {
e.setVideoSize();
}),
window.addEventListener("resize", function () {
e.setVideoSize();
});
}),
(s.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);
}),
(s.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 s(e) {
var t,
s,
i = null,
a = null,
n = e ? e + 200 : 200,
r = function () {
null == i
? ((s =
document.scrollingElement ||
document.documentElement ||
document.body.parentNode ||
document.body),
(t = document.body.clientHeight),
(s = window.pageYOffset + s.clientHeight),
(i = s / t))
: (t = document.body.clientHeight);
},
o = function () {
clearTimeout(a),
(a = setTimeout(function () {
window.scrollTo(0, t * i - window.innerHeight), (i = null);
}, n));
};
window.addEventListener("resize", function () {
r(), o();
});
}
function i() {
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, s = t.classList.length, i = 0; i < s; i++)
t.targetElement.classList.add(t.classList[i]);
},
removeClass: function (e) {
for (var t = e, s = t.classList.length, i = 0; i < s; i++)
t.targetElement.classList.remove(t.classList[i]);
},
scrollController: function (e) {
var s,
i = (i = e) || {},
t = navigator.userAgent.toLowerCase(),
a =
document.scrollingElement ||
document.documentElement ||
document.body.parentNode ||
document.body,
n = i.speed || 120,
r = 0 <= i.duration ? i.duration : 1,
o = a.scrollTop,
l =
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 &&
p.scrollEvent(e);
},
{ passive: !1 }
)
: document.addEventListener(
"wheel",
function (e) {
p.hasScrollBox(e.target) || p.scrollEvent(e);
},
{ passive: !1 }
);
},
h = function () {
window.addEventListener("scroll", function () {
"hidden" == document.documentElement.style.overflow ||
d ||
(o = a.scrollTop);
});
},
p = {
scrollEvent: function (e) {
e.preventDefault();
var t = document.body.getAttribute("data-scroll-speed"),
e = this.normalizeWheelDelta(e),
t = i.currDelta && t ? t : t || n ? n : 120;
(o += -e * t),
(s = Math.max(
0,
Math.min(o, a.scrollHeight - l.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 = s - a.scrollTop,
e =
Math.ceil(a.scrollTop + e) <= 0
? 0
: s < o
? s
: 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), (o = a.scrollTop);
}, 500));
},
}),
o <= 0 ? (o = 0) : s <= o && (o = s);
},
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(), h());
},
resizeScrollOffset: function (e) {
s(e);
},
checkTouchDevice: i,
checkFold: function () {
var e,
t = screen.width / screen.height,
s =
i() &&
0.7137 < t &&
t < 0.8 &&
"width=768" == document.getElementsByName("viewport")[0].content,
t =
i() &&
0.8 < t &&
t < 0.95 &&
"width=768" == document.getElementsByName("viewport")[0].content;
return s ? (e = "isFold") : t && (e = "isFoldLatest"), e;
},
deviceConsole: function (e, t) {
var s, i;
document.querySelector(".console-layer") ||
((s = document.createElement("div")).classList.add("console-layer"),
s.setAttribute(
"style",
"position: fixed; left: 0; top: 0; padding: 20px; z-index:1000000000; background: #fff;"
),
document.querySelector("body").append(s)),
"multi" == t
? ((s = document.querySelector(".console-layer")),
(i = document.createElement("div")).classList.add(
"console-value"
),
i.setAttribute(
"style",
"border: 1px #ddd solid; float: left; padding: 10px;"
),
s.append(i))
: (i =
(document.querySelector(".console-value") ||
((i = document.createElement("div")).classList.add(
"console-value"
),
i.setAttribute(
"style",
"border: 1px #ddd solid; float: left; padding: 10px;"
),
s.append(i)),
document.querySelector(".console-value"))),
(i.innerHTML = e);
},
percentToPixel: function (e) {
return e.targetValue * (e.progress / 100);
},
responsiveHandler: function (i) {
var a,
e,
n,
r,
t = (window.resolutionStatus = null),
i =
(window.innerWidth,
{
resolution: i.resolution,
statusName: i.statusName || [],
callback: i.callback || [],
activeTiming: i.activeTiming || 100,
}),
s = function () {
r = window.innerWidth;
for (var e = 0; e < i.resolution.length; e++) {
var t = i.resolution[e],
s = i.resolution[e + 1] || 0;
(r <= t && s < r && a != i.statusName[e]) ||
(r <= t && s < r && n != e)
? (document.documentElement.classList.remove(a),
(a = i.statusName[e] || e),
(n = e),
document.documentElement.classList.add(a))
: ((r >= i.resolution[0] && a != i.statusName[0]) ||
(r >= i.resolution[0] && !n)) &&
(document.documentElement.classList.remove(a),
(a = i.statusName[0] || e),
(n = e),
document.documentElement.classList.add(a));
}
},
o = function () {
clearTimeout(t),
console.log(i.activeTiming),
e != n &&
i.callback[n] &&
(t = setTimeout(function () {
i.callback[n](), (t = null), (e = n);
}, i.activeTiming));
};
return (function () {
return (
window.addEventListener("DOMContentLoaded", function () {
s(), (e = n);
}),
window.addEventListener("resize", function () {
s(), o();
}),
this
);
})();
},
};
})();
window.ODDYSSEY = window.ODDYSSEY || {};
const UTILS = (function () {
return {
isIosDevice:
((i = /iPad|iPhone|iPod/.test(navigator.userAgent))
? document.documentElement.classList.add("isIosDevice")
: document.documentElement.classList.add("isNotIosDevice"),
i),
checkGlobal: void (0 === location.pathname.indexOf("/global/galaxy") ||
!0 === window.IS_CAMPAIGN
? document.documentElement.classList.add("global")
: document.documentElement.classList.add("dotcom")),
checkOS:
((i = (i = navigator.appVersion.match(/(mac|win|linux)/i))
? i[1].toLowerCase()
: ""),
void document.documentElement.classList.add(i)),
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:
((i = /applewebkit/i.test(navigator.userAgent)),
(s = /chrome/i.test(navigator.userAgent)),
void (i && !s && 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:
((i = "Netscape" === navigator.appName),
(s = -1 !== navigator.appVersion.indexOf("Mac")),
(e = -1 !== navigator.userAgent.indexOf("Safari")),
(t = -1 !== navigator.userAgent.indexOf("Chrome")),
i && !s && 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 s = Object(e[0]), i = 1; i < e.length; i += 1) {
var a = e[i];
if (null != a)
for (
var n = Object.keys(Object(a)), r = 0, o = n.length;
r < o;
r += 1
) {
var l = n[r],
d = Object.getOwnPropertyDescriptor(a, l);
void 0 !== d &&
d.enumerable &&
(this.isObject(s[l]) && this.isObject(a[l])
? this.def(s[l], a[l])
: !this.isObject(s[l]) && this.isObject(a[l])
? ((s[l] = {}), this.def(s[l], a[l]))
: (s[l] = a[l]));
}
}
return s;
},
convertArray: function (e) {
return Array.prototype.slice.call(e);
},
getOffset: function (e) {
return {
top: e.getBoundingClientRect().top + window.pageYOffset,
bottom: e.getBoundingClientRect().bottom + window.pageYOffset,
};
},
getScroll: function () {
var e = window.pageYOffset;
return { top: e, bottom: e + window.innerHeight };
},
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, s) {
var i = new Date();
i.setTime(i.getTime() + 60 * s * 60 * 24 * 1e3),
(document.cookie =
e + "=" + t + "; exprires=" + i.toUTCString() + "; path=/");
},
getCookie: function (e) {
e = document.cookie.match("(^|;) ?" + e + "=([^;]*)(;|$)");
return e ? e[2] : null;
},
triggerEvent: function (e, t, s, i, a) {
var n,
s = s || null,
i = i || !1,
a = a || !0;
null == s
? (n = document.createEvent("HTMLEvents")).initEvent(t, i, a)
: (n = document.createEvent("CustomEvent")).initCustomEvent(
t,
i,
a,
s
),
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"),
s = 0;
s < t.length;
s++
) {
var i = t[s].getAttribute("aria-hidden"),
a = t[s].getAttribute("tabindex");
null != i &&
null == t[s].getAttribute("data-prev-aria-hidden") &&
t[s].setAttribute("data-prev-aria-hidden", i),
null != a &&
null == t[s].getAttribute("data-prev-tabindex") &&
t[s].setAttribute("data-prev-tabindex", a),
t[s].setAttribute("tabindex", -1),
t[s].setAttribute("aria-hidden", !0);
}
},
offPopupAccessibility: function (e) {
e.removeAttribute("aria-hidden"), e.removeAttribute("tabindex");
for (
var t = e.querySelectorAll("a, button, input, select, iframe"),
s = 0;
s < t.length;
s++
) {
var i = t[s].getAttribute("data-prev-aria-hidden"),
a = t[s].getAttribute("data-prev-tabindex");
null != i
? t[s].setAttribute("aria-hidden", i)
: t[s].removeAttribute("aria-hidden"),
null != a
? t[s].setAttribute("tabindex", a)
: t[s].removeAttribute("tabindex"),
t[s].removeAttribute("data-prev-aria-hidden"),
t[s].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"),
s = 0;
s < t.length;
s++
)
t[s].setAttribute("tabindex", -1),
t[s].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"),
s = 0;
s < t.length;
s++
)
t[s].removeAttribute("tabindex"),
t[s].removeAttribute("aria-hidden");
}
},
extend: function (t, s) {
return (
Object.keys(s).forEach(function (e) {
t[e] = s[e];
}),
t
);
},
getHeight: function (e) {
var t, s, i;
return e
? ((t = (s = window.getComputedStyle(e)).display),
(s = parseInt(s.maxHeight)),
(i = 0),
"none" != t && 0 != s
? e.offsetHeight
: ((e.style.position = "absolute"),
(e.style.visibility = "hidden"),
(e.style.display = "block"),
(i = e.offsetHeight),
(e.style.display = ""),
(e.style.position = ""),
(e.style.visibility = ""),
i))
: 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 = "", s = 0;
s < e.length;
s++
)
if ("sitecode" == e[s].getAttribute("name"))
return (t = e[s].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 = (i = location.href).indexOf("?") + 1,
s = -1 < i.indexOf("#") ? i.indexOf("#") + 1 : i.length;
if (0 == t) return "";
for (
var i = (i = i.substring(t, s)).split("&"), a = "", n = 0;
n < i.length;
n++
) {
var r = i[n].split("=");
if (2 != r.length) break;
r[0] == e && (a = r[1]);
break;
}
return a;
},
customParallax: function (e) {
var t = e.mode || "center",
s = e.delay || 0,
i = e.ease || "Power0.easeNone",
a = e.transZ || 0,
n = e.duration || 0.3,
r = e.distance || 0,
o = e.correction || 0,
l = e.windowCorrection
? window.innerHeight * e.windowCorrection
: 0,
d = e.direction || 1,
c = e.activeElement,
h = e.targetElement || c,
p = e.wrapperElement || c,
e = e.unit || "px",
u = window.pageYOffset,
m = window.pageYOffset + window.innerHeight,
c = c.getBoundingClientRect(),
f = u + p.getBoundingClientRect().top,
p = f + p.getBoundingClientRect().height,
v = window.innerHeight + c.height + 2 * l,
g =
"center" == t
? c.top - (window.innerHeight - c.height) / 2
: c.top - window.innerHeight;
"px" == e && (r = (c.height * r) / 100),
f <= m + l &&
u - l <= p &&
TweenMax.to(h, n, {
y: o + ((g * ("center" == t ? 2 * r : r)) / v) * d + e,
z: a,
ease: i,
delay: s,
});
},
getNavHeight: function () {
var e,
t,
s = 0,
i =
document.querySelector(".pd-g-header-navigation") ||
document.querySelector("#subnav") ||
document.querySelector(".sticky-menu") ||
document.querySelector(".pd-g-floating-nav");
return (s = i
? i.classList.contains("pd-g-header-navigation")
? ((t = (e = i.querySelector(
".pd-header-navigation"
)).querySelector(".pd-header-navigation__menu-wrap")),
e.clientHeight + t.clientHeight)
: i.clientHeight
: s);
},
isBrokenFixed: function () {
var e = window.innerWidth,
t = window.innerHeight,
s = !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"),
(s = !0))
: document.documentElement.classList.remove("is-broken-fixed"),
s
);
},
isFullAnimationBrokenFixed: () => {
var e = window.innerWidth,
t = window.innerHeight,
s =
!!UTILS.isTouchDevice &&
window.matchMedia("(orientation: landscape)").matches;
let i = !1;
return (
(!!UTILS.isTouchDevice &&
!window.matchMedia("(orientation: landscape)").matches &&
t / e < 1.5) ||
s ||
t < 700
? (document.documentElement.classList.add(
"is-animation-broken-fixed"
),
(i = !0))
: document.documentElement.classList.remove(
"is-animation-broken-fixed"
),
i
);
},
isTouchDevice:
((i =
"ontouchstart" in window ||
(window.DocumentTouch && document instanceof window.DocumentTouch))
? document.documentElement.classList.add("isTouchDevice")
: document.documentElement.classList.add("isNotTouchDevice"),
i),
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, s, i;
})();
ODDYSSEY.UTILS = UTILS;
var SCROLLER = (function () {
function t(e) {
(this.initialize = !0),
(this.opts = e),
(this.correction = e.correction || 0),
(this.removeCorrection = e.removeCorrection || 0),
(this.trackHeight = e.trackHeight || 0),
(this.activeClass = e.activeClass),
(this.activeCallbackClass =
e.activeCallbackClass || "callback-active"),
(this.useStrictMode = null == e.useStrictMode || e.useStrictMode),
(this.useFixed = e.useFixed || !1),
(this.useFixedStyle = null == e.useFixedStyle || e.useFixedStyle),
(this.useSticky = e.useSticky || !1),
(this.useStickyStyle = null == e.useStickyStyle || e.useStickyStyle),
(this.useViewportOver = e.useViewportOver || !0),
(this.activeVisibility = e.activeVisibility || "before"),
(this.activeType = e.activeType ? this.opts.activeType : "reverse"),
(this.autoHeight = null == e.autoHeight || e.autoHeight),
(this.offsetY = e.offsetY || 0),
(this.resize = null == e.resize || e.resize),
(this.resizeTiming = null != e.resizeTiming && e.resizeTiming),
(this.windowHeight = window.innerHeight),
(this.oldPregress = 0),
(this.oldWinScrollTop = 0),
(this.elementInformation = {}),
(this.isFixedArea = !1),
(this.checkTouchDevice = !1),
this.elementEventList.setElement.call(this),
this.bindEvent();
}
var e = t.prototype;
return (
(e.bindEvent = function () {
var e = this,
t = null;
this.elementHandler(),
this.resize &&
((this.addEventList = function () {
e.resizeTiming
? (clearTimeout(t),
(t = setTimeout(function () {
(e.windowHeight = window.innerHeight), e.elementHandler();
}, e.resizeTiming)))
: ((e.windowHeight = window.innerHeight), e.elementHandler());
}),
window.addEventListener("resize", this.addEventList)),
this.opts.IEScroll && this.utilList.IEScrollHandler.call(this);
}),
(e.elementHandler = function () {
return (
this.elementEventList.setTrackStyle.call(this),
this.getFixedState(),
1 < this.trackHeight &&
this.elementEventList.setTrackHeigh.call(this),
!this.useSticky &&
this.useFixed &&
this.useFixedStyle &&
this.elementEventList.setFixedStyle.call(this),
this.useSticky &&
!this.useFixed &&
this.useStickyStyle &&
this.elementEventList.setStickyStyle.call(this),
this
);
}),
(e.utilList = {
checkTouchDevice: function () {
return -1 < navigator.userAgent.indexOf("Windows") ||
-1 < navigator.userAgent.indexOf("Macintosh")
? (this.checkTouchDevice = !1)
: "ontouchstart" in window ||
(window.DocumentTouch &&
document instanceof window.DocumentTouch)
? (this.checkTouchDevice = !0)
: void 0;
},
IEScrollHandler: function () {
navigator.userAgent.match(/Trident\/7\./) &&
(this.body.addEventListener("mousewheel", function (e) {
e.preventDefault();
var e = e.wheelDelta,
t = window.pageYOffset;
window.scrollTo(0, t - e);
}),
this.body.addEventListener("keydown", function (e) {
var t = window.pageYOffset;
switch (e.which) {
case 38:
e.preventDefault(), window.scrollTo(0, t - 40);
break;
case 40:
e.preventDefault(), window.scrollTo(0, t + 40);
break;
default:
return;
}
}));
},
getScroll: function () {
var e = window.pageYOffset;
return { top: e, bottom: e + this.windowHeight };
},
getOffset: function (e) {
return {
top: e.getBoundingClientRect().top + window.pageYOffset,
bottom: e.getBoundingClientRect().bottom + window.pageYOffset,
};
},
getUserAgent: function () {
return navigator.userAgent;
},
}),
(e.elementEventList = {
setElement: function () {
(this.body = document.querySelector("body")),
void 0 !== this.opts.trackElement &&
(this.trackElement = this.opts.trackElement.jquery
? this.opts.trackElement[0]
: this.opts.trackElement),
void 0 !== this.opts.fixedElement &&
(this.fixedElement = this.opts.fixedElement.jquery
? this.opts.fixedElement[0]
: this.opts.fixedElement),
void 0 !== this.opts.activeElement &&
(this.activeElement = this.opts.activeElement.jquery
? this.opts.activeElement[0]
: this.opts.activeElement);
},
setTrackHeigh: function () {
var e, t;
this.trackHeight <= 1 ||
((this.trackElement.style.height = ""),
(e = 0 == this.trackElement.clientHeight),
(t = this.windowHeight * this.trackHeight),
e && (this.trackElement.style.height = this.windowHeight + "px"),
(this.trackElement.style.height = t + "px"));
},
setTrackStyle: function () {
this.trackElement &&
this.useFixed &&
"static" == window.getComputedStyle(this.trackElement).position &&
(this.trackElement.style.position = "relative");
},
setFixedStyle: function () {
this.isFixedArea ||
((this.fixedElement.style.height = ""),
(this.fixedElement.style.top = ""),
(this.fixedElement.style.position = "absolute")),
0 == this.fixedElement.clientWidth &&
(this.fixedElement.style.width = "100%"),
this.autoHeight &&
("string" == typeof this.offsetY
? ((this.fixedElement.style.height =
"calc(" +
this.windowHeight +
"px - " +
this.offsetY +
")"),
(this.fixedElement.style.top = this.offsetY))
: ((this.fixedElement.style.height =
this.windowHeight - this.offsetY + "px"),
(this.fixedElement.style.top = this.offsetY + "px")));
},
setStickyStyle: function () {
this.isFixedArea || (this.fixedElement.style.position = "sticky"),
0 == this.fixedElement.clientWidth &&
(this.fixedElement.style.width = "100%");
},
setFixedElement: function () {
(this.diffHeight =
this.windowHeight - this.fixedElement.clientHeight),
(this.trackTopOffset = this.utilList.getOffset.call(
this,
this.trackElement
).top),
(this.trackBottomOffset = this.utilList.getOffset.call(
this,
this.trackElement
).bottom),
this.winScrollTop <= this.trackTopOffset
? ((this.fixedElement.style.position = "absolute"),
"string" == typeof this.offsetY
? (this.fixedElement.style.top = this.offsetY)
: (this.fixedElement.style.top = this.offsetY + "px"),
(this.fixedElement.style.bottom = ""))
: this.winScrollBottom >= this.trackBottomOffset
? ((this.fixedElement.style.position = "absolute"),
(this.fixedElement.style.top =
this.trackElement.clientHeight -
this.fixedElement.clientHeight +
"px"))
: this.isFixedArea ||
((this.fixedElement.style.position = "fixed"),
(this.fixedElement.style.top = "0"));
},
}),
(e.getWheelDirection = function () {
this.winScrollTop >= this.oldWinScrollTop
? (this.wheelDirection = "down")
: (this.wheelDirection = "up"),
(this.oldWinScrollTop = this.winScrollTop);
}),
(e.getProgress = function () {
var e =
this.utilList.getOffset.call(this, this.trackElement).top -
this.windowHeight * this.correction,
t =
this.useFixed || this.useSticky
? Math.abs(this.trackElement.clientHeight - this.windowHeight)
: this.useViewportOver
? this.trackElement.clientHeight + this.windowHeight
: this.trackElement.clientHeight,
s = this.winScrollTop - e,
e = this.winScrollBottom - e,
s = this.useFixed || this.useSticky ? (s / t) * 100 : (e / t) * 100;
return (
this.useStrictMode
? (this.progress =
Math.floor(s) < 0
? 0
: 100 < Math.floor(s)
? 100
: Math.floor(s))
: (this.progress = s),
this.getWheelDirection(),
this.progress
);
}),
(e.getFixedState = function () {
0 < this.progress && this.progress < 100
? (this.isFixedArea = !0)
: (this.isFixedArea = !1);
}),
(e.trackAnimation = function (e) {
this.initialize &&
((this.winScrollTop =
this.utilList.getScroll.call(this).top -
this.windowHeight * this.correction),
(this.winScrollBottom = this.utilList.getScroll.call(this).bottom),
this.useFixed &&
!this.useSticky &&
this.elementEventList.setFixedElement.call(this),
this.getProgress(),
this.getFixedState(),
e &&
(this.oldPregress !== this.progress && e.call(this),
(this.oldPregress = this.progress)));
}),
(e.activeAnimation = function () {
if (this.initialize) {
(this.winScrollTop = this.utilList.getScroll.call(this).top),
(this.winScrollBottom =
this.utilList.getScroll.call(this).bottom),
(this.trackElementHeight = this.trackElement.clientHeight),
(this.correctionValue =
this.trackElementHeight * this.correction),
(this.removeCorrectionValue =
this.trackElementHeight * this.removeCorrection),
(this.elementOffsetTop = this.utilList.getOffset.call(
this,
this.trackElement
).top),
(this.elementOffsetBottom = this.utilList.getOffset.call(
this,
this.trackElement
).bottom),
(this.downScrollTop = this.winScrollTop - this.correctionValue),
(this.downScrollBottom =
this.winScrollBottom - this.correctionValue),
(this.upScrollTop = this.winScrollTop + this.correctionValue),
(this.upScrollBottom =
this.winScrollBottom + this.correctionValue);
function e() {
l(), r();
}
function t() {
d(), o();
}
var s = this,
i = this.activeVisibility,
a = this.activeType,
n = this.windowHeight / 2,
r = function () {
if (s.activeClass)
if ("object" == typeof s.activeClass)
for (var e = s.activeClass.length, t = 0; t < e; t++)
s.activeElement.classList.contains(s.activeClass[t]) ||
s.activeElement.classList.add(s.activeClass[t]);
else
s.activeElement.classList.contains(s.activeClass) ||
s.activeElement.classList.add(s.activeClass);
},
o = function () {
if ("object" == typeof s.activeClass)
for (var e = s.activeClass.length, t = 0; t < e; t++)
s.activeElement.classList.contains(s.activeClass[t]) &&
s.activeElement.classList.remove(s.activeClass[t]);
else
s.activeElement.classList.contains(s.activeClass) &&
s.activeElement.classList.remove(s.activeClass);
s.activeElement.classList.contains(s.activeCallbackClass) &&
s.activeElement.classList.remove(s.activeCallbackClass);
},
l = function () {
s.activeElement.classList.contains(s.activeCallbackClass) ||
(s.opts.activeCallback &&
(s.opts.activeCallback.call(s),
s.activeElement.classList.add(s.activeCallbackClass)));
},
d = function () {
s.activeElement.classList.contains(s.activeCallbackClass) &&
s.opts.endCallback &&
s.opts.endCallback.call(s);
};
switch ((this.getWheelDirection(), i)) {
case "before":
(("down" == this.wheelDirection &&
this.downScrollBottom >= this.elementOffsetTop &&
this.downScrollTop <= this.elementOffsetTop) ||
("up" == this.wheelDirection &&
this.upScrollTop <= this.elementOffsetBottom &&
this.upScrollBottom >= this.elementOffsetBottom) ||
("oneWay" == this.activeType &&
this.downScrollBottom >= this.elementOffsetTop)) &&
(e(), (this.activeStatus = !0));
break;
case "visible":
(("down" == this.wheelDirection &&
this.downScrollBottom >= this.elementOffsetTop + n &&
this.downScrollTop <= this.elementOffsetTop) ||
("up" == this.wheelDirection &&
this.upScrollTop <= this.elementOffsetBottom - n &&
this.upScrollBottom >= this.elementOffsetBottom) ||
("oneWay" == this.activeType &&
this.downScrollBottom >= this.elementOffsetTop + n)) &&
(e(), (this.activeStatus = !0));
}
switch (a) {
case "reverse":
"visible" == i
? ((this.activeStatus &&
"down" == this.wheelDirection &&
this.winScrollTop > this.elementOffsetBottom) ||
(this.activeStatus &&
"up" == this.wheelDirection &&
this.winScrollBottom < this.elementOffsetTop)) &&
(t(), (this.activeStatus = !1))
: ((this.activeStatus &&
this.winScrollTop < this.elementOffsetTop &&
this.winScrollBottom < this.elementOffsetTop) ||
(this.activeStatus &&
this.winScrollTop > this.elementOffsetBottom &&
this.winScrollBottom > this.elementOffsetBottom)) &&
(t(), (this.activeStatus = !1));
break;
case "oneWay":
"visible" == i
? this.activeStatus &&
this.winScrollBottom < this.elementOffsetTop + n &&
(t(), (this.activeStatus = !1))
: this.activeStatus &&
this.winScrollTop < this.elementOffsetTop &&
this.winScrollBottom < this.elementOffsetTop &&
(t(), (this.activeStatus = !1));
}
}
}),
(e.getElementInformation = function () {
return (
this.trackElement &&
(this.elementInformation.trackElement = {
element: this.trackElement,
width: this.trackElement.clientWidth,
height: this.trackElement.clientHeight,
topOffset: this.utilList.getOffset.call(this, this.trackElement)
.top,
bottomOffset: this.utilList.getOffset.call(
this,
this.trackElement
).bottom,
}),
this.activeElement &&
(this.elementInformation.activeElement = {
element: this.activeElement,
width: this.activeElement.clientWidth,
height: this.activeElement.clientHeight,
topOffset: this.utilList.getOffset.call(
this,
this.activeElement
).top,
bottomOffset: this.utilList.getOffset.call(
this,
this.activeElement
).bottom,
}),
this.elementInformation
);
}),
(e.destroy = function (e) {
this.trackElement &&
((this.trackElement.style.position = ""),
(this.trackElement.style.height = "")),
this.fixedElement &&
((this.fixedElement.style.position = ""),
(this.fixedElement.style.top = ""),
(this.fixedElement.style.height = "")),
(this.trackElement = ""),
(this.fixedElement = ""),
(this.activeElement = ""),
(this.correction = ""),
(this.trackHeight = ""),
(this.activeCallbackClass = ""),
(this.useFixed = ""),
(this.activeVisibility = ""),
(this.activeType = ""),
(this.offsetY = ""),
(this.resize = ""),
(this.windowHeight = ""),
(this.elementInformation = ""),
window.removeEventListener("load", this.addEventList),
window.removeEventListener("resize", this.addEventList),
(this.initialize = !1);
}),
function (e) {
return new t(e);
}
);
})();
!(function () {
"use strict";
window.ODDYSSEY = window.ODDYSSEY || {};
const m = ODDYSSEY.UTILS;
ODDYSSEY.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 i = 0; i < a; i++) {
let e = i + 1,
t = e == a ? 0 : this.opts.loadOption[e].resolution,
s = !1;
(s =
(0 == i ||
this.windowWidth <= this.opts.loadOption[i].resolution) &&
this.windowWidth > t) &&
this.opts.loadOption[i].attribute !== this.oldAttr &&
((this.targetAttr = this.opts.loadOption[i].attribute),
(this.oldAttr = this.targetAttr),
(this.attrIndex = i),
(this.dynamicCallCount = 0),
this.setResponsiveImage());
}
}
setResponsiveImage(s) {
var e = this.opts.lazyClass.split("."),
i = e[e.length - 1],
e = this.opts.startLazyClass.split("."),
a = e[e.length - 1];
if (s)
for (let t = 0; t < s.length; t++) {
var n = s[t];
let e = s[t].getAttribute(this.targetAttr);
(e = e || this.findImageHandler(n)),
s[t].classList.contains(this.opts.lazyCompleteClass) ||
(s[t].setAttribute("src", e),
s[t].classList.add(this.opts.lazyCompleteClass),
1 == this.opts.startLazyClass.split(" ").length &&
s[t].classList.remove(a),
1 == this.opts.lazyClass.split(" ").length &&
s[t].classList.remove(i));
}
else
for (let s = 0; s < this.responsiveLength; s++) {
let e = this.responsiveImages[s],
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 h = 0; h < this.lazyLength; h++) {
let t = this.lazyImages[h],
e = this.windowHeight * this.opts.visiblePoint,
s = m.getScroll.call(this).top - e,
i = 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("."),
o = r[r.length - 1],
l = this.opts.startLazyClass.split("."),
d = l[l.length - 1],
c;
var p, u;
if (
("none" === window.getComputedStyle(t).display
? null != (p = t.parentNode).offsetParent &&
((c = p.offsetParent),
(a = m.getOffset.call(this, p).top),
(n = m.getOffset.call(this, p).bottom))
: (c = t.offsetParent),
((i > a && s <= a) ||
(s < n && i > n) ||
(s < a && i > n) ||
(s > a && i < 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(o),
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, s = 0; s < t; s++) {
var i = e.getAttribute(this.opts.loadOption[s].attribute);
if (i) return i;
}
}
findNextImageAttr(t) {
for (let e = this.attrIndex; 0 <= e; e--) {
var s = t.getAttribute(this.opts.loadOption[e].attribute);
if (s) return s;
if (0 == e && null == s) return this.findRemainingImageAttr(t);
}
}
findImageHandler(e) {
return 0 !== this.attrIndex
? this.findNextImageAttr(e)
: this.findRemainingImageAttr(e);
}
};
})(),
(function () {
"use strict";
window.ODDYSSEY = window.ODDYSSEY || {};
const e = ODDYSSEY.UTILS,
t = e.RESPONSIVE;
ODDYSSEY.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 i = 0; i < a; i++) {
let e = i + 1,
t = e == a ? 0 : this.opts.loadOption[e].resolution,
s = !1;
(s =
(0 == i ||
this.windowWidth <= this.opts.loadOption[i].resolution) &&
this.windowWidth > t) &&
this.opts.loadOption[i].attribute !== this.oldAttr &&
((this.targetAttr = this.opts.loadOption[i].attribute),
(this.oldAttr = this.targetAttr),
(this.attrIndex = i),
this.setResponsiveVideo());
}
}
setResponsiveVideo() {
for (let e = 0; e < this.responsiveLength; e++) {
const i = this.responsiveVideos[e],
a = i.querySelector("video");
let s = i.getAttribute(this.targetAttr);
(s = s.split(".mp4")[0]),
i.classList.contains(this.classes.loaded) &&
i.isVideoInit &&
a.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"),
a.load(),
a.addEventListener(
"canplaythrough",
() => {
window.setTimeout(() => {
i.classList.add(this.classes.loaded);
}, 500),
this.checkCompleteVideo(),
this.getEndImage(i);
},
{ once: !0 }
);
});
}
}
setLazyVideo() {
for (let e = 0; e < this.lazyLength; e++) {
var t = window.pageYOffset,
s = t + window.innerHeight;
const n = this.lazyVideos[e];
var i = n.getBoundingClientRect(),
a = t + i.top,
i = t + i.bottom;
s >
a -
window.innerHeight *
(0 != window.pageYOffset ? this.opts.visiblePoint : 0) &&
t <
i +
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],
s = t.querySelector("video");
let i = t.getAttribute(this.targetAttr);
i = i.split(".mp4")[0];
e = this.opts.lazyClass.split(".");
const a = e[e.length - 1];
e = i;
this.prevVideoSrc !== e &&
(s.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");
}),
s.load(),
s.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 s = e.querySelector(this.opts.imageEndLazyClass);
e = this.opts.imageEndLazyClass.split(".");
const i = e[e.length - 1];
s &&
!s.classList.contains(this.opts.imageLazyCompleteClass) &&
((s.src = s.getAttribute(t)),
s.addEventListener(
"load",
() => {
1 == this.opts.imageEndLazyClass.split(" ").length &&
s.classList.remove(i),
s.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.ODDYSSEY = window.ODDYSSEY || {};
const l = ODDYSSEY.UTILS,
e = l.RESPONSIVE;
ODDYSSEY.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 = l.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 = l.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 s = this.opts.imageEndLazyClass.split(".");
const i = s[s.length - 1];
t &&
((t.src = t.getAttribute(e)),
t.addEventListener(
"load",
() => {
1 == this.opts.imageEndLazyClass.split(" ").length &&
t.classList.remove(i),
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 s = this.videoElement.getAttribute(e);
e = s = s.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 = s + ".webm"),
-1 < t.indexOf("mp4") && (e.src = s + ".mp4"),
this.video.load();
}),
this.videoElement.classList.remove(this.classes.playing),
this.videoElement.classList.remove(this.classes.paused),
this.video.addEventListener(
"canplaythrough",
() => {
l.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 s = this.videoElement.getAttribute(e);
(s = s.split(".mp4")[0]),
(this.videoElement.playState = !1),
this.video.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"),
this.video.load();
}),
this.video.addEventListener(
"canplaythrough",
() => {
l.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,
l.getHeight(this.videoElement),
l.winSize().h,
l.getNavHeight()),
s = l.getScroll().top,
i = l.getScroll().bottom,
a = l.getOffset(this.videoElement).top,
t = l.getOffset(this.videoElement).bottom - t;
const o =
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 < i && s <= a) ||
(s < t && t < i) ||
(s < a && t < i) ||
(a < s && i < t)
) {
const o = this.isCanplay || this.isReset;
!o ||
!this.autoPlay ||
this.videoElement.playState ||
this.videoElement.autoPlayState ||
l.isLowNetwork() ||
this.onPlay();
} else
((this.autoPlay && this.videoElement.autoPlayState) ||
this.isReset) &&
(o || n || r) &&
this.onReset();
this.lastScrollY = e;
}
}
onResponsiveChange() {
window.setTimeout(() => {
(this.isCanplay = !0),
this.onReset(),
this.onScrollHandler(),
(this.isCanplay = !1);
}, 20);
}
onResizeHandler() {
l.winSize().w !== this.winWidth &&
((this.winWidth = l.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 = l.requestAFrame.call(
window,
this.resizeAnimateFunc.bind(this)
));
}
resizeEndFunc() {
(this.opts.resizeStart = null),
l.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),
(i = function () {
a(),
n(),
UTILS.isLowNetwork() &&
document.documentElement.classList.add("low_network"),
document.documentElement.classList.add("load"),
window.removeEventListener("load", i);
}),
(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, s = 0;
s < r.allClickables.length;
s++
) {
var i = r.allClickables[s],
a = e + i.getBoundingClientRect().top,
n = e + UTILS.getNavHeight();
n <= a && a <= t
? (i.isVisible = !0)
: (a < n || t < a) && (i.isVisible = !1);
}
}),
(o = function (e) {
e.preventDefault(), e.stopPropagation();
var t = this,
s = parseFloat(this.dataset.sup),
i = document.querySelectorAll("#desc-section ol"),
a =
(i.forEach((e) => {
"block" === window.getComputedStyle(e).display && (i = e);
}),
i.querySelectorAll("li")),
n = i.querySelectorAll("li")[s - 1],
r = n.querySelector("span"),
o = r.innerHTML,
l =
((r.innerHTML = '' + o + ""),
e.currentTarget,
function () {
c.call(t), r.removeEventListener("focusin", l);
}),
d = function () {
(r.innerHTML = o),
r.removeAttribute("tabindex"),
r.removeEventListener("focusout", d);
};
e.currentTarget.closest(".cm-layer") &&
((s = e.currentTarget.closest(".cm-layer")),
$(s).trigger("closeLayer", !1)),
r.addEventListener("focusin", l),
r.addEventListener("focusout", d),
n.querySelector("a").focus(),
setTimeout(() => {
n.querySelector("a").focus();
}, 0),
a.forEach((e) => e.classList.remove("is-active")),
n.classList.add("is-active");
}),
(c = function (e) {
var i;
(!document.documentElement.classList.contains("ios") &&
e &&
null == e.relatedTarget) ||
((i = this).isClicked ||
this.isVisible ||
s(this) ||
setTimeout(function () {
var e = window.pageYOffset,
t = i.getBoundingClientRect(),
s = (window.innerHeight - UTILS.getNavHeight()) / 2,
e = e - UTILS.getNavHeight() + t.top + t.height / 2;
window.scrollTo(0, e - s);
}, 10),
(this.isClicked = !1));
}),
(s = function (e) {
var e = e.parentNode,
t = e.getAttribute("id");
return (
"contents" != t &&
e != document.body &&
(!("subnav" != t && !e.classList.contains("sc-s22ultra-popup")) ||
s(e))
);
}),
(l = function () {
this.isClicked = !0;
});
var r,
e,
t,
i,
a,
n,
o,
c,
s,
l,
d = {
init: function () {
(r.resizeTimeout = null),
(r.supClicker = document.querySelectorAll("a.click_sup")),
(r.contents =
document.getElementById("contents") ||
document.getElementById("content")),
(r.allClickables = r.contents.querySelectorAll(
"a, button, input, select"
));
var e = 0;
for (
window.addEventListener("load", i),
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", c),
t.addEventListener("mousedown", l);
}
for (e = 0; e < r.supClicker.length; e++)
r.supClicker[e].addEventListener("click", o);
var s = document.documentElement.classList;
"global" == UTILS.checkRegion() ||
s.contains("mac") ||
s.contains("safari") ||
ANIUTIL.scrollController({ speed: 120, duration: 0.5 });
},
reInitSup: function () {
for (let e = 0; e < r.supClicker.length; e++)
r.supClicker[e].removeEventListener("click", o);
r.supClicker = document.querySelectorAll("a.click_sup");
for (let e = 0; e < r.supClicker.length; e++)
r.supClicker[e].addEventListener("click", o);
},
};
window.initialize = d;
})(),
(function () {
"use strict";
window.ODDYSSEY = window.ODDYSSEY || {};
const n = ODDYSSEY.UTILS,
e = n.RESPONSIVE;
ODDYSSEY.HeightMatch = class {
constructor(e = container, t) {
var s = {
container: e || ".heightmatch-wrap",
childElement: ">li",
notCompareElement: null,
pushElement: null,
matchElement: ".heightmatch-cont",
column: 3,
pushObjs: null,
useDestroyHeight: !0,
destroyType: !1,
resizeStart: null,
breakpoints: {},
matchBefore: null,
matchAfter: null,
loadAfter: null,
};
(this.opts = n.def(s, t || {})),
(this.classes = s.classes),
(this.obj = $(document.querySelector(e))),
this.init();
}
init() {
null !== this.obj &&
(this.setElements(),
this.setOpts(),
this.setRows(),
this.buildHeightControl(),
this.outCallback("loadAfter"),
this.bindEvents());
}
setElements() {
(this.objChild = this.obj.find(this.opts.childElement)),
(this.opts.pushObjs = null) == this.opts.pushElement
? (this.opts.pushObjs = this.objChild.not(
this.opts.notCompareElement
))
: (this.opts.pushObjs = this.objChild
.not(this.opts.notCompareElement)
.find(this.opts.pushElement));
}
setOpts() {
(this.currentDevice = !1), (this.prevDevice = null);
var e,
t,
s = n.winSize().w,
i = this.opts.breakpoints,
a = [];
for (t in i)
e = s <= t ? (a.push(t), Math.min.apply(null, a)) : null;
(this.breakOpts = n.def({}, this.opts)),
null != e && (this.breakOpts = n.def(this.breakOpts, i[e]));
}
bindEvents() {
window.addEventListener("resize", this.onResizeHandler.bind(this));
}
onResizeHandler() {
n.winSize().w !== this.winWidth &&
((this.winWidth = n.winSize().w),
null == this.opts.resizeStart &&
((this.opts.resizeStart = this.winWidth),
this.outCallback("matchBefore"),
this.resizeAnimateFunc()),
window.clearTimeout(this.resizeEndTime),
(this.resizeEndTime = window.setTimeout(
this.resizeEndFunc.bind(this),
150
)));
}
resizeAnimateFunc() {
this.setLayout(),
this.setOpts(),
this.setRows(),
this.buildHeightControl(),
(this.resizeRequestFrame = n.requestAFrame.call(
window,
this.resizeAnimateFunc.bind(this)
));
}
resizeEndFunc() {
(this.opts.resizeStart = null),
this.setOpts(),
this.setRows(),
this.buildHeightControl(),
this.outCallback("matchAfter"),
n.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.prevDevice = this.currentDevice);
}
setRows() {
this.rowNum = Math.ceil(
this.objChild.length / this.breakOpts.column
);
}
buildHeightControl() {
this.breakOpts.column <= 1
? null !== this.opts.pushObjs &&
this.opts.pushObjs.css("height", "")
: this.buildHeight();
}
buildHeight() {
this.heightArray = [];
for (var e = 0; e < this.rowNum; e++) this.heightArray[e] = [];
for (var e = 0, t = this.objChild.length; e < t; e++) {
var s = parseInt(e / this.breakOpts.column, 10),
i = this.objChild
.eq(e)
.not(this.opts.notCompareElement)
.find(this.opts.matchElement),
i = i.is(":visible") ? Math.ceil(i.outerHeight()) : 0;
this.heightArray[s].push(i);
}
for (e = 0; e < this.rowNum; e++)
this.heightArray[e] = Math.max.apply(null, this.heightArray[e]);
this.setHeightLayout();
}
setHeightLayout() {
for (var e = 0, t = this.objChild.length; e < t; e++) {
var s = parseInt(e / this.breakOpts.column, 10);
(null == this.opts.pushElement
? this.objChild.eq(e).not(this.opts.notCompareElement)
: this.objChild
.eq(e)
.not(this.opts.notCompareElement)
.find(this.opts.pushElement)
).height(this.heightArray[s]);
}
}
destroy() {
this.opts.useDestroyHeight &&
null !== this.opts.pushObjs &&
this.opts.pushObjs.css("height", ""),
(this.opts.destroyType = !0),
this.bindEvents(!1);
}
reInit() {
this.setElements(),
this.setOpts(),
this.setRows(),
this.buildHeightControl(),
this.onResizeHandler(),
this.opts.destroyType &&
((this.opts.destroyType = !1), this.bindEvents(!0));
}
outCallback(e) {
e = this.opts[e];
null != e && e();
}
};
})(),
(function (e) {
e.HiveLayer = (function () {
"use strict";
var e,
t = window,
i = t.jQuery,
s = t.document,
a = t.ODDYSSEY.UTILS,
l = [];
function n(e, t) {
if (!(this instanceof n)) return new n(e, t);
var s = {
effect: "default",
layerWrapElements: e,
layerBody: ".cm-layer__body",
layerElements: ".cm-layer__wrapper",
openerElements: ".js-layer-opener",
closerElements: ".js-layer-closer",
dimmedElements: ".cm-layer__dimmed",
classAttr: { htmlToggle: "is-layer-open", isAsync: "is-async" },
customEvent: ".HiveLayer" + new Date().getTime() + Math.random(),
openerTarget: null,
useOutside: false,
useEscape: true,
useCloseFocus: true,
customToggle: false,
dimmedDuration: 250,
fps: 120,
easing: "swing",
duration: 250,
on: {
layerOpenBefore: null,
layerOpenAfter: null,
layerCloseBefore: null,
layerCloseAfter: null,
},
ariaNotHidden: [],
};
if (!(this.layerWrap = s.layerWrapElements).length) return;
this.layerWrap = i(s.layerWrapElements);
this.opts = a.def(s, t || {});
this.init();
}
return (
(n.prototype = {
init: function () {
this.initOpts();
this.setElements();
this.buildTween();
this.bindEvents(true);
this.layerWrap.data("HiveLayer", this);
},
initOpts: function () {
this.layerWrapInstance = "#" + this.layerWrap.attr("id");
},
initLayout: function () {
const e = document.querySelector("body");
e.appendChild(this.layerWrap[0]);
},
setElements: function () {
this.content = document.querySelector("#contents");
this.wrap = document.querySelector("#wrap");
this.layerBody = this.layerWrap.find(this.opts.layerBody);
this.layerObj = this.layerWrap.find(this.opts.layerElements);
this.closerObj = this.layerWrap.find(this.opts.closerElements);
this.dimmedObj = this.layerWrap.find(this.opts.dimmedElements);
this.baseContentsClickable =
document.documentElement.querySelectorAll(
"a, input, select, textarea, button, video, iframe"
);
this.layerContentsClickable =
this.layerWrap[0].querySelectorAll(
"a, input, select, textarea, button, video, iframe"
);
},
buildTween: function () {
a.def(this, {
tweens: {
instance: [],
kill: i.proxy(function () {
for (
var e = 0, t = this.tweens.instance.length;
e < t;
e++
)
this.tweens.instance[e].kill();
this.tweens.instance = [];
}, this),
},
});
},
bindEvents: function (e) {
if (e) {
window.addEventListener(
"resize",
this.onResizeHandler.bind(this)
);
i(s).on(
"click clickCustom",
this.opts.openerElements +
'[data-target-layer="' +
this.layerWrapInstance +
'"]',
i.proxy(this.onLayerOpen, this)
);
this.layerWrap.on(
"openLayer",
i.proxy(this.onLayerOpen, this)
);
this.closerObj.on(
"mousedown click clickCustom",
i.proxy(this.onLayerClose, this)
);
this.layerWrap.on(
"layerSetOptions",
i.proxy(this.setOptions, this)
);
if (this.opts.useEscape)
this.layerObj.on(
"keydown",
i.proxy(this.onEscapeClose, this)
);
} else {
i(s).off("click clickCustom");
window.removeEventListener(
"resize",
this.onResizeHandler.bind(this)
);
this.layerWrap.off("openLayer");
this.closerObj.off("mousedown click clickCustom");
this.layerWrap.off("layerSetOptions");
if (this.opts.useEscape) this.layerObj.off("keydown");
}
},
bindOutsideEvents: function (e) {
if (!this.opts.useOutside) return;
if (e)
this.layerObj.on(
"clickoutside touchendoutside",
i.proxy(this.onLayerOutsideFunc, this)
);
else this.layerObj.off("clickoutside touchendoutside");
},
bindCloseEvents: function (e) {
if (e)
this.layerWrap.on(
"closeLayer",
i.proxy(this.closeLayer, this)
);
else this.layerWrap.off("closeLayer");
},
setOptions: function (e, t) {
a.def(this.opts, t || {});
if (t.customToggle) this.opts.effect = "default";
},
onLayerOpen: function (e) {
e.preventDefault();
document.documentElement.classList.add("is-layer-popup-opened");
a.hiddenScroll();
setTimeout(() => {
this.dimmedObj.on(
"mousedown click clickCustom",
i.proxy(this.onLayerClose, this)
);
}, 500);
if (e.type === "click" || e.type === "clickCustom")
this.opts.openerTarget = i(e.currentTarget);
if (e.type === "click")
if (
this.opts.openerTarget.hasClass(this.opts.classAttr.isAsync)
)
return;
this.layerViewType = "open";
l.push({ POPUPWRAP: this.layerWrap });
if (document.querySelector("html.load div#header")) {
document.querySelector(
"html.load div#header"
).style.opacity = 0;
document.querySelector(
"html.load div#header"
).style.pointerEvents = "none";
}
this.bindCloseEvents(true);
if (!this.opts.customToggle) {
this.layerWrap.css({ opacity: 0, display: "block" });
this.outCallback("layerOpenBefore");
this.layerWrap.css("opacity", "");
this.openAfterBugFunc();
} else this.outCallback("layerOpenBefore");
},
onLayerOpenAfter: function () {
this.layerWrap[0].addEventListener("touchmove", function (e) {
e.preventDefault();
});
this.exceptOpenLayer();
this.outCallback("layerOpenAfter");
window.setTimeout(() => {
this.closerObj.focus();
});
},
openAfterBugFunc: function () {
t.clearTimeout(this.openAfterTimeout);
this.openAfterTimeout = t.setTimeout(
i.proxy(this.onLayerOpenAfter, this),
30
);
},
onLayerClose: function (e) {
var t = i(e.currentTarget);
if (e.type === "mousedown") {
if (!a.isDevice) {
e.stopPropagation();
this.opts.useCloseFocus = false;
}
} else if (e.type === "click" || e.type === "clickCustom") {
e.preventDefault();
if (e.type === "click")
if (t.hasClass(this.opts.classAttr.isAsync)) return;
this.layerWrap.trigger("closeLayer");
this.dimmedObj.off("mousedown click clickCustom");
}
},
exceptCloseLayer: function () {
this.baseContentsClickable.forEach((e, t) => {
const s = e;
const i = s.getAttribute("data-prev-tabindex");
const a = s.getAttribute("data-prev-aria-hidden");
if (!!i) s.setAttribute("tabindex", i);
else s.removeAttribute("tabindex");
if (!!a) s.setAttribute("aria-hidden", a);
else s.removeAttribute("aria-hidden");
s.removeAttribute("data-prev-tabindex");
s.removeAttribute("data-prev-aria-hidden");
});
},
exceptOpenLayer: function () {
this.baseContentsClickable.forEach((a, e) => {
this.layerContentsClickable.forEach((e) => {
if (a !== e) {
const t = a;
const s = t.getAttribute("tabindex");
const i = t.getAttribute("aria-hidden");
if (!!s) t.setAttribute("data-prev-tabindex", s);
if (!!i) t.setAttribute("data-prev-aria-hidden", i);
t.setAttribute("tabindex", "-1");
t.setAttribute("aria-hidden", "true");
}
});
});
},
closeLayer: function () {
document.documentElement.classList.remove(
"is-layer-popup-opened"
);
this.closeType = arguments[1];
this.layerViewType = "close";
this.outCallback("layerCloseBefore");
this.popupOpenPropsControl();
a.visibleScroll();
this.exceptCloseLayer();
this.wrap.removeAttribute("aria-hidden", "true");
if (document.querySelector("html.load div#header")) {
document.querySelector(
"html.load div#header"
).style.opacity = 1;
document.querySelector(
"html.load div#header"
).style.pointerEvents = "unset";
}
t.clearTimeout(this.closeBeforeTimeout);
this.closeBeforeTimeout = t.setTimeout(
i.proxy(this.closeBeforeBugFunc, this),
30
);
},
onEscapeClose: function (e) {
var t = e.which || e.keyCode;
if (t !== 27) return;
this.layerWrap.trigger("closeLayer");
},
onLayerOutsideFunc: function () {
this.layerWrap.trigger("closeLayer");
},
closeBeforeBugFunc: function () {
if (!this.opts.customToggle)
this.layerWrap.stop(true, true).hide();
this.closeAfterBugFunc();
},
closeAfterBugFunc: function () {
t.clearTimeout(this.closeAfterTimeout);
this.closeAfterTimeout = t.setTimeout(
i.proxy(this.onLayerCloseAfter, this),
30
);
},
popupOpenPropsControl: function () {
var e = l;
for (var t = 0, s = e.length; t < s; t++) {
var i = e[t],
a = i["POPUPWRAP"][0];
if (a === this.layerWrap[0]) e[t] = null;
}
for (var n = 0, r = e.length; n < r; r--) {
var o = e[r - 1];
if (o === null) e.splice(r - 1, 1);
}
},
onLayerCloseAfter: function () {
if (this.opts.openerTarget !== null) {
if (this.closeType !== false) this.opts.openerTarget.focus();
this.opts.openerTarget = null;
}
this.opts.useCloseFocus = true;
this.bindCloseEvents(false);
this.outCallback("layerCloseAfter");
},
onResizeHandler: function () {
if (window.innerWidth >= 1024) this.currDevice = "desktop";
else if (window.innerWidth >= 768 && window.innerWidth < 1024)
this.currDevice = "tablet";
else this.currDevice = "mobile";
if (this.currDevice != this.prevDevice) {
this.onResponsiveChange();
this.prevDevice = this.currDevice;
}
},
onResponsiveChange: function () {
clearTimeout(this.responsiveTimeout);
this.responsiveTimeout = setTimeout(() => {
a.offPopupAccessibility(this.content);
if (
document.documentElement.classList.contains(
"is-layer-popup-opened"
)
)
a.onPopupAccessibility(this.content);
}, 500);
},
outCallback: function (e) {
var t = this.opts.on[e];
this.layerWrap.trigger(e, this);
if (t == null) return;
t(this);
},
styleDestroy: function () {
this.dimmedObj.attr("style", "");
this.layerWrap.attr("style", "");
this.layerBody.attr("style", "");
this.layerObj.attr("style", "");
},
destroy: function () {
document.documentElement.classList.remove(
"is-layer-popup-opened"
);
this.layerWrap.hide();
a.visibleScroll();
this.exceptCloseLayer();
this.wrap.removeAttribute("aria-hidden", "true");
this.tweens.kill();
this.styleDestroy();
this.bindEvents(false);
this.bindCloseEvents(false);
},
}),
n
);
})();
})(window),
(function () {
function e() {
if (
(document.documentElement.classList.remove("is-layer-popup-opened"),
d.visibleScroll(),
l.layer)
) {
l.layer.parentNode.removeChild(l.layer),
(l.layer = null);
for (var e = 0; e < l.baseContentsClickable.length; e++) {
var t = l.baseContentsClickable[e];
var s = t.getAttribute("data-prev-tabindex");
var i = t.getAttribute("data-prev-aria-hidden");
if (!!s) t.setAttribute("tabindex", s);
else t.removeAttribute("tabindex");
if (!!i) t.setAttribute("aria-hidden", i);
else t.removeAttribute("aria-hidden");
t.removeAttribute("data-prev-tabindex");
t.removeAttribute("data-prev-aria-hidden");
}
setTimeout(function () {
l.opener && l.opener.focus();
}, 1100);
}
}
function o(e) {
return (
"https://www.youtube.com/embed/" +
e +
"?showinfo=0&wmode=transparent&autoplay=1&rel=0"
);
}
var l, d, t, s, i, c;
(window.ODDYSSEY = window.ODDYSSEY || {}),
(window.ODDYSSEY.video = window.ODDYSSEY.video || {}),
(ODDYSSEY.video =
((l = {}),
(d = ODDYSSEY.UTILS),
(t = !1),
(s = null),
(i = function () {
(t =
1024 <= window.innerWidth
? "desktop"
: 768 <= window.innerWidth && window.innerWidth < 1024
? "tablet"
: "mobile") != s &&
(clearTimeout(l.responsiveTimeout),
(l.responsiveTimeout = setTimeout(function () {
d.offPopupAccessibility(l.contents),
document.documentElement.classList.contains(
"is-layer-popup-opened"
) && d.onPopupAccessibility(l.contents);
}, 500)),
(s = t));
}),
(c = function () {
e(),
window.ODDYSSEY.compare &&
window.ODDYSSEY.compare.setSlideAccessibility();
}),
{
init: function () {
(l.wrap = document.querySelector("#wrap")),
l.wrap &&
((l.contents = document.querySelector("#contents")),
(l.responsiveTimeout = null),
(l.layer = null),
(l.opener = null),
(l.baseContentsClickable = null),
(l.closeButton = null),
window.addEventListener("resize", i));
},
showVideoLayer: function (e, t, s) {
document.documentElement.classList.add("is-layer-popup-opened"),
d.hiddenScroll();
e = e.split("?v=")[1];
if (
(
(l.baseContentsClickable =
document.documentElement.querySelectorAll(
"a, input, select, textarea, button, video, iframe"
)),
!l.layer)
) {
(l.layer = document.createElement("div")),
l.layer.setAttribute("id", "layer-youtube"),
l.layer.classList.add("m_layer-youtube"),
l.layer.classList.add("show"),
(l.layer.innerHTML = [
'
You Are About To Be Redirected To Investor Relations Information for U.S.
Thank you for visiting Samsung U.S. Investor Relations. You will be redirected via a new browser window to the Samsung Global website for U.S. investor relations information.