Galaxy Watch6
2023年9月15日発売 遂にFeliCa初対応! 毎日のウェルネスをスタート
あなたをよく知るスマートウォッチ。健康の確認機能はさらにパーソナライズされ、睡眠トラッキングもアップグレードされました。Galaxy Watch6の高度な睡眠測定機能で質の高い睡眠を取り、一日の疲れを癒やしましょう。
Galaxy Watch6 毎日のウェルネスをスタート
20%大きく 30%スリムに
ディスプレイが最大20%大きくなったことで、より多くの情報をひと目で確認できるようになりました。黒い縁も最大30%スリムに。Galaxy Watchの画面が過去最大になっただけでなく、カスタマイズ可能なウォッチフェイスでより自由に自分らしさを表現できるようになりました。1 , 2
よりスリムな フォルムを採用
2台のGalaxy Watch6(ギャラクシーウォッチシックス)。1つは、その薄さがわかるよう配置されている。もう1つは、Galaxy Watch6(ギャラクシーウォッチシックス)のスリムなデザインを強調するため、拡大されている。
スタイリッシュさと快適さが一体となった、よりスリムでスマートなフォルム。腕時計の形から余分なものを取り除いたGalaxy Watch6は、より装着しやすいデザインに生まれ変わりました。シームレスなフィット感と時代を超越した円形デザインは、非常に快適で軽量ながらもさまざまな機能が搭載されています。3
ストラップの切り替えがワンタッチで簡単
クイックリリースボタンを押すとウォッチストラップが簡単に外れます。ワークアウトスタイルから外出用のスタイルへの変更も、たったのワンタッチで完了。付け直すとカチっと音がなるストラップガイドがあるため、位置合わせも簡単です。4
簡単にボタンワンタッチで取り外し可能であることを説明するため、Galaxy Watch6(ギャラクシーウォッチシックス)のウォッチバンドが取り付けられるところ。
引っかき傷にも負けない サファイア クリスタルガラス
雨の日も晴れの日も準備万端。耐久性の非常に高いサファイアクリスタルガラスによって、弾力性のある頑丈なウォッチディスプレイが実現しました。IP68と5ATM規格にも準拠した丈夫さで、どんな環境でもあなたに寄り添います。5 , 6
ディスプレイが拡大されたGalaxy Watch6(ギャラクシーウォッチシックス)。防水であることを表すため、隣には水滴が記載されている。サファイアクリスタルグラスの耐久性を強調するため、ディスプレイ上がかすかな光で覆われている。
良い一日は 良い睡眠から
デイタイムにフルの力を発揮するため、自分のナイトタイムを把握しましょう。Galaxy Watch6を着けて眠れば、夜間の睡眠ステージ、睡眠スコア、睡眠の継続性をモニタリングして睡眠の改善に繋げることができます。さらに、スマートウォッチから直接睡眠測定機能にアクセスできるようになったため、ウォッチをタップするだけでヒントを確認することができます。9 , 10 , 11 , 12 , 13 , 14 , 15
各睡眠ステージの時間に関する情報は、活動中が35分、レム睡眠が1時間30分、浅い睡眠が4時間30分、深い睡眠が55分。情報はグラフでも表示されている。
BIAで身体の中も外も把握
大掛かりな機械は要りません。Galaxy Watch6に搭載された生体インピーダンス法(BIA)センサーでは、いつでも好きな時に身体のデータを収集することができます。測定結果は、データを活用したアプローチで身体や健康のモニタリングを改善したり、個人のフィットネス目標を設定したりするのに役立ちます。16 , 17 , 18
セーフティ機能でいざという時も安心
緊急時にも、スマートウォッチがスタンバイ。転んでしまった時は、転倒検知機能が察知して助けが必要かどうか尋ねます。その他の緊急事態の場合でも、Homeボタンを5回押すだけで救急サービスにSOSを送ることができます。救助が到着したら、ロック画面を1回タップするだけであなたの医療情報にすばやくアクセス可能。スマートウォッチがあればもう安心です。19 , 20 , 21 , 22
エクササイズトラッキングでフィットネスをモニタリング
Galaxy Watch6では、身体目標の達成を記録したり、あらゆる進捗を確認したりすることができます。90以上のワークアウトをトラッキングしましょう。カスタムのワークアウトを作成することも可能です。スタートボタンを押し忘れても大丈夫。ランニング、ウォーキング、サイクリングまで、スマートウォッチがワークアウトを自動で認識して記録するので、貴重なデータを逃すことはありません。18 , 23 , 24
さまざまなワークアウトアイコン。中央は、背筋を伸ばして座っている人がサイクリングしているアイコン。アイコンの人物がサイクリングを始めながらゆっくりと前にかがむと、他のワークアウトアイコンが右側から現れる。
心拍ゾーンのパーソナライズで自分にぴったりの強度を設定
心拍ゾーンをパーソナライズしましょう。ランニングを始めれば、Galaxy Watch6があなたの運動能力に応じて心拍を計測し、あなたに合わせて心拍ゾーンを最適化します。心拍ゾーンが設定されると、目標の心拍ゾーンに到達した際に通知が受けられます。動いたり走ったりワークアウトしたりしながら、確実にこのゾーンに入るようにしましょう。25
健康状態を家族や友人と競い合い
目標を立てて競争すればさらに相乗効果が高めることができます。ワークアウト仲間を登録し、切磋琢磨して健康状態の向上を図ることができます。目標の達成度合いや進捗状況を確認したり、個人ベストを達成したらお互いに褒め合いましょう。
スマートウォッチからGalaxy Z Flip5の写真をリモート撮影
Galaxy Z Flip5をスマートウォッチとペアリングすれば、近くや離れた場所から写真撮影ができます。Galaxy Z Flip5のフレックスモードやカメラコントローラーを使えば、写真と動画モードの切り替え、ズームインやズームアウトなどがすべてスマートウォッチから簡単に操作可能です。さあ、スマートウォッチのシャッターボタンを押して写真を撮りましょう。26 , 27
右はFlexモードのGalaxy Z Flip5。左はGalaxy Z Flip5と同じ画面を表示しているGalaxy Watch6で、Camera Controller機能を説明している。
単なる時計を超えた存在
単なる時計より、はるかに多くのことが行えるスマートウォッチ。Galaxy Watch6では、メッセージ、通話、音楽の視聴などがスマートフォンなしに可能です。日々の生産性を高めましょう。28 , 29
国際ローミングで世界が身近に
迷子にならずに世界を旅しましょう。Galaxy Watch6の国際ローミングでは、マップを使用したランドマークへの経路検索がスマートウォッチから行えます。トラブルが起きても心配ありません。電話をかけたりメッセージを送信したりして、助けを求めることができます。30 , 31
ついにGalaxy WatchがFeliCaに対応
スマホを置いてランニングに出かける時も、スマホがリュックの中にある時も、お買い物はリーダーに手首をかざすだけ39 Galaxy Watch6はFeliCaに対応しているので、スマートフォンを取り出すことなく、いつでもどこでも電子マネー39 , 40 が使える。
*Galaxy Watch6で非接触型決済や改札通過時のかざし方について<詳細を見る> *Googleウォレットの起動の仕方について<詳細を見る>
もっと多くのアプリをタップ1つで
Audible(オーディブル)、WhatsApp、Spotifyなど、さまざまな人気なサードパーティアプリを楽しむことができます。スマートフォンをポケットに入れたまま、すべてGalaxy Watch6で操作可能です。
41
自分らしくカスタマイズ
Galaxy Watch6を自分だけのスタイルに。ウォッチストラップは多種多様。さまざまなスタイルや素材から好きなものをお選びください。カラー、コンプリケーション、デザイン、さらにはペットの写真を使って、ウォッチフェイスをカスタマイズすることもできます。創造力にまかせて、自由にカスタマイズを楽しみましょう。4
データ移行、 アップグレードも簡単に
下取りするとお得
お使いのスマートウォッチを下取りに出すと、Galaxy Watch6が割引価格でご購入可能になります。
移行が驚くほど簡単
Smart Switchは、確実かつ安全にGalaxyへデータを転送します。移行を行うと、すべてのアプリ、ウォッチフェイス、設定などが引き継がれます。32 , 33 , 34 , 35
Galaxy Tab S9 | S9+ | S9 Ultra
"
);
return t.attr("data-swiper-slide-index") || t.attr(
"data-swiper-slide-index",
e
),
i.cache && (this.virtual.cache[e] = t),
t
},
appendSlide: function (t) {
if ("object" == typeof t && "length" in t)
for (var e = 0; e < t.length; e += 1)
t[e] && this
.virtual
.slides
.push(t[e]);
else
this
.virtual
.slides
.push(t);
this
.virtual
.update(!0)
},
prependSlide: function (t) {
var s,
a,
e = this.activeIndex,
i = e + 1,
n = 1;
if (Array.isArray(t)) {
for (var r = 0; r < t.length; r += 1)
t[r] && this
.virtual
.slides
.unshift(t[r]);
i = e + t.length,
n = t.length
} else
this
.virtual
.slides
.unshift(t);
this.params.virtual.cache && (
s = this.virtual.cache,
a = {},
Object.keys(s).forEach(function (t) {
var e = s[t],
i = e.attr("data-swiper-slide-index");
i && e.attr("data-swiper-slide-index", parseInt(i, 10) + 1),
a[parseInt(t, 10) + n] = e
}),
this.virtual.cache = a
),
this
.virtual
.update(!0),
this.slideTo(i, 0)
},
removeSlide: function (t) {
if (null != t) {
var e = this.activeIndex;
if (Array.isArray(t))
for (var i = t.length - 1; 0 <= i; --i)
this
.virtual
.slides
.splice(t[i], 1),
this.params.virtual.cache && delete this
.virtual
.cache[t[i]],
t[i] < e && --e,
e = Math.max(e, 0);
else
this
.virtual
.slides
.splice(t, 1),
this.params.virtual.cache && delete this
.virtual
.cache[t],
t < e && --e,
e = Math.max(e, 0);
this
.virtual
.update(!0),
this.slideTo(e, 0)
}
},
removeAllSlides: function () {
this.virtual.slides = [],
this.params.virtual.cache && (this.virtual.cache = {}),
this
.virtual
.update(!0),
this.slideTo(0, 0)
}
},
y = {
name: "virtual",
params: {
virtual: {
enabled: !1,
slides: [],
cache: !0,
renderSlide: null,
renderExternal: null,
addSlidesBefore: 0,
addSlidesAfter: 0
}
},
create: function () {
U.extend(this, {
virtual: {
update: w
.update
.bind(this),
appendSlide: w
.appendSlide
.bind(this),
prependSlide: w
.prependSlide
.bind(this),
removeSlide: w
.removeSlide
.bind(this),
removeAllSlides: w
.removeAllSlides
.bind(this),
renderSlide: w
.renderSlide
.bind(this),
slides: this.params.virtual.slides,
cache: {}
}
})
},
on: {
beforeInit: function () {
var t;
this.params.virtual.enabled && (
this.classNames.push(
this.params.containerModifierClass + "virtual"
),
U.extend(this.params, t = {
watchSlidesProgress: !0
}),
U.extend(this.originalParams, t),
this.params.initialSlide || this.virtual.update()
)
},
setTranslate: function () {
this.params.virtual.enabled && this
.virtual
.update()
}
}
},
K = {
handle: function (t) {
var e = this.rtlTranslate,
i = (
t = t.originalEvent
? t.originalEvent
: t
).keyCode || t.charCode;
if (!this.allowSlideNext && (this.isHorizontal() && 39 === i || this.isVertical() && 40 === i || 34 === i))
return !1;
if (!this.allowSlidePrev && (this.isHorizontal() && 37 === i || this.isVertical() && 38 === i || 33 === i))
return !1;
if (!(t.shiftKey || t.altKey || t.ctrlKey || t.metaKey || c.activeElement && c.activeElement.nodeName && ("input" === c.activeElement.nodeName.toLowerCase() || "textarea" === c.activeElement.nodeName.toLowerCase()))) {
if (this.params.keyboard.onlyInViewport && (33 === i || 34 === i || 37 === i || 39 === i || 38 === i || 40 === i)) {
var s = !1;
if (0 < this.$el.parents("." + this.params.slideClass).length && 0 === this.$el.parents(
"." + this.params.slideActiveClass
).length)
return;
var a = X.innerWidth,
n = X.innerHeight,
r = this
.$el
.offset();
e && (r.left -= this.$el[0].scrollLeft);
for (var o = [
[
r.left, r.top
],
[
r.left + this.width,
r.top
],
[
r.left, r.top + this.height
],
[
r.left + this.width,
r.top + this.height
]
], l = 0; l < o.length; l += 1) {
var h = o[l];
0 <= h[0] && h[0] <= a && 0 <= h[1] && h[1] <= n && (s = !0)
}
if (!s)
return
}
this.isHorizontal()
? (
33 !== i && 34 !== i && 37 !== i && 39 !== i || (
t.preventDefault
? t.preventDefault()
: t.returnValue = !1
),
(34 !== i && 39 !== i || e) && (33 !== i && 37 !== i || !e) || this.slideNext(),
(33 !== i && 37 !== i || e) && (34 !== i && 39 !== i || !e) || this.slidePrev()
)
: (
33 !== i && 34 !== i && 38 !== i && 40 !== i || (
t.preventDefault
? t.preventDefault()
: t.returnValue = !1
),
34 !== i && 40 !== i || this.slideNext(),
33 !== i && 38 !== i || this.slidePrev()
),
this.emit("keyPress", i)
}
},
enable: function () {
this.keyboard.enabled || (
S(c).on("keydown", this.keyboard.handle),
this.keyboard.enabled = !0
)
},
disable: function () {
this.keyboard.enabled && (
S(c).off("keydown", this.keyboard.handle),
this.keyboard.enabled = !1
)
}
},
E = {
name: "keyboard",
params: {
keyboard: {
enabled: !1,
onlyInViewport: !0
}
},
create: function () {
U.extend(this, {
keyboard: {
enabled: !1,
enable: K
.enable
.bind(this),
disable: K
.disable
.bind(this),
handle: K
.handle
.bind(this)
}
})
},
on: {
init: function () {
this.params.keyboard.enabled && this
.keyboard
.enable()
},
destroy: function () {
this.keyboard.enabled && this
.keyboard
.disable()
}
}
};
function C() {
for (var i, t = [], e = arguments.length; e--;)
t[e] = arguments[e];
i = (
i = 1 === t.length && t[0].constructor && t[0].constructor === Object
? t[0]
: (n = t[0], t[1])
) || {},
i = U.extend({}, i),
n && !i.el && (i.el = n),
d.call(this, i),
Object
.keys(R)
.forEach(function (e) {
Object
.keys(R[e])
.forEach(function (t) {
C.prototype[t] || (C.prototype[t] = R[e][t])
})
});
var s,
a,
n,
r = this,
o = (
void 0 === r.modules && (r.modules = {}),
Object.keys(r.modules).forEach(function (t) {
var e,
t = r.modules[t];
t.params && (
e = Object.keys(t.params)[0],
"object" == typeof(t = t.params[e]) && null !== t && e in i && "enabled" in t && (
!0 === i[e] && (i[e] = {
enabled: !0
}),
"object" != typeof i[e] || "enabled" in i[e] || (i[e].enabled = !0),
i[e] || (i[e] = {
enabled: !1
})
)
)
}),
U.extend({}, $)
),
l = (
r.useModulesParams(o),
r.params = U.extend({}, o, j, i),
r.originalParams = U.extend({}, r.params),
r.passedParams = U.extend({}, i),
(r.$ = S)(
r.params.el
)
);
if (n = l[0])
return 1 < l.length
? (s = [], l.each(function (t, e) {
e = U.extend({}, i, {el: e});
s.push(new C(e))
}), s)
: (
n.swiper = r,
l.data("swiper", r),
n && n.shadowRoot && n.shadowRoot.querySelector
? (a = S(n.shadowRoot.querySelector("." + r.params.wrapperClass))).children = function (
t
) {
return l.children(t)
}
: a = l.children("." + r.params.wrapperClass),
U.extend(r, {
$el: l,
el: n,
$wrapperEl: a,
wrapperEl: a[0],
classNames: [],
slides: S(),
slidesGrid: [],
snapGrid: [],
slidesSizesGrid: [],
isHorizontal: function () {
return "horizontal" === r.params.direction
},
isVertical: function () {
return "vertical" === r.params.direction
},
rtl: "rtl" === n
.dir
.toLowerCase() || "rtl" === l.css("direction"),
rtlTranslate: "horizontal" === r.params.direction && (
"rtl" === n.dir.toLowerCase() || "rtl" === l.css("direction")
),
wrongRTL: "-webkit-box" === a.css("display"),
activeIndex: 0,
realIndex: 0,
isBeginning: !0,
isEnd: !1,
translate: 0,
previousTranslate: 0,
progress: 0,
velocity: 0,
animating: !1,
allowSlideNext: r.params.allowSlideNext,
allowSlidePrev: r.params.allowSlidePrev,
touchEvents: (
o = b.pointerEvents
? ["pointerdown", "pointermove", "pointerup"]
: [
"mousedown", "mousemove", "mouseup"
],
r.touchEventsTouch = {
start: (n = ["touchstart", "touchmove", "touchend", "touchcancel"])[0],
move: n[1],
end: n[2],
cancel: n[3]
},
r.touchEventsDesktop = {
start: o[0],
move: o[1],
end: o[2]
},
b.touch || !r.params.simulateTouch
? r.touchEventsTouch
: r.touchEventsDesktop
),
touchEventsData: {
isTouched: void 0,
isMoved: void 0,
allowTouchCallbacks: void 0,
touchStartTime: void 0,
isScrolling: void 0,
currentTranslate: void 0,
startTranslate: void 0,
allowThresholdMove: void 0,
formElements: "input, select, option, textarea, button, video",
lastClickTime: U.now(),
clickTimeout: void 0,
velocities: [],
allowMomentumBounce: void 0,
isTouchEvent: void 0,
startMoving: void 0
},
allowClick: !0,
allowTouchMove: r.params.allowTouchMove,
touches: {
startX: 0,
startY: 0,
currentX: 0,
currentY: 0,
diff: 0
},
imagesToLoad: [],
imagesLoaded: 0
}),
r.useModules(),
r.params.init && r.init(),
r
)
}
var x = {
lastScrollTime: U.now(),
lastEventBeforeSnap: void 0,
recentWheelEvents: [],
event: function () {
return -1 < X
.navigator
.userAgent
.indexOf("firefox")
? "DOMMouseScroll"
: (
(e = "onwheel" in c) || (
(t = c.createElement("div")).setAttribute("onwheel", "return;"),
e = "function" == typeof t.onwheel
),
(
e = !e && c.implementation && c.implementation.hasFeature && !0 !== c.implementation.hasFeature("", "")
? c.implementation.hasFeature("Events.wheel", "3.0")
: e
)
? "wheel"
: "mousewheel"
);
var t,
e
},
normalize: function (t) {
var e = 0,
i = 0,
s = 0,
a = 0;
return "detail" in t && (i = t.detail),
"wheelDelta" in t && (i = -t.wheelDelta / 120),
"wheelDeltaY" in t && (i = -t.wheelDeltaY / 120),
"wheelDeltaX" in t && (e = -t.wheelDeltaX / 120),
"axis" in t && t.axis === t.HORIZONTAL_AXIS && (e = i, i = 0),
s = 10 * e,
a = 10 * i,
"deltaY" in t && (a = t.deltaY),
"deltaX" in t && (s = t.deltaX),
t.shiftKey && !s && (s = a, a = 0),
(s || a) && t.deltaMode && (
1 === t.deltaMode
? (s *= 40, a *= 40)
: (s *= 800, a *= 800)
), {
spinX: e = s && !e
? s < 1
? -1
: 1
: e,
spinY: i = a && !i
? a < 1
? -1
: 1
: i,
pixelX: s,
pixelY: a
}
},
handleMouseEnter: function () {
this.mouseEntered = !0
},
handleMouseLeave: function () {
this.mouseEntered = !1
},
handle: function (t) {
var e = t,
i = this,
s = i.params.mousewheel;
if (
i.params.cssMode && e.preventDefault(),
!i.mouseEntered && !s.releaseOnEdges
)
return !0;
e.originalEvent && (e = e.originalEvent);
var a = 0,
n = i.rtlTranslate
? -1
: 1,
r = x.normalize(e);
if (s.forceToAxis)
if (i.isHorizontal()) {
if (!(Math.abs(r.pixelX) > Math.abs(r.pixelY)))
return !0;
a = r.pixelX * n
}
else {
if (!(Math.abs(r.pixelY) > Math.abs(r.pixelX)))
return !0;
a = r.pixelY
} else
a = Math.abs(r.pixelX) > Math.abs(r.pixelY)
? -r.pixelX * n
: -r.pixelY;
if (0 === a)
return !0;
if (s.invert && (a = -a), i.params.freeMode) {
var o = {
time: U.now(),
delta: Math.abs(a),
direction: Math.sign(a)
},
n = i.mousewheel.lastEventBeforeSnap,
r = n && o.time < n.time + 500 && o.delta <= n.delta && o.direction === n.direction;
if (!r) {
i.mousewheel.lastEventBeforeSnap = void 0,
i.params.loop && i.loopFix();
var l,
h,
n = i.getTranslate() + a * s.sensitivity,
s = i.isBeginning,
d = i.isEnd;
if (
(
n = n >= i.minTranslate()
? i.minTranslate()
: n
) <= i.maxTranslate() && (n = i.maxTranslate()),
i.setTransition(0),
i.setTranslate(n),
i.updateProgress(),
i.updateActiveIndex(),
i.updateSlidesClasses(),
(!s && i.isBeginning || !d && i.isEnd) && i.updateSlidesClasses(),
i.params.freeModeSticky && (
clearTimeout(i.mousewheel.timeout),
i.mousewheel.timeout = void 0,
15 <= (l = i.mousewheel.recentWheelEvents).length && l.shift(),
s = l.length
? l[l.length - 1]
: void 0,
d = l[0],
l.push(o),
s && (o.delta > s.delta || o.direction !== s.direction)
? l.splice(0)
: 15 <= l.length && o.time - d.time < 500 && 1 <= d.delta - o.delta && o.delta <= 6 && (
h = 0 < a
? .8
: .2,
i.mousewheel.lastEventBeforeSnap = o,
l.splice(0),
i.mousewheel.timeout = U.nextTick(function () {
i.slideToClosest(i.params.speed, !0, void 0, h)
}, 0)
),
i.mousewheel.timeout || (i.mousewheel.timeout = U.nextTick(function () {
i.mousewheel.lastEventBeforeSnap = o,
l.splice(0),
i.slideToClosest(i.params.speed, !0, void 0, .5)
}, 500))
),
r || i.emit("scroll", e),
i.params.autoplay && i.params.autoplayDisableOnInteraction && i.autoplay.stop(),
n === i.minTranslate() || n === i.maxTranslate()
)
return !0
}
} else {
s = {
time: U.now(),
delta: Math.abs(a),
direction: Math.sign(a),
raw: t
},
d = i.mousewheel.recentWheelEvents,
r = (
2 <= d.length && d.shift(),
d.length
? d[d.length - 1]
: void 0
);
if (
d.push(s),
(!r || s.direction !== r.direction || s.delta > r.delta) && i.mousewheel.animateSlider(s),
i.mousewheel.releaseScroll(s)
)
return !0
}
return e.preventDefault
? e.preventDefault()
: e.returnValue = !1,
!1
},
animateSlider: function (t) {
return 6 <= t.delta && U.now() - this.mousewheel.lastScrollTime < 60 || (
t.direction < 0
? this.isEnd && !this.params.loop || this.animating || (
this.slideNext(),
this.emit("scroll", t.raw)
)
: this.isBeginning && !this.params.loop || this.animating || (
this.slidePrev(),
this.emit("scroll", t.raw)
),
this.mousewheel.lastScrollTime = (new X.Date).getTime(),
!1
)
},
releaseScroll: function (t) {
var e = this.params.mousewheel;
if (t.direction < 0) {
if (this.isEnd && !this.params.loop && e.releaseOnEdges)
return !0
} else if (this.isBeginning && !this.params.loop && e.releaseOnEdges)
return !0;
return !1
},
enable: function () {
var t = x.event();
if (this.params.cssMode)
return this
.wrapperEl
.removeEventListener(t, this.mousewheel.handle),
!0;
if (!t)
return !1;
if (this.mousewheel.enabled)
return !1;
var e = this.$el;
return (
e = "container" !== this.params.mousewheel.eventsTarged
? S(this.params.mousewheel.eventsTarged)
: e
).on("mouseenter", this.mousewheel.handleMouseEnter),
e.on("mouseleave", this.mousewheel.handleMouseLeave),
e.on(t, this.mousewheel.handle),
this.mousewheel.enabled = !0
},
disable: function () {
var t = x.event();
if (this.params.cssMode)
return this
.wrapperEl
.addEventListener(t, this.mousewheel.handle),
!0;
if (!t)
return !1;
if (!this.mousewheel.enabled)
return !1;
var e = this.$el;
return (
e = "container" !== this.params.mousewheel.eventsTarged
? S(this.params.mousewheel.eventsTarged)
: e
).off(t, this.mousewheel.handle),
!(this.mousewheel.enabled = !1)
}
},
L = {
update: function () {
var t,
e,
i = this.params.navigation;
this.params.loop || (
t = (e = this.navigation).$nextEl,
(e = e.$prevEl) && 0 < e.length && (
this.isBeginning
? e.addClass(i.disabledClass)
: e.removeClass(i.disabledClass),
e[
this.params.watchOverflow && this.isLocked
? "addClass"
: "removeClass"
](i.lockClass)
),
t && 0 < t.length && (
this.isEnd
? t.addClass(i.disabledClass)
: t.removeClass(i.disabledClass),
t[
this.params.watchOverflow && this.isLocked
? "addClass"
: "removeClass"
](i.lockClass)
)
)
},
onPrevClick: function (t) {
t.preventDefault(),
this.isBeginning && !this.params.loop || this.slidePrev()
},
onNextClick: function (t) {
t.preventDefault(),
this.isEnd && !this.params.loop || this.slideNext()
},
init: function () {
var t,
e,
i = this.params.navigation;
(i.nextEl || i.prevEl) && (
i.nextEl && (
t = S(i.nextEl),
this.params.uniqueNavElements && "string" == typeof i.nextEl && 1 < t.length && 1 === this.$el.find(i.nextEl).length && (t = this.$el.find(i.nextEl))
),
i.prevEl && (
e = S(i.prevEl),
this.params.uniqueNavElements && "string" == typeof i.prevEl && 1 < e.length && 1 === this.$el.find(i.prevEl).length && (e = this.$el.find(i.prevEl))
),
t && 0 < t.length && t.on("click", this.navigation.onNextClick),
e && 0 < e.length && e.on("click", this.navigation.onPrevClick),
U.extend(this.navigation, {
$nextEl: t,
nextEl: t && t[0],
$prevEl: e,
prevEl: e && e[0]
})
)
},
destroy: function () {
var t = this.navigation,
e = t.$nextEl,
t = t.$prevEl;
e && e.length && (
e.off("click", this.navigation.onNextClick),
e.removeClass(this.params.navigation.disabledClass)
),
t && t.length && (
t.off("click", this.navigation.onPrevClick),
t.removeClass(this.params.navigation.disabledClass)
)
}
},
A = {
update: function () {
var t = this.rtl,
s = this.params.pagination;
if (s.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length) {
var a,
e = (
this.virtual && this.params.virtual.enabled
? this.virtual
: this
).slides.length,
i = this.pagination.$el,
n = this.params.loop
? Math.ceil((e - 2 * this.loopedSlides) / this.params.slidesPerGroup)
: this.snapGrid.length;
if (
this.params.loop
? (
(a = Math.ceil((this.activeIndex - this.loopedSlides) / this.params.slidesPerGroup)) > e - 1 - 2 * this.loopedSlides && (a -= e - 2 * this.loopedSlides),
n - 1 < a && (a -= n),
a < 0 && "bullets" !== this.params.paginationType && (a = n + a)
)
: a = void 0 !== this.snapIndex
? this.snapIndex
: this.activeIndex || 0,
"bullets" === s.type && this.pagination.bullets && 0 < this.pagination.bullets.length
) {
var r,
o,
l,
h = this.pagination.bullets;
if (s.dynamicBullets && (this.pagination.bulletSize = h.eq(0)[
this.isHorizontal()
? "outerWidth"
: "outerHeight"
](!0), i.css(
this.isHorizontal()
? "width"
: "height",
this.pagination.bulletSize * (s.dynamicMainBullets + 4) + "px"
), 1 < s.dynamicMainBullets && void 0 !== this.previousIndex && (
this.pagination.dynamicBulletIndex += a - this.previousIndex,
this.pagination.dynamicBulletIndex > s.dynamicMainBullets - 1
? this.pagination.dynamicBulletIndex = s.dynamicMainBullets - 1
: this.pagination.dynamicBulletIndex < 0 && (
this.pagination.dynamicBulletIndex = 0
)
), r = a - this.pagination.dynamicBulletIndex, l = (
(o = r + (Math.min(h.length, s.dynamicMainBullets) - 1)) + r
) / 2), h.removeClass(
s.bulletActiveClass + " " + s.bulletActiveClass + "-next " + s.bulletActiveClass +
"-next-next " + s.bulletActiveClass + "-prev " + s.bulletActiveClass + "-prev-p" +
"rev " + s.bulletActiveClass + "-main"
), 1 < i.length)
h.each(function (t, e) {
var e = S(e),
i = e.index();
i === a && e.addClass(s.bulletActiveClass),
s.dynamicBullets && (r <= i && i <= o && e.addClass(
s.bulletActiveClass + "-main"
), i === r && e.prev().addClass(s.bulletActiveClass + "-prev").prev().addClass(
s.bulletActiveClass + "-prev-prev"
), i === o && e.next().addClass(s.bulletActiveClass + "-next").next().addClass(
s.bulletActiveClass + "-next-next"
))
});
else {
var e = h.eq(a),
d = e.index();
if (e.addClass(s.bulletActiveClass), s.dynamicBullets) {
for (var e = h.eq(r), c = h.eq(o), u = r; u <= o; u += 1)
h
.eq(u)
.addClass(s.bulletActiveClass + "-main");
if (this.params.loop)
if (d >= h.length - s.dynamicMainBullets) {
for (var p = s.dynamicMainBullets; 0 <= p; --p)
h
.eq(h.length - p)
.addClass(s.bulletActiveClass + "-main");
h
.eq(h.length - s.dynamicMainBullets - 1)
.addClass(s.bulletActiveClass + "-prev")
} else
e
.prev()
.addClass(s.bulletActiveClass + "-prev")
.prev()
.addClass(s.bulletActiveClass + "-prev-prev"),
c
.next()
.addClass(s.bulletActiveClass + "-next")
.next()
.addClass(s.bulletActiveClass + "-next-next");
else
e
.prev()
.addClass(s.bulletActiveClass + "-prev")
.prev()
.addClass(s.bulletActiveClass + "-prev-prev"),
c
.next()
.addClass(s.bulletActiveClass + "-next")
.next()
.addClass(s.bulletActiveClass + "-next-next")
}
}
s.dynamicBullets && (
d = Math.min(h.length, s.dynamicMainBullets + 4),
e = (this.pagination.bulletSize * d - this.pagination.bulletSize) / 2 - l * this.pagination.bulletSize,
c = t
? "right"
: "left",
h.css(
this.isHorizontal()
? c
: "top",
e + "px"
)
)
}
"fraction" === s.type && (
i.find("." + s.currentClass).text(s.formatFractionCurrent(
a + 1
)),
i.find("." + s.totalClass).text(s.formatFractionTotal(n))
),
"progressbar" === s.type && (
d = s.progressbarOpposite
? this.isHorizontal()
? "vertical"
: "horizontal"
: this.isHorizontal()
? "horizontal"
: "vertical",
l = (a + 1) / n,
c = t = 1,
"horizontal" == d
? t = l
: c = l,
i.find("." + s.progressbarFillClass).transform(
"translate3d(0,0,0) scaleX(" + t + ") scaleY(" + c + ")"
).transition(this.params.speed)
),
"custom" === s.type && s.renderCustom
? (
i.html(s.renderCustom(this, a + 1, n)),
this.emit("paginationRender", this, i[0])
)
: this.emit("paginationUpdate", this, i[0]),
i[
this.params.watchOverflow && this.isLocked
? "addClass"
: "removeClass"
](s.lockClass)
}
},
render: function () {
var t = this.params.pagination;
if (t.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length) {
var e = (
this.virtual && this.params.virtual.enabled
? this.virtual
: this
).slides.length,
i = this.pagination.$el,
s = "";
if ("bullets" === t.type) {
for (
var a = this.params.loop
? Math.ceil((e - 2 * this.loopedSlides) / this.params.slidesPerGroup)
: this.snapGrid.length,
n = 0; n < a; n += 1
)
t.renderBullet
? s += t
.renderBullet
.call(this, n, t.bulletClass)
: s += "<" + t.bulletElement + ' class="' + t.bulletClass + '">' + t.bulletElement +
">";
i.html(s),
this.pagination.bullets = i.find("." + t.bulletClass)
}
"fraction" === t.type && (
s = t.renderFraction
? t.renderFraction.call(this, t.currentClass, t.totalClass)
: '
/
',
i.html(s)
),
"progressbar" === t.type && (
s = t.renderProgressbar
? t.renderProgressbar.call(this, t.progressbarFillClass)
: '
',
i.html(s)
),
"custom" !== t.type && this.emit("paginationRender", this.pagination.$el[0])
}
},
init: function () {
var t,
e = this,
i = e.params.pagination;
i.el && 0 !== (t = S(i.el)).length && (
e.params.uniqueNavElements && "string" == typeof i.el && 1 < t.length && 1 === e.$el.find(i.el).length && (t = e.$el.find(i.el)),
"bullets" === i.type && i.clickable && t.addClass(i.clickableClass),
t.addClass(
i.modifierClass + i.type
),
"bullets" === i.type && i.dynamicBullets && (
t.addClass(
"" + i.modifierClass + i.type + "-dynamic"
),
e.pagination.dynamicBulletIndex = 0,
i.dynamicMainBullets < 1 && (i.dynamicMainBullets = 1)
),
"progressbar" === i.type && i.progressbarOpposite && t.addClass(i.progressbarOppositeClass),
i.clickable && t.on("click", "." + i.bulletClass, function (t) {
t.preventDefault();
t = S(this).index() * e.params.slidesPerGroup;
e.params.loop && (t += e.loopedSlides),
e.slideTo(t)
}),
U.extend(e.pagination, {
$el: t,
el: t[0]
})
)
},
destroy: function () {
var t,
e = this.params.pagination;
e.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length && (
(t = this.pagination.$el).removeClass(e.hiddenClass),
t.removeClass(
e.modifierClass + e.type
),
this.pagination.bullets && this.pagination.bullets.removeClass(e.bulletActiveClass),
e.clickable && t.off("click", "." + e.bulletClass)
)
}
},
k = {
setTranslate: function () {
var t,
e,
i,
s,
a,
n,
r,
o;
this.params.scrollbar.el && this.scrollbar.el && (
n = this.scrollbar,
t = this.rtlTranslate,
o = this.progress,
e = n.dragSize,
i = n.trackSize,
s = n.$dragEl,
a = n.$el,
n = this.params.scrollbar,
o = (i - (r = e)) * o,
t
? 0 < (o = -o)
? (r = e - o, o = 0)
: i < -o + e && (r = i + o)
: o < 0
? (r = e + o, o = 0)
: i < o + e && (r = i - o),
this.isHorizontal()
? (s.transform("translate3d(" + o + "px, 0, 0)"), s[0].style.width = r + "px")
: (
s.transform("translate3d(0px, " + o + "px, 0)"),
s[0].style.height = r + "px"
),
n.hide && (
clearTimeout(this.scrollbar.timeout),
a[0].style.opacity = 1,
this.scrollbar.timeout = setTimeout(function () {
a[0].style.opacity = 0,
a.transition(400)
}, 1e3)
)
)
},
setTransition: function (t) {
this.params.scrollbar.el && this.scrollbar.el && this
.scrollbar
.$dragEl
.transition(t)
},
updateSize: function () {
var t,
e,
i,
s,
a,
n,
r;
this.params.scrollbar.el && this.scrollbar.el && (
e = (t = this.scrollbar).$dragEl,
i = t.$el,
e[0].style.width = "",
e[0].style.height = "",
s = this.isHorizontal()
? i[0].offsetWidth
: i[0].offsetHeight,
n = (a = this.size / this.virtualSize) * (s / this.size),
r = "auto" === this.params.scrollbar.dragSize
? s * a
: parseInt(this.params.scrollbar.dragSize, 10),
this.isHorizontal()
? e[0].style.width = r + "px"
: e[0].style.height = r + "px",
i[0].style.display = 1 <= a
? "none"
: "",
this.params.scrollbar.hide && (i[0].style.opacity = 0),
U.extend(t, {
trackSize: s,
divider: a,
moveDivider: n,
dragSize: r
}),
t.$el[
this.params.watchOverflow && this.isLocked
? "addClass"
: "removeClass"
](this.params.scrollbar.lockClass)
)
},
getPointerPosition: function (t) {
return this.isHorizontal()
? (
"touchstart" === t.type || "touchmove" === t.type
? t.targetTouches[0]
: t
).clientX
: (
"touchstart" === t.type || "touchmove" === t.type
? t.targetTouches[0]
: t
).clientY
},
setDragPosition: function (t) {
var e = this.scrollbar,
i = this.rtlTranslate,
s = e.$el,
a = e.dragSize,
n = e.trackSize,
r = e.dragStartPos,
e = (e.getPointerPosition(t) - s.offset()[
this.isHorizontal()
? "left"
: "top"
] - (
null !== r
? r
: a / 2
)) / (n - a),
t = (
e = Math.max(Math.min(e, 1), 0),
i && (e = 1 - e),
this.minTranslate() + (this.maxTranslate() - this.minTranslate()) * e
);
this.updateProgress(t),
this.setTranslate(t),
this.updateActiveIndex(),
this.updateSlidesClasses()
},
onDragStart: function (t) {
var e = this.params.scrollbar,
i = this.scrollbar,
s = this.$wrapperEl,
a = i.$el,
n = i.$dragEl;
this.scrollbar.isTouched = !0,
this.scrollbar.dragStartPos = t.target === n[0] || t.target === n
? i.getPointerPosition(t) - t
.target
.getBoundingClientRect()[
this.isHorizontal()
? "left"
: "top"
]
: null,
t.preventDefault(),
t.stopPropagation(),
s.transition(100),
n.transition(100),
i.setDragPosition(t),
clearTimeout(this.scrollbar.dragTimeout),
a.transition(0),
e.hide && a.css("opacity", 1),
this.params.cssMode && this
.$wrapperEl
.css("scroll-snap-type", "none"),
this.emit("scrollbarDragStart", t)
},
onDragMove: function (t) {
var e = this.scrollbar,
i = this.$wrapperEl,
s = e.$el,
a = e.$dragEl;
this.scrollbar.isTouched && (
t.preventDefault
? t.preventDefault()
: t.returnValue = !1,
e.setDragPosition(t),
i.transition(0),
s.transition(0),
a.transition(0),
this.emit("scrollbarDragMove", t)
)
},
onDragEnd: function (t) {
var e = this.params.scrollbar,
i = this.scrollbar,
s = this.$wrapperEl,
a = i.$el;
this.scrollbar.isTouched && (
this.scrollbar.isTouched = !1,
this.params.cssMode && (this.$wrapperEl.css("scroll-snap-type", ""), s.transition("")),
e.hide && (
clearTimeout(this.scrollbar.dragTimeout),
this.scrollbar.dragTimeout = U.nextTick(function () {
a.css("opacity", 0),
a.transition(400)
}, 1e3)
),
this.emit("scrollbarDragEnd", t),
e.snapOnRelease && this.slideToClosest()
)
},
enableDraggable: function () {
var t,
e,
i,
s,
a;
this.params.scrollbar.el && (
i = this.scrollbar,
t = this.touchEventsTouch,
e = this.touchEventsDesktop,
a = this.params,
i = i.$el[0],
s = !(!b.passiveListener || !a.passiveListeners) && {
passive: !1,
capture: !1
},
a = !(!b.passiveListener || !a.passiveListeners) && {
passive: !0,
capture: !1
},
b.touch
? (
i.addEventListener(t.start, this.scrollbar.onDragStart, s),
i.addEventListener(t.move, this.scrollbar.onDragMove, s),
i.addEventListener(t.end, this.scrollbar.onDragEnd, a)
)
: (
i.addEventListener(e.start, this.scrollbar.onDragStart, s),
c.addEventListener(e.move, this.scrollbar.onDragMove, s),
c.addEventListener(e.end, this.scrollbar.onDragEnd, a)
)
)
},
disableDraggable: function () {
var t,
e,
i,
s,
a;
this.params.scrollbar.el && (
i = this.scrollbar,
t = this.touchEventsTouch,
e = this.touchEventsDesktop,
a = this.params,
i = i.$el[0],
s = !(!b.passiveListener || !a.passiveListeners) && {
passive: !1,
capture: !1
},
a = !(!b.passiveListener || !a.passiveListeners) && {
passive: !0,
capture: !1
},
b.touch
? (
i.removeEventListener(t.start, this.scrollbar.onDragStart, s),
i.removeEventListener(t.move, this.scrollbar.onDragMove, s),
i.removeEventListener(t.end, this.scrollbar.onDragEnd, a)
)
: (
i.removeEventListener(e.start, this.scrollbar.onDragStart, s),
c.removeEventListener(e.move, this.scrollbar.onDragMove, s),
c.removeEventListener(e.end, this.scrollbar.onDragEnd, a)
)
)
},
init: function () {
var t,
e,
i,
s;
this.params.scrollbar.el && (
t = this.scrollbar,
s = this.$el,
i = S((e = this.params.scrollbar).el),
0 === (s = (
i = this.params.uniqueNavElements && "string" == typeof e.el && 1 < i.length && 1 === s.find(e.el).length
? s.find(e.el)
: i
).find("." + this.params.scrollbar.dragClass)).length && (s = S(
'
'
), i.append(s)),
U.extend(t, {
$el: i,
el: i[0],
$dragEl: s,
dragEl: s[0]
}),
e.draggable && t.enableDraggable()
)
},
destroy: function () {
this
.scrollbar
.disableDraggable()
}
},
Q = {
setTransform: function (t, e) {
var i = this.rtl,
t = S(t),
i = i
? -1
: 1,
s = t.attr("data-swiper-parallax") || "0",
a = t.attr("data-swiper-parallax-x"),
n = t.attr("data-swiper-parallax-y"),
r = t.attr("data-swiper-parallax-scale"),
o = t.attr("data-swiper-parallax-opacity");
a || n
? (a = a || "0", n = n || "0")
: this.isHorizontal()
? (a = s, n = "0")
: (n = s, a = "0"),
a = 0 <= a.indexOf("%")
? parseInt(a, 10) * e * i + "%"
: a * e * i + "px",
n = 0 <= n.indexOf("%")
? parseInt(n, 10) * e + "%"
: n * e + "px",
null != o && (s = o - (o - 1) * (1 - Math.abs(e)), t[0].style.opacity = s),
null == r
? t.transform("translate3d(" + a + ", " + n + ", 0px)")
: (i = r - (r - 1) * (1 - Math.abs(e)), t.transform(
"translate3d(" + a + ", " + n + ", 0px) scale(" + i + ")"
))
},
setTranslate: function () {
var s = this,
t = s.$el,
e = s.slides,
a = s.progress,
n = s.snapGrid;
t
.children(
"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [d" +
"ata-swiper-parallax-opacity], [data-swiper-parallax-scale]"
)
.each(function (t, e) {
s
.parallax
.setTransform(e, a)
}),
e.each(function (t, e) {
var i = e.progress;
1 < s.params.slidesPerGroup && "auto" !== s.params.slidesPerView && (
i += Math.ceil(t / 2) - a * (n.length - 1)
),
i = Math.min(Math.max(i, -1), 1),
S(e)
.find(
"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [d" +
"ata-swiper-parallax-opacity], [data-swiper-parallax-scale]"
)
.each(function (t, e) {
s
.parallax
.setTransform(e, i)
})
})
},
setTransition: function (s) {
void 0 === s && (s = this.params.speed),
this
.$el
.find(
"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [d" +
"ata-swiper-parallax-opacity], [data-swiper-parallax-scale]"
)
.each(function (t, e) {
var e = S(e),
i = parseInt(e.attr("data-swiper-parallax-duration"), 10) || s;
0 === s && (i = 0),
e.transition(i)
})
}
},
J = {
getDistanceBetweenTouches: function (t) {
if (t.targetTouches.length < 2)
return 1;
var e = t
.targetTouches[0]
.pageX,
i = t
.targetTouches[0]
.pageY,
s = t
.targetTouches[1]
.pageX,
t = t
.targetTouches[1]
.pageY;
return Math.sqrt(Math.pow(s - e, 2) + Math.pow(t - i, 2))
},
onGestureStart: function (t) {
var e = this.params.zoom,
i = this.zoom,
s = i.gesture;
if (i.fakeGestureTouched = !1, i.fakeGestureMoved = !1, !b.gestures) {
if ("touchstart" !== t.type || "touchstart" === t.type && t.targetTouches.length < 2)
return;
i.fakeGestureTouched = !0,
s.scaleStart = J.getDistanceBetweenTouches(t)
}
s.$slideEl && s.$slideEl.length || (
s.$slideEl = S(t.target).closest(".swiper-slide"),
0 === s.$slideEl.length && (s.$slideEl = this.slides.eq(this.activeIndex)),
s.$imageEl = s.$slideEl.find("img, svg, canvas"),
s.$imageWrapEl = s.$imageEl.parent(
"." + e.containerClass
),
s.maxRatio = s.$imageWrapEl.attr("data-swiper-zoom") || e.maxRatio,
0 !== s.$imageWrapEl.length
)
? (s.$imageEl.transition(0), this.zoom.isScaling = !0)
: s.$imageEl = void 0
},
onGestureChange: function (t) {
var e = this.params.zoom,
i = this.zoom,
s = i.gesture;
if (!b.gestures) {
if ("touchmove" !== t.type || "touchmove" === t.type && t.targetTouches.length < 2)
return;
i.fakeGestureMoved = !0,
s.scaleMove = J.getDistanceBetweenTouches(t)
}
s.$imageEl && 0 !== s.$imageEl.length && (
i.scale = b.gestures
? t.scale * i.currentScale
: s.scaleMove / s.scaleStart * i.currentScale,
i.scale > s.maxRatio && (
i.scale = s.maxRatio - 1 + Math.pow(i.scale - s.maxRatio + 1, .5)
),
i.scale < e.minRatio && (
i.scale = e.minRatio + 1 - Math.pow(e.minRatio - i.scale + 1, .5)
),
s.$imageEl.transform("translate3d(0,0,0) scale(" + i.scale + ")")
)
},
onGestureEnd: function (t) {
var e = this.params.zoom,
i = this.zoom,
s = i.gesture;
if (!b.gestures) {
if (!i.fakeGestureTouched || !i.fakeGestureMoved)
return;
if ("touchend" !== t.type || "touchend" === t.type && t.changedTouches.length < 2 && !o.android)
return;
i.fakeGestureTouched = !1,
i.fakeGestureMoved = !1
}
s.$imageEl && 0 !== s.$imageEl.length && (
i.scale = Math.max(Math.min(i.scale, s.maxRatio), e.minRatio),
s.$imageEl.transition(this.params.speed).transform(
"translate3d(0,0,0) scale(" + i.scale + ")"
),
i.currentScale = i.scale,
i.isScaling = !1,
1 === i.scale && (s.$slideEl = void 0)
)
},
onTouchStart: function (t) {
var e = this.zoom,
i = e.gesture,
e = e.image;
i.$imageEl && 0 !== i.$imageEl.length && !e.isTouched && (
o.android && t.preventDefault(),
e.isTouched = !0,
e.touchesStart.x = (
"touchstart" === t.type
? t.targetTouches[0]
: t
).pageX,
e.touchesStart.y = (
"touchstart" === t.type
? t.targetTouches[0]
: t
).pageY
)
},
onTouchMove: function (t) {
var e = this.zoom,
i = e.gesture,
s = e.image,
a = e.velocity;
if (i.$imageEl && 0 !== i.$imageEl.length && (this.allowClick = !1, s.isTouched && i.$slideEl)) {
s.isMoved || (
s.width = i.$imageEl[0].offsetWidth,
s.height = i.$imageEl[0].offsetHeight,
s.startX = U.getTranslate(i.$imageWrapEl[0], "x") || 0,
s.startY = U.getTranslate(i.$imageWrapEl[0], "y") || 0,
i.slideWidth = i.$slideEl[0].offsetWidth,
i.slideHeight = i.$slideEl[0].offsetHeight,
i.$imageWrapEl.transition(0),
this.rtl && (s.startX = -s.startX, s.startY = -s.startY)
);
var n = s.width * e.scale,
r = s.height * e.scale;
if (!(n < i.slideWidth && r < i.slideHeight)) {
if (
s.minX = Math.min(i.slideWidth / 2 - n / 2, 0),
s.maxX = -s.minX,
s.minY = Math.min(i.slideHeight / 2 - r / 2, 0),
s.maxY = -s.minY,
s.touchesCurrent.x = (
"touchmove" === t.type
? t.targetTouches[0]
: t
).pageX,
s.touchesCurrent.y = (
"touchmove" === t.type
? t.targetTouches[0]
: t
).pageY,
!s.isMoved && !e.isScaling
) {
if (this.isHorizontal() && (Math.floor(s.minX) === Math.floor(s.startX) && s.touchesCurrent.x < s.touchesStart.x || Math.floor(s.maxX) === Math.floor(s.startX) && s.touchesCurrent.x > s.touchesStart.x))
return void(s.isTouched = !1);
if (!this.isHorizontal() && (Math.floor(s.minY) === Math.floor(s.startY) && s.touchesCurrent.y < s.touchesStart.y || Math.floor(s.maxY) === Math.floor(s.startY) && s.touchesCurrent.y > s.touchesStart.y))
return void(s.isTouched = !1)
}
t.preventDefault(),
t.stopPropagation(),
s.isMoved = !0,
s.currentX = s.touchesCurrent.x - s.touchesStart.x + s.startX,
s.currentY = s.touchesCurrent.y - s.touchesStart.y + s.startY,
s.currentX < s.minX && (
s.currentX = s.minX + 1 - Math.pow(s.minX - s.currentX + 1, .8)
),
s.currentX > s.maxX && (
s.currentX = s.maxX - 1 + Math.pow(s.currentX - s.maxX + 1, .8)
),
s.currentY < s.minY && (
s.currentY = s.minY + 1 - Math.pow(s.minY - s.currentY + 1, .8)
),
s.currentY > s.maxY && (
s.currentY = s.maxY - 1 + Math.pow(s.currentY - s.maxY + 1, .8)
),
a.prevPositionX || (a.prevPositionX = s.touchesCurrent.x),
a.prevPositionY || (a.prevPositionY = s.touchesCurrent.y),
a.prevTime || (a.prevTime = Date.now()),
a.x = (s.touchesCurrent.x - a.prevPositionX) / (Date.now() - a.prevTime) / 2,
a.y = (s.touchesCurrent.y - a.prevPositionY) / (Date.now() - a.prevTime) / 2,
Math.abs(s.touchesCurrent.x - a.prevPositionX) < 2 && (a.x = 0),
Math.abs(s.touchesCurrent.y - a.prevPositionY) < 2 && (a.y = 0),
a.prevPositionX = s.touchesCurrent.x,
a.prevPositionY = s.touchesCurrent.y,
a.prevTime = Date.now(),
i
.$imageWrapEl
.transform("translate3d(" + s.currentX + "px, " + s.currentY + "px,0)")
}
}
},
onTouchEnd: function () {
var t = this.zoom,
e = t.gesture,
i = t.image,
s = t.velocity;
if (e.$imageEl && 0 !== e.$imageEl.length) {
if (!i.isTouched || !i.isMoved)
return i.isTouched = !1,
void(i.isMoved = !1);
i.isTouched = !1,
i.isMoved = !1;
var a = 300,
n = 300,
r = s.x * a,
r = i.currentX + r,
o = s.y * n,
o = i.currentY + o,
s = (
0 !== s.x && (a = Math.abs((r - i.currentX) / s.x)),
0 !== s.y && (n = Math.abs((o - i.currentY) / s.y)),
Math.max(a, n)
),
a = (i.currentX = r, i.currentY = o, i.width * t.scale),
n = i.height * t.scale;
i.minX = Math.min(e.slideWidth / 2 - a / 2, 0),
i.maxX = -i.minX,
i.minY = Math.min(e.slideHeight / 2 - n / 2, 0),
i.maxY = -i.minY,
i.currentX = Math.max(Math.min(i.currentX, i.maxX), i.minX),
i.currentY = Math.max(Math.min(i.currentY, i.maxY), i.minY),
e
.$imageWrapEl
.transition(s)
.transform("translate3d(" + i.currentX + "px, " + i.currentY + "px,0)")
}
},
onTransitionEnd: function () {
var t = this.zoom,
e = t.gesture;
e.$slideEl && this.previousIndex !== this.activeIndex && (
e.$imageEl.transform("translate3d(0,0,0) scale(1)"),
e.$imageWrapEl.transform("translate3d(0,0,0)"),
t.scale = 1,
t.currentScale = 1,
e.$slideEl = void 0,
e.$imageEl = void 0,
e.$imageWrapEl = void 0
)
},
toggle: function (t) {
var e = this.zoom;
e.scale && 1 !== e.scale
? e.out()
: e. in (t)
}, in: function (t) {
var e,
i,
s,
a,
n = this.zoom,
r = this.params.zoom,
o = n.gesture,
l = n.image;
o.$slideEl || (
o.$slideEl = this.clickedSlide
? S(this.clickedSlide)
: this.slides.eq(this.activeIndex),
o.$imageEl = o.$slideEl.find("img, svg, canvas"),
o.$imageWrapEl = o.$imageEl.parent("." + r.containerClass)
),
o.$imageEl && 0 !== o.$imageEl.length && (
o.$slideEl.addClass("" + r.zoomedSlideClass),
l = void 0 === l.touchesStart.x && t
? (e = (
"touchend" === t.type
? t.changedTouches[0]
: t
).pageX, (
"touchend" === t.type
? t.changedTouches[0]
: t
).pageY)
: (e = l.touchesStart.x, l.touchesStart.y),
n.scale = o.$imageWrapEl.attr("data-swiper-zoom") || r.maxRatio,
n.currentScale = o.$imageWrapEl.attr("data-swiper-zoom") || r.maxRatio,
t
? (
r = o.$slideEl[0].offsetWidth,
t = o.$slideEl[0].offsetHeight,
e = o.$slideEl.offset().left + r / 2 - e,
l = o.$slideEl.offset().top + t / 2 - l,
s = o.$imageEl[0].offsetWidth,
a = o.$imageEl[0].offsetHeight,
s = s * n.scale,
a = a * n.scale,
s = -(r = Math.min(r / 2 - s / 2, 0)),
a = -(t = Math.min(t / 2 - a / 2, 0)),
s < (
i = (i = e * n.scale) < r
? r
: i
) && (i = s),
a < (
s = (s = l * n.scale) < t
? t
: s
) && (s = a)
)
: s = i = 0,
o.$imageWrapEl.transition(300).transform(
"translate3d(" + i + "px, " + s + "px,0)"
),
o.$imageEl.transition(300).transform(
"translate3d(0,0,0) scale(" + n.scale + ")"
)
)
},
out: function () {
var t = this.zoom,
e = this.params.zoom,
i = t.gesture;
i.$slideEl || (
i.$slideEl = this.clickedSlide
? S(this.clickedSlide)
: this.slides.eq(this.activeIndex),
i.$imageEl = i.$slideEl.find("img, svg, canvas"),
i.$imageWrapEl = i.$imageEl.parent("." + e.containerClass)
),
i.$imageEl && 0 !== i.$imageEl.length && (
t.scale = 1,
t.currentScale = 1,
i.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),
i.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"),
i.$slideEl.removeClass(
"" + e.zoomedSlideClass
),
i.$slideEl = void 0
)
},
enable: function () {
var t,
e,
i = this.zoom;
i.enabled || (
i.enabled = !0,
t = !("touchstart" !== this.touchEvents.start || !b.passiveListener || !this.params.passiveListeners) && {
passive: !0,
capture: !1
},
e = !b.passiveListener || {
passive: !1,
capture: !0
},
b.gestures
? (
this.$wrapperEl.on("gesturestart", ".swiper-slide", i.onGestureStart, t),
this.$wrapperEl.on("gesturechange", ".swiper-slide", i.onGestureChange, t),
this.$wrapperEl.on("gestureend", ".swiper-slide", i.onGestureEnd, t)
)
: "touchstart" === this.touchEvents.start && (
this.$wrapperEl.on(this.touchEvents.start, ".swiper-slide", i.onGestureStart, t),
this.$wrapperEl.on(this.touchEvents.move, ".swiper-slide", i.onGestureChange, e),
this.$wrapperEl.on(this.touchEvents.end, ".swiper-slide", i.onGestureEnd, t),
this.touchEvents.cancel && this.$wrapperEl.on(this.touchEvents.cancel, ".swiper-slide", i.onGestureEnd, t)
),
this.$wrapperEl.on(
this.touchEvents.move,
"." + this.params.zoom.containerClass,
i.onTouchMove,
e
)
)
},
disable: function () {
var t,
e,
i = this.zoom;
i.enabled && (
this.zoom.enabled = !1,
t = !("touchstart" !== this.touchEvents.start || !b.passiveListener || !this.params.passiveListeners) && {
passive: !0,
capture: !1
},
e = !b.passiveListener || {
passive: !1,
capture: !0
},
b.gestures
? (
this.$wrapperEl.off("gesturestart", ".swiper-slide", i.onGestureStart, t),
this.$wrapperEl.off("gesturechange", ".swiper-slide", i.onGestureChange, t),
this.$wrapperEl.off("gestureend", ".swiper-slide", i.onGestureEnd, t)
)
: "touchstart" === this.touchEvents.start && (
this.$wrapperEl.off(this.touchEvents.start, ".swiper-slide", i.onGestureStart, t),
this.$wrapperEl.off(this.touchEvents.move, ".swiper-slide", i.onGestureChange, e),
this.$wrapperEl.off(this.touchEvents.end, ".swiper-slide", i.onGestureEnd, t),
this.touchEvents.cancel && this.$wrapperEl.off(this.touchEvents.cancel, ".swiper-slide", i.onGestureEnd, t)
),
this.$wrapperEl.off(
this.touchEvents.move,
"." + this.params.zoom.containerClass,
i.onTouchMove,
e
)
)
}
},
Z = {
loadInSlide: function (t, o) {
void 0 === o && (o = !0);
var l,
h = this,
d = h.params.lazy;
void 0 !== t && 0 !== h.slides.length && (t = (
l = h.virtual && h.params.virtual.enabled
? h.$wrapperEl.children(
"." + h.params.slideClass + '[data-swiper-slide-index="' + t + '"]'
)
: h.slides.eq(t)
).find(
"." + d.elementClass + ":not(." + d.loadedClass + "):not(." + d.loadingClass +
")"
), 0 !== (
t = !l.hasClass(d.elementClass) || l.hasClass(d.loadedClass) || l.hasClass(d.loadingClass)
? t
: t.add(l[0])
).length && t.each(function (t, e) {
var i = S(e),
s = (i.addClass(d.loadingClass), i.attr("data-background")),
a = i.attr("data-src"),
n = i.attr("data-srcset"),
r = i.attr("data-sizes");
h.loadImage(i[0], a || s, n, r, !1, function () {
var t,
e;
null == h || !h || h && !h.params || h.destroyed || (
s
? (
i.css("background-image", 'url("' + s + '")'),
i.removeAttr("data-background")
)
: (
n && (i.attr("srcset", n), i.removeAttr("data-srcset")),
r && (i.attr("sizes", r), i.removeAttr("data-sizes")),
a && (i.attr("src", a), i.removeAttr("data-src"))
),
i.addClass(d.loadedClass).removeClass(d.loadingClass),
l.find("." + d.preloaderClass).remove(),
h.params.loop && o && (
t = l.attr("data-swiper-slide-index"),
l.hasClass(h.params.slideDuplicateClass)
? (e = h.$wrapperEl.children(
'[data-swiper-slide-index="' + t + '"]:not(.' + h.params.slideDuplicateClass +
")"
), h.lazy.loadInSlide(e.index(), !1))
: (e = h.$wrapperEl.children(
"." + h.params.slideDuplicateClass + '[data-swiper-slide-index="' + t + '"]'
), h.lazy.loadInSlide(e.index(), !1))
),
h.emit("lazyImageReady", l[0], i[0])
)
}),
h.emit("lazyImageLoad", l[0], i[0])
}))
},
load: function () {
var i = this,
e = i.$wrapperEl,
s = i.params,
a = i.slides,
t = i.activeIndex,
n = i.virtual && s.virtual.enabled,
r = s.lazy,
o = s.slidesPerView;
function l(t) {
if (n) {
if (e.children(
"." + s.slideClass + '[data-swiper-slide-index="' + t + '"]'
).length)
return 1
} else if (a[t])
return 1
}
function h(t) {
return n
? S(t).attr("data-swiper-slide-index")
: S(t).index()
}
if (
"auto" === o && (o = 0),
i.lazy.initialImageLoaded || (i.lazy.initialImageLoaded = !0),
i.params.watchSlidesVisibility
)
e
.children("." + s.slideVisibleClass)
.each(function (t, e) {
e = n
? S(e).attr("data-swiper-slide-index")
: S(e).index();
i
.lazy
.loadInSlide(e)
});
else if (1 < o)
for (var d = t; d < t + o; d += 1)
l(d) && i
.lazy
.loadInSlide(d);
else
i
.lazy
.loadInSlide(t);
if (r.loadPrevNext)
if (1 < o || r.loadPrevNextAmount && 1 < r.loadPrevNextAmount) {
for (
var r = r.loadPrevNextAmount,
c = o,
u = Math.min(t + c + Math.max(r, c), a.length),
c = Math.max(t - Math.max(c, r), 0),
p = t + o;
p < u;
p += 1
)
l(p) && i
.lazy
.loadInSlide(p);
for (var m = c; m < t; m += 1)
l(m) && i
.lazy
.loadInSlide(m)
}
else {
r = e.children("." + s.slideNextClass),
c = (
0 < r.length && i.lazy.loadInSlide(h(r)),
e.children("." + s.slidePrevClass)
);
0 < c.length && i
.lazy
.loadInSlide(h(c))
}
}
},
z = {
LinearSpline: function (t, e) {
var i,
s,
a,
n,
r;
return this.x = t,
this.y = e,
this.lastIndex = t.length - 1,
this.interpolate = function (t) {
return t
? (
r = function (t, e) {
for (s = -1, i = t.length; 1 < i - s;)
t[a = i + s >> 1] <= e
? s = a
: i = a;
return i
}(this.x, t),
n = r - 1,
(t - this.x[n]) * (this.y[r] - this.y[n]) / (
this.x[r] - this.x[n]
) + this.y[n]
)
: 0
},
this
},
getInterpolateFunction: function (t) {
this.controller.spline || (
this.controller.spline = this.params.loop
? new z.LinearSpline(this.slidesGrid, t.slidesGrid)
: new z.LinearSpline(this.snapGrid, t.snapGrid)
)
},
setTranslate: function (t, e) {
var i,
s,
a = this,
n = a.controller.control;
function r(t) {
var e = a.rtlTranslate
? -a.translate
: a.translate;
"slide" === a.params.controller.by && (
a.controller.getInterpolateFunction(t),
s = -a.controller.spline.interpolate(-e)
),
s && "container" !== a.params.controller.by || (
i = (t.maxTranslate() - t.minTranslate()) / (a.maxTranslate() - a.minTranslate()),
s = (e - a.minTranslate()) * i + t.minTranslate()
),
a.params.controller.inverse && (s = t.maxTranslate() - s),
t.updateProgress(s),
t.setTranslate(s, a),
t.updateActiveIndex(),
t.updateSlidesClasses()
}
if (Array.isArray(n))
for (var o = 0; o < n.length; o += 1)
n[o] !== e && n[o] instanceof p && r(n[o]);
else
n instanceof p && e !== n && r(n)
},
setTransition: function (e, t) {
var i,
s = this,
a = s.controller.control;
function n(t) {
t.setTransition(e, s),
0 !== e && (
t.transitionStart(),
t.params.autoHeight && U.nextTick(function () {
t.updateAutoHeight()
}),
t.$wrapperEl.transitionEnd(function () {
a && (
t.params.loop && "slide" === s.params.controller.by && t.loopFix(),
t.transitionEnd()
)
})
)
}
if (Array.isArray(a))
for (i = 0; i < a.length; i += 1)
a[i] !== t && a[i] instanceof p && n(a[i]);
else
a instanceof p && t !== a && n(a)
}
},
tt = {
makeElFocusable: function (t) {
return t.attr("tabIndex", "0"),
t
},
addElRole: function (t, e) {
return t.attr("role", e),
t
},
addElLabel: function (t, e) {
return t.attr("aria-label", e),
t
},
disableEl: function (t) {
return t.attr("aria-disabled", !0),
t
},
enableEl: function (t) {
return t.attr("aria-disabled", !1),
t
},
onEnterKey: function (t) {
var e = this.params.a11y;
13 === t.keyCode && (
t = S(t.target),
this.navigation && this.navigation.$nextEl && t.is(this.navigation.$nextEl) && (
this.isEnd && !this.params.loop || this.slideNext(),
this.isEnd
? this.a11y.notify(e.lastSlideMessage)
: this.a11y.notify(e.nextSlideMessage)
),
this.navigation && this.navigation.$prevEl && t.is(this.navigation.$prevEl) && (
this.isBeginning && !this.params.loop || this.slidePrev(),
this.isBeginning
? this.a11y.notify(e.firstSlideMessage)
: this.a11y.notify(e.prevSlideMessage)
),
this.pagination && t.is("." + this.params.pagination.bulletClass) && t[0].click()
)
},
notify: function (t) {
var e = this.a11y.liveRegion;
0 !== e.length && (e.html(""), e.html(t))
},
updateNavigation: function () {
var t,
e;
!this.params.loop && this.navigation && (
t = (e = this.navigation).$nextEl,
(e = e.$prevEl) && 0 < e.length && (
this.isBeginning
? this.a11y.disableEl(e)
: this.a11y.enableEl(e)
),
t && 0 < t.length && (
this.isEnd
? this.a11y.disableEl(t)
: this.a11y.enableEl(t)
)
)
},
updatePagination: function () {
var i = this,
s = i.params.a11y;
i.pagination && i.params.pagination.clickable && i.pagination.bullets && i.pagination.bullets.length && i
.pagination
.bullets
.each(function (t, e) {
e = S(e);
i
.a11y
.makeElFocusable(e),
i
.a11y
.addElRole(e, "button"),
i
.a11y
.addElLabel(e, s.paginationBulletMessage.replace(/{{index}}/, e.index() + 1))
})
},
init: function () {
this
.$el
.append(this.a11y.liveRegion);
var t,
e,
i = this.params.a11y;
this.navigation && this.navigation.$nextEl && (t = this.navigation.$nextEl),
this.navigation && this.navigation.$prevEl && (e = this.navigation.$prevEl),
t && (
this.a11y.makeElFocusable(t),
this.a11y.addElRole(t, "button"),
this.a11y.addElLabel(t, i.nextSlideMessage),
t.on("keydown", this.a11y.onEnterKey)
),
e && (
this.a11y.makeElFocusable(e),
this.a11y.addElRole(e, "button"),
this.a11y.addElLabel(e, i.prevSlideMessage),
e.on("keydown", this.a11y.onEnterKey)
),
this.pagination && this.params.pagination.clickable && this.pagination.bullets && this.pagination.bullets.length && this
.pagination
.$el
.on("keydown", "." + this.params.pagination.bulletClass, this.a11y.onEnterKey)
},
destroy: function () {
var t,
e;
this.a11y.liveRegion && 0 < this.a11y.liveRegion.length && this
.a11y
.liveRegion
.remove(),
this.navigation && this.navigation.$nextEl && (t = this.navigation.$nextEl),
this.navigation && this.navigation.$prevEl && (e = this.navigation.$prevEl),
t && t.off("keydown", this.a11y.onEnterKey),
e && e.off("keydown", this.a11y.onEnterKey),
this.pagination && this.params.pagination.clickable && this.pagination.bullets && this.pagination.bullets.length && this
.pagination
.$el
.off("keydown", "." + this.params.pagination.bulletClass, this.a11y.onEnterKey)
}
},
I = {
init: function () {
if (this.params.history) {
if (!X.history || !X.history.pushState)
return this.params.history.enabled = !1,
void(this.params.hashNavigation.enabled = !0);
var t = this.history;
t.initialized = !0,
t.paths = I.getPathValues(),
(t.paths.key || t.paths.value) && (
t.scrollToSlide(0, t.paths.value, this.params.runCallbacksOnInit),
this.params.history.replaceState || X.addEventListener("popstate", this.history.setHistoryPopState)
)
}
},
destroy: function () {
this.params.history.replaceState || X.removeEventListener(
"popstate",
this.history.setHistoryPopState
)
},
setHistoryPopState: function () {
this.history.paths = I.getPathValues(),
this
.history
.scrollToSlide(this.params.speed, this.history.paths.value, !1)
},
getPathValues: function () {
var t = X
.location
.pathname
.slice(1)
.split("/")
.filter(function (t) {
return "" !== t
}),
e = t.length;
return {
key: t[e - 2],
value: t[e - 1]
}
},
setHistory: function (t, e) {
this.history.initialized && this.params.history.enabled && (
e = this.slides.eq(e),
e = I.slugify(e.attr("data-history")),
X.location.pathname.includes(t) || (e = t + "/" + e),
(t = X.history.state) && t.value === e || (
this.params.history.replaceState
? X.history.replaceState({
value: e
}, null, e)
: X.history.pushState({
value: e
}, null, e)
)
)
},
slugify: function (t) {
return t
.toString()
.replace(/\s+/g, "-")
.replace(/[^\w-]+/g, "")
.replace(/--+/g, "-")
.replace(/^-+/, "")
.replace(/-+$/, "")
},
scrollToSlide: function (t, e, i) {
if (e)
for (var s = 0, a = this.slides.length; s < a; s += 1) {
var n = this
.slides
.eq(s);
I.slugify(n.attr("data-history")) !== e || n.hasClass(
this.params.slideDuplicateClass
) || (n = n.index(), this.slideTo(n, t, i))
}
else
this.slideTo(0, t, i)
}
},
P = {
onHashCange: function () {
var t = c
.location
.hash
.replace("#", "");
t !== this
.slides
.eq(this.activeIndex)
.attr("data-hash") && void 0 !== (t = this.$wrapperEl.children(
"." + this.params.slideClass + '[data-hash="' + t + '"]'
).index()) && this.slideTo(t)
},
setHash: function () {
var t;
this.hashNavigation.initialized && this.params.hashNavigation.enabled && (
this.params.hashNavigation.replaceState && X.history && X.history.replaceState
? X.history.replaceState(
null,
null,
"#" + this.slides.eq(this.activeIndex).attr("data-hash") || ""
)
: (
t = (t = this.slides.eq(this.activeIndex)).attr("data-hash") || t.attr("data-history"),
c.location.hash = t || ""
)
)
},
init: function () {
if (!(!this.params.hashNavigation.enabled || this.params.history && this.params.history.enabled)) {
this.hashNavigation.initialized = !0;
var t = c
.location
.hash
.replace("#", "");
if (t)
for (var e = 0, i = this.slides.length; e < i; e += 1) {
var s = this
.slides
.eq(e);
(s.attr("data-hash") || s.attr("data-history")) !== t || s.hasClass(
this.params.slideDuplicateClass
) || (s = s.index(), this.slideTo(s, 0, this.params.runCallbacksOnInit, !0))
}
this.params.hashNavigation.watchState && S(X).on(
"hashchange",
this.hashNavigation.onHashCange
)
}
},
destroy: function () {
this.params.hashNavigation.watchState && S(X).off(
"hashchange",
this.hashNavigation.onHashCange
)
}
},
H = {
run: function () {
var t = this,
e = t
.slides
.eq(t.activeIndex),
i = t.params.autoplay.delay;
e.attr("data-swiper-autoplay") && (
i = e.attr("data-swiper-autoplay") || t.params.autoplay.delay
),
clearTimeout(t.autoplay.timeout),
t.autoplay.timeout = U.nextTick(function () {
t.params.autoplay.reverseDirection
? t.params.loop
? (t.loopFix(), t.slidePrev(t.params.speed, !0, !0), t.emit("autoplay"))
: t.isBeginning
? t.params.autoplay.stopOnLastSlide
? t
.autoplay
.stop()
: (t.slideTo(t.slides.length - 1, t.params.speed, !0, !0), t.emit("autoplay"))
: (t.slidePrev(t.params.speed, !0, !0), t.emit("autoplay"))
: t.params.loop
? (t.loopFix(), t.slideNext(t.params.speed, !0, !0), t.emit("autoplay"))
: t.isEnd
? t.params.autoplay.stopOnLastSlide
? t
.autoplay
.stop()
: (t.slideTo(0, t.params.speed, !0, !0), t.emit("autoplay"))
: (t.slideNext(t.params.speed, !0, !0), t.emit("autoplay")),
t.params.cssMode && t.autoplay.running && t
.autoplay
.run()
}, i)
},
start: function () {
return void 0 === this.autoplay.timeout && !this.autoplay.running && (
this.autoplay.running = !0,
this.emit("autoplayStart"),
this.autoplay.run(),
!0
)
},
stop: function () {
return !!this.autoplay.running && void 0 !== this.autoplay.timeout && (
this.autoplay.timeout && (clearTimeout(this.autoplay.timeout), this.autoplay.timeout = void 0),
this.autoplay.running = !1,
this.emit("autoplayStop"),
!0
)
},
pause: function (t) {
!this.autoplay.running || this.autoplay.paused || (
this.autoplay.timeout && clearTimeout(this.autoplay.timeout),
this.autoplay.paused = !0,
0 !== t && this.params.autoplay.waitForTransition
? (
this.$wrapperEl[0].addEventListener("transitionend", this.autoplay.onTransitionEnd),
this.$wrapperEl[0].addEventListener("webkitTransitionEnd", this.autoplay.onTransitionEnd)
)
: (this.autoplay.paused = !1, this.autoplay.run())
)
}
},
et = {
setTranslate: function () {
for (var t = this.slides, e = 0; e < t.length; e += 1) {
var i = this
.slides
.eq(e),
s = -i[0].swiperSlideOffset,
a = (this.params.virtualTranslate || (s -= this.translate), 0),
n = (
this.isHorizontal() || (a = s, s = 0),
this.params.fadeEffect.crossFade
? Math.max(1 - Math.abs(i[0].progress), 0)
: 1 + Math.min(Math.max(i[0].progress, -1), 0)
);
i
.css({opacity: n})
.transform("translate3d(" + s + "px, " + a + "px, 0px)")
}
},
setTransition: function (t) {
var i,
s = this,
e = s.slides,
a = s.$wrapperEl;
e.transition(t),
s.params.virtualTranslate && 0 !== t && (i = !1, e.transitionEnd(function () {
if (!i && s && !s.destroyed) {
i = !0,
s.animating = !1;
for (var t = [
"webkitTransitionEnd", "transitionend"
], e = 0; e < t.length; e += 1)
a.trigger(t[e])
}
}))
}
},
it = {
setTranslate: function () {
var t,
e = this.$el,
i = this.$wrapperEl,
s = this.slides,
a = this.width,
n = this.height,
r = this.rtlTranslate,
o = this.size,
l = this.params.cubeEffect,
h = this.isHorizontal(),
d = this.virtual && this.params.virtual.enabled,
c = 0;
l.shadow && (
h
? (
0 === (t = i.find(".swiper-cube-shadow")).length && (t = S('
'), i.append(t)),
t.css({
height: a + "px"
})
)
: 0 === (t = e.find(".swiper-cube-shadow")).length && (
t = S('
'),
e.append(t)
)
);
for (var u, p = 0; p < s.length; p += 1) {
var m = s.eq(p),
v = p,
f = 90 * (
v = d
? parseInt(m.attr("data-swiper-slide-index"), 10)
: v
),
g = Math.floor(f / 360),
w = (
r && (f = -f, g = Math.floor(-f / 360)),
Math.max(Math.min(m[0].progress, 1), -1)
),
y = 0,
b = 0,
E = 0,
g = (
v % 4 == 0
? (y = 4 * -g * o, E = 0)
: (v - 1) % 4 == 0
? (y = 0, E = 4 * -g * o)
: (v - 2) % 4 == 0
? (y = o + 4 * g * o, E = o)
: (v - 3) % 4 == 0 && (y = -o, E = 3 * o + 4 * o * g),
r && (y = -y),
h || (b = y, y = 0),
"rotateX(" + (
h
? 0
: -f
) + "deg) rotateY(" + (
h
? f
: 0
) + "deg) translate3d(" + y + "px, " + b + "px, " + E + "px)"
);
w <= 1 && -1 < w && (
c = r
? 90 * -v - 90 * w
: 90 * v + 90 * w
),
m.transform(g),
l.slideShadows && (
f = h
? m.find(".swiper-slide-shadow-left")
: m.find(".swiper-slide-shadow-top"),
y = h
? m.find(".swiper-slide-shadow-right")
: m.find(".swiper-slide-shadow-bottom"),
0 === f.length && (f = S('
'), m.append(f)),
0 === y.length && (y = S('
'), m.append(y)),
f.length && (f[0].style.opacity = Math.max(-w, 0)),
y.length && (y[0].style.opacity = Math.max(w, 0))
)
}
i.css({
"-webkit-transform-origin": "50% 50% -" + o / 2 + "px",
"-moz-transform-origin": "50% 50% -" + o / 2 + "px",
"-ms-transform-origin": "50% 50% -" + o / 2 + "px",
"transform-origin": "50% 50% -" + o / 2 + "px"
}),
l.shadow && (
h
? t.transform(
"translate3d(0px, " + (
a / 2 + l.shadowOffset
) + "px, " + -a / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + l.shadowScale + ")"
)
: (
e = Math.abs(c) - 90 * Math.floor(Math.abs(c) / 90),
a = 1.5 - (Math.sin(2 * e * Math.PI / 360) / 2 + Math.cos(2 * e * Math.PI / 360) / 2),
e = l.shadowScale,
a = l.shadowScale / a,
u = l.shadowOffset,
t.transform(
"scale3d(" + e + ", 1, " + a + ") translate3d(0px, " + (
n / 2 + u
) + "px, " + -n / 2 / a + "px) rotateX(-90deg)"
)
)
),
i.transform("translate3d(0px,0," + (
T.isSafari || T.isUiWebView
? -o / 2
: 0
) + "px) rotateX(" + (
this.isHorizontal()
? 0
: c
) + "deg) rotateY(" + (
this.isHorizontal()
? -c
: 0
) + "deg)")
},
setTransition: function (t) {
var e = this.$el;
this
.slides
.transition(t)
.find(
".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bot" +
"tom, .swiper-slide-shadow-left"
)
.transition(t),
this.params.cubeEffect.shadow && !this.isHorizontal() && e
.find(
".swiper-cube-shadow"
)
.transition(t)
}
},
st = {
setTranslate: function () {
for (var t = this.slides, e = this.rtlTranslate, i = 0; i < t.length; i += 1) {
var s,
a,
n = t.eq(i),
r = n[0].progress,
o = -180 * (
r = this.params.flipEffect.limitRotation
? Math.max(Math.min(n[0].progress, 1), -1)
: r
),
l = 0,
h = -n[0].swiperSlideOffset,
d = 0;
this.isHorizontal()
? e && (o = -o)
: (d = h, l = -o, o = h = 0),
n[0].style.zIndex = -Math.abs(Math.round(r)) + t.length,
this.params.flipEffect.slideShadows && (
s = this.isHorizontal()
? n.find(".swiper-slide-shadow-left")
: n.find(".swiper-slide-shadow-top"),
a = this.isHorizontal()
? n.find(".swiper-slide-shadow-right")
: n.find(".swiper-slide-shadow-bottom"),
0 === s.length && (s = S('
'), n.append(s)),
0 === a.length && (a = S('
'), n.append(a)),
s.length && (s[0].style.opacity = Math.max(-r, 0)),
a.length && (a[0].style.opacity = Math.max(r, 0))
),
n.transform(
"translate3d(" + h + "px, " + d + "px, 0px) rotateX(" + l + "deg) rotateY(" + o +
"deg)"
)
}
},
setTransition: function (t) {
var i,
s = this,
e = s.slides,
a = s.activeIndex,
n = s.$wrapperEl;
e
.transition(t)
.find(
".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bot" +
"tom, .swiper-slide-shadow-left"
)
.transition(t),
s.params.virtualTranslate && 0 !== t && (
i = !1,
e.eq(a).transitionEnd(function () {
if (!i && s && !s.destroyed) {
i = !0,
s.animating = !1;
for (var t = [
"webkitTransitionEnd", "transitionend"
], e = 0; e < t.length; e += 1)
n.trigger(t[e])
}
})
)
}
},
at = {
setTranslate: function () {
for (
var t = this.width,
e = this.height,
i = this.slides,
s = this.$wrapperEl,
a = this.slidesSizesGrid,
n = this.params.coverflowEffect,
r = this.isHorizontal(),
o = this.translate,
l = r
? t / 2 - o
: e / 2 - o,
h = r
? n.rotate
: -n.rotate,
d = n.depth,
c = 0,
u = i.length; c < u; c += 1
) {
var p = i.eq(c),
m = a[c],
m = (l - p[0].swiperSlideOffset - m / 2) / m * n.modifier,
v = r
? h * m
: 0,
f = r
? 0
: h * m,
g = -d * Math.abs(m),
w = r
? 0
: n.stretch * m,
y = r
? n.stretch * m
: 0,
y = (
Math.abs(y) < .001 && (y = 0),
Math.abs(w) < .001 && (w = 0),
Math.abs(g) < .001 && (g = 0),
Math.abs(v) < .001 && (v = 0),
"translate3d(" + y + "px," + w + "px," + g + "px) rotateX(" + (
f = Math.abs(f) < .001
? 0
: f
) + "deg) rotateY(" + v + "deg)"
);
p.transform(y),
p[0].style.zIndex = 1 - Math.abs(Math.round(m)),
n.slideShadows && (
w = r
? p.find(".swiper-slide-shadow-left")
: p.find(".swiper-slide-shadow-top"),
g = r
? p.find(".swiper-slide-shadow-right")
: p.find(".swiper-slide-shadow-bottom"),
0 === w.length && (w = S('
'), p.append(w)),
0 === g.length && (g = S('
'), p.append(g)),
w.length && (
w[0].style.opacity = 0 < m
? m
: 0
),
g.length && (
g[0].style.opacity = 0 < -m
? -m
: 0
)
)
}
(b.pointerEvents || b.prefixedPointerEvents) && (
s[0].style.perspectiveOrigin = l + "px 50%"
)
},
setTransition: function (t) {
this
.slides
.transition(t)
.find(
".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bot" +
"tom, .swiper-slide-shadow-left"
)
.transition(t)
}
},
nt = {
init: function () {
var t = this.params.thumbs,
e = this.constructor;
t.swiper instanceof e
? (this.thumbs.swiper = t.swiper, U.extend(this.thumbs.swiper.originalParams, {
watchSlidesProgress: !0,
slideToClickedSlide: !1
}), U.extend(this.thumbs.swiper.params, {
watchSlidesProgress: !0,
slideToClickedSlide: !1
}))
: U.isObject(t.swiper) && (this.thumbs.swiper = new e(U.extend({}, t.swiper, {
watchSlidesVisibility: !0,
watchSlidesProgress: !0,
slideToClickedSlide: !1
})), this.thumbs.swiperCreated = !0),
this
.thumbs
.swiper
.$el
.addClass(this.params.thumbs.thumbsContainerClass),
this
.thumbs
.swiper
.on("tap", this.thumbs.onThumbClick)
},
onThumbClick: function () {
var t,
e,
i,
s = this.thumbs.swiper;
s && (
t = s.clickedIndex,
(i = s.clickedSlide) && S(i).hasClass(this.params.thumbs.slideThumbActiveClass) || null == t || (
i = s.params.loop
? parseInt(S(s.clickedSlide).attr("data-swiper-slide-index"), 10)
: t,
this.params.loop && (
s = this.activeIndex,
this.slides.eq(s).hasClass(this.params.slideDuplicateClass) && (
this.loopFix(),
this._clientLeft = this.$wrapperEl[0].clientLeft,
s = this.activeIndex
),
t = this.slides.eq(s).prevAll('[data-swiper-slide-index="' + i + '"]').eq(0).index(),
e = this.slides.eq(s).nextAll(
'[data-swiper-slide-index="' + i + '"]'
).eq(0).index(),
i = void 0 === t || void 0 !== e && e - s < s - t
? e
: t
),
this.slideTo(i)
)
)
},
update: function (t) {
var e = this.thumbs.swiper;
if (e) {
var i,
s,
a,
n = "auto" === e.params.slidesPerView
? e.slidesPerViewDynamic()
: e.params.slidesPerView,
r = (
this.realIndex !== e.realIndex && (
i = e.activeIndex,
a = e.params.loop
? (
e.slides.eq(i).hasClass(e.params.slideDuplicateClass) && (e.loopFix(), e._clientLeft = e.$wrapperEl[0].clientLeft, i = e.activeIndex),
s = e.slides.eq(i).prevAll(
'[data-swiper-slide-index="' + this.realIndex + '"]'
).eq(0).index(),
a = e.slides.eq(i).nextAll(
'[data-swiper-slide-index="' + this.realIndex + '"]'
).eq(0).index(),
void 0 === s
? a
: void 0 === a
? s
: a - i == i - s
? i
: a - i < i - s
? a
: s
)
: this.realIndex,
e.visibleSlidesIndexes && e.visibleSlidesIndexes.indexOf(a) < 0 && (
e.params.centeredSlides
? a = i < a
? a - Math.floor(n / 2) + 1
: a + Math.floor(n / 2) - 1
: i < a && (a = a - n + 1),
e.slideTo(
a,
t
? 0
: void 0
)
)
),
1
),
o = this.params.thumbs.slideThumbActiveClass;
if (
1 < this.params.slidesPerView && !this.params.centeredSlides && (r = this.params.slidesPerView),
this.params.thumbs.multipleActiveThumbs || (r = 1),
r = Math.floor(r),
e.slides.removeClass(o),
e.params.loop || e.params.virtual && e.params.virtual.enabled
)
for (var l = 0; l < r; l += 1)
e
.$wrapperEl
.children('[data-swiper-slide-index="' + (
this.realIndex + l
) + '"]')
.addClass(o);
else
for (var h = 0; h < r; h += 1)
e
.slides
.eq(this.realIndex + h)
.addClass(o)
}
}
},
M = [
m,
Y,
G,
v,
g,
y,
E, {
name: "mousewheel",
params: {
mousewheel: {
enabled: !1,
releaseOnEdges: !1,
invert: !1,
forceToAxis: !1,
sensitivity: 1,
eventsTarged: "container"
}
},
create: function () {
U.extend(this, {
mousewheel: {
enabled: !1,
enable: x
.enable
.bind(this),
disable: x
.disable
.bind(this),
handle: x
.handle
.bind(this),
handleMouseEnter: x
.handleMouseEnter
.bind(this),
handleMouseLeave: x
.handleMouseLeave
.bind(this),
animateSlider: x
.animateSlider
.bind(this),
releaseScroll: x
.releaseScroll
.bind(this),
lastScrollTime: U.now(),
lastEventBeforeSnap: void 0,
recentWheelEvents: []
}
})
},
on: {
init: function () {
!this.params.mousewheel.enabled && this.params.cssMode && this
.mousewheel
.disable(),
this.params.mousewheel.enabled && this
.mousewheel
.enable()
},
destroy: function () {
this.params.cssMode && this
.mousewheel
.enable(),
this.mousewheel.enabled && this
.mousewheel
.disable()
}
}
}, {
name: "navigation",
params: {
navigation: {
nextEl: null,
prevEl: null,
hideOnClick: !1,
disabledClass: "swiper-button-disabled",
hiddenClass: "swiper-button-hidden",
lockClass: "swiper-button-lock"
}
},
create: function () {
U.extend(this, {
navigation: {
init: L
.init
.bind(this),
update: L
.update
.bind(this),
destroy: L
.destroy
.bind(this),
onNextClick: L
.onNextClick
.bind(this),
onPrevClick: L
.onPrevClick
.bind(this)
}
})
},
on: {
init: function () {
this
.navigation
.init(),
this
.navigation
.update()
},
toEdge: function () {
this
.navigation
.update()
},
fromEdge: function () {
this
.navigation
.update()
},
destroy: function () {
this
.navigation
.destroy()
},
click: function (t) {
var e,
i = this.navigation,
s = i.$nextEl,
i = i.$prevEl;
!this.params.navigation.hideOnClick || S(t.target).is(i) || S(t.target).is(s) || (
s
? e = s.hasClass(this.params.navigation.hiddenClass)
: i && (e = i.hasClass(this.params.navigation.hiddenClass)),
!0 === e
? this.emit("navigationShow", this)
: this.emit("navigationHide", this),
s && s.toggleClass(this.params.navigation.hiddenClass),
i && i.toggleClass(this.params.navigation.hiddenClass)
)
}
}
}, {
name: "pagination",
params: {
pagination: {
el: null,
bulletElement: "span",
clickable: !1,
hideOnClick: !1,
renderBullet: null,
renderProgressbar: null,
renderFraction: null,
renderCustom: null,
progressbarOpposite: !1,
type: "bullets",
dynamicBullets: !1,
dynamicMainBullets: 1,
formatFractionCurrent: function (t) {
return t
},
formatFractionTotal: function (t) {
return t
},
bulletClass: "swiper-pagination-bullet",
bulletActiveClass: "swiper-pagination-bullet-active",
modifierClass: "swiper-pagination-",
currentClass: "swiper-pagination-current",
totalClass: "swiper-pagination-total",
hiddenClass: "swiper-pagination-hidden",
progressbarFillClass: "swiper-pagination-progressbar-fill",
progressbarOppositeClass: "swiper-pagination-progressbar-opposite",
clickableClass: "swiper-pagination-clickable",
lockClass: "swiper-pagination-lock"
}
},
create: function () {
U.extend(this, {
pagination: {
init: A
.init
.bind(this),
render: A
.render
.bind(this),
update: A
.update
.bind(this),
destroy: A
.destroy
.bind(this),
dynamicBulletIndex: 0
}
})
},
on: {
init: function () {
this
.pagination
.init(),
this
.pagination
.render(),
this
.pagination
.update()
},
activeIndexChange: function () {
!this.params.loop && void 0 !== this.snapIndex || this
.pagination
.update()
},
snapIndexChange: function () {
this.params.loop || this
.pagination
.update()
},
slidesLengthChange: function () {
this.params.loop && (this.pagination.render(), this.pagination.update())
},
snapGridLengthChange: function () {
this.params.loop || (this.pagination.render(), this.pagination.update())
},
destroy: function () {
this
.pagination
.destroy()
},
click: function (t) {
this.params.pagination.el && this.params.pagination.hideOnClick && 0 < this.pagination.$el.length && !S(
t.target
).hasClass(this.params.pagination.bulletClass) && (
!0 === this.pagination.$el.hasClass(this.params.pagination.hiddenClass)
? this.emit("paginationShow", this)
: this.emit("paginationHide", this),
this.pagination.$el.toggleClass(this.params.pagination.hiddenClass)
)
}
}
}, {
name: "scrollbar",
params: {
scrollbar: {
el: null,
dragSize: "auto",
hide: !1,
draggable: !1,
snapOnRelease: !0,
lockClass: "swiper-scrollbar-lock",
dragClass: "swiper-scrollbar-drag"
}
},
create: function () {
U.extend(this, {
scrollbar: {
init: k
.init
.bind(this),
destroy: k
.destroy
.bind(this),
updateSize: k
.updateSize
.bind(this),
setTranslate: k
.setTranslate
.bind(this),
setTransition: k
.setTransition
.bind(this),
enableDraggable: k
.enableDraggable
.bind(this),
disableDraggable: k
.disableDraggable
.bind(this),
setDragPosition: k
.setDragPosition
.bind(this),
getPointerPosition: k
.getPointerPosition
.bind(this),
onDragStart: k
.onDragStart
.bind(this),
onDragMove: k
.onDragMove
.bind(this),
onDragEnd: k
.onDragEnd
.bind(this),
isTouched: !1,
timeout: null,
dragTimeout: null
}
})
},
on: {
init: function () {
this
.scrollbar
.init(),
this
.scrollbar
.updateSize(),
this
.scrollbar
.setTranslate()
},
update: function () {
this
.scrollbar
.updateSize()
},
resize: function () {
this
.scrollbar
.updateSize()
},
observerUpdate: function () {
this
.scrollbar
.updateSize()
},
setTranslate: function () {
this
.scrollbar
.setTranslate()
},
setTransition: function (t) {
this
.scrollbar
.setTransition(t)
},
destroy: function () {
this
.scrollbar
.destroy()
}
}
}, {
name: "parallax",
params: {
parallax: {
enabled: !1
}
},
create: function () {
U.extend(this, {
parallax: {
setTransform: Q
.setTransform
.bind(this),
setTranslate: Q
.setTranslate
.bind(this),
setTransition: Q
.setTransition
.bind(this)
}
})
},
on: {
beforeInit: function () {
this.params.parallax.enabled && (
this.params.watchSlidesProgress = !0,
this.originalParams.watchSlidesProgress = !0
)
},
init: function () {
this.params.parallax.enabled && this
.parallax
.setTranslate()
},
setTranslate: function () {
this.params.parallax.enabled && this
.parallax
.setTranslate()
},
setTransition: function (t) {
this.params.parallax.enabled && this
.parallax
.setTransition(t)
}
}
}, {
name: "zoom",
params: {
zoom: {
enabled: !1,
maxRatio: 3,
minRatio: 1,
toggle: !0,
containerClass: "swiper-zoom-container",
zoomedSlideClass: "swiper-slide-zoomed"
}
},
create: function () {
var s = this,
e = {
enabled: !1,
scale: 1,
currentScale: 1,
isScaling: !1,
gesture: {
$slideEl: void 0,
slideWidth: void 0,
slideHeight: void 0,
$imageEl: void 0,
$imageWrapEl: void 0,
maxRatio: 3
},
image: {
isTouched: void 0,
isMoved: void 0,
currentX: void 0,
currentY: void 0,
minX: void 0,
minY: void 0,
maxX: void 0,
maxY: void 0,
width: void 0,
height: void 0,
startX: void 0,
startY: void 0,
touchesStart: {},
touchesCurrent: {}
},
velocity: {
x: void 0,
y: void 0,
prevPositionX: void 0,
prevPositionY: void 0,
prevTime: void 0
}
},
a = (
(
"onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEn" +
"d onTransitionEnd toggle enable disable in out"
).split(" ").forEach(function (t) {
e[t] = J[t].bind(s)
}),
U.extend(s, {zoom: e}),
1
);
Object.defineProperty(s.zoom, "scale", {
get: function () {
return a
},
set: function (t) {
var e,
i;
a !== t && (
e = s.zoom.gesture.$imageEl
? s.zoom.gesture.$imageEl[0]
: void 0,
i = s.zoom.gesture.$slideEl
? s.zoom.gesture.$slideEl[0]
: void 0,
s.emit("zoomChange", t, e, i)
),
a = t
}
})
},
on: {
init: function () {
this.params.zoom.enabled && this
.zoom
.enable()
},
destroy: function () {
this
.zoom
.disable()
},
touchStart: function (t) {
this.zoom.enabled && this
.zoom
.onTouchStart(t)
},
touchEnd: function (t) {
this.zoom.enabled && this
.zoom
.onTouchEnd(t)
},
doubleTap: function (t) {
this.params.zoom.enabled && this.zoom.enabled && this.params.zoom.toggle && this
.zoom
.toggle(t)
},
transitionEnd: function () {
this.zoom.enabled && this.params.zoom.enabled && this
.zoom
.onTransitionEnd()
},
slideChange: function () {
this.zoom.enabled && this.params.zoom.enabled && this.params.cssMode && this
.zoom
.onTransitionEnd()
}
}
}, {
name: "lazy",
params: {
lazy: {
enabled: !1,
loadPrevNext: !1,
loadPrevNextAmount: 1,
loadOnTransitionStart: !1,
elementClass: "swiper-lazy",
loadingClass: "swiper-lazy-loading",
loadedClass: "swiper-lazy-loaded",
preloaderClass: "swiper-lazy-preloader"
}
},
create: function () {
U.extend(this, {
lazy: {
initialImageLoaded: !1,
load: Z
.load
.bind(this),
loadInSlide: Z
.loadInSlide
.bind(this)
}
})
},
on: {
beforeInit: function () {
this.params.lazy.enabled && this.params.preloadImages && (
this.params.preloadImages = !1
)
},
init: function () {
this.params.lazy.enabled && !this.params.loop && 0 === this.params.initialSlide && this
.lazy
.load()
},
scroll: function () {
this.params.freeMode && !this.params.freeModeSticky && this
.lazy
.load()
},
resize: function () {
this.params.lazy.enabled && this
.lazy
.load()
},
scrollbarDragMove: function () {
this.params.lazy.enabled && this
.lazy
.load()
},
transitionStart: function () {
this.params.lazy.enabled && (
this.params.lazy.loadOnTransitionStart || !this.params.lazy.loadOnTransitionStart && !this.lazy.initialImageLoaded
) && this
.lazy
.load()
},
transitionEnd: function () {
this.params.lazy.enabled && !this.params.lazy.loadOnTransitionStart && this
.lazy
.load()
},
slideChange: function () {
this.params.lazy.enabled && this.params.cssMode && this
.lazy
.load()
}
}
}, {
name: "controller",
params: {
controller: {
control: void 0,
inverse: !1,
by: "slide"
}
},
create: function () {
U.extend(this, {
controller: {
control: this.params.controller.control,
getInterpolateFunction: z
.getInterpolateFunction
.bind(this),
setTranslate: z
.setTranslate
.bind(this),
setTransition: z
.setTransition
.bind(this)
}
})
},
on: {
update: function () {
this.controller.control && this.controller.spline && (
this.controller.spline = void 0,
delete this.controller.spline
)
},
resize: function () {
this.controller.control && this.controller.spline && (
this.controller.spline = void 0,
delete this.controller.spline
)
},
observerUpdate: function () {
this.controller.control && this.controller.spline && (
this.controller.spline = void 0,
delete this.controller.spline
)
},
setTranslate: function (t, e) {
this.controller.control && this
.controller
.setTranslate(t, e)
},
setTransition: function (t, e) {
this.controller.control && this
.controller
.setTransition(t, e)
}
}
}, {
name: "a11y",
params: {
a11y: {
enabled: !0,
notificationClass: "swiper-notification",
prevSlideMessage: "Previous slide",
nextSlideMessage: "Next slide",
firstSlideMessage: "This is the first slide",
lastSlideMessage: "This is the last slide",
paginationBulletMessage: "Go to slide {{index}}"
}
},
create: function () {
var e = this;
U.extend(e, {
a11y: {
liveRegion: S(
'
'
)
}
}),
Object
.keys(tt)
.forEach(function (t) {
e.a11y[t] = tt[t].bind(e)
})
},
on: {
init: function () {
this.params.a11y.enabled && (this.a11y.init(), this.a11y.updateNavigation())
},
toEdge: function () {
this.params.a11y.enabled && this
.a11y
.updateNavigation()
},
fromEdge: function () {
this.params.a11y.enabled && this
.a11y
.updateNavigation()
},
paginationUpdate: function () {
this.params.a11y.enabled && this
.a11y
.updatePagination()
},
destroy: function () {
this.params.a11y.enabled && this
.a11y
.destroy()
}
}
}, {
name: "history",
params: {
history: {
enabled: !1,
replaceState: !1,
key: "slides"
}
},
create: function () {
U.extend(this, {
history: {
init: I
.init
.bind(this),
setHistory: I
.setHistory
.bind(this),
setHistoryPopState: I
.setHistoryPopState
.bind(this),
scrollToSlide: I
.scrollToSlide
.bind(this),
destroy: I
.destroy
.bind(this)
}
})
},
on: {
init: function () {
this.params.history.enabled && this
.history
.init()
},
destroy: function () {
this.params.history.enabled && this
.history
.destroy()
},
transitionEnd: function () {
this.history.initialized && this
.history
.setHistory(this.params.history.key, this.activeIndex)
},
slideChange: function () {
this.history.initialized && this.params.cssMode && this
.history
.setHistory(this.params.history.key, this.activeIndex)
}
}
}, {
name: "hash-navigation",
params: {
hashNavigation: {
enabled: !1,
replaceState: !1,
watchState: !1
}
},
create: function () {
U.extend(this, {
hashNavigation: {
initialized: !1,
init: P
.init
.bind(this),
destroy: P
.destroy
.bind(this),
setHash: P
.setHash
.bind(this),
onHashCange: P
.onHashCange
.bind(this)
}
})
},
on: {
init: function () {
this.params.hashNavigation.enabled && this
.hashNavigation
.init()
},
destroy: function () {
this.params.hashNavigation.enabled && this
.hashNavigation
.destroy()
},
transitionEnd: function () {
this.hashNavigation.initialized && this
.hashNavigation
.setHash()
},
slideChange: function () {
this.hashNavigation.initialized && this.params.cssMode && this
.hashNavigation
.setHash()
}
}
}, {
name: "autoplay",
params: {
autoplay: {
enabled: !1,
delay: 3e3,
waitForTransition: !0,
disableOnInteraction: !0,
stopOnLastSlide: !1,
reverseDirection: !1
}
},
create: function () {
var e = this;
U.extend(e, {
autoplay: {
running: !1,
paused: !1,
run: H
.run
.bind(e),
start: H
.start
.bind(e),
stop: H
.stop
.bind(e),
pause: H
.pause
.bind(e),
onVisibilityChange: function () {
"hidden" === document.visibilityState && e.autoplay.running && e
.autoplay
.pause(),
"visible" === document.visibilityState && e.autoplay.paused && (
e.autoplay.run(),
e.autoplay.paused = !1
)
},
onTransitionEnd: function (t) {
e && !e.destroyed && e.$wrapperEl && t.target === this && (
e.$wrapperEl[0].removeEventListener("transitionend", e.autoplay.onTransitionEnd),
e.$wrapperEl[0].removeEventListener("webkitTransitionEnd", e.autoplay.onTransitionEnd),
e.autoplay.paused = !1,
e.autoplay.running
? e.autoplay.run()
: e.autoplay.stop()
)
}
}
})
},
on: {
init: function () {
this.params.autoplay.enabled && (
this.autoplay.start(),
document.addEventListener("visibilitychange", this.autoplay.onVisibilityChange)
)
},
beforeTransitionStart: function (t, e) {
this.autoplay.running && (
e || !this.params.autoplay.disableOnInteraction
? this.autoplay.pause(t)
: this.autoplay.stop()
)
},
sliderFirstMove: function () {
this.autoplay.running && (
this.params.autoplay.disableOnInteraction
? this.autoplay.stop()
: this.autoplay.pause()
)
},
touchEnd: function () {
this.params.cssMode && this.autoplay.paused && !this.params.autoplay.disableOnInteraction && this
.autoplay
.run()
},
destroy: function () {
this.autoplay.running && this
.autoplay
.stop(),
document.removeEventListener(
"visibilitychange",
this.autoplay.onVisibilityChange
)
}
}
}, {
name: "effect-fade",
params: {
fadeEffect: {
crossFade: !1
}
},
create: function () {
U.extend(this, {
fadeEffect: {
setTranslate: et
.setTranslate
.bind(this),
setTransition: et
.setTransition
.bind(this)
}
})
},
on: {
beforeInit: function () {
var t;
"fade" === this.params.effect && (this.classNames.push(
this.params.containerModifierClass + "fade"
), U.extend(this.params, t = {
slidesPerView: 1,
slidesPerColumn: 1,
slidesPerGroup: 1,
watchSlidesProgress: !0,
spaceBetween: 0,
virtualTranslate: !0
}), U.extend(this.originalParams, t))
},
setTranslate: function () {
"fade" === this.params.effect && this
.fadeEffect
.setTranslate()
},
setTransition: function (t) {
"fade" === this.params.effect && this
.fadeEffect
.setTransition(t)
}
}
}, {
name: "effect-cube",
params: {
cubeEffect: {
slideShadows: !0,
shadow: !0,
shadowOffset: 20,
shadowScale: .94
}
},
create: function () {
U.extend(this, {
cubeEffect: {
setTranslate: it
.setTranslate
.bind(this),
setTransition: it
.setTransition
.bind(this)
}
})
},
on: {
beforeInit: function () {
var t;
"cube" === this.params.effect && (
this.classNames.push(
this.params.containerModifierClass + "cube"
),
this.classNames.push(this.params.containerModifierClass + "3d"),
U.extend(this.params, t = {
slidesPerView: 1,
slidesPerColumn: 1,
slidesPerGroup: 1,
watchSlidesProgress: !0,
resistanceRatio: 0,
spaceBetween: 0,
centeredSlides: !1,
virtualTranslate: !0
}),
U.extend(this.originalParams, t)
)
},
setTranslate: function () {
"cube" === this.params.effect && this
.cubeEffect
.setTranslate()
},
setTransition: function (t) {
"cube" === this.params.effect && this
.cubeEffect
.setTransition(t)
}
}
}, {
name: "effect-flip",
params: {
flipEffect: {
slideShadows: !0,
limitRotation: !0
}
},
create: function () {
U.extend(this, {
flipEffect: {
setTranslate: st
.setTranslate
.bind(this),
setTransition: st
.setTransition
.bind(this)
}
})
},
on: {
beforeInit: function () {
var t;
"flip" === this.params.effect && (
this.classNames.push(
this.params.containerModifierClass + "flip"
),
this.classNames.push(this.params.containerModifierClass + "3d"),
U.extend(this.params, t = {
slidesPerView: 1,
slidesPerColumn: 1,
slidesPerGroup: 1,
watchSlidesProgress: !0,
spaceBetween: 0,
virtualTranslate: !0
}),
U.extend(this.originalParams, t)
)
},
setTranslate: function () {
"flip" === this.params.effect && this
.flipEffect
.setTranslate()
},
setTransition: function (t) {
"flip" === this.params.effect && this
.flipEffect
.setTransition(t)
}
}
}, {
name: "effect-coverflow",
params: {
coverflowEffect: {
rotate: 50,
stretch: 0,
depth: 100,
modifier: 1,
slideShadows: !0
}
},
create: function () {
U.extend(this, {
coverflowEffect: {
setTranslate: at
.setTranslate
.bind(this),
setTransition: at
.setTransition
.bind(this)
}
})
},
on: {
beforeInit: function () {
"coverflow" === this.params.effect && (
this.classNames.push(
this.params.containerModifierClass + "coverflow"
),
this.classNames.push(this.params.containerModifierClass + "3d"),
this.params.watchSlidesProgress = !0,
this.originalParams.watchSlidesProgress = !0
)
},
setTranslate: function () {
"coverflow" === this.params.effect && this
.coverflowEffect
.setTranslate()
},
setTransition: function (t) {
"coverflow" === this.params.effect && this
.coverflowEffect
.setTransition(t)
}
}
}, {
name: "thumbs",
params: {
thumbs: {
multipleActiveThumbs: !0,
swiper: null,
slideThumbActiveClass: "swiper-slide-thumb-active",
thumbsContainerClass: "swiper-container-thumbs"
}
},
create: function () {
U.extend(this, {
thumbs: {
swiper: null,
init: nt
.init
.bind(this),
update: nt
.update
.bind(this),
onThumbClick: nt
.onThumbClick
.bind(this)
}
})
},
on: {
beforeInit: function () {
var t = this.params.thumbs;
t && t.swiper && (this.thumbs.init(), this.thumbs.update(!0))
},
slideChange: function () {
this.thumbs.swiper && this
.thumbs
.update()
},
update: function () {
this.thumbs.swiper && this
.thumbs
.update()
},
resize: function () {
this.thumbs.swiper && this
.thumbs
.update()
},
observerUpdate: function () {
this.thumbs.swiper && this
.thumbs
.update()
},
setTransition: function (t) {
var e = this.thumbs.swiper;
e && e.setTransition(t)
},
beforeDestroy: function () {
var t = this.thumbs.swiper;
t && this.thumbs.swiperCreated && t && t.destroy()
}
}
}
];
return void 0 === p.use && (
p.use = p.Class.use,
p.installModule = p.Class.installModule
),
p.use(M),
p
});
var ANIUTIL = function () {
function e(t) {
function e(t) {
this.opts = t,
this.resizeTiming = t.resizeTiming || 100,
this.setElement(),
this.setVideoStyle(),
this.bindEvent()
}
var i = e.prototype;
i.setElement = function () {
void 0 !== this.opts.wrapElement && (
this.wrapElement = this.opts.wrapElement.jquery
? this.opts.wrapElement[0]
: this.opts.wrapElement
),
void 0 !== this.opts.targetVideo && (
this.targetVideo = this.opts.targetVideo.jquery
? this.opts.targetVideo[0]
: this.opts.targetVideo
)
},
i.setVideoStyle = function () {
this.wrapElement.style.overflow = "hidden",
this.targetVideo.style.position = "absolute",
this.targetVideo.style.top = "50%",
this.targetVideo.style.left = "50%",
this.targetVideo.style.transform = "translate(-50%, -50%)"
},
i.bindEvent = function () {
var t = this;
window.addEventListener("load", function () {
t.setVideoSize()
}),
window.addEventListener("resize", function () {
t.setVideoSize()
})
},
i.getVideoInfo = function () {
this.wrapWidth = this.wrapElement.clientWidth,
this.wrapHeight = this.wrapElement.clientHeight,
this.videoWidth = this.targetVideo.clientWidth,
this.videoHeight = this.targetVideo.clientHeight,
this.wrapRatio = this.wrapHeight / this.wrapWidth,
this.videoRatio = this.videoHeight / this.videoWidth
},
i.setVideoSize = function () {
var t = this;
clearTimeout(null),
setTimeout(function () {
t.getVideoInfo(),
t.wrapRatio < t.videoRatio
? (t.targetVideo.style.width = "100%", t.targetVideo.style.height = "auto")
: (t.targetVideo.style.width = "auto", t.targetVideo.style.height = "100%")
}, this.resizeTiming)
},
new e(t)
}
function i(t) {
var e,
i,
s = null,
a = null,
n = t
? t + 200
: 200,
r = function () {
null == s
? (
i = document.scrollingElement || document.documentElement || document.body.parentNode || document.body,
e = document.body.clientHeight,
i = window.pageYOffset + i.clientHeight,
s = i / e
)
: e = document.body.clientHeight
},
o = function () {
clearTimeout(a),
a = setTimeout(function () {
window.scrollTo(0, e * s - window.innerHeight),
s = null
}, n)
};
window.addEventListener("resize", function () {
r(),
o()
})
}
function s() {
return !(
-1 < navigator.userAgent.indexOf("Windows") || -1 < navigator.userAgent.indexOf("Macintosh")
) && (
!!("ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch) || void 0
)
}
return {
calRange: function (t) {
return 0 < (t = {
targetValue: (t = t).targetValue,
progress: t.progress,
startPoint: t.startPoint || 0,
endPoint: t.endPoint || 100
}).startPoint && (
t.endPoint = 0 < t.endPoint - t.startPoint
? t.endPoint - t.startPoint
: t.endPoint
),
e = (
e = (e = t.targetValue * (t.progress - t.startPoint) / t.endPoint) > t.targetValue
? t.targetValue
: e
) < 0
? 0
: e;
var e
},
videoObjectFit: function (t) {
e(t)
},
addClass: function (t) {
for (var e = t, i = e.classList.length, s = 0; s < i; s++)
e
.targetElement
.classList
.add(e.classList[s])
},
removeClass: function (t) {
for (var e = t, i = e.classList.length, s = 0; s < i; s++)
e
.targetElement
.classList
.remove(e.classList[s])
},
scrollController: function (t) {
var i,
s = (s = t) || {},
e = navigator
.userAgent
.toLowerCase(),
a = document.scrollingElement || document.documentElement || document.body.parentNode || document.body,
n = s.speed || 120,
r = 0 <= s.duration
? s.duration
: 1,
o = a.scrollTop,
l = a === document.body && document.documentElement
? document.documentElement
: a,
h = !1,
d = null,
t = function () {
"Netscape" == navigator.appName && -1 != navigator
.userAgent
.search("Trident") || -1 != e.indexOf("msie")
? document.addEventListener("mousewheel", function (t) {
"hidden" != document.documentElement.style.overflow && u.scrollEvent(t)
}, {
passive: !1
})
: document.addEventListener("wheel", function (t) {
u.hasScrollBox(t.target) || u.scrollEvent(t)
}, {
passive: !1
})
},
c = function () {
window.addEventListener("scroll", function () {
"hidden" == document.documentElement.style.overflow || h || (o = a.scrollTop)
})
},
u = {
scrollEvent: function (t) {
t.preventDefault();
var e = document
.body
.getAttribute("data-scroll-speed"),
t = this.normalizeWheelDelta(t),
e = s.currDelta && e
? e
: e || n
? n
: 120;
o += -t * e,
i = Math.max(0, Math.min(o, a.scrollHeight - l.clientHeight)),
this.update()
},
normalizeWheelDelta: function (t) {
return t.detail
? t.wheelDelta
? t.wheelDelta / t.detail / 40 * (
0 < t.detail
? 1
: -1
)
: -t.detail / 3
: t.wheelDelta / 120
},
update: function () {
var t = i - a.scrollTop,
t = Math.ceil(a.scrollTop + t) <= 0
? 0
: i < o
? i
: Math.ceil(a.scrollTop + t);
h = !0,
TweenMax.to(a, r, {
ease: "power1.out",
scrollTop: t,
onComplete: function () {
clearTimeout(d),
d = null,
d = setTimeout(function () {
h = !1,
o = a.scrollTop
}, 500)
}
}),
o <= 0
? o = 0
: i <= o && (o = i)
},
hasScrollBox: function (t) {
for (; t && t !== document.body && t !== document;) {
var e = window
.getComputedStyle(t)
.overflow;
if (e && (-1 < e.indexOf("auto") || -1 < e.indexOf("scroll")))
return !0;
t = t.parentNode
}
return !1
}
};
window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame,
-1 == e.indexOf("chrome") && -1 != e.indexOf("safari") || (t(), c())
},
resizeScrollOffset: function (t) {
i(t)
},
checkTouchDevice: s,
checkFold: function () {
var t,
e = screen.width / screen.height,
i = s() && .7137 < e && e < .8 && "width=768" == document
.getElementsByName(
"viewport"
)[0]
.content,
e = s() && .8 < e && e < .95 && "width=768" == document
.getElementsByName(
"viewport"
)[0]
.content;
return i
? t = "isFold"
: e && (t = "isFoldLatest"),
t
},
deviceConsole: function (t, e) {
var i,
s;
document.querySelector(".console-layer") || (
(i = document.createElement("div")).classList.add("console-layer"),
i.setAttribute(
"style",
"position: fixed; left: 0; top: 0; padding: 20px; z-index:1000000000; backgroun" +
"d: #fff;"
),
document.querySelector("body").append(i)
),
"multi" == e
? (
i = document.querySelector(".console-layer"),
(s = document.createElement("div")).classList.add("console-value"),
s.setAttribute("style", "border: 1px #ddd solid; float: left; padding: 10px;"),
i.append(s)
)
: s = (document.querySelector(".console-value") || (
(s = document.createElement("div")).classList.add("console-value"),
s.setAttribute("style", "border: 1px #ddd solid; float: left; padding: 10px;"),
i.append(s)
), document.querySelector(".console-value")),
s.innerHTML = t
},
percentToPixel: function (t) {
return t.targetValue * (t.progress / 100)
},
responsiveHandler: function (s) {
var a,
t,
n,
r,
e = window.resolutionStatus = null,
s = (window.innerWidth, {
resolution: s.resolution,
statusName: s.statusName || [],
callback: s.callback || [],
activeTiming: s.activeTiming || 100
}),
i = function () {
r = window.innerWidth;
for (var t = 0; t < s.resolution.length; t++) {
var e = s.resolution[t],
i = s.resolution[t + 1] || 0;
r <= e && i < r && a != s.statusName[t] || r <= e && i < r && n != t
? (
document.documentElement.classList.remove(a),
a = s.statusName[t] || t,
n = t,
document.documentElement.classList.add(a)
)
: (r >= s.resolution[0] && a != s.statusName[0] || r >= s.resolution[0] && !n) && (
document.documentElement.classList.remove(a),
a = s.statusName[0] || t,
n = t,
document.documentElement.classList.add(a)
)
}
},
o = function () {
clearTimeout(e),
console.log(s.activeTiming),
t != n && s.callback[n] && (e = setTimeout(function () {
s.callback[n](),
e = null,
t = n
}, s.activeTiming))
};
return function () {
return window.addEventListener("DOMContentLoaded", function () {
i(),
t = n
}),
window.addEventListener("resize", function () {
i(),
o()
}),
this
}()
}
}
}();
window.WATCH6 = window.WATCH6 || {};
const UTILS = function () {
return {
isIosDevice: (
(s = /iPad|iPhone|iPod/.test(navigator.userAgent))
? document.documentElement.classList.add("isIosDevice")
: document.documentElement.classList.add("isNotIosDevice"),
s
),
checkGlobal: void(
0 === location.pathname.indexOf("/global/galaxy") || !0 === window.IS_CAMPAIGN
? document.documentElement.classList.add("global")
: document.documentElement.classList.add("dotcom")
),
checkOS: (
s = (s = navigator.appVersion.match(/(mac|win|linux)/i))
? s[1].toLowerCase()
: "",
void document.documentElement.classList.add(s)
),
isFireFox: void(
/firefox/i.test(navigator.userAgent) && document.documentElement.classList.add("firefox")
),
isWebkit: void(
/applewebkit/i.test(navigator.userAgent) && document.documentElement.classList.add("webkit")
),
isChrome: void(
/chrome/i.test(navigator.userAgent) && document.documentElement.classList.add("chrome")
),
isOpera: void(
/opera/i.test(navigator.userAgent) && document.documentElement.classList.add("opera")
),
isIos: void(
/ip(ad|hone|od)/i.test(navigator.userAgent) && document.documentElement.classList.add("ios")
),
isCrIos: void(
/crios/i.test(navigator.userAgent) && document.documentElement.classList.add("crios")
),
isAndroid: void(
/android/i.test(navigator.userAgent) && document.documentElement.classList.add("android")
),
isSafari: (
s = /applewebkit/i.test(navigator.userAgent),
i = /chrome/i.test(navigator.userAgent),
void(s && !i && document.documentElement.classList.add("safari"))
),
isHuawei: void(
/HUAWEICLT/i.test(navigator.userAgent) && document.documentElement.classList.add("huawei")
),
isUCBrowser: void(
/UCBrowser/i.test(navigator.userAgent) && document.documentElement.classList.add("ucbrowser")
),
winSize: (
s = "Netscape" === navigator.appName,
i = -1 !== navigator.appVersion.indexOf("Mac"),
t = -1 !== navigator.userAgent.indexOf("Safari"),
e = -1 !== navigator.userAgent.indexOf("Chrome"),
s && !i && t && !e
? 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 (
t
) {
return window.setTimeout(t, 1e3 / 60)
},
cancelAFrame: window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.webkitCancelRequestAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || window.msCancelAnimationFrame || function (
t
) {
window.clearTimeout(t)
},
isObject: function (t) {
return "object" == typeof t && null !== t && t.constructor && t.constructor === Object
},
def: function () {
for (var t = [], e = arguments.length; e--;)
t[e] = arguments[e];
for (var i = Object(t[0]), s = 1; s < t.length; s += 1) {
var a = t[s];
if (null != a)
for (var n = Object.keys(Object(a)), r = 0, o = n.length; r < o; r += 1) {
var l = n[r],
h = Object.getOwnPropertyDescriptor(a, l);
void 0 !== h && h.enumerable && (
this.isObject(i[l]) && this.isObject(a[l])
? this.def(i[l], a[l])
: !this.isObject(i[l]) && this.isObject(a[l])
? (i[l] = {}, this.def(i[l], a[l]))
: i[l] = a[l]
)
}
}
return i
},
convertArray: function (t) {
return Array
.prototype
.slice
.call(t)
},
getOffset: function (t) {
return {
top: t
.getBoundingClientRect()
.top + window.pageYOffset,
bottom: t
.getBoundingClientRect()
.bottom + window.pageYOffset
}
},
getScroll: function () {
var t = window.pageYOffset;
return {
top: t,
bottom: t + window.innerHeight
}
},
getViewPort: function () {
var t = window,
e = "inner";
return "innerWidth" in window || (
e = "client",
t = document.documentElement || document.body
), {
width: t[e + "Width"],
height: t[e + "Height"]
}
},
getCurrentDevice: function () {
var t = UTILS
.getViewPort()
.width;
return 1024 <= t
? "desktop"
: t < 1024 && 768 <= t
? "tablet"
: "mobile"
},
isInVerticalViewPort: function (t) {
t = t.getBoundingClientRect();
return t.top - 200 <= UTILS
.getViewPort()
.height && 0 <= t.bottom
},
isInHorizontalViewPort: function (t) {
t = t.getBoundingClientRect();
return t.left - 200 <= UTILS
.getViewPort()
.width && 0 <= t.right + 200
},
isVerticalVisible: function (t) {
return UTILS.isInVerticalViewPort(t) && !!(
t.offsetWidth || t.offsetHeight || t.getClientRects().length
)
},
isHorizontalVisible: function (t) {
return UTILS.isInHorizontalViewPort(t) && !!(
t.offsetWidth || t.offsetHeight || t.getClientRects().length
)
},
setCookie: function (t, e, i) {
var s = new Date;
s.setTime(s.getTime() + 60 * i * 60 * 24 * 1e3),
document.cookie = t + "=" + e + "; exprires=" + s.toUTCString() + "; path=/"
},
getCookie: function (t) {
t = document
.cookie
.match("(^|;) ?" + t + "=([^;]*)(;|$)");
return t
? t[2]
: null
},
triggerEvent: function (t, e, i, s, a) {
var n,
i = i || null,
s = s || !1,
a = a || !0;
null == i
? (n = document.createEvent("HTMLEvents")).initEvent(e, s, a)
: (n = document.createEvent("CustomEvent")).initCustomEvent(e, s, a, i),
t.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 (t) {
var e;
document
.documentElement
.classList
.contains("isTouchDevice") || (
this.popupEl = t || null,
this.scrollFlag = !0,
this.currentPos = window.pageYOffset || document.documentElement.scrollTop,
t = window.innerWidth - document.documentElement.clientWidth,
e = 0 < this.currentPos
? "-" + this.currentPos + "px"
: 0,
document.body.style.position = "fixed",
document.body.style.width = "100%",
document.body.style.top = e,
document.body.style.boxSizing = "border-box",
document.body.style.paddingRight = t + "px",
document.documentElement.style.overflow = "hidden",
null !== this.popupEl && (this.popupEl.style.paddingRight = t + "px")
)
},
closest: function (t, e) {
do {
if (t == document.documentElement)
return null;
if (
t.matches
? t.matches(e)
: t.msMatchesSelector(e)
)
return t
} while (null !== (t = t.parentElement || t.parentNode) || 1 === t.nodeType);
return null
},
onPopupAccessibility: function (t) {
t.setAttribute("aria-hidden", !0),
t.setAttribute("tabindex", -1);
for (
var e = t.querySelectorAll("a, button, input, select, iframe"),
i = 0;
i < e.length;
i++
) {
var s = e[i].getAttribute("aria-hidden"),
a = e[i].getAttribute("tabindex");
null != s && null == e[i].getAttribute("data-prev-aria-hidden") && e[i].setAttribute(
"data-prev-aria-hidden",
s
),
null != a && null == e[i].getAttribute("data-prev-tabindex") && e[i].setAttribute(
"data-prev-tabindex",
a
),
e[i].setAttribute("tabindex", -1),
e[i].setAttribute("aria-hidden", !0)
}
},
offPopupAccessibility: function (t) {
t.removeAttribute("aria-hidden"),
t.removeAttribute("tabindex");
for (
var e = t.querySelectorAll("a, button, input, select, iframe"),
i = 0;
i < e.length;
i++
) {
var s = e[i].getAttribute("data-prev-aria-hidden"),
a = e[i].getAttribute("data-prev-tabindex");
null != s
? e[i].setAttribute("aria-hidden", s)
: e[i].removeAttribute("aria-hidden"),
null != a
? e[i].setAttribute("tabindex", a)
: e[i].removeAttribute("tabindex"),
e[i].removeAttribute("data-prev-aria-hidden"),
e[i].removeAttribute("data-prev-tabindex")
}
},
onAccessibility: function (t) {
if (!document.documentElement.classList.contains("is-layer-popup-opened")) {
t.setAttribute("aria-hidden", !0),
t.setAttribute("tabindex", -1);
for (
var e = t.querySelectorAll("a, button, input, select, iframe"),
i = 0;
i < e.length;
i++
)
e[i].setAttribute("tabindex", -1),
e[i].setAttribute("aria-hidden", !0)
}
},
offAccessibility: function (t) {
if (!document.documentElement.classList.contains("is-layer-popup-opened")) {
t.removeAttribute("aria-hidden"),
t.removeAttribute("tabindex");
for (
var e = t.querySelectorAll("a, button, input, select, iframe"),
i = 0;
i < e.length;
i++
)
e[i].removeAttribute("tabindex"),
e[i].removeAttribute("aria-hidden")
}
},
extend: function (e, i) {
return Object
.keys(i)
.forEach(function (t) {
e[t] = i[t]
}),
e
},
getHeight: function (t) {
var e,
i,
s;
return t
? (
e = (i = window.getComputedStyle(t)).display,
i = parseInt(i.maxHeight),
s = 0,
"none" != e && 0 != i
? t.offsetHeight
: (
t.style.position = "absolute",
t.style.visibility = "hidden",
t.style.display = "block",
s = t.offsetHeight,
t.style.display = "",
t.style.position = "",
t.style.visibility = "",
s
)
)
: 0
},
setLastActiveItem: function (t) {
this.lastActiveItem = t || null
},
getLastActiveItem: function () {
return null != this.lastActiveItem
? this.lastActiveItem
: null
},
isRTL: function () {
return document
.documentElement
.classList
.contains("rtl")
},
checkRegion: function () {
for (
var t = document.getElementsByTagName("meta"),
e = "",
i = 0;
i < t.length;
i++
)
if ("sitecode" == t[i].getAttribute("name"))
return e = t[i].getAttribute("content");
if ("" == e)
return -1 < document
.location
.pathname
.indexOf("global")
? "global"
: "jp"
},
isLowNetwork: function () {
var t = "___GALAXY_SPEED";
return null != UTILS.getCookie(t) && null != UTILS.getCookie(t) && (
"L" == UTILS.getCookie(t) || "H" != UTILS.getCookie(t) && void 0
)
},
getQueryString: function (t) {
var e = (s = location.href).indexOf("?") + 1,
i = -1 < s.indexOf("#")
? s.indexOf("#") + 1
: s.length;
if (0 == e)
return "";
for (
var s = (s = s.substring(e, i)).split("&"),
a = "",
n = 0;
n < s.length;
n++
) {
var r = s[n].split("=");
if (2 != r.length)
break;
r[0] == t && (a = r[1]);
break
}
return a
},
customParallax: function (t) {
var e = t.mode || "center",
i = t.delay || 0,
s = t.ease || "Power0.easeNone",
a = t.transZ || 0,
n = t.duration || .3,
r = t.distance || 0,
o = t.correction || 0,
l = t.windowCorrection
? window.innerHeight * t.windowCorrection
: 0,
h = t.direction || 1,
d = t.activeElement,
c = t.targetElement || d,
u = t.wrapperElement || d,
t = t.unit || "px",
p = window.pageYOffset,
m = window.pageYOffset + window.innerHeight,
d = d.getBoundingClientRect(),
v = p + u
.getBoundingClientRect()
.top,
u = v + u
.getBoundingClientRect()
.height,
f = window.innerHeight + d.height + 2 * l,
g = "center" == e
? d.top - (window.innerHeight - d.height) / 2
: d.top - window.innerHeight;
"px" == t && (r = d.height * r / 100),
v <= m + l && p - l <= u && TweenMax.to(c, n, {
y: o + g * (
"center" == e
? 2 * r
: r
) / f * h + t,
z: a,
ease: s,
delay: i
})
},
getNavHeight: function () {
var t,
e,
i = 0,
s = document.querySelector(".pd-g-header-navigation") || document.querySelector(
"#subnav"
) || document.querySelector(".sticky-menu") || document.querySelector(
".pd-g-floating-nav"
);
return i = s
? s
.classList
.contains("pd-g-header-navigation")
? (
e = (t = s.querySelector(".pd-header-navigation")).querySelector(".pd-header-navigation__menu-wrap"),
t.clientHeight + e.clientHeight
)
: s.clientHeight
: i
},
isBrokenFixed: function () {
var t = window.innerWidth,
e = window.innerHeight,
i = !1;
return document
.documentElement
.classList
.remove("is-broken-fixed"),
1440 <= t && e <= 540 || t <= 810 && e / t < .5277 || t / window.outerWidth < .4 || e < UTILS.MIN_VIEW_HEIGHT
? (document.documentElement.classList.add("is-broken-fixed"), i = !0)
: document
.documentElement
.classList
.remove("is-broken-fixed"),
i
},
isFullAnimationBrokenFixed: () => {
var t = window.innerWidth,
e = window.innerHeight,
i = !!UTILS.isTouchDevice && window
.matchMedia("(orientation: landscape)")
.matches;
let s = !1;
return !!UTILS.isTouchDevice && !window
.matchMedia("(orientation: landscape)")
.matches && e / t < 1.5 || i || e < 700
? (document.documentElement.classList.add("is-animation-broken-fixed"), s = !0)
: document
.documentElement
.classList
.remove("is-animation-broken-fixed"),
s
},
isTouchDevice: (
(s = "ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch)
? document.documentElement.classList.add("isTouchDevice")
: document.documentElement.classList.add("isNotTouchDevice"),
s
),
isIEorEdge: function () {
var t,
e = navigator
.userAgent
.toLowerCase();
if ("Microsoft Internet Explorer" == navigator.appName)
t = "msie ";
else if (-1 < e.search("trident"))
t = "trident/.*rv:";
else {
if (!(-1 < e.search("edge/")))
return -1;
t = "edge/"
}
return null != new RegExp(
t + "([0-9]{1,})(\\.{0,}[0-9]{0,1})"
).exec(e)
? (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 (t) {
document.documentElement.style.paddingRight = t + "px"
},
off: function () {
this.barWidth();
this
.el
.removeClass(this.className),
this
.el
.removeClass("hive-layer-scroll-lock"),
this.run(0)
},
on: function () {
var t = this.barWidth();
this
.el
.addClass(this.className),
this.run(t)
}
}
},
MIN_VIEW_HEIGHT: 400,
RESPONSIVE: {
PC: {
NAME: "pc",
WIDTH: 1440
},
TABLET: {
NAME: "tablet",
WIDTH: 1024
},
MOBILE: {
NAME: "mobile",
WIDTH: 767
}
}
};
var t,
e,
i,
s
}();
WATCH6.UTILS = UTILS;
var SCROLLER = function () {
function e(t) {
this.initialize = !0,
this.opts = t,
this.correction = t.correction || 0,
this.removeCorrection = t.removeCorrection || 0,
this.trackHeight = t.trackHeight || 0,
this.activeClass = t.activeClass,
this.activeCallbackClass = t.activeCallbackClass || "callback-active",
this.useStrictMode = null == t.useStrictMode || t.useStrictMode,
this.useFixed = t.useFixed || !1,
this.useFixedStyle = null == t.useFixedStyle || t.useFixedStyle,
this.useSticky = t.useSticky || !1,
this.useStickyStyle = null == t.useStickyStyle || t.useStickyStyle,
this.useViewportOver = t.useViewportOver || !0,
this.activeVisibility = t.activeVisibility || "before",
this.activeType = t.activeType
? this.opts.activeType
: "reverse",
this.autoHeight = null == t.autoHeight || t.autoHeight,
this.offsetY = t.offsetY || 0,
this.resize = null == t.resize || t.resize,
this.resizeTiming = null != t.resizeTiming && t.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 t = e.prototype;
return t.bindEvent = function () {
var t = this,
e = null;
this.elementHandler(),
this.resize && (
this.addEventList = function () {
t.resizeTiming
? (clearTimeout(e), e = setTimeout(function () {
t.windowHeight = window.innerHeight,
t.elementHandler()
}, t.resizeTiming))
: (t.windowHeight = window.innerHeight, t.elementHandler())
},
window.addEventListener("resize", this.addEventList)
),
this.opts.IEScroll && this
.utilList
.IEScrollHandler
.call(this)
},
t.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
},
t.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 (t) {
t.preventDefault();
var t = t.wheelDelta,
e = window.pageYOffset;
window.scrollTo(0, e - t)
}),
this.body.addEventListener("keydown", function (t) {
var e = window.pageYOffset;
switch (t.which) {
case 38:
t.preventDefault(),
window.scrollTo(0, e - 40);
break;
case 40:
t.preventDefault(),
window.scrollTo(0, e + 40);
break;
default:
return
}
})
)
},
getScroll: function () {
var t = window.pageYOffset;
return {
top: t,
bottom: t + this.windowHeight
}
},
getOffset: function (t) {
return {
top: t
.getBoundingClientRect()
.top + window.pageYOffset,
bottom: t
.getBoundingClientRect()
.bottom + window.pageYOffset
}
},
getUserAgent: function () {
return navigator.userAgent
}
},
t.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 t,
e;
this.trackHeight <= 1 || (
this.trackElement.style.height = "",
t = 0 == this.trackElement.clientHeight,
e = this.windowHeight * this.trackHeight,
t && (this.trackElement.style.height = this.windowHeight + "px"),
this.trackElement.style.height = e + "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"
)
}
},
t.getWheelDirection = function () {
this.winScrollTop >= this.oldWinScrollTop
? this.wheelDirection = "down"
: this.wheelDirection = "up",
this.oldWinScrollTop = this.winScrollTop
},
t.getProgress = function () {
var t = this
.utilList
.getOffset
.call(this, this.trackElement)
.top - this.windowHeight * this.correction,
e = this.useFixed || this.useSticky
? Math.abs(this.trackElement.clientHeight - this.windowHeight)
: this.useViewportOver
? this.trackElement.clientHeight + this.windowHeight
: this.trackElement.clientHeight,
i = this.winScrollTop - t,
t = this.winScrollBottom - t,
i = this.useFixed || this.useSticky
? i / e * 100
: t / e * 100;
return this.useStrictMode
? this.progress = Math.floor(i) < 0
? 0
: 100 < Math.floor(i)
? 100
: Math.floor(i)
: this.progress = i,
this.getWheelDirection(),
this.progress
},
t.getFixedState = function () {
0 < this.progress && this.progress < 100
? this.isFixedArea = !0
: this.isFixedArea = !1
},
t.trackAnimation = function (t) {
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(),
t && (
this.oldPregress !== this.progress && t.call(this),
this.oldPregress = this.progress
)
)
},
t.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 t() {
l(),
r()
}
function e() {
h(),
o()
}
var i = this,
s = this.activeVisibility,
a = this.activeType,
n = this.windowHeight / 2,
r = function () {
if (i.activeClass)
if ("object" == typeof i.activeClass)
for (var t = i.activeClass.length, e = 0; e < t; e++)
i
.activeElement
.classList
.contains(i.activeClass[e]) || i
.activeElement
.classList
.add(i.activeClass[e]);
else
i
.activeElement
.classList
.contains(i.activeClass) || i
.activeElement
.classList
.add(i.activeClass)
},
o = function () {
if ("object" == typeof i.activeClass)
for (var t = i.activeClass.length, e = 0; e < t; e++)
i
.activeElement
.classList
.contains(i.activeClass[e]) && i
.activeElement
.classList
.remove(i.activeClass[e]);
else
i
.activeElement
.classList
.contains(i.activeClass) && i
.activeElement
.classList
.remove(i.activeClass);
i
.activeElement
.classList
.contains(i.activeCallbackClass) && i
.activeElement
.classList
.remove(i.activeCallbackClass)
},
l = function () {
i
.activeElement
.classList
.contains(i.activeCallbackClass) || i.opts.activeCallback && (
i.opts.activeCallback.call(i),
i.activeElement.classList.add(i.activeCallbackClass)
)
},
h = function () {
i
.activeElement
.classList
.contains(i.activeCallbackClass) && i.opts.endCallback && i
.opts
.endCallback
.call(i)
};
switch (this.getWheelDirection(), s) {
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
) && (t(), 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
) && (t(), this.activeStatus = !0)
}
switch (a) {
case "reverse":
"visible" == s
? (
this.activeStatus && "down" == this.wheelDirection && this.winScrollTop > this.elementOffsetBottom || this.activeStatus && "up" == this.wheelDirection && this.winScrollBottom < this.elementOffsetTop
) && (e(), this.activeStatus = !1)
: (
this.activeStatus && this.winScrollTop < this.elementOffsetTop && this.winScrollBottom < this.elementOffsetTop || this.activeStatus && this.winScrollTop > this.elementOffsetBottom && this.winScrollBottom > this.elementOffsetBottom
) && (e(), this.activeStatus = !1);
break;
case "oneWay":
"visible" == s
? this.activeStatus && this.winScrollBottom < this.elementOffsetTop + n && (
e(),
this.activeStatus = !1
)
: this.activeStatus && this.winScrollTop < this.elementOffsetTop && this.winScrollBottom < this.elementOffsetTop && (
e(),
this.activeStatus = !1
)
}
}
},
t.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
},
t.destroy = function (t) {
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 (t) {
return new e(t)
}
}();
!function () {
"use strict";
window.WATCH6 = window.WATCH6 || {};
const u = WATCH6.UTILS;
WATCH6.ImageLoader = class {
constructor(t = container, e) {
e = {
el: t,
lazyClass: ".js-img-src",
lazyCompleteClass: "load-complete",
startLazyClass: e.startLazyClass || ".js-start-img-src",
endLazyClass: e.endLazyClass || ".js-end-img-src",
responsiveClass: e.responsiveClass || ".js-res-img",
loadOption: e.loadOption,
visiblePoint: e.visiblePoint || 0,
useDefaultImg: e.useDefaultImg,
resizeStart: null
};
this.opts = e,
this.classes = e.classes,
this.el = document.querySelector(t),
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 t = Array.from(this.el.querySelectorAll(this.opts.lazyClass));
var e = Array.from(this.el.querySelectorAll(this.opts.startLazyClass)),
e = t.concat(e);
this.lazyImages = e,
this.lazyLength = e.length
}
getResponsiveImage() {
var t = this
.el
.querySelectorAll(this.opts.responsiveClass);
this.responsiveImages = t,
this.responsiveLength = t.length
}
bindEvents() {
window.addEventListener("load", this.onLoadHandler.bind(this)),
window.addEventListener("scroll", this.lazyEvent.bind(this)),
this.responsiveCheck && window.addEventListener(
"resize",
this.onResizeHandler.bind(this)
)
}
onLoadHandler() {
this.responsiveHandler(),
this.lazyEvent()
}
onResizeHandler() {
clearTimeout(this.opts.resizeStart),
this.opts.resizeStart = setTimeout(() => {
this.responsiveHandler(),
this.lazyEvent()
}, 80)
}
lazyEvent() {
this.setLazyImage(),
this.lazyLength === this.lazyCompleteLength && window.removeEventListener(
"scroll",
this.lazyEvent.bind(this)
)
}
responsiveHandler() {
this.windowWidth = window.innerWidth;
var a = this.opts.loadOption.length;
for (let s = 0; s < a; s++) {
let t = s + 1,
e = t == a
? 0
: this
.opts
.loadOption[t]
.resolution,
i = !1;
(
i = (0 == s || this.windowWidth <= this.opts.loadOption[s].resolution) && this.windowWidth > e
) && this
.opts
.loadOption[s]
.attribute !== this.oldAttr && (
this.targetAttr = this.opts.loadOption[s].attribute,
this.oldAttr = this.targetAttr,
this.attrIndex = s,
this.dynamicCallCount = 0,
this.setResponsiveImage()
)
}
}
setResponsiveImage(i) {
if (i)
for (let e = 0; e < i.length; e++) {
var s = i[e];
let t = i[e].getAttribute(this.targetAttr);
t = t || this.findImageHandler(s),
i[e]
.classList
.contains(this.opts.lazyCompleteClass) || (
i[e].setAttribute("src", t),
i[e].classList.add(this.opts.lazyCompleteClass)
)
}
else
for (let i = 0; i < this.responsiveLength; i++) {
let t = this.responsiveImages[i],
e = t.getAttribute(this.targetAttr);
e = e || this.findImageHandler(t),
t
.classList
.contains(this.opts.lazyCompleteClass) && t.setAttribute("src", e)
}
}
checkCompleteImage() {
var t = this
.el
.querySelectorAll("." + this.opts.lazyCompleteClass);
this.lazyCompleteLength = t.length
}
setDefaultImage() {
for (var t = 0; t < this.lazyLength; t++)
this
.lazyImages[t]
.setAttribute(
"src",
"data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH/C1hNUCBEYXRhWE1QAz94cAAh+QQF" +
"AAAAACwAAAAAAQABAAACAkQBADs="
)
}
setLazyImage() {
this.windowHeight = window.innerHeight;
for (let d = 0; d < this.lazyLength; d++) {
let e = this.lazyImages[d],
t = this.windowHeight * this.opts.visiblePoint,
i = u
.getScroll
.call(this)
.top - t,
s = u
.getScroll
.call(this)
.bottom + t,
a = u
.getOffset
.call(this, e)
.top,
n = u
.getOffset
.call(this, e)
.bottom,
r = this
.opts
.lazyClass
.split("."),
o = r[r.length - 1],
l = this
.opts
.startLazyClass
.split("."),
h = l[l.length - 1];
if ((a < s && i <= a || i < n && n < s || i < a && n < s || a < i && s < n) && null != e.offsetParent) {
let t = e.getAttribute(this.targetAttr);
var c;
t = t || this.findImageHandler(e),
e
.classList
.contains(this.opts.lazyCompleteClass) || (
e.setAttribute("src", t),
c = () => {
1 == this
.opts
.startLazyClass
.split(" ")
.length && e
.classList
.remove(h),
1 == this
.opts
.lazyClass
.split(" ")
.length && e
.classList
.remove(o),
this.checkCompleteImage(),
e.removeEventListener("load", c)
},
e.addEventListener("load", c),
e.classList.add(this.opts.lazyCompleteClass)
)
}
}
}
findRemainingImageAttr(t) {
for (var e = this.opts.loadOption.length, i = 0; i < e; i++) {
var s = t.getAttribute(this.opts.loadOption[i].attribute);
if (s)
return s
}
}
findNextImageAttr(e) {
for (let t = this.attrIndex; 0 <= t; t--) {
var i = e.getAttribute(this.opts.loadOption[t].attribute);
if (i)
return i;
if (0 == t && null == i)
return this.findRemainingImageAttr(e)
}
}
findImageHandler(t) {
return 0 !== this.attrIndex
? this.findNextImageAttr(t)
: this.findRemainingImageAttr(t)
}
}
}(),
function () {
"use strict";
window.WATCH6 = window.WATCH6 || {};
const t = WATCH6.UTILS,
e = t.RESPONSIVE;
WATCH6.VideoLoader = class {
constructor(t = container, e) {
e = {
el: t,
lazyClass: e.lazyClass || ".js-video-src",
responsiveClass: e.responsiveClass || ".js-res-video",
imageLazyCompleteClass: "load-complete",
imageEndLazyClass: e.imageEndLazyClass || ".js-end-img-src",
notLoadElement: e.notLoadElement || [],
loadOption: e.loadOption,
visiblePoint: e.visiblePoint || 0,
resizeStart: null,
classes: {
loaded: "loaded",
ended: "ended"
}
};
this.opts = e,
this.classes = e.classes,
this.el = document.querySelector(t),
this.init()
}
init() {
this.initOpts(),
this.getLazyVideo(),
this.getResponsiveVideo(),
this.bindEvents()
}
initOpts() {
this.getCurrentDevice();
var t = "mobile" !== this.currentDevice
? 0
: 1;
this.prevVideoSrc = "",
this.targetAttr = this
.opts
.loadOption[t]
.attribute,
this.responsiveCheck = this.opts.loadOption,
this.videoCallStack = []
}
getLazyVideo() {
let t = Array
.from(this.el.querySelectorAll(this.opts.lazyClass))
.filter(e => {
e.isVideoInit = !1;
{
let t = 0;
if (t < this.opts.notLoadElement.length)
return !e.closest(this.opts.notLoadElement[t])
}
});
t = t.filter(t => {
if (t.querySelector("video"))
return t
}),
this.lazyVideos = t,
this.lazyLength = t.length
}
getResponsiveVideo() {
var t = Array
.from(this.el.querySelectorAll(this.opts.responsiveClass))
.filter(
e => {{let t=0;if(t
= 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
}
onLoadHandler() {
this.getCurrentDevice(),
this.responsiveHandler(),
this.lazyEvent()
}
onResizeHandler() {
clearTimeout(this.opts.resizeStart),
this.opts.resizeStart = setTimeout(() => {
this.getCurrentDevice(),
this.responsiveHandler(),
this.lazyEvent()
}, 80)
}
lazyEvent() {
this.setLazyVideo(),
this.lazyLength === this.lazyCompleteLength && window.removeEventListener(
"scroll",
this.lazyEvent.bind(this)
)
}
responsiveHandler() {
this.windowWidth = window.innerWidth;
var a = this.opts.loadOption.length;
for (let s = 0; s < a; s++) {
let t = s + 1,
e = t == a
? 0
: this
.opts
.loadOption[t]
.resolution,
i = !1;
(
i = (0 == s || this.windowWidth <= this.opts.loadOption[s].resolution) && this.windowWidth > e
) && this
.opts
.loadOption[s]
.attribute !== this.oldAttr && (
this.targetAttr = this.opts.loadOption[s].attribute,
this.oldAttr = this.targetAttr,
this.attrIndex = s,
this.setResponsiveVideo()
)
}
}
setResponsiveVideo() {
for (let t = 0; t < this.responsiveLength; t++) {
const i = this.responsiveVideos[t],
s = i.querySelector("video"),
a = i.getAttribute(this.targetAttr);
i
.classList
.contains(this.classes.loaded) && i.isVideoInit && s
.querySelectorAll("source")
.forEach(t => {
const e = t.getAttribute("type");
-1 < e.indexOf("webm") && (t.src = a + ".webm"),
-1 < e.indexOf("mp4") && (t.src = a + ".mp4"),
s.load(),
s.addEventListener("canplaythrough", () => {
window.setTimeout(() => {
i
.classList
.add(this.classes.loaded)
}, 500),
this.checkCompleteVideo(),
this.getEndImage(i)
}, {
once: !0
})
})
}
}
setLazyVideo() {
for (let t = 0; t < this.lazyLength; t++) {
var e = window.pageYOffset,
i = e + window.innerHeight;
const n = this.lazyVideos[t];
var s = n.getBoundingClientRect(),
a = e + s.top,
s = e + s.bottom;
i > a - window.innerHeight * (
0 != window.pageYOffset
? this.opts.visiblePoint
: 0
) && e < s + window.innerHeight * (
0 != window.pageYOffset
? this.opts.visiblePoint
: 0
) && !n.isVideoInit && this
.videoCallStack
.indexOf(t) < 0 && (this.videoCallStack.push(t), this.setVideoSrc())
}
}
setVideoSrc() {
var t = this.videoCallStack[0];
const e = this.lazyVideos[t],
i = e.querySelector("video"),
s = e.getAttribute(this.targetAttr);
t = this
.opts
.lazyClass
.split(".");
const a = t[t.length - 1];
t = s;
this.prevVideoSrc !== t && (
i.querySelectorAll("source").forEach(t => {
const e = t.getAttribute("type");
-1 < e.indexOf("webm") && (t.src = s + ".webm"),
-1 < e.indexOf("mp4") && (t.src = s + ".mp4")
}),
i.load(),
i.addEventListener("canplaythrough", () => {
window.setTimeout(() => {
e
.classList
.add(this.classes.loaded)
}, 500),
1 == this
.opts
.lazyClass
.split(" ")
.length && e
.classList
.remove(a),
this.checkCompleteVideo(),
this.getEndImage(e),
this
.videoCallStack
.splice(0, 1),
0 < this.videoCallStack.length && this.setVideoSrc()
}, {
once: !0
}),
e.isVideoInit = !0
),
this.prevVideoSrc = t
}
getEndImage(t) {
var e = "desktop" === this.currentDevice
? "data-src-pc"
: "tablet" === this.currentDevice
? "data-src-tablet"
: "data-src-mobile";
const i = t.querySelector(this.opts.imageEndLazyClass);
t = this
.opts
.imageEndLazyClass
.split(".");
const s = t[t.length - 1];
i && !i
.classList
.contains(this.opts.imageLazyCompleteClass) && (
i.src = i.getAttribute(e),
i.addEventListener("load", () => {
1 == this
.opts
.imageEndLazyClass
.split(" ")
.length && i
.classList
.remove(s),
i
.classList
.add(this.opts.imageLazyCompleteClass)
}, {
once: !0
})
)
}
checkCompleteVideo() {
var t = Array
.from(this.el.querySelectorAll("." + this.classes.loaded))
.filter(
e => {{let t=0;if(t= 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
}
getEndImage() {
var t = "desktop" === this.currentDevice
? "data-src-pc"
: "tablet" === this.currentDevice
? "data-src-tablet"
: "data-src-mobile";
const e = this
.videoElement
.querySelector(this.opts.imageEndLazyClass);
var i = this
.opts
.imageEndLazyClass
.split(".");
const s = i[i.length - 1];
e && (e.src = e.getAttribute(t), e.addEventListener("load", () => {
1 == this
.opts
.imageEndLazyClass
.split(" ")
.length && e
.classList
.remove(s),
e
.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(t) {
if (t === this.videoElement) {
t = "mobile" !== this.currentDevice
? "data-media-pc"
: "data-media-mo";
const i = this
.videoElement
.getAttribute(t);
t = i;
this.prevVideoSrc !== t && (
this.videoElement.playState = !1,
this.video.querySelectorAll("source").forEach(t => {
const e = t.getAttribute("type");
-1 < e.indexOf("webm") && (t.src = i + ".webm"),
-1 < e.indexOf("mp4") && (t.src = i + ".mp4"),
this
.video
.load()
}),
this.videoElement.classList.remove(this.classes.playing),
this.videoElement.classList.remove(this.classes.paused),
this.video.addEventListener("canplaythrough", () => {
d.isLowNetwork() || this.onPlay(),
this.getEndImage()
}, {
once: !0
})
),
this.prevVideoSrc = t
}
}
onLoad(t) {
if (t === this.videoElement) {
t = "mobile" !== this.currentDevice
? "data-media-pc"
: "data-media-mo";
const i = this
.videoElement
.getAttribute(t);
this.videoElement.playState = !1,
this
.video
.querySelectorAll("source")
.forEach(t => {
const e = t.getAttribute("type");
-1 < e.indexOf("webm") && (t.src = i + ".webm"),
-1 < e.indexOf("mp4") && (t.src = i + ".mp4"),
this
.video
.load()
}),
this
.video
.addEventListener("canplaythrough", () => {
d.isLowNetwork() || this.onPlay(),
this.getEndImage()
}, {
once: !0
})
}
}
onPlay(t) {
var e = () => {
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.updateController(),
this.outCallback("updatePlayState", !0)
}, 350),
this.video.addEventListener("ended", this.updatePlayEnded.bind(this), {
once: !0
})
)
};
t && t !== this.videoElement || e()
}
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(t) {
var e = () => {
this
.video
.pause(),
this.video.currentTime = 0,
this.videoElement.playState = !1,
this.autoPlay && (this.videoElement.autoPlayState = !1),
this
.videoElement
.classList
.remove(this.classes.ended),
this
.videoElement
.classList
.remove(this.classes.playing),
this
.videoElement
.classList
.remove(this.classes.paused),
this.updateController()
};
t && t !== this.videoElement || e()
}
onCanplayThrough() {
var t = this
.opts
.videoLazyClass
.split("."),
t = t[t.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(t),
this.isCanplay = !0,
this.onScrollHandler(),
this.isCanplay = !1
}
onClickController(t) {
t.preventDefault(),
this.videoElement.playState
? this.onPause()
: this.onPlay()
}
updatePlayEnded() {
this.onPause()
}
updateController() {
var t;
this.useController && (
this.videoElement.playState
? this.videoController.classList.add(this.classes.isPaused)
: this.videoController.classList.remove(this.classes.isPaused),
t = {
el: this.videoController,
playState: this.videoElement.playState
},
this.outCallback("updateController", t)
)
}
onScrollHandler() {
if (!this.videoElement.closest(".cm-layer")) {
var t = window.scrollY,
e = t > this.lastScrollY
? "down"
: "up",
i = d.getHeight(this.videoElement),
i = (d.winSize().h, .5 * i),
s = d
.getScroll()
.top,
a = d
.getScroll()
.bottom,
n = d
.getOffset(this.videoElement)
.top,
r = d
.getOffset(this.videoElement)
.bottom - i;
const h = this
.videoElement
.classList
.contains(this.classes.playing) && this.videoElement.playState;
var o = this
.videoElement
.classList
.contains(this.classes.paused) && !this.videoElement.playState,
l = this
.videoElement
.classList
.contains(this.classes.ended) && !this.videoElement.playState;
if (r + i < s)
this.autoPlay && (
this.videoElement.autoPlayState
? (h || o) && this.onEnded()
: this.videoElement.classList.add(this.classes.ended)
);
else if (a < n)
this.autoPlay && this.videoElement.autoPlayState && (h || o || l) && this.onReset();
else if (r < a && s < n) {
const h = this.isCanplay || "down" == e;
!h || !this.autoPlay || this.videoElement.playState || this.videoElement.autoPlayState || d.isLowNetwork() || this.onPlay()
}
this.lastScrollY = t
}
}
onResponsiveChange() {
window.setTimeout(() => {
this.isCanplay = !0,
this.onReset(),
this.onScrollHandler(),
this.isCanplay = !1
}, 20)
}
onResizeHandler() {
d
.winSize()
.w !== this.winWidth && (
this.winWidth = d.winSize().w,
null == this.opts.resizeStart && (this.opts.resizeStart = this.winWidth, this.resizeAnimateFunc()),
window.clearTimeout(this.resizeEndTime),
this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150)
)
}
resizeAnimateFunc() {
this.setLayout(),
this.resizeRequestFrame = d
.requestAFrame
.call(window, this.resizeAnimateFunc.bind(this))
}
resizeEndFunc() {
this.opts.resizeStart = null,
d
.cancelAFrame
.call(window, this.resizeRequestFrame)
}
setLayout() {
this.winWidth >= t.TABLET.WIDTH
? this.currentDevice = "desktop"
: this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH
? this.currentDevice = "tablet"
: this.currentDevice = "mobile",
this.currentDevice !== this.prevDevice && this.onResponsiveChange(),
this.prevDevice = this.currentDevice
}
outCallback(t, e) {
t = this
.opts
.on[t];
null != t && t(e)
}
}
}(),
function () {
"use strict";
t = !(r = {}),
l = e = null,
s = function () {
a(),
n(),
UTILS.isLowNetwork() && document
.documentElement
.classList
.add("low_network"),
document
.documentElement
.classList
.add("load"),
window.removeEventListener("load", s)
},
a = function () {
t = 1024 <= window.innerWidth
? "desktop"
: 768 <= window.innerWidth && window.innerWidth < 1024
? "tablet"
: "mobile",
clearTimeout(r.resizeTimeout),
r.resizeTimeout = setTimeout(function () {
UTILS.isBrokenFixed()
}, 100),
t != e && (
document.documentElement.classList.add(t),
document.documentElement.classList.remove(e),
e = t
)
},
n = function () {
for (
var t = window.pageYOffset,
e = t + window.innerHeight,
i = 0;
i < r.allClickables.length;
i++
) {
var s = r.allClickables[i],
a = t + s
.getBoundingClientRect()
.top,
n = t + UTILS.getNavHeight();
n <= a && a <= e
? s.isVisible = !0
: (a < n || e < a) && (s.isVisible = !1)
}
},
o = function (t) {
t.preventDefault(),
t.stopPropagation();
var e = this,
i = parseFloat(this.innerText),
s = document.querySelectorAll("#desc-section li"),
i = document.querySelectorAll("#desc-section li")[i - 1],
a = i.querySelector("span"),
n = a.innerText,
r = (
a.innerHTML = '' + n + " ",
l = t.currentTarget,
function () {
d.call(e),
a.removeEventListener("focusin", r)
}
),
o = function () {
a.innerHTML = n,
a.removeAttribute("tabindex"),
a.removeEventListener("focusout", o)
};
t
.currentTarget
.closest(".cm-layer") && (
t = t.currentTarget.closest(".cm-layer"),
$(t).trigger("closeLayer", !1)
),
a.addEventListener("focusin", r),
a.addEventListener("focusout", o),
i
.querySelector("a")
.focus(),
s.forEach(t => t.classList.remove("is-active")),
i
.classList
.add("is-active")
},
h = function (t) {
var t = t
.target
.closest("li"),
e = t.getAttribute("data-sup"),
i = document.querySelectorAll(".click_sup");
for (let t = 0; t < i.length; t++)
i[t].innerText === e && (d.call(this), l.focus());
var s = l.closest(".cm-layer");
if (s) {
var a = s.id;
const n = s.parentNode,
r = n.querySelector(`[data-layer-target="#${a}"]`);
l.innerText === e && r.focus()
}
t
.classList
.remove("is-active")
},
d = function (t) {
var s;
!document
.documentElement
.classList
.contains("ios") && t && null == t.relatedTarget || (
(s = this).isClicked || this.isVisible || i(this) || setTimeout(function () {
var t = window.pageYOffset,
e = s.getBoundingClientRect(),
i = (window.innerHeight - UTILS.getNavHeight()) / 2,
t = t - UTILS.getNavHeight() + e.top + e.height / 2;
window.scrollTo(0, t - i)
}, 10),
this.isClicked = !1
)
},
i = function (t) {
var t = t.parentNode,
e = t.getAttribute("id");
return "contents" != e && t != document.body && (
!("subnav" != e && !t.classList.contains("sc-s22ultra-popup")) || i(t)
)
},
c = function () {
this.isClicked = !0
};
var r,
t,
e,
l,
s,
a,
n,
o,
h,
d,
i,
c,
u = {
init: function () {
r.resizeTimeout = null,
r.supClicker = document.querySelectorAll("a.click_sup"),
r.supTopBtn = document.querySelectorAll("button.click_disclaimer"),
r.contents = document.getElementById("contents") || document.getElementById(
"content"
),
r.allClickables = r
.contents
.querySelectorAll("a, button, input, select");
var t = 0;
for (
window.addEventListener("load", s),
window.addEventListener("resize", a),
window.addEventListener("scroll", n),
t = 0;
t < r.allClickables.length;
t++
) {
var e = r.allClickables[t];
e.isClicked = !1,
e.isVisible = !1,
e.addEventListener("focusin", d),
e.addEventListener("mousedown", c)
}
for (t = 0; t < r.supClicker.length; t++)
r
.supClicker[t]
.addEventListener("click", o);
for (t = 0; t < r.supTopBtn.length; t++)
r
.supTopBtn[t]
.addEventListener("click", h);
var i = document.documentElement.classList;
"global" == UTILS.checkRegion() || i.contains("mac") || i.contains("safari") || ANIUTIL.scrollController(
{speed: 120, duration: .5}
)
}
};
window.initialize = u
}(),
function (t) {
t.TrapFocus = function () {
"use strict";
var t,
g = void 0,
e = window,
i = e.document,
w = e.jQuery,
s = null,
a = e.WATCH6.UTILS;
function n(t, e) {
if (!(this instanceof n))
return new n(t, e);
var i = {
obj: t,
prevStep: null,
isDestroy: false,
IgnoreUtilFocusChanges: false,
ariaAttr: {
hidden: "aria-hidden",
disabled: "aria-disabled",
modal: "aria-modal"
},
ariaNotHidden: (() => {
return e && e.ariaNotHidden
? e.ariaNotHidden
: []
})(),
classAttr: {
clone: "trapfocus"
},
elAttr: {
tabIndex: "tabindex",
role: "role"
},
customEvent: ".TrapFocus" + (
new Date
).getTime() + Math.random()
};
this.opts = a.def(i, e || {});
if (!(this.obj = w(this.opts.obj)).length)
return;
if (s != null)
s.destroy();
s = this;
this.init()
}
return n.prototype = {
init: function () {
this.initLayout();
this.buildAria();
this.bindEvents(true);
this.loadComponent();
this
.obj
.data("TrapFocus", this)
},
initLayout: function () {
var t = this.opts.ariaAttr;
var e = this.opts.elAttr;
this
.obj
.attr(t.modal, "true");
this
.obj
.attr(e.role, "dialog")
},
buildAria: function () {
var v = this.opts.ariaAttr;
var f = this.opts.elAttr;
var t = "head, script, noscript, link, style, meta";
var e = this.opts.ariaNotHidden.length > 0
? `, ${this
.opts
.ariaNotHidden
.join(",")}`
: "";
a.def(this, {
aria: {
notHidden: Array(t + e),
focusType: [
"A", "BUTTON", "INPUT", "SELECT", "TEXTAREA"
],
dataAttr: {
ariaHidden: "trapfocusariahidden",
ariaDisabled: "trapfocusariadisabled",
tabIndex: "trapfocustabindex",
role: "trapfocusrole"
},
destroy: w.proxy(function () {
var a = this.aria.dataAttr;
var n = this.aria.hiddenEls;
var s = this.aria.focusEls;
var r = this.aria.tabindexEls;
for (var t = 0, e = n.length; t < e; t++)
(function (t) {
var e = n.eq(t),
i = e.data(a.ariaHidden),
s = e.data(a.role);
if (i != g) {
e.attr(v.hidden, i);
e.removeData(a.ariaHidden)
} else
e.removeAttr(v.hidden);
if (s != g) {
e.attr(f.role, s);
e.removeData(a.role)
} else
e.removeAttr(f.role)
})(t);
for (var i = 0, o = s.length; i < o; i++)
(function (t) {
var e = s.eq(t),
i = e.data(a.ariaDisabled);
e.removeAttr(f.tabIndex);
if (i != g) {
e.attr(v.disabled, i);
e.removeData(a.ariaDisabled)
} else
e.removeAttr(v.disabled)
})(i);
for (var l = 0, h = r.length; l < h; l++)
(function (t) {
var e = r.eq(t),
i = e.data(a.tabIndex);
if (i != g) {
e.attr(f.tabIndex, i);
e.removeData(a.tabIndex)
} else
e.removeAttr(f.tabIndex)
})(l);
var d = document.getElementById("teconsent");
if (d) {
var c = d.querySelector("a");
if (c && c.getAttribute("tabindex") === "-1") {
c.setAttribute("tabindex", "0");
c.removeAttribute("aria-disabled")
}
}
}, this),
build: w.proxy(function () {
var i = this;
var t = this.aria.focusType;
var a = this.aria.dataAttr;
var s = this
.obj
.parents();
var n = this
.obj
.siblings()
.not(i.aria.notHidden.join(","));
var r = w("");
var o = w("");
for (var e = 0, l = s.length; e < l; e++)
(function (t) {
var e = s.eq(t);
n = n.add(e.siblings().not(i.aria.notHidden.join(",")))
})(e);
r = r.add(n);
o = o.add(n);
this
.obj
.removeAttr(v.hidden);
for (var h = 0, d = n.length; h < d; h++)
(function (t) {
var e = n.eq(t),
i = e.attr(v.hidden),
s = e.attr(f.role);
if (i != g)
e.data(a.ariaHidden, i);
if (s != g)
e.data(a.role, s);
e.attr(v.hidden, "true");
e.attr(f.role, "none presentation")
})(h);
r = r.add(n.find(t.join(",").toLowerCase()));
for (var c = 0, u = r.length; c < u; c++)
(function (t) {
var e = r.eq(t),
i = e.attr(v.disabled);
if (i != g)
e.data(a.ariaDisabled, i);
e.attr(v.disabled, "true");
setTimeout(() => {
e.attr(f.tabIndex, -1)
})
})(c);
o = o.add(n.find("[" + f.tabIndex + "]"));
for (var p = 0, m = o.length; p < m; p++)
(function (t) {
var e = o.eq(t),
i = e.attr(f.tabIndex);
if (i != g)
e.data(a.tabIndex, i);
e.attr(f.tabIndex, -1)
})(p);
this.aria.hiddenEls = n;
this.aria.focusEls = r;
this.aria.tabindexEls = o
}, this)
}
})
},
changeEvents: function (t) {
var e = [],
i = t.split(" ");
for (var s in i)
e.push(i[s] + this.opts.customEvent);
return e.join(" ")
},
bindEvents: function (t) {
if (t)
w(i).on(this.changeEvents("focusin"), w.proxy(this.trapFocus, this));
else
w(i).off(this.changeEvents("focusin"))
},
focusFirstDescendant: function (t) {
for (var e = 0; e < t.childNodes.length; e++) {
var i = t.childNodes[e];
if (this.attemptFocus(i) || this.focusFirstDescendant(i))
return true
}
return false
},
focusLastDescendant: function (t) {
for (var e = t.childNodes.length - 1; e >= 0; e--) {
var i = t.childNodes[e];
if (this.attemptFocus(i) || this.focusLastDescendant(i))
return true
}
return false
},
isFocusable: function (t) {
if (t.tabIndex > 0 || t.tabIndex === 0 && t.getAttribute("tabIndex") !== null)
return true;
if (t.disabled)
return false;
switch (t.nodeName) {
case "A":
return !!t.href && t.rel != "ignore";
case "INPUT":
return t.type != "hidden" && t.type != "file";
case "BUTTON":
case "SELECT":
case "TEXTAREA":
case "VIDEO":
case "SOURCE":
case "IFRAME":
return true;
default:
return false
}
},
attemptFocus: function (t) {
if (this.opts.isDestroy)
return;
if (!this.isFocusable(t))
return false;
this.opts.IgnoreUtilFocusChanges = true;
try {
t.focus()
} catch (t) {}
this.opts.IgnoreUtilFocusChanges = false;
return document.activeElement === t
},
trapFocus: function (t) {
if (this.opts.isDestroy)
return;
if (this.opts.IgnoreUtilFocusChanges)
return;
var e = document;
this.dynamicComponentFocus()
},
loadComponent: function () {
this.dynamicComponentFocus();
setTimeout(() => {
this.dynamicComponentFocus()
}, 3e3);
this.focusFirstDescendant(this.obj[0]);
this.lastFocus = document.activeElement;
this
.aria
.build()
},
dynamicComponentFocus: function () {
const o = this.opts.ariaAttr;
const l = this.opts.elAttr;
setTimeout(() => {
var t = document.getElementById("QSIFeedbackButton-btn");
var e = document.getElementById("QSIFeedbackButton-close-btn");
var i = document.getElementById("nebula_div_btn");
var s = document.getElementById("spr-live-chat-app");
var a = document.getElementById("teconsent");
if (t) {
var n = t.parentElement;
t.setAttribute(o.disabled, "true");
t.setAttribute(l.tabIndex, "-1");
n.setAttribute(o.disabled, "true");
n.setAttribute(o.hidden, "true");
n.setAttribute(l.tabIndex, "-1");
n.setAttribute(l.role, "none presentation")
}
if (i) {
var r = i.parentElement;
i.setAttribute(o.disabled, "true");
i.setAttribute(l.tabIndex, "0");
r.setAttribute(o.disabled, "true");
r.setAttribute(o.hidden, "true");
r.setAttribute(l.tabIndex, "-1");
r.setAttribute(l.role, "none presentation")
}
if (s) {
s.setAttribute(o.disabled, "true");
s.setAttribute(o.hidden, "true");
s.setAttribute(l.tabIndex, "-1");
s.setAttribute(l.role, "none presentation")
}
if (a && a.hasAttribute("aria-label"))
setTimeout(() => {
var t = a.querySelector("a");
t.setAttribute(l.tabIndex, "-1");
t.setAttribute(o.disabled, "true");
t.setAttribute(o.hidden, "true")
})
})
},
destroy: function () {
s = null;
this.opts.isDestroy = true;
var t = this.opts.ariaAttr;
var e = this.opts.elAttr;
this.bindEvents(false);
this
.aria
.destroy();
this
.obj
.removeAttr(t.modal)
}
},
n
}()
}(window),
function () {
"use strict";
window.WATCH6 = window.WATCH6 || {};
const n = WATCH6.UTILS,
t = n.RESPONSIVE;
WATCH6.HeightMatch = class {
constructor(t = container, e) {
var i = {
container: t || ".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(i, e || {}),
this.classes = i.classes,
this.obj = $(document.querySelector(t)),
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 t,
e,
i = n
.winSize()
.w,
s = this.opts.breakpoints,
a = [];
for (e in s)
t = i <= e
? (a.push(e), Math.min.apply(null, a))
: null;
this.breakOpts = n.def({}, this.opts),
null != t && (this.breakOpts = n.def(this.breakOpts, s[t]))
}
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 >= t.TABLET.WIDTH
? this.currentDevice = "desktop"
: this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.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 t = 0; t < this.rowNum; t++)
this.heightArray[t] = [];
for (var t = 0, e = this.objChild.length; t < e; t++) {
var i = parseInt(t / this.breakOpts.column, 10),
s = this
.objChild
.eq(t)
.not(this.opts.notCompareElement)
.find(this.opts.matchElement),
s = s.is(":visible")
? Math.ceil(s.outerHeight())
: 0;
this
.heightArray[i]
.push(s)
}
for (t = 0; t < this.rowNum; t++)
this.heightArray[t] = Math
.max
.apply(null, this.heightArray[t]);
this.setHeightLayout()
}
setHeightLayout() {
for (var t = 0, e = this.objChild.length; t < e; t++) {
var i = parseInt(t / this.breakOpts.column, 10);
(
null == this.opts.pushElement
? this.objChild.eq(t).not(this.opts.notCompareElement)
: this.objChild.eq(t).not(this.opts.notCompareElement).find(
this.opts.pushElement
)
).height(this.heightArray[i])
}
}
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(t) {
t = this.opts[t];
null != t && t()
}
}
}(),
function (t) {
t.HiveLayer = function () {
"use strict";
var t,
o = window,
l = o.jQuery,
e = o.document,
h = o.WATCH6.UTILS,
d = [];
function s(t, e) {
if (!(this instanceof s))
return new s(t, e);
var i = {
effect: "fade",
layerWrapElements: t,
layerBody: ".cm-layer__body",
layerElements: ".cm-layer__wrapper",
openerElements: ".js-layer-opener",
closerElements: ".js-layer-closer",
dimmedElements: ".cm-layer__dimmed",
classAttr: {
htmlToggle: "is-layer-open",
isAsync: "is-async"
},
focusOutObj: {
CSS: {
overflow: "hidden",
position: "absolute",
left: 0,
top: 0,
"z-index": -1,
width: 1,
height: 1,
"font-size": "1px",
"line-height": 0
}
},
customEvent: ".HiveLayer" + (
new Date
).getTime() + Math.random(),
openerTarget: null,
useOutside: false,
useEscape: true,
useCloseFocus: true,
useScrollLock: true,
useTrapFocus: true,
flip: {
CLASS: "hive-layer-flip",
direction: "horizontal",
rotateStart: 90,
rotateEnd: 0
},
customToggle: false,
dimmedDuration: 250,
fps: 120,
easing: "swing",
duration: 250,
on: {
buildTools: null,
layerMove: null,
layerOpenBefore: null,
layerOpenAfter: null,
layerCloseBefore: null,
layerCloseAfter: null
},
ariaNotHidden: []
};
if (!(this.layerWrap = i.layerWrapElements).length)
return;
this.layerWrap = l(i.layerWrapElements);
this.opts = h.def(i, e || {});
this.init()
}
return s.prototype = {
init: function () {
this.initOpts();
this.setElements();
this.initLayout();
this.buildTween();
this.buildTrapFocus();
this.bindEvents(true);
this
.layerWrap
.data("HiveLayer", this)
},
initOpts: function () {
this.layerWrapInstance = "#" + this
.layerWrap
.attr("id");
if (!this.opts.isSupportTransition && this.opts.effect === "flip")
this.opts.effect = "default";
if (this.opts.effect == "custom") {
this.opts.effect = "default";
this.opts.customToggle = true
}
},
setElements: function () {
this.layerBody = this
.layerWrap
.find(this.opts.layerBody);
this.layerObj = this
.layerWrap
.find(this.opts.layerElements);
this.closerObj = this
.layerWrap
.find(this.opts.closerElements);
this.dimmedObj = this
.layerWrap
.find(this.opts.dimmedElements)
},
initLayout: function () {
if (this.opts.effect === "slide") {
this
.dimmedObj
.hide();
this
.layerObj
.hide()
} else if (this.opts.effect === "flip") {
var t = this.opts.flip.direction;
if (t !== "vertical")
this.opts.flip.cssD = "rotateY";
else
this.opts.flip.cssD = "rotateX";
this
.dimmedObj
.hide();
this
.layerObj
.hide();
this
.layerWrap
.addClass(this.opts.flip.CLASS)
}
},
buildTween: function () {
h.def(this, {
tweens: {
instance: [],
kill: l.proxy(function () {
for (var t = 0, e = this.tweens.instance.length; t < e; t++)
this
.tweens
.instance[t]
.kill();
this.tweens.instance = []
}, this)
}
})
},
buildTrapFocus: function () {
if (!this.opts.useTrapFocus)
return;
h.def(this, {
trapfocus: {
instance: null,
destroy: l.proxy(function () {
if (this.trapfocus.instance == null)
return;
this
.trapfocus
.instance
.destroy();
this.trapfocus.instance = null
}, this),
build: l.proxy(function () {
if (this.trapfocus.instance !== null)
return;
this.trapfocus.instance = new TrapFocus(
this.layerObj,
{ariaNotHidden: this.opts.ariaNotHidden}
)
}, this)
}
})
},
bindEvents: function (t) {
if (t) {
l(e).on(
"click clickCustom",
this.opts.openerElements + '[data-layer-target="' + this.layerWrapInstance +
'"]',
l.proxy(this.onLayerOpen, this)
);
this
.layerWrap
.on("openLayer", l.proxy(this.onLayerOpen, this));
this
.closerObj
.on("mousedown click clickCustom", l.proxy(this.onLayerClose, this));
this
.layerWrap
.on("layerSetOptions", l.proxy(this.setOptions, this));
if (this.opts.useEscape)
this
.layerObj
.on("keydown", l.proxy(this.onEscapeClose, this))
} else {
l(e).off("click clickCustom");
this
.layerWrap
.off("openLayer");
this
.closerObj
.off("mousedown click clickCustom");
this
.layerWrap
.off("layerSetOptions");
if (this.opts.useEscape)
this
.layerObj
.off("keydown")
}
},
bindOutsideEvents: function (t) {
if (!this.opts.useOutside)
return;
if (t)
this
.layerObj
.on("clickoutside touchendoutside", l.proxy(this.onLayerOutsideFunc, this));
else
this
.layerObj
.off("clickoutside touchendoutside")
},
bindCloseEvents: function (t) {
if (t)
this
.layerWrap
.on("closeLayer", l.proxy(this.closeLayer, this));
else
this
.layerWrap
.off("closeLayer")
},
setOptions: function (t, e) {
h.def(this.opts, e || {});
if (e.customToggle)
this.opts.effect = "default"
},
setScrollLock: function (t) {
if (!this.opts.useScrollLock)
return;
if (t)
h
.page
.scrollLock
.on();
else
h
.page
.scrollLock
.off();
l("html").toggleClass(this.opts.classAttr.htmlToggle, t)
},
onLayerOpen: function (t) {
t.preventDefault();
setTimeout(() => {
this
.dimmedObj
.on("mousedown click clickCustom", l.proxy(this.onLayerClose, this))
}, 500);
if (t.type === "click" || t.type === "clickCustom")
this.opts.openerTarget = l(t.currentTarget);
if (t.type === "click")
if (this.opts.openerTarget.hasClass(this.opts.classAttr.isAsync))
return;
this.layerViewType = "open";
d.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.setScrollLock(true);
this.bindCloseEvents(true);
if (this.opts.effect === "default")
if (!this.opts.customToggle) {
this
.layerWrap
.css({opacity: 0, display: "block"});
this.outCallback("layerOpenBefore");
this.outCallback("buildTools");
this
.layerWrap
.css("opacity", "");
this.openAfterBugFunc()
} else
this.outCallback("layerOpenBefore");
else if (this.opts.effect === "fade") {
this
.layerWrap
.css({opacity: 0, display: "block"});
this.outCallback("layerOpenBefore");
TweenLite.set(this.layerBody, {
opacity: 0,
scale: 1,
overflow: "hidden"
});
this.outCallback("buildTools");
var e = TweenLite.to(this.layerWrap, this.opts.duration / 1e3, {
opacity: 1,
onComplete: l.proxy(function () {
var t = TweenLite.to(this.layerBody, .25, {
ease: Expo.easeOut,
opacity: 1,
scale: 1,
onComplete: l.proxy(function () {
this
.layerBody
.css({overflow: "", transform: ""});
this.openAfterBugFunc()
}, this)
});
this
.tweens
.instance
.push(t)
}, this)
});
this
.tweens
.instance
.push(e)
} else if (this.opts.effect === "slide") {
var i = 1;
TweenLite.set(this.dimmedObj, {
display: "block",
opacity: 0
});
TweenLite.set(this.layerWrap, {display: "block"});
TweenLite.set(this.layerBody, {overflow: "hidden"});
TweenLite.set(this.layerObj, {
display: "",
y: -h
.winSize()
.h
});
TweenLite.set(this.layerObj, {display: ""});
this.outCallback("layerOpenBefore");
var e = TweenLite.to(this.dimmedObj, i, {opacity: .9});
var s = TweenLite.to(this.layerObj, i, {
y: 0,
onComplete: l.proxy(function () {
this.outCallback("buildTools");
this
.layerBody
.css({overflow: ""});
this
.layerObj
.css({transform: ""});
this.openAfterBugFunc()
}, this)
});
this
.tweens
.instance
.push(e);
this
.tweens
.instance
.push(s)
} else if (this.opts.effect === "slide2") {
var i = .6;
TweenLite.set(this.dimmedObj, {
display: "block",
opacity: 0
});
TweenLite.set(this.layerWrap, {display: "block"});
TweenLite.set(this.layerObj, {
display: "",
y: h
.winSize()
.h
});
TweenLite.set(this.layerObj, {display: ""});
this.outCallback("layerOpenBefore");
var e = TweenLite.to(this.dimmedObj, i, {opacity: .9});
var s = TweenLite.to(this.layerObj, i, {
y: 0,
onComplete: l.proxy(function () {
this.outCallback("buildTools");
this
.layerBody
.css({overflow: ""});
this
.layerObj
.css({transform: ""});
this.openAfterBugFunc()
}, this)
});
this
.tweens
.instance
.push(e);
this
.tweens
.instance
.push(s)
} else if (this.opts.effect === "flip") {
var a = this.opts.flip.rotateEnd - this.opts.flip.rotateStart,
n = a / this.opts.duration * (1e3 / this.opts.fps),
r = 0;
this.opts.flip.moveData = {
startDistance: this.opts.flip.rotateStart,
endDistance: this.opts.flip.rotateEnd,
moveDistance: a,
moveOneStep: n,
currentStep: r
};
this
.layerWrap
.show();
this
.dimmedObj
.fadeIn(this.opts.dimmedDuration, l.proxy(function () {
this.outCallback("layerOpenBefore");
this.outCallback("buildTools");
this
.layerObj
.show();
this.initStep(this.opts.flip.moveData);
this.flipFunc()
}, this));
o.setTimeout(l.proxy(function () {
this.outCallback("buildTools")
}, this), 30)
}
this.ariaAccessbility(true, this.layerWrap)
},
initStep: function (t) {
this.opts.stepTimeOld = new Date;
this.direction = t.startDistance > t.moveDistance
? "toNext"
: "toPrev";
this.condition = this.direction === "toNext"
? t.currentStep > t.moveDistance
: t.currentStep < t.moveDistance
},
moveStep: function (t) {
this.opts.stepTimeNew = new Date;
this.opts.remaining = Math.max(
0,
this.opts.stepTimeOld - this.opts.stepTimeNew + this.opts.duration
);
var e = this.opts.remaining / this.opts.duration || 0,
i = 1 - e,
s = l.easing[this.opts.easing](
i,
this.opts.duration * i,
0,
1,
this.opts.duration
);
t.currentStep = (t.endDistance - t.startDistance) * s
},
flipFunc: function () {
var t = this.opts.flip.moveData;
this.moveStep(t);
if (this.condition) {
o.clearTimeout(this.stepTimeout);
this.stepTimeout = o.setTimeout(l.proxy(function () {
this.flipFunc()
}, this), 1e3 / this.opts.fps);
this.condition = this.direction === "toNext"
? t.currentStep > t.moveDistance
: t.currentStep < t.moveDistance;
this.outCallback("layerMove", t.currentStep, t)
} else {
this.opts.remaining = this.opts.duration;
if (this.layerViewType === "close" || !this.layerViewType) {
this.closeAfterBugFunc();
this
.dimmedObj
.fadeOut(this.opts.dimmedDuration, l.proxy(function () {
this
.layerWrap
.hide();
this
.layerObj
.hide()
}, this))
} else
this.openAfterBugFunc()
}
var e = t.startDistance + t.currentStep;
this
.layerObj
.css({
transform: this.opts.flip.cssD + "(" + e + "deg)"
})
},
onLayerOpenAfter: function () {
if (this.trapfocus)
this
.trapfocus
.build();
this.bindOutsideEvents(true);
this.outCallback("layerOpenAfter")
},
openAfterBugFunc: function () {
o.clearTimeout(this.openAfterTimeout);
this.openAfterTimeout = o.setTimeout(l.proxy(this.onLayerOpenAfter, this), 30)
},
onLayerClose: function (t) {
var e = l(t.currentTarget);
if (t.type === "mousedown") {
if (!h.isDevice) {
t.stopPropagation();
this.opts.useCloseFocus = false
}
} else if (t.type === "click" || t.type === "clickCustom") {
t.preventDefault();
if (t.type === "click")
if (e.hasClass(this.opts.classAttr.isAsync))
return;
this
.layerWrap
.trigger("closeLayer");
this
.dimmedObj
.off("mousedown click clickCustom")
}
},
closeLayer: function () {
this.closeType = arguments[1];
this.layerViewType = "close";
this.outCallback("layerCloseBefore");
this.popupOpenPropsControl();
this.setScrollLock(false);
if (this.trapfocus)
this
.trapfocus
.destroy();
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"
}
this.ariaAccessbility(false, this.layerWrap);
o.clearTimeout(this.closeBeforeTimeout);
this.closeBeforeTimeout = o.setTimeout(
l.proxy(this.closeBeforeBugFunc, this),
30
);
this.bindOutsideEvents(false)
},
onEscapeClose: function (t) {
var e = t.which || t.keyCode;
if (e !== 27)
return;
this
.layerWrap
.trigger("closeLayer")
},
onLayerOutsideFunc: function () {
this
.layerWrap
.trigger("closeLayer")
},
closeBeforeBugFunc: function () {
if (this.opts.effect === "default") {
if (!this.opts.customToggle)
this
.layerWrap
.stop(true, true)
.hide();
this.closeAfterBugFunc()
} else if (this.opts.effect === "fade") {
var t = TweenLite.to(this.layerBody, this.opts.duration / 1e3, {
overflow: "hidden",
opacity: 0,
scale: 1,
onComplete: l.proxy(function () {
this
.layerBody
.css("overflow", "");
var t = TweenLite.to(this.layerWrap, this.opts.duration / 1e3, {
opacity: 0,
display: "none",
onComplete: l.proxy(this.closeAfterBugFunc, this)
});
this
.tweens
.instance
.push(t)
}, this)
});
this
.tweens
.instance
.push(t)
} else if (this.opts.effect === "slide") {
var e = 1;
TweenLite.set(this.layerBody, {overflow: "hidden"});
var t = TweenLite.to(this.dimmedObj, e, {opacity: 0});
var i = TweenLite.to(this.layerObj, e, {
y: -h
.winSize()
.h,
onComplete: l.proxy(function () {
this.closeAfterBugFunc();
this
.dimmedObj
.hide();
this
.layerWrap
.hide();
this
.layerBody
.css("overflow", "");
this
.layerObj
.hide()
}, this)
});
this
.tweens
.instance
.push(t);
this
.tweens
.instance
.push(i)
} else if (this.opts.effect === "slide2") {
var e = .5;
var t = TweenLite.to(this.dimmedObj, e, {opacity: 0});
var i = TweenLite.to(this.layerObj, e, {
y: h
.winSize()
.h,
onComplete: l.proxy(function () {
this.closeAfterBugFunc();
this
.dimmedObj
.hide();
this
.layerWrap
.hide();
this
.layerBody
.css("overflow", "");
this
.layerObj
.hide()
}, this)
});
this
.tweens
.instance
.push(t);
this
.tweens
.instance
.push(i)
} else if (this.opts.effect === "flip") {
var s = -this.opts.flip.rotateStart - this.opts.flip.rotateEnd,
a = s / this.opts.duration * (1e3 / this.opts.fps),
n = 0;
this.opts.flip.moveData = {
startDistance: this.opts.flip.rotateEnd,
endDistance: -this.opts.flip.rotateStart,
moveDistance: s,
moveOneStep: a,
currentStep: n
};
this.initStep(this.opts.flip.moveData);
this.flipFunc()
}
},
closeAfterBugFunc: function () {
o.clearTimeout(this.closeAfterTimeout);
this.closeAfterTimeout = o.setTimeout(
l.proxy(this.onLayerCloseAfter, this),
30
)
},
popupOpenPropsControl: function () {
var t = d;
for (var e = 0, i = t.length; e < i; e++) {
var s = t[e],
a = s["POPUPWRAP"][0];
if (a === this.layerWrap[0])
t[e] = null
}
for (var n = 0, r = t.length; n < r; r--) {
var o = t[r - 1];
if (o === null)
t.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")
},
ariaAccessbility: function (t, e) {},
outCallback: function (t) {
var e = this
.opts
.on[t];
if (t === "layerMove")
this
.layerWrap
.trigger(t, arguments[1], arguments[2], this);
else
this
.layerWrap
.trigger(t, this);
if (e == null)
return;
if (t === "layerMove")
e(arguments[1], arguments[2], this);
else
e(this)
},
styleDestroy: function () {
this
.dimmedObj
.attr("style", "");
this
.layerWrap
.attr("style", "");
this
.layerBody
.attr("style", "");
this
.layerObj
.attr("style", "")
},
destroy: function () {
this
.tweens
.kill();
if (this.trapfocus)
this
.trapfocus
.destroy();
this.styleDestroy();
this.bindEvents(false);
this.bindOutsideEvents(false);
this.bindCloseEvents(false)
}
},
s
}()
}(window),
function () {
"use strict";
window.WATCH6 = window.WATCH6 || {};
const r = WATCH6.UTILS;
r.RESPONSIVE;
WATCH6.SubNav = class {
constructor(t = container, e) {
var i = {
navItems: "ul li>a",
navDests: '[class*="js-nav-"]',
visSections: ".js-visible",
resizeStart: null,
classes: {
isOn: "on"
}
};
this.opts = i,
this.classes = i.classes,
this.el = document.querySelector(t),
this.init()
}
init() {
null !== this.el && (this.setElements(), this.initOpts(), this.bindEvents())
}
setElements() {
this.navItems = r.convertArray(this.el.querySelectorAll(this.opts.navItems)),
this.navDests = document.querySelectorAll(this.opts.navDests),
this.visSections = r.convertArray(
document.querySelectorAll(this.opts.visSections)
)
}
initOpts() {
this.visCount = -1,
this
.visSections
.forEach(t => {
t.dataset.visIndex = t
.classList
.contains("js-count")
? ++this.visCount
: this.visCount
}),
this.winOffsetTop = window.pageYOffset
}
bindEvents() {
this.onScrollHandler(),
window.addEventListener("resize", this.onResizeHandler.bind(this)),
window.addEventListener("scroll", this.onScrollHandler.bind(this));
const i = window.location.hash;
this
.navItems
.forEach((t, e) => {
-1 < t
.getAttribute("href")
.indexOf("#") && (
t.dataset.navIndex = e,
t.addEventListener("click", this.onNavItemClickEvent.bind(this))
),
i && -1 < t
.getAttribute("href")
.indexOf(i) && (t.parentNode.classList.remove(this.classes.isOn), t.click())
})
}
onNavItemClickEvent(e) {
e.preventDefault();
e = e.target;
const i = e.parentNode;
if (!this.el.classList.contains("hold") && !i.classList.contains(this.classes.isOn)) {
this
.navItems
.forEach(t => {
t
.parentNode
.classList
.remove(this.classes.isOn)
}),
i
.classList
.contains(this.classes.isOn) || i
.classList
.add(this.classes.isOn);
e = e.dataset.navIndex;
const n = this.navDests[e];
var e = n.getBoundingClientRect(),
s = parseInt(window.getComputedStyle(n).paddingTop),
a = (window.innerHeight - (e.height - s) + r.getNavHeight()) / 2;
let t = 0;
(
t = n.classList.contains("js-nav-center")
? this.winOffsetTop + e.top + s - a
: this.winOffsetTop + e.top - r.getNavHeight()
) < 150 && (t = 0),
this
.el
.classList
.add("hold"),
GALAXY.setSmoothScrollTop(t, 1500, () => {
this
.el
.classList
.contains("hold") && this
.el
.classList
.remove("hold"),
GALAXY.header && GALAXY
.header
.resetSubNav()
})
}
}
onScrollHandler() {
this.winOffsetTop = window.pageYOffset;
var a = (window.innerHeight + r.getNavHeight()) / 2;
this
.visSections
.forEach(t => {
var i,
e = t.getBoundingClientRect(),
s = this.winOffsetTop + e.top,
e = this.winOffsetTop + e.bottom;
this.winOffsetTop + a >= s && this.winOffsetTop + a <= e && (
i = t.dataset.visIndex,
this.navItems.forEach((t, e) => {
e != i && t
.parentNode
.classList
.contains(this.classes.isOn) && t
.parentNode
.classList
.remove(this.classes.isOn)
}),
(s = this.navItems[i].parentNode).classList.contains(this.classes.isOn) || (
s.classList.add(this.classes.isOn),
!this.el.classList.contains("hold") && s.classList.contains(this.classes.isOn) && GALAXY.header && GALAXY.header.resetSubNav()
)
)
})
}
onResizeHandler() {
r
.winSize()
.w !== this.winWidth && (
this.winWidth = r.winSize().w,
null == this.opts.resizeStart && (this.opts.resizeStart = this.winWidth, this.resizeAnimateFunc()),
window.clearTimeout(this.resizeEndTime),
this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150)
)
}
resizeAnimateFunc() {
this.onScrollHandler(),
this.resizeRequestFrame = r
.requestAFrame
.call(window, this.resizeAnimateFunc.bind(this))
}
resizeEndFunc() {
this.opts.resizeStart = null,
r
.cancelAFrame
.call(window, this.resizeRequestFrame)
}
}
}(),
function () {
"use strict";
window.WATCH6 = window.WATCH6 || {};
WATCH6.UTILS.RESPONSIVE;
WATCH6.Band = class {
constructor(t = container, e) {
this.opts = {
el: t,
videoElement: ".video__container",
featureHide: "is-feature-hide"
},
this.el = document.querySelector(t),
this.init()
}
init() {
null === this.el || this
.el
.classList
.contains(this.opts.featureHide) || (
this.setElements(),
this.buildVideoPlayer()
)
}
setElements() {
this.videoElement = this
.el
.querySelector(this.opts.videoElement)
}
buildVideoPlayer() {
this.videoPlayer = {
instance: null,
build: () => {
null === this.videoPlayer.instance && (
this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, {sectionElement: this.opts.el})
)
}
},
this
.videoPlayer
.build()
}
}
}(),
function () {
"use strict";
window.WATCH6 = window.WATCH6 || {};
const t = WATCH6.UTILS,
e = t.RESPONSIVE;
WATCH6.Battery = class {
constructor(t = container, e) {
var i = {
el: t,
popupEl: ".wearable-watch-battery-processor__popup",
processorLayerEl: ".wearable-watch-battery-processor__popup.processor-popup",
batteryLayerEl: ".wearable-watch-battery-processor__popup.battery-popup",
videoElement: ".video__container",
featureHide: "is-feature-hide",
resizeStart: null
};
this.opts = i,
this.classes = i.classes,
this.el = document.querySelector(t),
this.init()
}
init() {
null === this.el || this
.el
.classList
.contains(this.opts.featureHide) || (
this.setElements(),
this.buildVideoPlayer(),
this.buildLayer(),
this.bindEvents()
)
}
setElements() {
this.processorLayerEl = this
.el
.querySelector(this.opts.processorLayerEl),
this.batteryLayerEl = this
.el
.querySelector(this.opts.batteryLayerEl),
this.videoElement = this
.el
.querySelectorAll(this.opts.videoElement),
this.processorVideoElement = this
.processorLayerEl
.querySelector(this.opts.videoElement),
this.batteryVideoElement = this
.batteryLayerEl
.querySelector(this.opts.videoElement)
}
bindEvents() {
window.addEventListener("resize", this.onResizeHandler.bind(this))
}
onResizeHandler() {
t
.winSize()
.w !== this.winWidth && (
this.winWidth = t.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 = t
.requestAFrame
.call(window, this.resizeAnimateFunc.bind(this))
}
resizeEndFunc() {
this.opts.resizeStart = null,
t
.cancelAFrame
.call(window, this.resizeRequestFrame)
}
onResponsiveChange() {
"block" === this.processorLayerEl.style.display && this
.videoPlayer
.change(this.processorVideoElement),
"block" === this.batteryLayerEl.style.display && this
.videoPlayer
.change(this.batteryVideoElement)
}
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
}
buildVideoPlayer() {
this.videoPlayer = {
instance: [],
load: e => {
this.videoPlayer.instance.length && this
.videoPlayer
.instance
.forEach(t => {
t.onLoad(e)
})
},
reset: e => {
this.videoPlayer.instance.length && this
.videoPlayer
.instance
.forEach(t => {
t.onReset(e)
})
},
play: e => {
this.videoPlayer.instance.length && this
.videoPlayer
.instance
.forEach(t => {
t.onPlay(e)
})
},
change: e => {
this.videoPlayer.instance.length && this
.videoPlayer
.instance
.forEach(t => {
t.onChange(e)
})
},
build: () => {
this.videoPlayer.instance.length || this
.videoElement
.forEach((t, e) => {
this
.videoPlayer
.instance
.push(new WATCH6.VideoPlayer(t, {
sectionElement: this.opts.el,
videoParentElement: this.opts.popupEl
}))
})
}
},
this
.videoPlayer
.build()
}
buildLayer() {
this.layer = {
instance: [],
build: () => {
this.layer.instance.length || (
this.layer.instance.push(new HiveLayer(this.opts.processorLayerEl, {
effect: "default",
on: {
layerOpenBefore: () => {
this.processorVideoElement && this
.videoPlayer
.load(this.processorVideoElement)
},
layerCloseAfter: () => {
this
.videoPlayer
.reset(this.processorVideoElement)
}
}
})),
this.layer.instance.push(new HiveLayer(this.opts.batteryLayerEl, {
effect: "default",
on: {
layerOpenBefore: () => {
this.batteryVideoElement && this
.videoPlayer
.load(this.batteryVideoElement)
},
layerCloseAfter: () => {
this
.videoPlayer
.reset(this.batteryVideoElement)
}
}
}))
)
}
},
this
.layer
.build()
}
}
}(),
function () {
"use strict";
window.WATCH6 = window.WATCH6 || {};
const o = WATCH6.UTILS,
t = o.RESPONSIVE;
WATCH6.Compare = class {
constructor(t = container, e) {
var i = {
el: t,
trackElement: ".wearable-watch-compare__track",
fixedElement: ".wearable-watch-compare__fixed",
compareWrapEl: ".wearable-watch-compare__list-wrap",
compareListEl: ".wearable-watch-compare__list",
compareItemEl: ".wearable-watch-compare__list-item",
compareImgEl: ".wearable-watch-compare__product-img",
compareInfo: ".wearable-watch-compare__info",
compareInfoItem: ".wearable-watch-compare__info-item",
navigationEl: ".wearable-watch-compare__navigation",
colorChipEl: ".wearable-watch-compare__color-chip",
colorList: ".wearable-watch-compare__color",
tabPanel: ".wearable-watch-compare__product",
tabPanels: ".wearable-watch-compare__product-item",
scrollbarEl: ".swiper-scrollbar",
viewMoreCta: ".view-more__cta",
featureHide: "is-feature-hide",
viewmore: ".viewmore",
collapse: ".collapse",
matchElements: [
".wearable-watch-compare__info-item--display",
".wearable-watch-compare__info-item--screen",
".wearable-watch-compare__info-item--charge",
".wearable-watch-compare__info-item--sensor",
".wearable-watch-compare__info-item--material",
".wearable-watch-compare__info-item--battery",
".wearable-watch-compare__info-item--sleep",
".wearable-watch-compare__info-item--composition",
".wearable-watch-compare__info-item--route",
".wearable-watch-compare__info-item--durability",
".wearable-watch-compare__info-item--size",
".wearable-watch-compare__info-item--weight",
".wearable-watch-compare__cta",
".wearable-watch-compare__size",
".wearable-watch-compare__color",
".wearable-watch-common__sub-headline"
],
matchCommonOpts: {
childElement: ".wearable-watch-compare__list-item",
useDestroyHeight: !1,
breakpoints: {}
},
classes: {
isFixed: "is-fixed",
isCollapse: "is-collapse",
isExpanded: "is-expanded"
},
resizeStart: null,
on: {
updateImageLoader: null
}
};
this.opts = o.def(i, e || {}),
this.classes = i.classes,
this.el = document.querySelector(t),
this.init()
}
init() {
null === this.el || this
.el
.classList
.contains(this.opts.featureHide) || (
this.setElements(),
this.initOpts(),
this.initLayout(),
this.bindEvents(),
this.buildHeightMatch(),
this.buildSwiper(),
this.buildCompareItem(),
this.onResizeHandler()
)
}
initOpts() {
this.getCurrentDevice(),
this.scroller = null,
this.prevDevice = null,
this.expanded = !1,
this.scrollMoveState = !1,
this.firstImageLoad = !1,
this.viewMoreCtaTagging = this
.viewMoreCta
.getAttribute("data-omni"),
this.viewMoreTagging = this
.viewMoreCta
.querySelector(this.opts.viewmore)
.getAttribute("data-tagging"),
this.collapseTagging = this
.viewMoreCta
.querySelector(this.opts.collapse)
.getAttribute("data-tagging")
}
initLayout() {
this.updateViewMoreHeight()
}
setElements() {
this.trackElement = this
.el
.querySelector(this.opts.trackElement),
this.fixedElement = this
.el
.querySelector(this.opts.fixedElement),
this.compareWrapEl = this
.el
.querySelector(this.opts.compareWrapEl),
this.compareListEl = this
.compareWrapEl
.querySelector(this.opts.compareListEl),
this.contentsEl = this
.el
.querySelectorAll(this.opts.colorChipEl),
this.compareItemEl = this
.compareWrapEl
.querySelectorAll(this.opts.compareItemEl),
this.compareInfo = this
.el
.querySelectorAll(this.opts.compareInfo),
this.viewMoreCta = this
.el
.querySelector(this.opts.viewMoreCta),
this.navigationEl = this
.el
.querySelector(this.opts.navigationEl),
this.scrollbarEl = this
.el
.querySelector(this.opts.scrollbarEl)
}
bindEvents() {
window.addEventListener("load", this.onLoadHandler.bind(this)),
window.addEventListener("resize", this.onResizeHandler.bind(this)),
window.addEventListener("scroll", this.onScrollHandler.bind(this)),
this
.viewMoreCta
.addEventListener("click", this.onClickViewMoreCta.bind(this))
}
getCurrentDevice() {
this.winWidth = o
.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
}
updateViewMoreHeight() {
this.expanded
? (
this.viewMoreCta.classList.add(this.classes.isCollapse),
this.el.classList.add(this.classes.isExpanded),
this.viewMoreCta.setAttribute("data-omni", this.viewMoreCtaTagging + this.collapseTagging),
this.viewMoreCta.setAttribute("ga-la", this.viewMoreCtaTagging + this.collapseTagging),
this.heightMatch.reInit()
)
: (
this.viewMoreCta.classList.remove(this.classes.isCollapse),
this.el.classList.remove(this.classes.isExpanded),
this.viewMoreCta.setAttribute("data-omni", this.viewMoreCtaTagging + this.viewMoreTagging),
this.viewMoreCta.setAttribute("ga-la", this.viewMoreCtaTagging + this.viewMoreTagging)
)
}
updateImageLoader(t) {
this.outCallback("updateImageLoader", t),
this.firstImageLoad = !0
}
buildHeightMatch() {
this.heightMatch = {
instance: [],
reInit: () => {
this.heightMatch.instance.length && this
.heightMatch
.instance
.forEach(t => {
t.reInit()
})
},
initLayout: () => {
for (let t = 0, e = this.opts.matchElements.length; t < e; t++) {
const s = this
.opts
.matchElements[t];
var i = "js-" + s.split(".")[1];
for (let t = 0, e = this.compareItemEl.length; t < e; t++) {
const a = this.compareItemEl[t];
if (null === a.querySelector("." + i)) {
const n = document.createElement("div"),
r = a.querySelector(s);
n.innerHTML = r.innerHTML,
n
.classList
.add(i),
r.innerHTML = "",
r.appendChild(n)
}
}
}
},
build: () => {
this
.heightMatch
.initLayout();
var t = {
column: this.compareItemEl.length
};
o.def(this.opts.matchCommonOpts, t);
for (let t = 0, e = this.opts.matchElements.length; t < e; t++) {
const a = this
.opts
.matchElements[t];
var i = {
pushElement: "." + a.split(".")[1],
childElement: this.opts.compareItemEl,
matchElement: ".js-" + a.split(".")[1]
},
s = JSON.parse(JSON.stringify(this.opts.matchCommonOpts));
o.def(s, i),
this
.heightMatch
.instance
.push(new WATCH6.HeightMatch(this.opts.compareWrapEl, s))
}
}
},
this
.heightMatch
.build()
}
buildCompareItem() {
this.compareItem = {
instance: [],
build: () => {
this.compareItem.instance.length || this
.compareItemEl
.forEach(t => {
this
.compareItem
.instance
.push(new WATCH6.CompareItem(t, {
on: {
updateImageLoader: t => {}
}
}))
})
}
},
this
.compareItem
.build()
}
buildSwiper() {
this.swiper = {
instance: null,
options: {
freeMode: !0,
slidesPerView: "auto",
direction: "horizontal",
a11y: !1,
scrollbar: {
el: this.opts.scrollbarEl
}
},
destroy: () => {
null !== this.swiper.instance && (
this.swiper.instance.destroy(),
this.swiper.instance = null
)
},
updateTranslate: t => {
null !== this.swiper.instance && this
.swiper
.instance
.setTranslate(-t)
},
updateLayout: () => {
null !== this.swiper.instance && (
this.swiperWidth = this.compareWrapEl.getBoundingClientRect().width,
this.swiperListWidth = this.swiper.instance.virtualSize
)
},
build: () => {
this.winWidth < 1024
? null === this.swiper.instance && (
this.swiper.instance = new Swiper(this.compareWrapEl, this.swiper.options),
this.swiper.updateLayout()
)
: this
.swiper
.destroy()
}
},
this
.swiper
.build()
}
onClickViewMoreCta(t) {
t.preventDefault(),
this.expanded = !this.expanded,
this.updateViewMoreHeight()
}
onLoadHandler() {
this
.heightMatch
.reInit(),
this.onResponsiveChange(),
this.onScrollHandler(),
window.removeEventListener("load", this.onLoadHandler.bind(this))
}
onScrollHandler() {
this.scrollY = window.scrollY;
this.scrollY,
this.lastScrollY;
var t = window.innerHeight,
e = o
.getScroll()
.top - t,
i = o
.getScroll()
.bottom,
s = o.getOffset(this.el),
a = this.swiperWidth,
n = (o.getHeight(this.compareWrapEl), o.getOffset(this.compareWrapEl)),
r = this.swiperListWidth;
Math.ceil(r - a),
o
.getOffset(this.trackElement)
.top,
Math.abs(this.trackElement.clientHeight);
o.getNavHeight();
if (i > s.top && e <= s.top || e < s.bottom && i > s.bottom || e < s.top && i > s.bottom || e > s.top && i < s.bottom) {
if (this.firstImageLoad)
return;
r = this
.el
.querySelectorAll(".js-start-img-src");
this.updateImageLoader(r)
}
o
.getScroll()
.top + o
.getNavHeight() >= n
.top && i <= n.bottom
? this
.el
.classList
.contains(this.classes.isFixed) || this
.el
.classList
.add(this.classes.isFixed)
: this
.el
.classList
.contains(this.classes.isFixed) && this
.el
.classList
.remove(this.classes.isFixed),
this.lastScrollY = scrollY
}
onResizeHandler() {
o
.winSize()
.w !== this.winWidth && (
this.winWidth = o.winSize().w,
null == this.opts.resizeStart && (this.opts.resizeStart = this.winWidth, this.resizeAnimateFunc()),
window.clearTimeout(this.resizeEndTime),
this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150)
)
}
resizeAnimateFunc() {
this.setLayout(),
this.updateViewMoreHeight(),
this
.swiper
.build(),
this.resizeRequestFrame = o
.requestAFrame
.call(window, this.resizeAnimateFunc.bind(this))
}
resizeEndFunc() {
this.opts.resizeStart = null,
this.updateViewMoreHeight(),
this
.swiper
.build(),
o
.cancelAFrame
.call(window, this.resizeRequestFrame)
}
setLayout() {
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.currentDevice !== this.prevDevice && this.onResponsiveChange(),
this.prevDevice = this.currentDevice
}
onResponsiveChange() {}
outCallback(t, e) {
t = this
.opts
.on[t];
null != t && t(e)
}
}
}(),
function () {
"use strict";
window.WATCH6 = window.WATCH6 || {};
WATCH6.UTILS.RESPONSIVE;
WATCH6.CompareItem = class {
constructor(t = container, e) {
var i = {
el: t,
productEl: ".wearable-watch-compare__product",
productItem: ".wearable-watch-compare__product-item",
productImage: ".wearable-watch-compare__product-image",
sizeEl: ".wearable-watch-compare__size",
sizeCta: ".wearable-watch-compare__size-cta",
colorEl: ".wearable-watch-compare__color",
colorItem: ".wearable-watch-compare__color-item",
colorChip: ".wearable-watch-compare__color-chip",
buyNowCta: ".buy__cta",
learnMoreCta: ".learn-more__cta",
classes: {
isActive: "is-active"
},
resizeStart: null
};
this.opts = i,
this.classes = i.classes,
this.el = t,
this.init()
}
init() {
null !== this.el && (
this.setElements(),
this.initOpts(),
this.initLayout(),
this.bindEvnts()
)
}
initOpts() {
this.currentProduct = this.el.dataset.modelName,
this.currentSize = this.el.dataset.defaultSize,
this.currentColor = {},
this
.colorItem
.forEach(t => {
let e = t.querySelector("." + this.classes.isActive);
e || (e = t.querySelectorAll(this.opts.colorChip)[0])
.classList
.add(this.classes.isActive),
this.currentColor[e.dataset.size] = e.dataset.color
}),
this
.colorChip
.forEach(t => {
t.removeAttribute("aria-selected"),
t.removeAttribute("aria-hidden")
}),
this.DATA = LOCAL_DATA[this.currentProduct]
}
initLayout() {
this.updateSizeLayout(),
this.updateColorItemlayout(),
this.updateColorChip(),
this.updateProductItemLayout(),
this.updateProductImage(),
this.updateLink()
}
setElements() {
this.productEl = this
.el
.querySelector(this.opts.productEl),
this.productItem = this
.productEl
.querySelectorAll(this.opts.productItem),
this.sizeEl = this
.el
.querySelector(this.opts.sizeEl),
this.sizeCta = this
.sizeEl
.querySelectorAll(this.opts.sizeCta),
this.colorEl = this
.el
.querySelector(this.opts.colorEl),
this.colorItem = this
.colorEl
.querySelectorAll(this.opts.colorItem),
this.colorChip = this
.colorEl
.querySelectorAll(this.opts.colorChip),
this.buyNowCta = this
.el
.querySelector(this.opts.buyNowCta),
this.learnMoreCta = this
.el
.querySelector(this.opts.learnMoreCta)
}
bindEvnts() {
this
.sizeCta
.forEach(t => {
t.addEventListener("click", this.handlerClickSizeCta.bind(this))
}),
this
.colorChip
.forEach(t => {
t.addEventListener("click", this.handlerClickColorChip.bind(this))
})
}
handlerClickColorChip(t) {
t = t.currentTarget;
this.currentColor[this.currentSize] = t.dataset.color,
this.updateColorChip(),
this.updateProductImage(),
this.updateLink()
}
handlerClickSizeCta(t) {
t = t.currentTarget;
this.currentSize = t.dataset.size,
this.updateSizeLayout(),
this.updateColorItemlayout(),
this.updateProductItemLayout(),
this.updateProductImage(),
this.updateLink()
}
updateLink() {
var t = this.currentSize,
e = this.currentColor[t];
const i = this.DATA[t][e];
this.learnMoreCta && (
i.hasOwnProperty("learnmore")
? (
this.learnMoreCta.parentElement.style.display = "block",
this.learnMoreCta.setAttribute("href", i.learnmore)
)
: this.learnMoreCta.parentElement.style.display = "none"
),
this.buyNowCta && (
i.hasOwnProperty("buynow")
? (
this.buyNowCta.parentElement.style.display = "block",
this.buyNowCta.setAttribute("href", i.buynow)
)
: this.buyNowCta.parentElement.style.display = "none"
)
}
updateSizeLayout() {
this
.sizeCta
.forEach(t => {
this.currentSize === t.dataset.size
? (t.classList.add(this.classes.isActive), t.setAttribute("title", "selected"))
: (t.classList.remove(this.classes.isActive), t.removeAttribute("title"))
})
}
updateColorItemlayout() {
this.currentColorItem = Array
.from(this.colorItem)
.filter(t => {
if (this.currentSize === t.dataset.size)
return t
.classList
.add(this.classes.isActive),
t;
t
.classList
.remove(this.classes.isActive)
})[0]
}
updateColorChip() {
const t = this
.currentColorItem
.querySelectorAll(this.opts.colorChip);
t.forEach(t => {
this.currentColor[this.currentSize] === t.dataset.color
? (t.classList.add(this.classes.isActive), t.setAttribute("title", "selected"))
: (t.classList.remove(this.classes.isActive), t.removeAttribute("title"))
})
}
updateProductItemLayout() {
this.currentProductItem = Array
.from(this.productItem)
.filter(t => {
if (this.currentSize === t.dataset.size)
return t
.classList
.add(this.classes.isActive),
t;
t
.classList
.remove(this.classes.isActive)
})[0]
}
updateProductImage() {
const t = this
.currentProductItem
.querySelectorAll(this.opts.productImage);
t.forEach(t => {
this.currentColor[this.currentSize] === t.dataset.color
? (
t.classList.add(this.classes.isActive),
t.removeAttribute("tabindex"),
t.setAttribute("aria-hidden", !1)
)
: (
t.classList.remove(this.classes.isActive),
t.setAttribute("tabindex", -1),
t.setAttribute("aria-hidden", !0)
)
})
}
}
}(),
function () {
"use strict";
window.WATCH6 = window.WATCH6 || {};
const e = WATCH6.UTILS;
e.RESPONSIVE;
WATCH6.Contrast = class {
constructor(t = container, e) {
var i = {
el: t,
defaultBtn: ".type-default",
contrastBtn: ".type-contrast",
cookieName: "highContrastMode",
featureHide: "is-feature-hide"
};
this.opts = i,
this.classes = i.classes,
this.el = document.querySelector(t),
this.init()
}
init() {
null === this.el || this
.el
.classList
.contains(this.opts.featureHide) || (this.setElements(), this.bindEvents())
}
setElements() {
this.defaultBtn = this
.el
.querySelector(this.opts.defaultBtn),
this.defaultBtnTitle = this
.defaultBtn
.getAttribute("title")
.trim(),
this.contrastBtn = this
.el
.querySelector(this.opts.contrastBtn),
this.contrastBtnTitle = this
.contrastBtn
.getAttribute("title")
.trim(),
this.cookieName = this.opts.cookieName
}
bindEvents() {
window.addEventListener("load", this.onLoadHandler.bind(this)),
this.defaultBtn && this
.defaultBtn
.addEventListener("click", this.onClickDefaultBtn.bind(this)),
this.contrastBtn && this
.contrastBtn
.addEventListener("click", this.onClickContrastBtn.bind(this))
}
onLoadHandler() {
this.activeContrast()
}
onClickDefaultBtn(t) {
t.preventDefault(),
e.setCookie(this.cookieName, "0", 1),
this.activeContrast()
}
onClickContrastBtn(t) {
t.preventDefault(),
e.setCookie(this.cookieName, "1", 1),
this.activeContrast()
}
activeContrast() {
var t = e.getCookie(this.cookieName);
null != t && t.length && "1" == t
? (
document.documentElement.classList.add("color_yb"),
this.contrastBtn.setAttribute("title", this.contrastBtnTitle + " selected"),
this.defaultBtn.setAttribute("title", this.defaultBtnTitle)
)
: (
document.documentElement.classList.remove("color_yb"),
this.contrastBtn.setAttribute("title", this.contrastBtnTitle),
this.defaultBtn.setAttribute("title", this.defaultBtnTitle + " selected")
)
}
}
}(),
function () {
"use strict";
window.WATCH6 = window.WATCH6 || {};
WATCH6.UTILS.RESPONSIVE;
WATCH6.Glass = class {
constructor(t = container, e) {
this.opts = {
el: t,
videoElement: ".video__container",
featureHide: "is-feature-hide"
},
this.el = document.querySelector(t),
this.init()
}
init() {
null === this.el || this
.el
.classList
.contains(this.opts.featureHide) || (
this.setElements(),
this.buildVideoPlayer()
)
}
setElements() {
this.videoElement = this
.el
.querySelector(this.opts.videoElement)
}
buildVideoPlayer() {
this.videoPlayer = {
instance: null,
build: () => {
null === this.videoPlayer.instance && (
this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, {
sectionElement: this.opts.el,
videoParentElement: this.opts.el
})
)
}
},
this
.videoPlayer
.build()
}
}
}(),
function () {
"use strict";
window.WATCH6 = window.WATCH6 || {};
WATCH6.KeyVisual = class {
constructor(t = container, e) {
var i = {
el: t,
classes: {
isUseBuy: "is-use-buy",
isUseRegist: "is-use-regist",
isUseOrder: "is-use-order",
isUseWhere: "is-use-where",
isUseOff: "is-use-off"
},
featureHide: "is-feature-hide"
};
this.opts = i,
this.classes = i.classes,
this.el = document.querySelector(t),
this.init()
}
init() {
null === this.el || this
.el
.classList
.contains(this.opts.featureHide) || this.initLayout()
}
initLayout() {
this
.el
.classList
.remove(this.classes.isUseBuy),
this
.el
.classList
.remove(this.classes.isUseRegist),
this
.el
.classList
.remove(this.classes.isUseOrder),
this
.el
.classList
.remove(this.classes.isUseWhere),
this
.el
.classList
.remove(this.classes.isUseOff),
"undefined" == typeof __WATCH_USE_KV_CTA || null == __WATCH_USE_KV_CTA || null == __WATCH_USE_KV_CTA || "" == __WATCH_USE_KV_CTA || "buy-now" == __WATCH_USE_KV_CTA
? this
.el
.classList
.add(this.classes.isUseBuy)
: "pre-order" == __WATCH_USE_KV_CTA
? this
.el
.classList
.add(this.classes.isUseOrder)
: "pre-registration" == __WATCH_USE_KV_CTA
? this
.el
.classList
.add(this.classes.isUseRegist)
: "where-to-buy" == __WATCH_USE_KV_CTA
? this
.el
.classList
.add(this.classes.isUseWhere)
: "where-to-buy" == __WATCH_USE_KV_CTA && this
.el
.classList
.add(this.classes.isUseOff)
}
}
}(),
function () {
"use strict";
window.WATCH6 = window.WATCH6 || {};
WATCH6.UTILS.RESPONSIVE;
WATCH6.Monitoring = class {
constructor(t = container, e) {
this.opts = {
el: t,
videoElement: ".video__container",
featureHide: "is-feature-hide"
},
this.el = document.querySelector(t),
this.init()
}
init() {
null === this.el || this
.el
.classList
.contains(this.opts.featureHide) || (
this.setElements(),
this.buildVideoPlayer()
)
}
setElements() {
this.videoElement = this
.el
.querySelector(this.opts.videoElement)
}
buildVideoPlayer() {
this.videoPlayer = {
instance: null,
build: () => {
null === this.videoPlayer.instance && (
this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, {sectionElement: this.opts.el})
)
}
},
this
.videoPlayer
.build()
}
}
}(),
function () {
"use strict";
window.WATCH6 = window.WATCH6 || {};
const a = WATCH6.UTILS,
t = a.RESPONSIVE;
WATCH6.Overview = class {
constructor(t = container, e) {
var i = {
el: t,
rootEl: ".wearable-watch",
layerEl: ".wearable-watch-overview__popup",
featureList: ".wearable-watch-overview__list",
featureItem: ".wearable-watch-overview__list-item",
featureCta: ".wearable-watch-overview__list-cta",
featureBtn: ".wearable-watch-overview__list-btn",
featureContent: ".wearable-watch-overview__popup-content",
featurePlayer: ".wearable-watch-overview__player",
storyEl: ".wearable-watch-overview__story",
storySlide: ".wearable-watch-overview__story-item",
indicatorList: ".wearable-watch-overview__indicator-list",
indicatorItem: ".wearable-watch-overview__indicator-item",
indicatorText: ".indicator__text",
controlHiddenEl: ".blind",
navigationPrev: ".navigation__cta-prev",
navigationNext: ".navigation__cta-next",
storyItemController: ".story-item__btn",
storyItem: ".story-item__image",
storyItemCta: ".story-item__cta",
closeBtn: ".cm-layer__btn-close",
videoElement: ".video__container",
startImage: ".video__start-frame",
endImage: ".video__end-frame",
featureHide: "is-feature-hide",
initSlide: 0,
infiniteRolling: !0,
transitionDuration: 400,
widthResizeStart: null,
heightResizeStart: null,
classes: {
loaded: "loaded",
ended: "ended",
paused: "paused",
playing: "playing",
isHover: "is-hover",
isActive: "is-active",
isPaused: "is-paused",
isHeight: "is-height"
},
thumbnailTagging: {
"sleep-tracking": {
play: "gwatch6:highlights:overview:movi-play:sleep-tracking-video",
pause: "gwatch6:highlights:overview:movi-pause:sleep-tracking-video"
},
health: {
play: "gwatch6:highlights:overview:movi-play:health-video",
pause: "gwatch6:highlights:overview:movi-pause:health-video"
},
display: {
play: "gwatch6:highlights:overview:movi-play:display-video",
pause: "gwatch6:highlights:overview:movi-pause:display-video"
}
},
popupTagging: {
"sleep-tracking": {
play: "gwatch6:highlights:overview^lypu:movi-play:sleep-tracking-video",
pause: "gwatch6:highlights:overview^lypu:movi-pause:sleep-tracking-video"
},
health: {
play: "gwatch6:highlights:overview^lypu:movi-play:health-video",
pause: "gwatch6:highlights:overview^lypu:movi-pause:health-video"
},
display: {
play: "gwatch6:highlights:overview^lypu:movi-play:display-video",
pause: "gwatch6:highlights:overview^lypu:movi-pause:display-video"
}
}
};
this.opts = i,
this.classes = i.classes,
this.el = document.querySelector(t),
this.init()
}
init() {
null === this.el || this
.el
.classList
.contains(this.opts.featureHide) || (
this.setElements(),
this.initOpts(),
this.initLayout(),
this.buildSwiper(),
this.buildLayer(),
this.buildVideoPlayer(),
this.bindEvents()
)
}
initOpts() {
this.winWidth = a
.winSize()
.w,
this.winHeight = a
.winSize()
.h,
this.currentDevice = !1,
this.prevDevice = null,
this.initValues()
}
initValues() {
this.selectedIndex = -1
}
initLayout() {
this
.storySlide
.forEach((t, e) => {
t.setAttribute("aria-hidden", "true"),
t.setAttribute("tabindex", "-1"),
t
.querySelector(this.opts.storyItemCta)
.setAttribute("aria-hidden", "true"),
t
.querySelector(this.opts.storyItemCta)
.setAttribute("tabindex", "-1"),
t.querySelector(this.opts.storyItemController) && (
t.querySelector(this.opts.storyItemController).setAttribute("aria-hidden", "true"),
t.querySelector(this.opts.storyItemController).setAttribute("tabindex", "-1")
),
this.opts.initSlide === e && (
t.setAttribute("aria-hidden", "false"),
t.removeAttribute("tabindex"),
t.querySelector(this.opts.storyItemCta).setAttribute("aria-hidden", "false"),
t.querySelector(this.opts.storyItemCta).removeAttribute("tabindex"),
t.querySelector(this.opts.storyItemController) && (
t.querySelector(this.opts.storyItemController).setAttribute("aria-hidden", "false"),
t.querySelector(this.opts.storyItemController).removeAttribute("tabindex")
)
)
}),
this
.indicatorItem
.forEach(t => {
"tablist" === this
.indicatorList
.getAttribute("role") && t.setAttribute("aria-selected", "false")
}),
this.opts.infiniteRolling || (
0 === this.opts.initSlide && (this.navigationPrev.style.display = "none"),
this.opts.initSlide === this.storySlide.length - 1 && (this.navigationNext.style.display = "none")
)
}
setElements() {
this.rootEl = document.querySelector(this.opts.rootEl),
this.layerEl = this
.el
.querySelector(this.opts.layerEl),
this.videoElement = this
.el
.querySelectorAll(this.opts.videoElement),
this.featureList = this
.el
.querySelector(this.opts.featureList),
this.featureContent = this
.el
.querySelector(this.opts.featureContent),
this.featureCta = this
.featureList
.querySelectorAll(this.opts.featureCta),
this.featureBtn = this
.featureList
.querySelectorAll(this.opts.featureBtn),
this.featurePlayer = this
.featureList
.querySelectorAll(this.opts.videoElement),
this.storyEl = this
.el
.querySelector(this.opts.storyEl),
this.storyItem = this
.el
.querySelectorAll(this.opts.storyItem),
this.storySlide = this
.el
.querySelectorAll(this.opts.storySlide),
this.storyPlayer = this
.storyEl
.querySelectorAll(this.opts.videoElement),
this.indicatorList = this
.el
.querySelector(this.opts.indicatorList),
this.indicatorItem = this
.indicatorList
.querySelectorAll(this.opts.indicatorItem),
this.navigationPrev = this
.el
.querySelector(this.opts.navigationPrev),
this.navigationNext = this
.el
.querySelector(this.opts.navigationNext),
this.closeBtn = this
.el
.querySelector(this.opts.closeBtn),
this.storyItemController = this
.storyEl
.querySelectorAll(this.opts.storyItemController)
}
bindEvents() {
window.addEventListener("resize", this.onResizeHandler.bind(this)),
this
.featureCta
.forEach((t, e) => {
t.addEventListener("click", this.handleLayerOpen.bind(this, e))
}),
this
.indicatorItem
.forEach((t, e) => {
t.addEventListener("click", this.select.bind(this, e))
}),
this
.navigationPrev
.addEventListener("click", this.handleNavigationPrev.bind(this)),
this
.navigationNext
.addEventListener("click", this.handleNavigationNext.bind(this)),
this
.storySlide
.forEach((t, e) => {
-1 < t
.querySelector(this.opts.storyItemCta)
.getAttribute("href")
.indexOf("#") && t
.querySelector(this.opts.storyItemCta)
.addEventListener("click", this.onStoryItemCtaClickEvent.bind(this))
})
}
unBindEvents() {
this
.indicatorItem
.forEach((t, e) => {
t.removeAllEventListeners("click")
}),
this
.featureBtn
.forEach(t => {
t.removeAllEventListeners("click")
}),
this
.storyItemController
.forEach(t => {
t.removeAllEventListeners("click")
})
}
onStoryItemCtaClickEvent(t) {
t.preventDefault();
const e = t.target;
t = e.getAttribute("href");
const i = this
.rootEl
.querySelector(t);
t = i.dataset.rectTop || a
.getOffset(i)
.top - a.getNavHeight();
$(this.layerEl).trigger("closeLayer", !1),
$("html, body").animate({
scrollTop: t
}, {duration: 1e3});
const s = i.querySelector(".wearable-watch-common__headline")
? i.querySelector(".wearable-watch-common__headline")
: i.querySelector(".wearable-watch-common__sub-headline");
s && (
s.setAttribute("tabindex", "0"),
s.focus(),
s.addEventListener("focusout", () => {
s.removeAttribute("tabindex")
})
)
}
handleNavigationPrev() {
let t = this.storySwiper.instance.realIndex - 1;
t < 0 && (t = this.storySlide.length - 1),
this
.storySwiper
.instance
.slideToLoop(t)
}
handleNavigationNext() {
let t = this.storySwiper.instance.realIndex + 1;
t >= this.storySlide.length && (t = 0),
this
.storySwiper
.instance
.slideToLoop(t)
}
handleLayerOpen(t, e) {
e.preventDefault(),
this.opts.initSlide = t
}
updateControlText(t, e) {
const i = t.querySelector(this.opts.controlHiddenEl);
t = e
? this.globalText.play
: this.globalText.stop;
i.innerHTML = t
}
select(t, e = !1, i) {
var s = this.selectedIndex;
s === t && !e || (
this.animReqId && (a.cancelAFrame.call(window, this.animReqId), this.animReqId = null),
-1 < s && (
this.indicatorItem[s].classList.contains(this.classes.isActive) && (
this.indicatorItem[s].classList.remove(this.classes.isActive),
this.indicatorItem[s].removeAttribute("title")
),
"tablist" === this.role
? this.indicatorItem[s].setAttribute("aria-selected", "false")
: this.indicatorItem[s].removeAttribute("title")
),
t < 0
? this.selectedIndex = t
: (
this.selectedIndex = t,
this.indicatorItem[this.selectedIndex].classList.contains(this.classes.isActive) || this.indicatorItem[this.selectedIndex].classList.add(this.classes.isActive),
"tablist" === this.indicatorList.getAttribute("role")
? this.indicatorItem[this.selectedIndex].setAttribute("aria-selected", "true")
: this.indicatorItem[this.selectedIndex].setAttribute("title", "selected"),
this.storySwiper.instance.slideToLoop(this.selectedIndex)
)
)
}
updateImageLayout() {
this.featureContent.clientWidth / this.featureContent.clientHeight <= .56
? this
.layerEl
.classList
.add(this.classes.isHeight)
: this
.layerEl
.classList
.remove(this.classes.isHeight)
}
onResizeHandler() {
a
.winSize()
.w === this.winWidth && a
.winSize()
.h === this.winHeight || (
this.winWidth = a.winSize().w,
this.winHeight = a.winSize().h,
null != this.opts.widthResizeStart && null != this.opts.heightResizeStart || (
this.opts.widthResizeStart = this.winWidth,
this.opts.heightResizeStart = this.winHeight,
this.resizeAnimateFunc()
)
),
window.clearTimeout(this.resizeEndTime),
this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150)
}
resizeAnimateFunc() {
this.setWidthLayout(),
this.setHeightLayout(),
this.resizeRequestFrame = a
.requestAFrame
.call(window, this.resizeAnimateFunc.bind(this))
}
resizeEndFunc() {
this.opts.widthResizeStart = null,
this.opts.heightResizeStart = null,
a
.cancelAFrame
.call(window, this.resizeRequestFrame)
}
onResponsiveChange() {
this.select(this.selectedIndex, !0),
this
.featurePlayer
.forEach(t => {
this
.videoPlayer
.change(t)
}),
"block" === this.layerEl.style.display && this
.storyPlayer
.forEach(t => {
this
.videoPlayer
.change(t)
})
}
setWidthLayout() {
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.updateImageLayout(),
this.currentDevice !== this.prevDevice && this.onResponsiveChange(),
this.prevDevice = this.currentDevice
}
setHeightLayout() {
this.updateImageLayout()
}
buildVideoPlayer() {
this.videoPlayer = {
instance: [],
load: e => {
this.videoPlayer.instance.length && this
.videoPlayer
.instance
.forEach(t => {
t.onLoad(e)
})
},
reset: e => {
this.videoPlayer.instance.length && this
.videoPlayer
.instance
.forEach(t => {
t.onReset(e)
})
},
play: e => {
this.videoPlayer.instance.length && this
.videoPlayer
.instance
.forEach(t => {
t.onPlay(e)
})
},
change: e => {
this.videoPlayer.instance.length && this
.videoPlayer
.instance
.forEach(t => {
t.onChange(e)
})
},
build: () => {
this.videoPlayer.instance.length || this
.videoElement
.forEach((t, e) => {
var i = t.closest(this.opts.featureItem)
? this.opts.featureItem
: null;
this
.videoPlayer
.instance
.push(new WATCH6.VideoPlayer(t, {
sectionElement: this.opts.el,
videoParentElement: i,
on: {
updateController: t => {
const e = t.el;
var i = e.dataset.tagging,
t = t.playState
? "pause"
: "play",
s = e
.classList
.contains(this.opts.featureBtn.split(".")[1])
? this.opts.thumbnailTagging
: e
.classList
.contains(this.opts.storyItemController.split(".")[1])
? this.opts.popupTagging
: "";
e.setAttribute("data-omni", s[i][t]),
e.setAttribute("ga-la", s[i][t])
}
}
}))
})
}
},
this
.videoPlayer
.build()
}
buildSwiper() {
this.storySwiper = {
instance: null,
options: {
a11y: !1,
loop: this.opts.infiniteRolling,
speed: this.opts.transitionDuration,
effect: "fade",
touchMoveStopPropagation: !0,
fadeEffect: {
crossFade: !0
},
initialSlide: this.opts.initSlide
},
slideChange: () => {
const i = this.storySwiper.instance.realIndex,
t = this.storySlide[i],
e = t.querySelector(this.opts.videoElement);
this.select(i),
e && (
e.classList.contains(this.classes.loaded)
? a.isLowNetwork() || this.videoPlayer.play(e)
: this.videoPlayer.load(e)
),
this
.storySlide
.forEach((t, e) => {
e !== i && (e = t.querySelector(this.opts.videoElement)) && this
.videoPlayer
.reset(e)
})
},
slideChangeTransitionStart: () => {
if (null !== this.storySwiper.instance) {
const e = Array.from(this.storySwiper.instance.slides);
var t = this.storySwiper.instance.realIndex;
this.storySlide[t];
e.forEach((t, e) => {
t.setAttribute("aria-hidden", "true"),
t.setAttribute("tabindex", "-1"),
t
.querySelector(this.opts.storyItemCta)
.setAttribute("aria-hidden", "true"),
t
.querySelector(this.opts.storyItemCta)
.setAttribute("tabindex", "-1"),
t.querySelector(this.opts.storyItemController) && (
t.querySelector(this.opts.storyItemController).setAttribute("aria-hidden", "true"),
t.querySelector(this.opts.storyItemController).setAttribute("tabindex", "-1")
),
t
.classList
.contains("swiper-slide-active") && (
t.setAttribute("aria-hidden", "false"),
t.removeAttribute("tabindex"),
t.querySelector(this.opts.storyItemCta).setAttribute("aria-hidden", "false"),
t.querySelector(this.opts.storyItemCta).removeAttribute("tabindex"),
t.querySelector(this.opts.storyItemController) && (
t.querySelector(this.opts.storyItemController).setAttribute("aria-hidden", "false"),
t.querySelector(this.opts.storyItemController).removeAttribute("tabindex")
)
)
})
}
},
destroy: () => {
null !== this.storySwiper.instance && (
this.storySwiper.instance.destroy(),
this.storySwiper.instance = null
)
},
build: () => {
null === this.storySwiper.instance && (
this.storySwiper.options.on = {
slideChange: this
.storySwiper
.slideChange
.bind(this),
slideChangeTransitionStart: this
.storySwiper
.slideChangeTransitionStart
.bind(this)
},
this.storySwiper.options.initialSlide = this.opts.initSlide,
this.storySwiper.instance = new Swiper(this.opts.storyEl, this.storySwiper.options),
this.storySwiper.slideChangeTransitionStart()
)
}
}
}
buildLayer() {
this.layer = {
instance: null,
build: () => {
null === this.layer.instance && (
this.layer.instance = new HiveLayer(this.opts.layerEl, {
effect: "default",
on: {
layerOpenBefore: () => {
this.updateImageLayout();
const t = this.storySlide[this.opts.initSlide];
var e = t.querySelector(this.opts.videoElement);
this
.storySwiper
.build(),
this.select(this.opts.initSlide),
e && this
.videoPlayer
.load(e),
this
.featurePlayer
.forEach(t => {
this
.videoPlayer
.reset(t)
})
},
layerOpenAfter: () => {
const t = this.storySlide[this.opts.initSlide];
var e = t.querySelector(this.opts.storyItemController),
i = t.querySelector(this.opts.storyItemCta);
const s = e || i;
window.setTimeout(() => {
s.focus()
}, 50)
},
layerCloseBefore: () => {
this
.featureBtn
.forEach(t => {
t
.classList
.contains(this.classes.isPaused) && t
.classList
.remove(this.classes.isPaused)
})
},
layerCloseAfter: () => {
this
.storySwiper
.destroy(),
this.initValues(),
this
.indicatorItem
.forEach(t => {
t
.classList
.remove(this.classes.isActive),
t.removeAttribute("title")
}),
this
.storySlide
.forEach(t => {
t = t.querySelector(this.opts.videoElement);
this
.videoPlayer
.reset(t)
})
}
}
})
)
}
},
this
.layer
.build()
}
}
}(),
function () {
"use strict";
window.WATCH6 = window.WATCH6 || {};
WATCH6.UTILS.RESPONSIVE;
WATCH6.Progress = class {
constructor(t = container, e) {
this.opts = {
el: t,
videoElement: ".video__container",
featureHide: "is-feature-hide"
},
this.el = document.querySelector(t),
this.init()
}
init() {
null === this.el || this
.el
.classList
.contains(this.opts.featureHide) || (
this.setElements(),
this.buildVideoPlayer()
)
}
setElements() {
this.videoElement = this
.el
.querySelector(this.opts.videoElement)
}
buildVideoPlayer() {
this.videoPlayer = {
instance: null,
build: () => {
null === this.videoPlayer.instance && (
this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, {
sectionElement: this.opts.el,
visiblePoint: .5,
videoParentElement: this.opts.el
})
)
}
},
this
.videoPlayer
.build()
}
}
}(),
function () {
"use strict";
window.WATCH6 = window.WATCH6 || {};
const a = WATCH6.UTILS,
t = a.RESPONSIVE;
WATCH6.Screen = class {
constructor(t = container, e) {
var i = {
el: t,
trackElement: ".wearable-watch-screen__track",
fixedElement: ".wearable-watch-screen__fixed",
textElement: ".wearable-watch-screen__text",
videoElement: ".video__container",
videoController: ".video__controller",
featureHide: "is-feature-hide",
classes: {
scene01: "scene01",
scene02: "scene02",
brokenFixedAnimation: "broken-fixed-animation"
},
widthResizeStart: null,
heightResizeStart: null
};
this.opts = i,
this.classes = i.classes,
this.el = document.querySelector(t),
this.init()
}
init() {
null === this.el || this
.el
.classList
.contains(this.opts.featureHide) || (
this.setElements(),
this.initOpts(),
this.bindEvents(),
this.buildVideoPlayer(),
this.onLoadHandler()
)
}
setElements() {
this.trackElement = this
.el
.querySelector(this.opts.trackElement),
this.fixedElement = this
.el
.querySelector(this.opts.fixedElement),
this.textElement = this
.el
.querySelector(this.opts.textElement),
this.videoElement = this
.el
.querySelector(this.opts.videoElement),
this.videoController = this
.el
.querySelector(this.opts.videoController),
this.video = this
.videoElement
.querySelector("video"),
this
.video
.querySelectorAll("source")
.forEach(t => {
document
.documentElement
.classList
.contains("safari") && -1 < t
.getAttribute("type")
.indexOf("webm") && t.remove()
})
}
initOpts() {
this.getCurrentDevice(),
this.winWidth = a
.winSize()
.w,
this.winHeight = a
.winSize()
.h,
this.currentAnimation = null,
this.prevAnimation = null,
this.scroller = null,
this.brokenScroller = null,
this.lastScrollY = 0,
this.animationPlay = !1
}
initStyle() {
ANIUTIL.removeClass({
targetElement: this.el,
classList: [this.classes.brokenFixedAnimation, this.classes.scene01, this.classes.scene02]
})
}
bindEvents() {
window.addEventListener("load", this.onLoadHandler.bind(this)),
window.addEventListener("resize", this.onResizeHandler.bind(this)),
window.addEventListener("scroll", this.onScrollHandler.bind(this)),
window.addEventListener(
"orientationchange",
this.onOrientationChange.bind(this)
)
}
getCurrentDevice() {
this.winWidth = a
.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"
}
buildVideoPlayer() {
this.videoPlayer = {
instance: null,
play: () => {
null !== this.videoPlayer.instance && this
.videoPlayer
.instance
.onPlay(this.videoElement)
},
build: () => {
null === this.videoPlayer.instance && (
this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, {
sectionElement: this.opts.el,
videoParentElement: this.opts.el,
on: {
updatePlayState: t => {
this.videoController || a.isFullAnimationBrokenFixed() || t && this
.el
.classList
.add(this.classes.scene02)
},
updateController: t => {
!this.videoController || t.playState && !a.isFullAnimationBrokenFixed() && (
a.isLowNetwork()
? (
this.el.classList.contains(this.classes.scene02) && this.el.classList.remove(this.classes.scene02),
window.setTimeout(() => {
this
.el
.classList
.add(this.classes.scene02)
}, 10)
)
: this.el.classList.add(this.classes.scene02)
)
}
}
})
)
}
},
this
.videoPlayer
.build()
}
onLoadHandler() {
this.setWidthLayout(),
this.setHeightLayout(),
this.onScrollHandler(),
window.removeEventListener("load", this.onLoadHandler.bind(this))
}
onScrollHandler() {
const t = this;
var e = window.scrollY;
this.lastScrollY,
a
.getScroll()
.bottom,
a
.getOffset(this.el)
.top;
null !== this.scroller && this
.scroller
.trackAnimation(function () {
this.progress <= 0 && t
.el
.classList
.remove(t.classes.scene02),
!t.videoController && a.isLowNetwork() && 40 < this.progress && t
.videoPlayer
.play()
}),
null !== this.brokenScroller && this
.brokenScroller
.activeAnimation(),
this.lastScrollY = e
}
onResizeHandler() {
a
.winSize()
.w === this.winWidth && a
.winSize()
.h === this.winHeight || (
this.winWidth = a.winSize().w,
this.winHeight = a.winSize().h,
null != this.opts.widthResizeStart && null != this.opts.heightResizeStart || (
this.opts.widthResizeStart = this.winWidth,
this.opts.heightResizeStart = this.winHeight,
this.resizeAnimateFunc()
)
),
window.clearTimeout(this.resizeEndTime),
this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150)
}
resizeAnimateFunc() {
this.setWidthLayout(),
this.setHeightLayout(),
this.resizeRequestFrame = a
.requestAFrame
.call(window, this.resizeAnimateFunc.bind(this))
}
resizeEndFunc() {
this.opts.widthResizeStart = null,
this.opts.heightResizeStart = null,
a
.cancelAFrame
.call(window, this.resizeRequestFrame)
}
onResponsiveChange() {
this.destroyScroller(),
this.destroyBrokenScroller(),
this.initStyle(),
a.isFullAnimationBrokenFixed()
? this.setBrokenScroller()
: this.setScroller()
}
onOrientationChange() {
setTimeout(() => {
this.destroyScroller(),
this.destroyBrokenScroller(),
this.initStyle(),
a.isFullAnimationBrokenFixed()
? this.setBrokenScroller()
: this.setScroller()
}, 150)
}
setWidthLayout() {
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.currentDevice !== this.prevDevice && this.onResponsiveChange(),
this.prevDevice = this.currentDevice
}
setHeightLayout() {
var t = window.innerWidth,
e = window.innerHeight,
i = !!a.isTouchDevice && window
.matchMedia("(orientation: landscape)")
.matches,
s = !!a.isTouchDevice && !window
.matchMedia("(orientation: landscape)")
.matches;
this.currentAnimation = s && e / t < 1.5 || i || e < 700
? "broken"
: "use",
this.currentAnimation === this.prevAnimation || a.isTouchDevice || this.onResponsiveChange(),
this.prevAnimation = this.currentAnimation
}
setScroller() {
this.destroyScroller(),
null === this.scroller && (this.scroller = SCROLLER({
trackElement: this.trackElement,
useFixed: !1
}))
}
setBrokenScroller() {
null === this.brokenScroller && (
this.brokenScroller = SCROLLER({trackElement: this.trackElement, activeElement: this.el, activeClass: this.classes.brokenFixedAnimation})
)
}
destroyScroller() {
null !== this.scroller && (this.scroller.destroy(!0), this.scroller = null)
}
destroyBrokenScroller() {
null != this.brokenScroller && (
this.brokenScroller.destroy(!0),
this.brokenScroller = null
)
}
}
}(),
function () {
"use strict";
window.WATCH6 = window.WATCH6 || {};
WATCH6.UTILS.RESPONSIVE;
WATCH6.Snap = class {
constructor(t = container, e) {
this.opts = {
el: t,
videoElement: ".video__container",
featureHide: "is-feature-hide"
},
this.el = document.querySelector(t),
this.init()
}
init() {
null === this.el || this
.el
.classList
.contains(this.opts.featureHide) || (
this.setElements(),
this.buildVideoPlayer()
)
}
setElements() {
this.videoElement = this
.el
.querySelector(this.opts.videoElement)
}
buildVideoPlayer() {
this.videoPlayer = {
instance: null,
build: () => {
null === this.videoPlayer.instance && (
this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, {sectionElement: this.opts.el})
)
}
},
this
.videoPlayer
.build()
}
}
}(),
function () {
"use strict";
window.WATCH6 = window.WATCH6 || {};
WATCH6.UTILS.RESPONSIVE;
WATCH6.Standalone = class {
constructor(t = container, e) {
this.opts = {
el: t,
tabEl: ".wearable-watch-standalone__tab",
tabList: ".wearable-watch-standalone__tab-list",
tabButtons: ".wearable-watch-standalone__tab-cta",
tabPanel: ".wearable-watch-standalone__tab-panels",
tabPanels: ".wearable-watch-standalone__tab-panel",
featureHide: "is-feature-hide"
},
this.el = document.querySelector(t),
this.init()
}
init() {
null === this.el || this
.el
.classList
.contains(this.opts.featureHide) || (this.setElements(), this.buildTab())
}
setElements() {
this.tabEl = this
.el
.querySelector(this.opts.tabEl)
}
buildTab() {
this.tab = {
instance: null,
build: () => {
null === this.tab.instance && (this.tab.instance = new WATCH6.Tab(this.tabEl, {
tabEl: this.opts.tabEl,
tabList: this.opts.tabList,
tabButtons: this.opts.tabButtons,
tabPanel: this.opts.tabPanel,
tabPanels: this.opts.tabPanels
}))
}
},
this
.tab
.build()
}
}
}(),
function () {
"use strict";
window.WATCH6 = window.WATCH6 || {};
const a = WATCH6.UTILS,
t = a.RESPONSIVE;
WATCH6.Tab = class {
constructor(t = container, e) {
var i = {
el: t,
tabEl: ".wearable-watch__tab",
tabList: ".wearable-watch__tab-list",
tabButtons: ".wearable-watch__tab-cta",
tabPanel: ".wearable-watch__tab-panels",
tabPanels: ".wearable-watch__tab-panel",
classes: {
isActive: "is-active"
},
resizeStart: null
};
this.opts = a.def(i, e || {}),
this.classes = i.classes,
this.el = t,
this.init()
}
init() {
null !== this.el && (this.setElements(), this.initOpts(), this.bindEvents())
}
setElements() {
this.tabEl = this.el,
this.tabList = this
.tabEl
.querySelector(this.opts.tabList),
this.tabButtons = a.convertArray(
this.tabList.querySelectorAll(this.opts.tabButtons)
),
this.tabPanel = this
.el
.querySelector(this.opts.tabPanel),
this.tabPanels = a.convertArray(
this.tabPanel.querySelectorAll(this.opts.tabPanels)
)
}
initOpts() {
this.currentIndex = 0,
this.currentDevice = !1,
this.prevDevice = null
}
initLayout() {
this
.tabButtons
.forEach(function (t, e) {
const i = this.tabPanels[e];
this.currentIndex == e
? (
t.classList.contains(this.classes.isActive) || t.classList.add(this.classes.isActive),
i.classList.contains(this.classes.isActive) || i.classList.add(this.classes.isActive),
t.setAttribute("aria-selected", !0),
a.offAccessibility(i)
)
: (
t.classList.contains(this.classes.isActive) && t.classList.remove(this.classes.isActive),
i.classList.contains(this.classes.isActive) && i.classList.remove(this.classes.isActive),
t.setAttribute("aria-selected", !1),
a.onAccessibility(i)
)
})
}
bindEvents() {
window.addEventListener("resize", this.onResizeHandler.bind(this)),
this
.tabButtons
.forEach(t => {
t.addEventListener("click", this.onClickTabButton.bind(this))
})
}
unBindEvents() {}
onClickTabButton(t) {
t = t.currentTarget;
const s = this
.tabButtons
.indexOf(t);
s != this.currentIndex && (this.tabButtons.forEach((t, e) => {
const i = this.tabPanels[e];
s == e
? (
t.classList.contains(this.classes.isActive) || t.classList.add(this.classes.isActive),
i.classList.contains(this.classes.isActive) || i.classList.add(this.classes.isActive),
t.setAttribute("aria-selected", !0),
a.offAccessibility(i)
)
: (
t.classList.contains(this.classes.isActive) && t.classList.remove(this.classes.isActive),
i.classList.contains(this.classes.isActive) && i.classList.remove(this.classes.isActive),
t.setAttribute("aria-selected", !1),
a.onAccessibility(i)
)
}), this.currentIndex = s)
}
onResizeHandler() {
a
.winSize()
.w !== this.winWidth && (
this.winWidth = a.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 = a
.requestAFrame
.call(window, this.resizeAnimateFunc.bind(this))
}
resizeEndFunc() {
this.opts.resizeStart = null,
a
.cancelAFrame
.call(window, this.resizeRequestFrame)
}
onResponsiveChange() {}
setLayout() {
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.currentDevice !== this.prevDevice && this.onResponsiveChange(),
this.prevDevice = this.currentDevice
}
}
}(),
function () {
"use strict";
window.WATCH6 = window.WATCH6 || {};
WATCH6.UTILS.RESPONSIVE;
WATCH6.Train = class {
constructor(t = container, e) {
this.opts = {
el: t,
videoElement: ".video__container",
featureHide: "is-feature-hide"
},
this.el = document.querySelector(t),
this.init()
}
init() {
null === this.el || this
.el
.classList
.contains(this.opts.featureHide) || (
this.setElements(),
this.buildVideoPlayer()
)
}
setElements() {
this.videoElement = this
.el
.querySelector(this.opts.videoElement)
}
buildVideoPlayer() {
this.videoPlayer = {
instance: null,
build: () => {
null === this.videoPlayer.instance && (
this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, {
sectionElement: this.opts.el,
videoParentElement: this.opts.el
})
)
}
},
this
.videoPlayer
.build()
}
}
}(),
function () {
"use strict";
WATCH6.UTILS.RESPONSIVE;
new class {
constructor(t = container) {
this.opts = {
el: t,
wrapEl: "#wrap",
keyVisualEl: ".wearable-watch-kv",
overviewEl: ".wearable-watch-overview",
screenEl: ".wearable-watch-screen",
bandEl: ".wearable-watch-band",
glassEl: ".wearable-watch-glass",
trainEl: ".wearable-watch-train",
snapEl: ".wearable-watch-snap-remote",
standaloneEl: ".wearable-watch-standalone",
monitoringEl: ".wearable-watch-monitoring",
batteryEl: ".wearable-watch-battery-processor",
progressEl: ".wearable-watch-progress",
compareEl: ".wearable-watch-compare",
contrastEl: ".cp-high-contrast",
subNavEl: "#subnav"
},
this.el = document.querySelector(t),
this.init()
}
init() {
null !== this.el && (this.buildComponents(), initialize.init())
}
buildComponents() {
this.imageLoader = new WATCH6.ImageLoader(this.opts.el, {
loadOption: [
{
resolution: 1920,
attribute: "data-src-pc"
}, {
resolution: 1080,
attribute: "data-src-tablet"
}, {
resolution: 767,
attribute: "data-src-mobile"
}
]
}),
this.videoLoader = new WATCH6.VideoLoader(this.opts.el, {
notLoadElement: [".cm-layer"],
loadOption: [
{
resolution: 1920,
attribute: "data-media-pc"
}, {
resolution: 767,
attribute: "data-media-mo"
}
]
}),
this.keyVisual = new WATCH6.KeyVisual(this.opts.keyVisualEl),
this.overview = new WATCH6.Overview(this.opts.overviewEl),
this.screen = new WATCH6.Screen(this.opts.screenEl),
this.standalone = new WATCH6.Standalone(this.opts.standaloneEl),
this.monitoring = new WATCH6.Monitoring(this.opts.monitoringEl),
this.band = new WATCH6.Band(this.opts.bandEl),
this.glass = new WATCH6.Glass(this.opts.glassEl),
this.train = new WATCH6.Train(this.opts.trainEl),
this.snap = new WATCH6.Snap(this.opts.snapEl),
this.compare = new WATCH6.Compare(this.opts.compareEl, {
on: {
updateImageLoader: t => {
this
.imageLoader
.setResponsiveImage(t)
}
}
}),
this.contrast = new WATCH6.Contrast(this.opts.contrastEl),
this.batteryEl = new WATCH6.Battery(this.opts.batteryEl),
this.progressEl = new WATCH6.Progress(this.opts.progressEl),
window.addEventListener("load", () => {
setTimeout(() => {
window.GALAXY && window.GALAXY.isGalaxy && (
this.subNav = new WATCH6.SubNav(this.opts.subNavEl)
)
}, 5)
})
}
}(".wearable-watch")
}();
});