Samsung VXT

Create, Connect & Capture

The VXT Portal homepage is displayed on the monitor. A woman clicks on the "Cloud Systems Migration" button and the VXT logo appears.

Introducing VXT 2.1: Explore the new features here!

Award Winning Technology

There are three award logos.

  • ISE 2024 Best of Show
    by AV Technology
  • ISE 2024 Best of Show
    by Installation
  • 2024 Top New Technology
    (TNT) Awards

Streamline
your
screen
management

Samsung VXT is a cloud-based solution for digital signage, bringing intuitive content management and remote display management together in one secure platform. Start a free trial today, and when you’re ready to take your signage to the next level, deploy it across your screens instantly.

As a man and a woman work on their laptops, the main screen of Samsung VXT pops up between them. It connects the screens installed across various regions including Europe/CIS, Asia, Middle East/Africa, North America, Latin America, and China.

Choose the cloud and unlock
your business potential

Start a free trial,
without hassle

Unlike many on-premise solutions, VXT now allows buyers to try the solution before purchasing it by requesting a free trial on the Cloud portal provided by Samsung, which takes less than 10 minutes.

A pricing plan featuring a free trial is displayed on the mobile phone screen.

Versatile screen capability

Samsung VXT – an integrated solution compatible with all display types, including LCD, LED signage, and hotel TVs – supports a wide range of setups, from standalone and outdoor to interactive and beyond.

Surrounding the VXT logo are several display icons, including Standalone, Interactive Display, LED, Outdoor, Video Wall and Hotel TV. These icons seem to be floating freely in the air.

Power your business
to move forward faster

The cloud native structure of Samsung VXT enables businesses to deploy and update software directly from the cloud portal without the need to install or update each one individually. Initial setup is also faster so businesses can stay agile and flexible to suit their specific needs.

Buildings are connected to the cloud network, facilitating seamless data exchange and communication.

Save fixed server costs

VXT is a more cost-effective solution when compared to on-premise solutions. You only pay for the license based on what is specified in your payment plan. Plus, server management and maintenance are handled by the cloud service provider, saving physical space, time and money.

As the physical servers fade away, a cloud icon appears in the center while an icon representing cost savings emerges.

As the physical servers fade away, a cloud icon appears in the center while an icon representing cost savings emerges.

Minimize failures,
speed up
recovery time

Samsung VXT breaks applications down into small block structures that are much more granular than other cloud native solutions. In the case of an error, the shutdown range is focused, minimizing failures and maximizing rapid recovery for peace of mind.

The red block pops out of the cube during recovery while the other blocks of the cube remain stable, indicating that one function within the solution is independent from the rest of the functions.

Industry-leading security

Samsung VXT sets a new standard for security in the digital signage industry by providing the highest level of protection. With the world's first digital signage solution to obtain ISO 27701 certification, Samsung ensures the safe handling and storage of personally identifiable information (PII).

There is a shield icon that represents security. The certifications of ISO/IEC 27001:2022 and ISO/IEC 27701:2019 are displayed around it.

Samsung VXT
Content Management

Effortlessly create promotional content

VXT Canvas enables anyone to create content effortlessly and more intuitively. You can create original content with a variety of templates and free stock images, even adding widgets for more dynamic, visually engaging content. As the use of interactive content for digital displays continues to increase, VXT Canvas also allows for easy touch content creation.

A GUI screen of Samsung VXT creating promotional content is displayed on the laptop screen.

Easy, intuitive scheduling and playlist creation

Samsung VXT uses an intuitive drag and drop interface, making content scheduling and playlist creation simple with just a few quick clicks. It also allows for adjusting content schedules and distributing them to connected displays anytime, without requiring a PC.

A GUI screen of Samsung VXT scheduling content is displayed on the laptop screen.
  • Keep content in sync

    VXT offers a SyncPlay function, synchronizing all screens across the system and playing content in line with each other. Regardless of the server time connected to the display, VXT synchronizes the internal time across multiple displays and constantly checks it during content playback to prevent lag or streaming delay, while also eliminating gaps as content transitions.

    Two displays are promoting the morning menu. As the clock in the upper left corner approaches 11 o'clock, the displays are simultaneously switched to advertise the lunch set menu, and an icon indicates that the two displays are synchronized.

    Two displays are promoting the morning menu. As the clock in the upper left corner approaches 11 o'clock, the displays are simultaneously switched to advertise the lunch set menu, and an icon indicates that the two displays are synchronized.

  • Customizable
    management
    with tagging

    Samsung VXT introduces a flexible tag structure compared to the tree-like folder structure typically used by businesses, enabling easy searching of all data related to a specific tag. The convenient tag system enables users to manage content and screens more efficiently, enhancing overall business operations.

    Several tags are applied to the content. When a tag is selected, other content associated with that tag appears.

    Several tags are applied to the content. When a tag is selected, other content associated with that tag appears.

  • Play on
    any screen

    VXT is compatible with a variety of displays by simply downloading the VXT Player app via Google Playstore or launching a Chrome browser to open the platform.

    A display, a tablet and a kiosk are playing promotional content.

Samsung VXT
Remote Management

Remote control
in real-time, every time

Samsung VXT provides an intuitive interface with remote real-time monitoring, screen management and comprehensive security control.

Additional lock options are available for items such as USB port, Wi-Fi and Bluetooth connections, networks port access and remote controllers, even for multiple screens.

An operation screen of Samsung VXT shows real-time monitoring and provides security control options for USB, Bluetooth, Wi-Fi, Network, and Remote control in the menu bar.

Take action before
a problem happens

VXT detects dangerous situations in advance, such as a severe temperature increase or weak network signal.

By sending a warning email and SMS to the user, it proactively addresses the issue before it affects any displays while also ensuring stable content play.

A warning message from Samsung VXT is received on the phone, notifying about a display's weak Wi-Fi signal. In the lower right corner, there is the text 'Early Warning' with an icon.
  • Monthly Energy Report

    Analyze the monthly electricity consumption of your screens, including a comparison to the previous month.

    The energy management screen of Samsung VXT displays monthly energy consumption.
  • Brightness Control

    Adjust the brightness settings of the screens to
    conserve energy.

  • Automatic On/Off Timer

    Set the automatic on/off timer based on day and
    time for your displays.

  • Holiday Management

    To save energy during holidays, input your schedule in
    advance and set your displays to turn off accordingly.

Previous Next

    Advanced functionality for corporate-level management

    Samsung VXT offers a host of features that streamline operations,
    eliminating common frustrations for enterprise IT managers.

    The VXT logo is surrounded by a variety of enterprise-focused features such as SSO support, multi-screen enrollment, multi administrators, device preset, private certificate, and default content.

    Samsung VXT PIRS App

    Even more solutions for your business needs

    Introducing Samsung VXT PIRS App: a brand new, innovative business platform that allows users to easily discover, install, and utilize additional solutions tailored to their specific needs. With VXT PIRS App, partners can generate new business opportunities by selling their unique apps, while customers can test a solution and then deploy it to all displays by purchasing a cost-effective license.

    Above the screen positioned flat, are various application icons such as art, menu board, real estate listings, and automotive sales floating around.

    Find vertical-specific custom options

    • Art Content

      VXT Art offers access to a range of incredible art content by renowned artists, bringing inspiration and elegance to your surroundings.

      The display in the lobby features a painting.
    • POS Integrated Menu Board

      With Link My POS, you can integrate your digital menu board with POS system, allowing for real-time automatic updates including new menu items and price changes.

      In the cafe, the display shows a menu board.
    • Real Estate Listings

      Using Ngine Real Estate, you can display a variety of property listings in database with real-time updates on prices and photos.

      An outdoor display showcases a property for sale.
    • Automotive Sales

      Ngine Automotive allows you to easily showcase the model names, specs, prices, and images of vehicles that are currently in stock on your displays.

      A display highlights an automobile that's up for sale.

    New and improved features
    update: VXT 2.1

    Improved Sync Play, Screen Wall

    Improvements in the P and X Series allow users to have the ability to enlarge or duplicate video and send multiple playlists or single playlist to Screen Wall, as well as the ability to configure the video wall screen layout from 2x1 to a maximum 10x10. This can now be configured entirely with Samsung VXT.

    Improved Sync Play, Screen Wall image

    Tag Condition/Tag Alias

    Users of the P and X Series can now add a Tag to each piece of content in a playlist, with an ‘Allow’ option to make sure the device plays the content with this tag and a ‘Skip’ option to choose what content must not be played, with tags applicable to either Web (URL) or Web (HTML).

    Tag Condition/Tag Alias image

    Channel Management

    This feature of the P and X Series allows users to set multiple content types based on a variety of scenarios.

    Channel Management image

    Tag Explorer

    A new Tag Explorer automatically structures and displays tags in a hierarchical structure, making it easy for users to find the content they need.

    Tag Explorer image

    Content Journey Map

    This feature shows the content list that is using the content, the screen list that has published the content, and the workspaces to which the content has been shared.

    Content Journey Map image

    Chat Bot

    The new Chat Bot feature covers questions regarding the Samsung VXT CMS, with X-Series customers provided with a live chat to the Samsung help desk.

    The enhancements to Samsung VXT provide businesses with even more tools to deliver dynamic, engaging, and secure digital experiences.

    Chat Bot image

    & More!



    Nested Playlist

    Users will now be able to place a playlist within another playlist, with 1-depth support in the General Playlist.

    Advanced Tag/Screen Management

    Users of the P and X Series can now import and export Tag sets created in Excel for each workspace and pre-assign tags to each screen when creating an Excel file for Multi-Screen Enrollment.

    Advanced Role Management

    With VXT 2.1’s Advanced Role Management, those with an Installer role can only add screens and edit the basic information of the screens they have added, while those with a Screen Manager role can add or manage screens, but their content management abilities are limited to those given to such roles only.
    C C
    ` )), a.append(n)), n ); } return ( Object.keys(y).forEach((t) => { Object.keys(y[t]).forEach((e) => { C.prototype[e] = y[t][e]; }); }), C.use([ function (e) { let { swiper: n, on: t, emit: i } = e; const s = $(); let a = null, r = null; const l = () => { n && !n.destroyed && n.initialized && (i("beforeResize"), i("resize")); }, o = () => { n && !n.destroyed && n.initialized && i("orientationchange"); }; t("init", () => { n.params.resizeObserver && void 0 !== s.ResizeObserver ? n && !n.destroyed && n.initialized && (a = new ResizeObserver((i) => { r = s.requestAnimationFrame(() => { var { width: e, height: t } = n; let s = e, a = t; i.forEach((e) => { var { contentBoxSize: e, contentRect: t, target: i, } = e; (i && i !== n.el) || ((s = t ? t.width : (e[0] || e).inlineSize), (a = t ? t.height : (e[0] || e).blockSize)); }), (s === e && a === t) || l(); }); })).observe(n.el) : (s.addEventListener("resize", l), s.addEventListener("orientationchange", o)); }), t("destroy", () => { r && s.cancelAnimationFrame(r), a && a.unobserve && n.el && (a.unobserve(n.el), (a = null)), s.removeEventListener("resize", l), s.removeEventListener("orientationchange", o); }); }, function (e) { let { swiper: i, extendParams: t, on: s, emit: a } = e; function n(e, t) { void 0 === t && (t = {}); const i = new (l.MutationObserver || l.WebkitMutationObserver)( (e) => { var t; 1 === e.length ? a("observerUpdate", e[0]) : ((t = function () { a("observerUpdate", e[0]); }), l.requestAnimationFrame ? l.requestAnimationFrame(t) : l.setTimeout(t, 0)); } ); i.observe(e, { attributes: void 0 === t.attributes || t.attributes, childList: void 0 === t.childList || t.childList, characterData: void 0 === t.characterData || t.characterData, }), r.push(i); } const r = [], l = $(); t({ observer: !1, observeParents: !1, observeSlideChildren: !1 }), s("init", () => { if (i.params.observer) { if (i.params.observeParents) { var t = i.$el.parents(); for (let e = 0; e < t.length; e += 1) n(t[e]); } n(i.$el[0], { childList: i.params.observeSlideChildren }), n(i.$wrapperEl[0], { attributes: !1 }); } }), s("destroy", () => { r.forEach((e) => { e.disconnect(); }), r.splice(0, r.length); }); }, ]), C.use([ function (e) { let t, { swiper: y, extendParams: i, on: s, emit: T } = e; function C(e, t) { const i = y.params.virtual; if (i.cache && y.virtual.cache[t]) return y.virtual.cache[t]; const s = i.renderSlide ? z(i.renderSlide.call(y, e, t)) : z( `
    ${e}
    ` ); return ( s.attr("data-swiper-slide-index") || s.attr("data-swiper-slide-index", t), i.cache && (y.virtual.cache[t] = s), s ); } function r(t) { const { slidesPerView: e, slidesPerGroup: i, centeredSlides: s, } = y.params, { addSlidesBefore: a, addSlidesAfter: n } = y.params.virtual, { from: r, to: l, slides: o, slidesGrid: d, offset: c, } = y.virtual; y.params.cssMode || y.updateActiveIndex(); var p = y.activeIndex || 0; let h, u, m; (h = y.rtlTranslate ? "right" : y.isHorizontal() ? "left" : "top"), (m = s ? ((u = Math.floor(e / 2) + i + n), Math.floor(e / 2) + i + a) : ((u = e + (i - 1) + n), i + a)); const v = Math.max((p || 0) - m, 0), g = Math.min((p || 0) + u, o.length - 1), f = (y.slidesGrid[v] || 0) - (y.slidesGrid[0] || 0); function w() { y.updateSlides(), y.updateProgress(), y.updateSlidesClasses(), y.lazy && y.params.lazy.enabled && y.lazy.load(), T("virtualUpdate"); } if ( (Object.assign(y.virtual, { from: v, to: g, offset: f, slidesGrid: y.slidesGrid, }), r === v && l === g && !t) ) return ( y.slidesGrid !== d && f !== c && y.slides.css(h, f + "px"), y.updateProgress(), void T("virtualUpdate") ); if (y.params.virtual.renderExternal) return ( y.params.virtual.renderExternal.call(y, { offset: f, from: v, to: g, slides: (function () { const t = []; for (let e = v; e <= g; e += 1) t.push(o[e]); return t; })(), }), void (y.params.virtual.renderExternalUpdate ? w() : T("virtualUpdate")) ); const b = [], E = []; if (t) y.$wrapperEl.find("." + y.params.slideClass).remove(); else for (let e = r; e <= l; e += 1) (e < v || e > g) && y.$wrapperEl .find( `.${y.params.slideClass}[data-swiper-slide-index="${e}"]` ) .remove(); for (let e = 0; e < o.length; e += 1) e >= v && e <= g && (void 0 === l || t ? E.push(e) : (e > l && E.push(e), e < r && b.push(e))); E.forEach((e) => { y.$wrapperEl.append(C(o[e], e)); }), b .sort((e, t) => t - e) .forEach((e) => { y.$wrapperEl.prepend(C(o[e], e)); }), y.$wrapperEl.children(".swiper-slide").css(h, f + "px"), w(); } i({ virtual: { enabled: !1, slides: [], cache: !0, renderSlide: null, renderExternal: null, renderExternalUpdate: !0, addSlidesBefore: 0, addSlidesAfter: 0, }, }), (y.virtual = { cache: {}, from: void 0, to: void 0, slides: [], offset: 0, slidesGrid: [], }), s("beforeInit", () => { y.params.virtual.enabled && ((y.virtual.slides = y.params.virtual.slides), y.classNames.push( y.params.containerModifierClass + "virtual" ), (y.params.watchSlidesProgress = !0), (y.originalParams.watchSlidesProgress = !0), y.params.initialSlide || r()); }), s("setTranslate", () => { y.params.virtual.enabled && (y.params.cssMode && !y._immediateVirtual ? (clearTimeout(t), (t = setTimeout(() => { r(); }, 100))) : r()); }), s("init update resize", () => { y.params.virtual.enabled && y.params.cssMode && L(y.wrapperEl, "--swiper-virtual-size", y.virtualSize + "px"); }), Object.assign(y.virtual, { appendSlide: function (t) { if ("object" == typeof t && "length" in t) for (let e = 0; e < t.length; e += 1) t[e] && y.virtual.slides.push(t[e]); else y.virtual.slides.push(t); r(!0); }, prependSlide: function (s) { const a = y.activeIndex; let e = a + 1, n = 1; if (Array.isArray(s)) { for (let e = 0; e < s.length; e += 1) s[e] && y.virtual.slides.unshift(s[e]); (e = a + s.length), (n = s.length); } else y.virtual.slides.unshift(s); if (y.params.virtual.cache) { const s = y.virtual.cache, a = {}; Object.keys(s).forEach((e) => { const t = s[e], i = t.attr("data-swiper-slide-index"); i && t.attr("data-swiper-slide-index", parseInt(i, 10) + n), (a[parseInt(e, 10) + n] = t); }), (y.virtual.cache = a); } r(!0), y.slideTo(e, 0); }, removeSlide: function (i) { if (null != i) { let t = y.activeIndex; if (Array.isArray(i)) for (let e = i.length - 1; 0 <= e; --e) y.virtual.slides.splice(i[e], 1), y.params.virtual.cache && delete y.virtual.cache[i[e]], i[e] < t && --t, (t = Math.max(t, 0)); else y.virtual.slides.splice(i, 1), y.params.virtual.cache && delete y.virtual.cache[i], i < t && --t, (t = Math.max(t, 0)); r(!0), y.slideTo(t, 0); } }, removeAllSlides: function () { (y.virtual.slides = []), y.params.virtual.cache && (y.virtual.cache = {}), r(!0), y.slideTo(0, 0); }, update: r, }); }, function (e) { let { swiper: p, extendParams: t, on: i, emit: h } = e; const u = S(), m = $(); function s(t) { if (p.enabled) { const i = p["rtlTranslate"]; let e = t; const s = (e = e.originalEvent ? e.originalEvent : e).keyCode || e.charCode, a = p.params.keyboard.pageUpDown, n = a && 33 === s, r = a && 34 === s, l = 37 === s, o = 39 === s, d = 38 === s, c = 40 === s; if ( !p.allowSlideNext && ((p.isHorizontal() && o) || (p.isVertical() && c) || r) ) return !1; if ( !p.allowSlidePrev && ((p.isHorizontal() && l) || (p.isVertical() && d) || n) ) return !1; if ( !( e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || (u.activeElement && u.activeElement.nodeName && ("input" === u.activeElement.nodeName.toLowerCase() || "textarea" === u.activeElement.nodeName.toLowerCase())) ) ) { if ( p.params.keyboard.onlyInViewport && (n || r || l || o || d || c) ) { let t = !1; if ( 0 < p.$el.parents("." + p.params.slideClass).length && 0 === p.$el.parents("." + p.params.slideActiveClass).length ) return; const e = p.$el, s = e[0].clientWidth, a = e[0].clientHeight, h = m.innerWidth, u = m.innerHeight, n = p.$el.offset(), r = (i && (n.left -= p.$el[0].scrollLeft), [ [n.left, n.top], [n.left + s, n.top], [n.left, n.top + a], [n.left + s, n.top + a], ]); for (let e = 0; e < r.length; e += 1) { const i = r[e]; 0 <= i[0] && i[0] <= h && 0 <= i[1] && i[1] <= u && ((0 === i[0] && 0 === i[1]) || (t = !0)); } if (!t) return; } p.isHorizontal() ? ((n || r || l || o) && (e.preventDefault ? e.preventDefault() : (e.returnValue = !1)), (((r || o) && !i) || ((n || l) && i)) && p.slideNext(), (((n || l) && !i) || ((r || o) && i)) && p.slidePrev()) : ((n || r || d || c) && (e.preventDefault ? e.preventDefault() : (e.returnValue = !1)), (r || c) && p.slideNext(), (n || d) && p.slidePrev()), h("keyPress", s); } } } function a() { p.keyboard.enabled || (z(u).on("keydown", s), (p.keyboard.enabled = !0)); } function n() { p.keyboard.enabled && (z(u).off("keydown", s), (p.keyboard.enabled = !1)); } (p.keyboard = { enabled: !1 }), t({ keyboard: { enabled: !1, onlyInViewport: !0, pageUpDown: !0 }, }), i("init", () => { p.params.keyboard.enabled && a(); }), i("destroy", () => { p.keyboard.enabled && n(); }), Object.assign(p.keyboard, { enable: a, disable: n }); }, function (e) { let { swiper: d, extendParams: t, on: i, emit: c } = e; const s = $(); let p; t({ mousewheel: { enabled: !1, releaseOnEdges: !1, invert: !1, forceToAxis: !1, sensitivity: 1, eventsTarget: "container", thresholdDelta: null, thresholdTime: null, }, }), (d.mousewheel = { enabled: !1 }); let h, a = f(); const u = []; function n() { d.enabled && (d.mouseEntered = !0); } function r() { d.enabled && (d.mouseEntered = !1); } function m(e) { (d.params.mousewheel.thresholdDelta && e.delta < d.params.mousewheel.thresholdDelta) || (d.params.mousewheel.thresholdTime && f() - a < d.params.mousewheel.thresholdTime) || (6 <= e.delta && f() - a < 60) || (e.direction < 0 ? (d.isEnd && !d.params.loop) || d.animating || (d.slideNext(), c("scroll", e.raw)) : (d.isBeginning && !d.params.loop) || d.animating || (d.slidePrev(), c("scroll", e.raw)), (a = new s.Date().getTime())); } function l(s) { let a = s, n = !0; if (d.enabled) { var r = d.params.mousewheel; d.params.cssMode && a.preventDefault(); let e = d.$el; if ( ("container" !== d.params.mousewheel.eventsTarget && (e = z(d.params.mousewheel.eventsTarget)), !d.mouseEntered && !e[0].contains(a.target) && !r.releaseOnEdges) ) return !0; a.originalEvent && (a = a.originalEvent); let t = 0; var l = d.rtlTranslate ? -1 : 1, o = (function (e) { let t = 0, i = 0, s = 0, a = 0; return ( "detail" in e && (i = e.detail), "wheelDelta" in e && (i = -e.wheelDelta / 120), "wheelDeltaY" in e && (i = -e.wheelDeltaY / 120), "wheelDeltaX" in e && (t = -e.wheelDeltaX / 120), "axis" in e && e.axis === e.HORIZONTAL_AXIS && ((t = i), (i = 0)), (s = 10 * t), (a = 10 * i), "deltaY" in e && (a = e.deltaY), "deltaX" in e && (s = e.deltaX), e.shiftKey && !s && ((s = a), (a = 0)), (s || a) && e.deltaMode && (1 === e.deltaMode ? ((s *= 40), (a *= 40)) : ((s *= 800), (a *= 800))), s && !t && (t = s < 1 ? -1 : 1), a && !i && (i = a < 1 ? -1 : 1), { spinX: t, spinY: i, pixelX: s, pixelY: a } ); })(a); if (r.forceToAxis) if (d.isHorizontal()) { if (!(Math.abs(o.pixelX) > Math.abs(o.pixelY))) return !0; t = -o.pixelX * l; } else { if (!(Math.abs(o.pixelY) > Math.abs(o.pixelX))) return !0; t = -o.pixelY; } else t = Math.abs(o.pixelX) > Math.abs(o.pixelY) ? -o.pixelX * l : -o.pixelY; if (0 === t) return !0; r.invert && (t = -t); let i = d.getTranslate() + t * r.sensitivity; if ( ((i = i >= d.minTranslate() ? d.minTranslate() : i) <= d.maxTranslate() && (i = d.maxTranslate()), (n = !!d.params.loop || !(i === d.minTranslate() || i === d.maxTranslate())) && d.params.nested && a.stopPropagation(), d.params.freeMode && d.params.freeMode.enabled) ) { const s = { time: f(), delta: Math.abs(t), direction: Math.sign(t), }, n = h && s.time < h.time + 500 && s.delta <= h.delta && s.direction === h.direction; if (!n) { (h = void 0), d.params.loop && d.loopFix(); let e = d.getTranslate() + t * r.sensitivity; const z = d.isBeginning, f = d.isEnd; if ( ((e = e >= d.minTranslate() ? d.minTranslate() : e) <= d.maxTranslate() && (e = d.maxTranslate()), d.setTransition(0), d.setTranslate(e), d.updateProgress(), d.updateActiveIndex(), d.updateSlidesClasses(), ((!z && d.isBeginning) || (!f && d.isEnd)) && d.updateSlidesClasses(), d.params.freeMode.sticky) ) { clearTimeout(p), (p = void 0), 15 <= u.length && u.shift(); const a = u.length ? u[u.length - 1] : void 0, n = u[0]; if ( (u.push(s), a && (s.delta > a.delta || s.direction !== a.direction)) ) u.splice(0); else if ( 15 <= u.length && s.time - n.time < 500 && 1 <= n.delta - s.delta && s.delta <= 6 ) { const a = 0 < t ? 0.8 : 0.2; (h = s), u.splice(0), (p = x(() => { d.slideToClosest(d.params.speed, !0, void 0, a); }, 0)); } p = p || x(() => { (h = s), u.splice(0), d.slideToClosest(d.params.speed, !0, void 0, 0.5); }, 500); } if ( (n || c("scroll", a), d.params.autoplay && d.params.autoplayDisableOnInteraction && d.autoplay.stop(), e === d.minTranslate() || e === d.maxTranslate()) ) return !0; } } else { const a = { time: f(), delta: Math.abs(t), direction: Math.sign(t), raw: s, }, n = (2 <= u.length && u.shift(), u.length ? u[u.length - 1] : void 0); if ( (u.push(a), (!n || a.direction !== n.direction || a.delta > n.delta || a.time > n.time + 150) && m(a), (function (e) { var t = d.params.mousewheel; if (e.direction < 0) { if (d.isEnd && !d.params.loop && t.releaseOnEdges) return 1; } else if ( d.isBeginning && !d.params.loop && t.releaseOnEdges ) return 1; })(a)) ) return !0; } return ( a.preventDefault ? a.preventDefault() : (a.returnValue = !1), !1 ); } } function o(e) { let t = d.$el; (t = "container" !== d.params.mousewheel.eventsTarget ? z(d.params.mousewheel.eventsTarget) : t)[e]("mouseenter", n), t[e]("mouseleave", r), t[e]("wheel", l); } function v() { return d.params.cssMode ? (d.wrapperEl.removeEventListener("wheel", l), !0) : !d.mousewheel.enabled && (o("on"), (d.mousewheel.enabled = !0)); } function g() { return d.params.cssMode ? (d.wrapperEl.addEventListener(event, l), !0) : !!d.mousewheel.enabled && (o("off"), !(d.mousewheel.enabled = !1)); } i("init", () => { !d.params.mousewheel.enabled && d.params.cssMode && g(), d.params.mousewheel.enabled && v(); }), i("destroy", () => { d.params.cssMode && v(), d.mousewheel.enabled && g(); }), Object.assign(d.mousewheel, { enable: v, disable: g }); }, function (e) { let { swiper: n, extendParams: t, on: i, emit: r } = e; function s(e) { let t; return ( e && ((t = z(e)), n.params.uniqueNavElements && "string" == typeof e && 1 < t.length && 1 === n.$el.find(e).length && (t = n.$el.find(e))), t ); } function a(e, t) { var i = n.params.navigation; e && 0 < e.length && (e[t ? "addClass" : "removeClass"](i.disabledClass), e[0] && "BUTTON" === e[0].tagName && (e[0].disabled = t), n.params.watchOverflow && n.enabled && e[n.isLocked ? "addClass" : "removeClass"](i.lockClass)); } function l() { var e, t; n.params.loop || (({ $nextEl: e, $prevEl: t } = n.navigation), a(t, n.isBeginning && !n.params.rewind), a(e, n.isEnd && !n.params.rewind)); } function o(e) { e.preventDefault(), (n.isBeginning && !n.params.loop && !n.params.rewind) || (n.slidePrev(), r("navigationPrev")); } function d(e) { e.preventDefault(), (n.isEnd && !n.params.loop && !n.params.rewind) || (n.slideNext(), r("navigationNext")); } function c() { var e = n.params.navigation; if ( ((n.params.navigation = M( n, n.originalParams.navigation, n.params.navigation, { nextEl: "swiper-button-next", prevEl: "swiper-button-prev" } )), e.nextEl || e.prevEl) ) { const t = s(e.nextEl), i = s(e.prevEl); t && 0 < t.length && t.on("click", d), i && 0 < i.length && i.on("click", o), Object.assign(n.navigation, { $nextEl: t, nextEl: t && t[0], $prevEl: i, prevEl: i && i[0], }), n.enabled || (t && t.addClass(e.lockClass), i && i.addClass(e.lockClass)); } } function p() { const { $nextEl: e, $prevEl: t } = n.navigation; e && e.length && (e.off("click", d), e.removeClass(n.params.navigation.disabledClass)), t && t.length && (t.off("click", o), t.removeClass(n.params.navigation.disabledClass)); } t({ navigation: { nextEl: null, prevEl: null, hideOnClick: !1, disabledClass: "swiper-button-disabled", hiddenClass: "swiper-button-hidden", lockClass: "swiper-button-lock", navigationDisabledClass: "swiper-navigation-disabled", }, }), (n.navigation = { nextEl: null, $nextEl: null, prevEl: null, $prevEl: null, }), i("init", () => { !1 === n.params.navigation.enabled ? h() : (c(), l()); }), i("toEdge fromEdge lock unlock", () => { l(); }), i("destroy", () => { p(); }), i("enable disable", () => { const { $nextEl: e, $prevEl: t } = n.navigation; e && e[n.enabled ? "removeClass" : "addClass"]( n.params.navigation.lockClass ), t && t[n.enabled ? "removeClass" : "addClass"]( n.params.navigation.lockClass ); }), i("click", (e, t) => { const { $nextEl: i, $prevEl: s } = n.navigation, a = t.target; if ( n.params.navigation.hideOnClick && !z(a).is(s) && !z(a).is(i) && (!( n.pagination && n.params.pagination && n.params.pagination.clickable ) || (n.pagination.el !== a && !n.pagination.el.contains(a))) ) { let e; i ? (e = i.hasClass(n.params.navigation.hiddenClass)) : s && (e = s.hasClass(n.params.navigation.hiddenClass)), r(!0 === e ? "navigationShow" : "navigationHide"), i && i.toggleClass(n.params.navigation.hiddenClass), s && s.toggleClass(n.params.navigation.hiddenClass); } }); const h = () => { n.$el.addClass(n.params.navigation.navigationDisabledClass), p(); }; Object.assign(n.navigation, { enable: () => { n.$el.removeClass(n.params.navigation.navigationDisabledClass), c(), l(); }, disable: h, update: l, init: c, destroy: p, }); }, function (e) { let { swiper: d, extendParams: t, on: i, emit: c } = e; e = "swiper-pagination"; let p, h = (t({ pagination: { el: null, bulletElement: "span", clickable: !1, hideOnClick: !1, renderBullet: null, renderProgressbar: null, renderFraction: null, renderCustom: null, progressbarOpposite: !1, type: "bullets", dynamicBullets: !1, dynamicMainBullets: 1, formatFractionCurrent: (e) => e, formatFractionTotal: (e) => e, bulletClass: e + "-bullet", bulletActiveClass: e + "-bullet-active", modifierClass: e + "-", currentClass: e + "-current", totalClass: e + "-total", hiddenClass: e + "-hidden", progressbarFillClass: e + "-progressbar-fill", progressbarOppositeClass: e + "-progressbar-opposite", clickableClass: e + "-clickable", lockClass: e + "-lock", horizontalClass: e + "-horizontal", verticalClass: e + "-vertical", paginationDisabledClass: e + "-disabled", }, }), (d.pagination = { el: null, $el: null, bullets: [] }), 0); function n() { return ( !d.params.pagination.el || !d.pagination.el || !d.pagination.$el || 0 === d.pagination.$el.length ); } function u(e, t) { var i = d.params.pagination["bulletActiveClass"]; e[t]() .addClass(i + "-" + t) [t]() .addClass(i + `-${t}-` + t); } function s() { const t = d.rtl, r = d.params.pagination; if (!n()) { const l = ( d.virtual && d.params.virtual.enabled ? d.virtual : d ).slides.length, o = d.pagination.$el; let n; var i = d.params.loop ? Math.ceil( (l - 2 * d.loopedSlides) / d.params.slidesPerGroup ) : d.snapGrid.length; if ( (d.params.loop ? ((n = Math.ceil( (d.activeIndex - d.loopedSlides) / d.params.slidesPerGroup )) > l - 1 - 2 * d.loopedSlides && (n -= l - 2 * d.loopedSlides), n > i - 1 && (n -= i), n < 0 && "bullets" !== d.params.paginationType && (n = i + n)) : (n = void 0 !== d.snapIndex ? d.snapIndex : d.activeIndex || 0), "bullets" === r.type && d.pagination.bullets && 0 < d.pagination.bullets.length) ) { const l = d.pagination.bullets; let s, a, e; if ( (r.dynamicBullets && ((p = l .eq(0) [d.isHorizontal() ? "outerWidth" : "outerHeight"](!0)), o.css( d.isHorizontal() ? "width" : "height", p * (r.dynamicMainBullets + 4) + "px" ), 1 < r.dynamicMainBullets && void 0 !== d.previousIndex && ((h += n - (d.previousIndex - d.loopedSlides || 0)) > r.dynamicMainBullets - 1 ? (h = r.dynamicMainBullets - 1) : h < 0 && (h = 0)), (s = Math.max(n - h, 0)), (a = s + (Math.min(l.length, r.dynamicMainBullets) - 1)), (e = (a + s) / 2)), l.removeClass( [ "", "-next", "-next-next", "-prev", "-prev-prev", "-main", ] .map((e) => "" + r.bulletActiveClass + e) .join(" ") ), 1 < o.length) ) l.each((e) => { const t = z(e), i = t.index(); i === n && t.addClass(r.bulletActiveClass), r.dynamicBullets && (i >= s && i <= a && t.addClass(r.bulletActiveClass + "-main"), i === s && u(t, "prev"), i === a && u(t, "next")); }); else { const t = l.eq(n), o = t.index(); if ((t.addClass(r.bulletActiveClass), r.dynamicBullets)) { const t = l.eq(s), p = l.eq(a); for (let e = s; e <= a; e += 1) l.eq(e).addClass(r.bulletActiveClass + "-main"); if (d.params.loop) if (o >= l.length) { for (let e = r.dynamicMainBullets; 0 <= e; --e) l.eq(l.length - e).addClass( r.bulletActiveClass + "-main" ); l.eq(l.length - r.dynamicMainBullets - 1).addClass( r.bulletActiveClass + "-prev" ); } else u(t, "prev"), u(p, "next"); else u(t, "prev"), u(p, "next"); } } if (r.dynamicBullets) { const c = Math.min(l.length, r.dynamicMainBullets + 4), o = (p * c - p) / 2 - e * p, h = t ? "right" : "left"; l.css(d.isHorizontal() ? h : "top", o + "px"); } } if ( ("fraction" === r.type && (o .find(A(r.currentClass)) .text(r.formatFractionCurrent(n + 1)), o.find(A(r.totalClass)).text(r.formatFractionTotal(i))), "progressbar" === r.type) ) { var s = r.progressbarOpposite ? d.isHorizontal() ? "vertical" : "horizontal" : d.isHorizontal() ? "horizontal" : "vertical"; const l = (n + 1) / i; let e = 1, t = 1; "horizontal" == s ? (e = l) : (t = l), o .find(A(r.progressbarFillClass)) .transform(`translate3d(0,0,0) scaleX(${e}) scaleY(${t})`) .transition(d.params.speed); } "custom" === r.type && r.renderCustom ? (o.html(r.renderCustom(d, n + 1, i)), c("paginationRender", o[0])) : c("paginationUpdate", o[0]), d.params.watchOverflow && d.enabled && o[d.isLocked ? "addClass" : "removeClass"](r.lockClass); } } function a() { const s = d.params.pagination; if (!n()) { const e = ( d.virtual && d.params.virtual.enabled ? d.virtual : d ).slides.length, a = d.pagination.$el; let i = ""; if ("bullets" === s.type) { let t = d.params.loop ? Math.ceil( (e - 2 * d.loopedSlides) / d.params.slidesPerGroup ) : d.snapGrid.length; d.params.freeMode && d.params.freeMode.enabled && !d.params.loop && t > e && (t = e); for (let e = 0; e < t; e += 1) s.renderBullet ? (i += s.renderBullet.call(d, e, s.bulletClass)) : (i += `<${s.bulletElement} class="${s.bulletClass}">${s.bulletElement}>`); a.html(i), (d.pagination.bullets = a.find(A(s.bulletClass))); } "fraction" === s.type && ((i = s.renderFraction ? s.renderFraction.call(d, s.currentClass, s.totalClass) : ` / `), a.html(i)), "progressbar" === s.type && ((i = s.renderProgressbar ? s.renderProgressbar.call(d, s.progressbarFillClass) : ``), a.html(i)), "custom" !== s.type && c("paginationRender", d.pagination.$el[0]); } } function r() { d.params.pagination = M( d, d.originalParams.pagination, d.params.pagination, { el: "swiper-pagination" } ); const t = d.params.pagination; if (t.el) { let e = z(t.el); 0 !== e.length && (d.params.uniqueNavElements && "string" == typeof t.el && 1 < e.length && 1 < (e = d.$el.find(t.el)).length && (e = e.filter((e) => z(e).parents(".swiper")[0] === d.el)), "bullets" === t.type && t.clickable && e.addClass(t.clickableClass), e.addClass(t.modifierClass + t.type), e.addClass( d.isHorizontal() ? t.horizontalClass : t.verticalClass ), "bullets" === t.type && t.dynamicBullets && (e.addClass("" + t.modifierClass + t.type + "-dynamic"), (h = 0), t.dynamicMainBullets < 1 && (t.dynamicMainBullets = 1)), "progressbar" === t.type && t.progressbarOpposite && e.addClass(t.progressbarOppositeClass), t.clickable && e.on("click", A(t.bulletClass), function (e) { e.preventDefault(); let t = z(this).index() * d.params.slidesPerGroup; d.params.loop && (t += d.loopedSlides), d.slideTo(t); }), Object.assign(d.pagination, { $el: e, el: e[0] }), d.enabled || e.addClass(t.lockClass)); } } function l() { var e = d.params.pagination; if (!n()) { const t = d.pagination.$el; t.removeClass(e.hiddenClass), t.removeClass(e.modifierClass + e.type), t.removeClass( d.isHorizontal() ? e.horizontalClass : e.verticalClass ), d.pagination.bullets && d.pagination.bullets.removeClass && d.pagination.bullets.removeClass(e.bulletActiveClass), e.clickable && t.off("click", A(e.bulletClass)); } } i("init", () => { !1 === d.params.pagination.enabled ? o() : (r(), a(), s()); }), i("activeIndexChange", () => { (!d.params.loop && void 0 !== d.snapIndex) || s(); }), i("snapIndexChange", () => { d.params.loop || s(); }), i("slidesLengthChange", () => { d.params.loop && (a(), s()); }), i("snapGridLengthChange", () => { d.params.loop || (a(), s()); }), i("destroy", () => { l(); }), i("enable disable", () => { const e = d.pagination["$el"]; e && e[d.enabled ? "removeClass" : "addClass"]( d.params.pagination.lockClass ); }), i("lock unlock", () => { s(); }), i("click", (e, t) => { const i = t.target, s = d.pagination["$el"]; if ( d.params.pagination.el && d.params.pagination.hideOnClick && s && 0 < s.length && !z(i).hasClass(d.params.pagination.bulletClass) && (!d.navigation || !( (d.navigation.nextEl && i === d.navigation.nextEl) || (d.navigation.prevEl && i === d.navigation.prevEl) )) ) { const e = s.hasClass(d.params.pagination.hiddenClass); c(!0 === e ? "paginationShow" : "paginationHide"), s.toggleClass(d.params.pagination.hiddenClass); } }); const o = () => { d.$el.addClass(d.params.pagination.paginationDisabledClass), d.pagination.$el && d.pagination.$el.addClass( d.params.pagination.paginationDisabledClass ), l(); }; Object.assign(d.pagination, { enable: () => { d.$el.removeClass(d.params.pagination.paginationDisabledClass), d.pagination.$el && d.pagination.$el.removeClass( d.params.pagination.paginationDisabledClass ), r(), a(), s(); }, disable: o, render: a, update: s, init: r, destroy: l, }); }, function (e) { let { swiper: d, extendParams: t, on: i, emit: r } = e; const c = S(); let l, o, p, s, h = !1, u = null, m = null; function a() { if (d.params.scrollbar.el && d.scrollbar.el) { const { scrollbar: i, rtlTranslate: s, progress: a } = d, { $dragEl: n, $el: r } = i, l = d.params.scrollbar; let e = o, t = (p - o) * a; s ? 0 < (t = -t) ? ((e = o - t), (t = 0)) : -t + o > p && (e = p + t) : t < 0 ? ((e = o + t), (t = 0)) : t + o > p && (e = p - t), d.isHorizontal() ? (n.transform(`translate3d(${t}px, 0, 0)`), (n[0].style.width = e + "px")) : (n.transform(`translate3d(0px, ${t}px, 0)`), (n[0].style.height = e + "px")), l.hide && (clearTimeout(u), (r[0].style.opacity = 1), (u = setTimeout(() => { (r[0].style.opacity = 0), r.transition(400); }, 1e3))); } } function n() { if (d.params.scrollbar.el && d.scrollbar.el) { const e = d["scrollbar"], { $dragEl: t, $el: i } = e; (t[0].style.width = ""), (t[0].style.height = ""), (p = d.isHorizontal() ? i[0].offsetWidth : i[0].offsetHeight), (s = d.size / (d.virtualSize + d.params.slidesOffsetBefore - (d.params.centeredSlides ? d.snapGrid[0] : 0))), (o = "auto" === d.params.scrollbar.dragSize ? p * s : parseInt(d.params.scrollbar.dragSize, 10)), d.isHorizontal() ? (t[0].style.width = o + "px") : (t[0].style.height = o + "px"), (i[0].style.display = 1 <= s ? "none" : ""), d.params.scrollbar.hide && (i[0].style.opacity = 0), d.params.watchOverflow && d.enabled && e.$el[d.isLocked ? "addClass" : "removeClass"]( d.params.scrollbar.lockClass ); } } function v(e) { return d.isHorizontal() ? ("touchstart" === e.type || "touchmove" === e.type ? e.targetTouches[0] : e ).clientX : ("touchstart" === e.type || "touchmove" === e.type ? e.targetTouches[0] : e ).clientY; } function g(e) { const { scrollbar: t, rtlTranslate: i } = d, s = t["$el"]; let a; (a = (v(e) - s.offset()[d.isHorizontal() ? "left" : "top"] - (null !== l ? l : o / 2)) / (p - o)), (a = Math.max(Math.min(a, 1), 0)), i && (a = 1 - a); e = d.minTranslate() + (d.maxTranslate() - d.minTranslate()) * a; d.updateProgress(e), d.setTranslate(e), d.updateActiveIndex(), d.updateSlidesClasses(); } function f(e) { const t = d.params.scrollbar, { scrollbar: i, $wrapperEl: s } = d, { $el: a, $dragEl: n } = i; (h = !0), (l = e.target === n[0] || e.target === n ? v(e) - e.target.getBoundingClientRect()[ d.isHorizontal() ? "left" : "top" ] : null), e.preventDefault(), e.stopPropagation(), s.transition(100), n.transition(100), g(e), clearTimeout(m), a.transition(0), t.hide && a.css("opacity", 1), d.params.cssMode && d.$wrapperEl.css("scroll-snap-type", "none"), r("scrollbarDragStart", e); } function w(e) { const { scrollbar: t, $wrapperEl: i } = d, { $el: s, $dragEl: a } = t; h && (e.preventDefault ? e.preventDefault() : (e.returnValue = !1), g(e), i.transition(0), s.transition(0), a.transition(0), r("scrollbarDragMove", e)); } function b(e) { const t = d.params.scrollbar, { scrollbar: i, $wrapperEl: s } = d, a = i["$el"]; h && ((h = !1), d.params.cssMode && (d.$wrapperEl.css("scroll-snap-type", ""), s.transition("")), t.hide && (clearTimeout(m), (m = x(() => { a.css("opacity", 0), a.transition(400); }, 1e3))), r("scrollbarDragEnd", e), t.snapOnRelease && d.slideToClosest()); } function E(e) { var { scrollbar: t, touchEventsTouch: i, touchEventsDesktop: s, params: a, support: n, } = d, t = t.$el; if (t) { const r = t[0], l = !(!n.passiveListener || !a.passiveListeners) && { passive: !1, capture: !1, }, o = !(!n.passiveListener || !a.passiveListeners) && { passive: !0, capture: !1, }; r && ((t = "on" === e ? "addEventListener" : "removeEventListener"), n.touch ? (r[t](i.start, f, l), r[t](i.move, w, l), r[t](i.end, b, o)) : (r[t](s.start, f, l), c[t](s.move, w, l), c[t](s.end, b, o))); } } function y() { const { scrollbar: i, $el: s } = d; d.params.scrollbar = M( d, d.originalParams.scrollbar, d.params.scrollbar, { el: "swiper-scrollbar" } ); var a = d.params.scrollbar; if (a.el) { let e = z(a.el), t = ((e = d.params.uniqueNavElements && "string" == typeof a.el && 1 < e.length && 1 === s.find(a.el).length ? s.find(a.el) : e).addClass( d.isHorizontal() ? a.horizontalClass : a.verticalClass ), e.find("." + d.params.scrollbar.dragClass)); 0 === t.length && ((t = z( `
    ` )), e.append(t)), Object.assign(i, { $el: e, el: e[0], $dragEl: t, dragEl: t[0], }), a.draggable && d.params.scrollbar.el && d.scrollbar.el && E("on"), e && e[d.enabled ? "removeClass" : "addClass"]( d.params.scrollbar.lockClass ); } } function T() { const e = d.params.scrollbar, t = d.scrollbar.$el; t && t.removeClass( d.isHorizontal() ? e.horizontalClass : e.verticalClass ), d.params.scrollbar.el && d.scrollbar.el && E("off"); } t({ scrollbar: { el: null, dragSize: "auto", hide: !1, draggable: !1, snapOnRelease: !0, lockClass: "swiper-scrollbar-lock", dragClass: "swiper-scrollbar-drag", scrollbarDisabledClass: "swiper-scrollbar-disabled", horizontalClass: "swiper-scrollbar-horizontal", verticalClass: "swiper-scrollbar-vertical", }, }), (d.scrollbar = { el: null, dragEl: null, $el: null, $dragEl: null, }), i("init", () => { !1 === d.params.scrollbar.enabled ? C() : (y(), n(), a()); }), i("update resize observerUpdate lock unlock", () => { n(); }), i("setTranslate", () => { a(); }), i("setTransition", (e, t) => { (t = t), d.params.scrollbar.el && d.scrollbar.el && d.scrollbar.$dragEl.transition(t); }), i("enable disable", () => { const e = d.scrollbar["$el"]; e && e[d.enabled ? "removeClass" : "addClass"]( d.params.scrollbar.lockClass ); }), i("destroy", () => { T(); }); const C = () => { d.$el.addClass(d.params.scrollbar.scrollbarDisabledClass), d.scrollbar.$el && d.scrollbar.$el.addClass( d.params.scrollbar.scrollbarDisabledClass ), T(); }; Object.assign(d.scrollbar, { enable: () => { d.$el.removeClass(d.params.scrollbar.scrollbarDisabledClass), d.scrollbar.$el && d.scrollbar.$el.removeClass( d.params.scrollbar.scrollbarDisabledClass ), y(), n(), a(); }, disable: C, updateSize: n, setTranslate: a, init: y, destroy: T, }); }, function (e) { let { swiper: c, extendParams: t, on: i } = e; t({ parallax: { enabled: !1 } }); const n = (e, t) => { const i = c["rtl"], s = z(e), a = i ? -1 : 1, n = s.attr("data-swiper-parallax") || "0"; let r = s.attr("data-swiper-parallax-x"), l = s.attr("data-swiper-parallax-y"); var o = s.attr("data-swiper-parallax-scale"), d = s.attr("data-swiper-parallax-opacity"); if ( (r || l ? ((r = r || "0"), (l = l || "0")) : c.isHorizontal() ? ((r = n), (l = "0")) : ((l = n), (r = "0")), (r = 0 <= r.indexOf("%") ? parseInt(r, 10) * t * a + "%" : r * t * a + "px"), (l = 0 <= l.indexOf("%") ? parseInt(l, 10) * t + "%" : l * t + "px"), null != d) ) { const e = d - (d - 1) * (1 - Math.abs(t)); s[0].style.opacity = e; } if (null == o) s.transform(`translate3d(${r}, ${l}, 0px)`); else { const e = o - (o - 1) * (1 - Math.abs(t)); s.transform(`translate3d(${r}, ${l}, 0px) scale(${e})`); } }, s = () => { const { $el: e, slides: t, progress: s, snapGrid: a } = c; e .children( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]" ) .each((e) => { n(e, s); }), t.each((e, t) => { let i = e.progress; 1 < c.params.slidesPerGroup && "auto" !== c.params.slidesPerView && (i += Math.ceil(t / 2) - s * (a.length - 1)), (i = Math.min(Math.max(i, -1), 1)), z(e) .find( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]" ) .each((e) => { n(e, i); }); }); }; i("beforeInit", () => { c.params.parallax.enabled && ((c.params.watchSlidesProgress = !0), (c.originalParams.watchSlidesProgress = !0)); }), i("init", () => { c.params.parallax.enabled && s(); }), i("setTranslate", () => { c.params.parallax.enabled && s(); }), i("setTransition", (e, t) => { if (c.params.parallax.enabled) { var s = t; void 0 === s && (s = c.params.speed); const i = c["$el"]; i.find( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]" ).each((e) => { const t = z(e); let i = parseInt(t.attr("data-swiper-parallax-duration"), 10) || s; 0 === s && (i = 0), t.transition(i); }); } }); }, function (e) { let { swiper: y, extendParams: t, on: i, emit: s } = e; const T = $(); t({ zoom: { enabled: !1, maxRatio: 3, minRatio: 1, toggle: !0, containerClass: "swiper-zoom-container", zoomedSlideClass: "swiper-slide-zoomed", }, }), (y.zoom = { enabled: !1 }); let a, n, r, C = 1, l = !1; const S = { $slideEl: void 0, slideWidth: void 0, slideHeight: void 0, $imageEl: void 0, $imageWrapEl: void 0, maxRatio: 3, }, x = { isTouched: void 0, isMoved: void 0, currentX: void 0, currentY: void 0, minX: void 0, minY: void 0, maxX: void 0, maxY: void 0, width: void 0, height: void 0, startX: void 0, startY: void 0, touchesStart: {}, touchesCurrent: {}, }, o = { x: void 0, y: void 0, prevPositionX: void 0, prevPositionY: void 0, prevTime: void 0, }; let d = 1; function c(e) { if (e.targetTouches.length < 2) return 1; var t = e.targetTouches[0].pageX, i = e.targetTouches[0].pageY, s = e.targetTouches[1].pageX, e = e.targetTouches[1].pageY; return Math.sqrt((s - t) ** 2 + (e - i) ** 2); } function p(e) { var t = y.support, i = y.params.zoom; if (((n = !1), (r = !1), !t.gestures)) { if ( "touchstart" !== e.type || ("touchstart" === e.type && e.targetTouches.length < 2) ) return; (n = !0), (S.scaleStart = c(e)); } (S.$slideEl && S.$slideEl.length) || ((S.$slideEl = z(e.target).closest("." + y.params.slideClass)), 0 === S.$slideEl.length && (S.$slideEl = y.slides.eq(y.activeIndex)), (S.$imageEl = S.$slideEl .find("." + i.containerClass) .eq(0) .find("picture, img, svg, canvas, .swiper-zoom-target") .eq(0)), (S.$imageWrapEl = S.$imageEl.parent("." + i.containerClass)), (S.maxRatio = S.$imageWrapEl.attr("data-swiper-zoom") || i.maxRatio), 0 !== S.$imageWrapEl.length) ? (S.$imageEl && S.$imageEl.transition(0), (l = !0)) : (S.$imageEl = void 0); } function h(e) { const t = y.support, i = y.params.zoom, s = y.zoom; if (!t.gestures) { if ( "touchmove" !== e.type || ("touchmove" === e.type && e.targetTouches.length < 2) ) return; (r = !0), (S.scaleMove = c(e)); } S.$imageEl && 0 !== S.$imageEl.length ? (t.gestures ? (s.scale = e.scale * C) : (s.scale = (S.scaleMove / S.scaleStart) * C), s.scale > S.maxRatio && (s.scale = S.maxRatio - 1 + (s.scale - S.maxRatio + 1) ** 0.5), s.scale < i.minRatio && (s.scale = i.minRatio + 1 - (i.minRatio - s.scale + 1) ** 0.5), S.$imageEl.transform(`translate3d(0,0,0) scale(${s.scale})`)) : "gesturechange" === e.type && p(e); } function u(e) { const t = y.device, i = y.support, s = y.params.zoom, a = y.zoom; if (!i.gestures) { if (!n || !r) return; if ( "touchend" !== e.type || ("touchend" === e.type && e.changedTouches.length < 2 && !t.android) ) return; (n = !1), (r = !1); } S.$imageEl && 0 !== S.$imageEl.length && ((a.scale = Math.max( Math.min(a.scale, S.maxRatio), s.minRatio )), S.$imageEl .transition(y.params.speed) .transform(`translate3d(0,0,0) scale(${a.scale})`), (C = a.scale), (l = !1), 1 === a.scale && (S.$slideEl = void 0)); } function m(e) { var t = y.zoom; if ( S.$imageEl && 0 !== S.$imageEl.length && ((y.allowClick = !1), x.isTouched && S.$slideEl) ) { x.isMoved || ((x.width = S.$imageEl[0].offsetWidth), (x.height = S.$imageEl[0].offsetHeight), (x.startX = k(S.$imageWrapEl[0], "x") || 0), (x.startY = k(S.$imageWrapEl[0], "y") || 0), (S.slideWidth = S.$slideEl[0].offsetWidth), (S.slideHeight = S.$slideEl[0].offsetHeight), S.$imageWrapEl.transition(0)); var i = x.width * t.scale, t = x.height * t.scale; if (!(i < S.slideWidth && t < S.slideHeight)) { if ( ((x.minX = Math.min(S.slideWidth / 2 - i / 2, 0)), (x.maxX = -x.minX), (x.minY = Math.min(S.slideHeight / 2 - t / 2, 0)), (x.maxY = -x.minY), (x.touchesCurrent.x = ( "touchmove" === e.type ? e.targetTouches[0] : e ).pageX), (x.touchesCurrent.y = ( "touchmove" === e.type ? e.targetTouches[0] : e ).pageY), !x.isMoved && !l) ) { if ( y.isHorizontal() && ((Math.floor(x.minX) === Math.floor(x.startX) && x.touchesCurrent.x < x.touchesStart.x) || (Math.floor(x.maxX) === Math.floor(x.startX) && x.touchesCurrent.x > x.touchesStart.x)) ) return void (x.isTouched = !1); if ( !y.isHorizontal() && ((Math.floor(x.minY) === Math.floor(x.startY) && x.touchesCurrent.y < x.touchesStart.y) || (Math.floor(x.maxY) === Math.floor(x.startY) && x.touchesCurrent.y > x.touchesStart.y)) ) return void (x.isTouched = !1); } e.cancelable && e.preventDefault(), e.stopPropagation(), (x.isMoved = !0), (x.currentX = x.touchesCurrent.x - x.touchesStart.x + x.startX), (x.currentY = x.touchesCurrent.y - x.touchesStart.y + x.startY), x.currentX < x.minX && (x.currentX = x.minX + 1 - (x.minX - x.currentX + 1) ** 0.8), x.currentX > x.maxX && (x.currentX = x.maxX - 1 + (x.currentX - x.maxX + 1) ** 0.8), x.currentY < x.minY && (x.currentY = x.minY + 1 - (x.minY - x.currentY + 1) ** 0.8), x.currentY > x.maxY && (x.currentY = x.maxY - 1 + (x.currentY - x.maxY + 1) ** 0.8), o.prevPositionX || (o.prevPositionX = x.touchesCurrent.x), o.prevPositionY || (o.prevPositionY = x.touchesCurrent.y), o.prevTime || (o.prevTime = Date.now()), (o.x = (x.touchesCurrent.x - o.prevPositionX) / (Date.now() - o.prevTime) / 2), (o.y = (x.touchesCurrent.y - o.prevPositionY) / (Date.now() - o.prevTime) / 2), Math.abs(x.touchesCurrent.x - o.prevPositionX) < 2 && (o.x = 0), Math.abs(x.touchesCurrent.y - o.prevPositionY) < 2 && (o.y = 0), (o.prevPositionX = x.touchesCurrent.x), (o.prevPositionY = x.touchesCurrent.y), (o.prevTime = Date.now()), S.$imageWrapEl.transform( `translate3d(${x.currentX}px, ${x.currentY}px,0)` ); } } } function v() { const e = y.zoom; S.$slideEl && y.previousIndex !== y.activeIndex && (S.$imageEl && S.$imageEl.transform("translate3d(0,0,0) scale(1)"), S.$imageWrapEl && S.$imageWrapEl.transform("translate3d(0,0,0)"), (e.scale = 1), (C = 1), (S.$slideEl = void 0), (S.$imageEl = void 0), (S.$imageWrapEl = void 0)); } function g(w) { const b = y.zoom, E = y.params.zoom; if ( (S.$slideEl || (w && w.target && (S.$slideEl = z(w.target).closest( "." + y.params.slideClass )), S.$slideEl || (y.params.virtual && y.params.virtual.enabled && y.virtual ? (S.$slideEl = y.$wrapperEl.children( "." + y.params.slideActiveClass )) : (S.$slideEl = y.slides.eq(y.activeIndex))), (S.$imageEl = S.$slideEl .find("." + E.containerClass) .eq(0) .find("picture, img, svg, canvas, .swiper-zoom-target") .eq(0)), (S.$imageWrapEl = S.$imageEl.parent("." + E.containerClass))), S.$imageEl && 0 !== S.$imageEl.length && S.$imageWrapEl && 0 !== S.$imageWrapEl.length) ) { let e, t, i, s, a, n, r, l, o, d, c, p, h, u, m, v, g, f; y.params.cssMode && ((y.wrapperEl.style.overflow = "hidden"), (y.wrapperEl.style.touchAction = "none")), S.$slideEl.addClass("" + E.zoomedSlideClass), (t = void 0 === x.touchesStart.x && w ? ((e = ("touchend" === w.type ? w.changedTouches[0] : w) .pageX), ("touchend" === w.type ? w.changedTouches[0] : w).pageY) : ((e = x.touchesStart.x), x.touchesStart.y)), (b.scale = S.$imageWrapEl.attr("data-swiper-zoom") || E.maxRatio), (C = S.$imageWrapEl.attr("data-swiper-zoom") || E.maxRatio), w ? ((g = S.$slideEl[0].offsetWidth), (f = S.$slideEl[0].offsetHeight), (i = S.$slideEl.offset().left + T.scrollX), (s = S.$slideEl.offset().top + T.scrollY), (a = i + g / 2 - e), (n = s + f / 2 - t), (o = S.$imageEl[0].offsetWidth), (d = S.$imageEl[0].offsetHeight), (c = o * b.scale), (p = d * b.scale), (m = -(h = Math.min(g / 2 - c / 2, 0))), (v = -(u = Math.min(f / 2 - p / 2, 0))), (r = a * b.scale), (l = n * b.scale), (r = r < h ? h : r) > m && (r = m), (l = l < u ? u : l) > v && (l = v)) : ((r = 0), (l = 0)), S.$imageWrapEl .transition(300) .transform(`translate3d(${r}px, ${l}px,0)`), S.$imageEl .transition(300) .transform(`translate3d(0,0,0) scale(${b.scale})`); } } function f() { const e = y.zoom, t = y.params.zoom; S.$slideEl || (y.params.virtual && y.params.virtual.enabled && y.virtual ? (S.$slideEl = y.$wrapperEl.children( "." + y.params.slideActiveClass )) : (S.$slideEl = y.slides.eq(y.activeIndex)), (S.$imageEl = S.$slideEl .find("." + t.containerClass) .eq(0) .find("picture, img, svg, canvas, .swiper-zoom-target") .eq(0)), (S.$imageWrapEl = S.$imageEl.parent("." + t.containerClass))), S.$imageEl && 0 !== S.$imageEl.length && S.$imageWrapEl && 0 !== S.$imageWrapEl.length && (y.params.cssMode && ((y.wrapperEl.style.overflow = ""), (y.wrapperEl.style.touchAction = "")), (e.scale = 1), (C = 1), S.$imageWrapEl .transition(300) .transform("translate3d(0,0,0)"), S.$imageEl .transition(300) .transform("translate3d(0,0,0) scale(1)"), S.$slideEl.removeClass("" + t.zoomedSlideClass), (S.$slideEl = void 0)); } function w(e) { var t = y.zoom; t.scale && 1 !== t.scale ? f() : g(e); } function b() { var e = y.support; return { passiveListener: !( "touchstart" !== y.touchEvents.start || !e.passiveListener || !y.params.passiveListeners ) && { passive: !0, capture: !1 }, activeListenerWithCapture: !e.passiveListener || { passive: !1, capture: !0, }, }; } function E() { return "." + y.params.slideClass; } function L(e) { var t = b()["passiveListener"], i = E(); y.$wrapperEl[e]("gesturestart", i, p, t), y.$wrapperEl[e]("gesturechange", i, h, t), y.$wrapperEl[e]("gestureend", i, u, t); } function M() { a || ((a = !0), L("on")); } function A() { a && ((a = !1), L("off")); } function P() { const e = y.zoom; var t, i, s, a; e.enabled || ((e.enabled = !0), (t = y.support), ({ passiveListener: i, activeListenerWithCapture: s } = b()), (a = E()), t.gestures ? (y.$wrapperEl.on(y.touchEvents.start, M, i), y.$wrapperEl.on(y.touchEvents.end, A, i)) : "touchstart" === y.touchEvents.start && (y.$wrapperEl.on(y.touchEvents.start, a, p, i), y.$wrapperEl.on(y.touchEvents.move, a, h, s), y.$wrapperEl.on(y.touchEvents.end, a, u, i), y.touchEvents.cancel && y.$wrapperEl.on(y.touchEvents.cancel, a, u, i)), y.$wrapperEl.on( y.touchEvents.move, "." + y.params.zoom.containerClass, m, s )); } function I() { const e = y.zoom; var t, i, s, a; e.enabled && ((t = y.support), ({ passiveListener: i, activeListenerWithCapture: s } = ((e.enabled = !1), b())), (a = E()), t.gestures ? (y.$wrapperEl.off(y.touchEvents.start, M, i), y.$wrapperEl.off(y.touchEvents.end, A, i)) : "touchstart" === y.touchEvents.start && (y.$wrapperEl.off(y.touchEvents.start, a, p, i), y.$wrapperEl.off(y.touchEvents.move, a, h, s), y.$wrapperEl.off(y.touchEvents.end, a, u, i), y.touchEvents.cancel && y.$wrapperEl.off(y.touchEvents.cancel, a, u, i)), y.$wrapperEl.off( y.touchEvents.move, "." + y.params.zoom.containerClass, m, s )); } Object.defineProperty(y.zoom, "scale", { get: () => d, set(e) { var t, i; d !== e && ((t = S.$imageEl ? S.$imageEl[0] : void 0), (i = S.$slideEl ? S.$slideEl[0] : void 0), s("zoomChange", e, t, i)), (d = e); }, }), i("init", () => { y.params.zoom.enabled && P(); }), i("destroy", () => { I(); }), i("touchStart", (e, t) => { var i; y.zoom.enabled && ((t = t), (i = y.device), S.$imageEl && 0 !== S.$imageEl.length && !x.isTouched && (i.android && t.cancelable && t.preventDefault(), (x.isTouched = !0), (x.touchesStart.x = ( "touchstart" === t.type ? t.targetTouches[0] : t ).pageX), (x.touchesStart.y = ( "touchstart" === t.type ? t.targetTouches[0] : t ).pageY))); }), i("touchEnd", (e, t) => { if (y.zoom.enabled) { var i = y.zoom; if (S.$imageEl && 0 !== S.$imageEl.length) { if (!x.isTouched || !x.isMoved) return void ((x.isTouched = !1), (x.isMoved = !1)); (x.isTouched = !1), (x.isMoved = !1); let e = 300, t = 300; var s = o.x * e, s = x.currentX + s, a = o.y * t, a = x.currentY + a, n = (0 !== o.x && (e = Math.abs((s - x.currentX) / o.x)), 0 !== o.y && (t = Math.abs((a - x.currentY) / o.y)), Math.max(e, t)), s = ((x.currentX = s), (x.currentY = a), x.width * i.scale), a = x.height * i.scale; (x.minX = Math.min(S.slideWidth / 2 - s / 2, 0)), (x.maxX = -x.minX), (x.minY = Math.min(S.slideHeight / 2 - a / 2, 0)), (x.maxY = -x.minY), (x.currentX = Math.max( Math.min(x.currentX, x.maxX), x.minX )), (x.currentY = Math.max( Math.min(x.currentY, x.maxY), x.minY )), S.$imageWrapEl .transition(n) .transform( `translate3d(${x.currentX}px, ${x.currentY}px,0)` ); } } }), i("doubleTap", (e, t) => { !y.animating && y.params.zoom.enabled && y.zoom.enabled && y.params.zoom.toggle && w(t); }), i("transitionEnd", () => { y.zoom.enabled && y.params.zoom.enabled && v(); }), i("slideChange", () => { y.zoom.enabled && y.params.zoom.enabled && y.params.cssMode && v(); }), Object.assign(y.zoom, { enable: P, disable: I, in: g, out: f, toggle: w, }); }, function (e) { let { swiper: c, extendParams: t, on: i, emit: p } = e, d = (t({ lazy: { checkInView: !1, enabled: !1, loadPrevNext: !1, loadPrevNextAmount: 1, loadOnTransitionStart: !1, scrollingElement: "", elementClass: "swiper-lazy", loadingClass: "swiper-lazy-loading", loadedClass: "swiper-lazy-loaded", preloaderClass: "swiper-lazy-preloader", }, }), !(c.lazy = {})), h = !1; function u(e, l) { void 0 === l && (l = !0); const o = c.params.lazy; if (void 0 !== e && 0 !== c.slides.length) { const d = c.virtual && c.params.virtual.enabled ? c.$wrapperEl.children( `.${c.params.slideClass}[data-swiper-slide-index="${e}"]` ) : c.slides.eq(e), t = d.find( `.${o.elementClass}:not(.${o.loadedClass}):not(.${o.loadingClass})` ); !d.hasClass(o.elementClass) || d.hasClass(o.loadedClass) || d.hasClass(o.loadingClass) || t.push(d[0]), 0 !== t.length && t.each((e) => { const t = z(e), i = (t.addClass(o.loadingClass), t.attr("data-background")), s = t.attr("data-src"), a = t.attr("data-srcset"), n = t.attr("data-sizes"), r = t.parent("picture"); c.loadImage(t[0], s || i, a, n, !1, () => { var e; null == c || !c || (c && !c.params) || c.destroyed || (i ? (t.css("background-image", `url("${i}")`), t.removeAttr("data-background")) : (a && (t.attr("srcset", a), t.removeAttr("data-srcset")), n && (t.attr("sizes", n), t.removeAttr("data-sizes")), r.length && r.children("source").each((e) => { const t = z(e); t.attr("data-srcset") && (t.attr("srcset", t.attr("data-srcset")), t.removeAttr("data-srcset")); }), s && (t.attr("src", s), t.removeAttr("data-src"))), t.addClass(o.loadedClass).removeClass(o.loadingClass), d.find("." + o.preloaderClass).remove(), c.params.loop && l && ((e = d.attr("data-swiper-slide-index")), d.hasClass(c.params.slideDuplicateClass) ? u( c.$wrapperEl .children( `[data-swiper-slide-index="${e}"]:not(.${c.params.slideDuplicateClass})` ) .index(), !1 ) : u( c.$wrapperEl .children( `.${c.params.slideDuplicateClass}[data-swiper-slide-index="${e}"]` ) .index(), !1 )), p("lazyImageReady", d[0], t[0]), c.params.autoHeight && c.updateAutoHeight()); }), p("lazyImageLoad", d[0], t[0]); }); } } function m() { const { $wrapperEl: t, params: i, slides: s, activeIndex: a } = c, n = c.virtual && i.virtual.enabled, e = i.lazy; let r = i.slidesPerView; function l(e) { if (n) { if ( t.children( `.${i.slideClass}[data-swiper-slide-index="${e}"]` ).length ) return 1; } else if (s[e]) return 1; } function o(e) { return n ? z(e).attr("data-swiper-slide-index") : z(e).index(); } if ( ("auto" === r && (r = 0), (h = h || !0), c.params.watchSlidesProgress) ) t.children("." + i.slideVisibleClass).each((e) => { u(n ? z(e).attr("data-swiper-slide-index") : z(e).index()); }); else if (1 < r) for (let e = a; e < a + r; e += 1) l(e) && u(e); else u(a); if (e.loadPrevNext) if ( 1 < r || (e.loadPrevNextAmount && 1 < e.loadPrevNextAmount) ) { const t = e.loadPrevNextAmount, c = Math.ceil(r), i = Math.min(a + c + Math.max(t, c), s.length), n = Math.max(a - Math.max(c, t), 0); for (let e = a + c; e < i; e += 1) l(e) && u(e); for (let e = n; e < a; e += 1) l(e) && u(e); } else { const c = t.children("." + i.slideNextClass), s = (0 < c.length && u(o(c)), t.children("." + i.slidePrevClass)); 0 < s.length && u(o(s)); } } function v() { var e = $(); if (c && !c.destroyed) { const s = c.params.lazy.scrollingElement ? z(c.params.lazy.scrollingElement) : z(e), a = s[0] === e, n = a ? e.innerWidth : s[0].offsetWidth, r = a ? e.innerHeight : s[0].offsetHeight, l = c.$el.offset(), o = c["rtlTranslate"]; let t = !1; o && (l.left -= c.$el[0].scrollLeft); var i = [ [l.left, l.top], [l.left + c.width, l.top], [l.left, l.top + c.height], [l.left + c.width, l.top + c.height], ]; for (let e = 0; e < i.length; e += 1) { const c = i[e]; 0 <= c[0] && c[0] <= n && 0 <= c[1] && c[1] <= r && ((0 === c[0] && 0 === c[1]) || (t = !0)); } e = !( "touchstart" !== c.touchEvents.start || !c.support.passiveListener || !c.params.passiveListeners ) && { passive: !0, capture: !1 }; t ? (m(), s.off("scroll", v, e)) : d || ((d = !0), s.on("scroll", v, e)); } } i("beforeInit", () => { c.params.lazy.enabled && c.params.preloadImages && (c.params.preloadImages = !1); }), i("init", () => { c.params.lazy.enabled && (c.params.lazy.checkInView ? v : m)(); }), i("scroll", () => { c.params.freeMode && c.params.freeMode.enabled && !c.params.freeMode.sticky && m(); }), i("scrollbarDragMove resize _freeModeNoMomentumRelease", () => { c.params.lazy.enabled && (c.params.lazy.checkInView ? v : m)(); }), i("transitionStart", () => { c.params.lazy.enabled && (c.params.lazy.loadOnTransitionStart || (!c.params.lazy.loadOnTransitionStart && !h)) && (c.params.lazy.checkInView ? v : m)(); }), i("transitionEnd", () => { c.params.lazy.enabled && !c.params.lazy.loadOnTransitionStart && (c.params.lazy.checkInView ? v : m)(); }), i("slideChange", () => { var { lazy: e, cssMode: t, watchSlidesProgress: i, touchReleaseOnEdges: s, resistanceRatio: a, } = c.params; e.enabled && (t || (i && (s || 0 === a))) && m(); }), i("destroy", () => { c.$el && c.$el .find("." + c.params.lazy.loadingClass) .removeClass(c.params.lazy.loadingClass); }), Object.assign(c.lazy, { load: m, loadInSlide: u }); }, function (e) { let { swiper: l, extendParams: t, on: i } = e; function o(e, t) { const i = (function () { let i, s, a; return (e, t) => { for (s = -1, i = e.length; 1 < i - s; ) e[(a = (i + s) >> 1)] <= t ? (s = a) : (i = a); return i; }; })(); let s, a; return ( (this.x = e), (this.y = t), (this.lastIndex = e.length - 1), (this.interpolate = function (e) { return e ? ((a = i(this.x, e)), (s = a - 1), ((e - this.x[s]) * (this.y[a] - this.y[s])) / (this.x[a] - this.x[s]) + this.y[s]) : 0; }), this ); } function s() { l.controller.control && l.controller.spline && ((l.controller.spline = void 0), delete l.controller.spline); } t({ controller: { control: void 0, inverse: !1, by: "slide" } }), (l.controller = { control: void 0 }), i("beforeInit", () => { l.controller.control = l.params.controller.control; }), i("update", () => { s(); }), i("resize", () => { s(); }), i("observerUpdate", () => { s(); }), i("setTranslate", (e, t, i) => { l.controller.control && l.controller.setTranslate(t, i); }), i("setTransition", (e, t, i) => { l.controller.control && l.controller.setTransition(t, i); }), Object.assign(l.controller, { setTranslate: function (e, t) { var i = l.controller.control; let s, a; var n = l.constructor; function r(e) { var t, i = l.rtlTranslate ? -l.translate : l.translate; "slide" === l.params.controller.by && ((t = e), l.controller.spline || (l.controller.spline = l.params.loop ? new o(l.slidesGrid, t.slidesGrid) : new o(l.snapGrid, t.snapGrid)), (a = -l.controller.spline.interpolate(-i))), (a && "container" !== l.params.controller.by) || ((s = (e.maxTranslate() - e.minTranslate()) / (l.maxTranslate() - l.minTranslate())), (a = (i - l.minTranslate()) * s + e.minTranslate())), l.params.controller.inverse && (a = e.maxTranslate() - a), e.updateProgress(a), e.setTranslate(a, l), e.updateActiveIndex(), e.updateSlidesClasses(); } if (Array.isArray(i)) for (let e = 0; e < i.length; e += 1) i[e] !== t && i[e] instanceof n && r(i[e]); else i instanceof n && t !== i && r(i); }, setTransition: function (t, e) { const i = l.constructor, s = l.controller.control; let a; function n(e) { e.setTransition(t, l), 0 !== t && (e.transitionStart(), e.params.autoHeight && x(() => { e.updateAutoHeight(); }), e.$wrapperEl.transitionEnd(() => { s && (e.params.loop && "slide" === l.params.controller.by && e.loopFix(), e.transitionEnd()); })); } if (Array.isArray(s)) for (a = 0; a < s.length; a += 1) s[a] !== e && s[a] instanceof i && n(s[a]); else s instanceof i && e !== s && n(s); }, }); }, function (e) { let { swiper: r, extendParams: t, on: i } = e, l = (t({ a11y: { enabled: !0, notificationClass: "swiper-notification", prevSlideMessage: "Previous slide", nextSlideMessage: "Next slide", firstSlideMessage: "This is the first slide", lastSlideMessage: "This is the last slide", paginationBulletMessage: "Go to slide {{index}}", slideLabelMessage: "{{index}} / {{slidesLength}}", containerMessage: null, containerRoleDescriptionMessage: null, itemRoleDescriptionMessage: null, slideRole: "group", id: null, }, }), (r.a11y = { clicked: !1 }), null); function s(e) { const t = l; 0 !== t.length && (t.html(""), t.html(e)); } function a(e) { e.attr("tabIndex", "0"); } function n(e) { e.attr("tabIndex", "-1"); } function o(e, t) { e.attr("role", t); } function d(e, t) { e.attr("aria-roledescription", t); } function c(e, t) { e.attr("aria-label", t); } function p(e) { e.attr("aria-disabled", !0); } function h(e) { e.attr("aria-disabled", !1); } function u(e) { if (13 === e.keyCode || 32 === e.keyCode) { const t = r.params.a11y, i = z(e.target); r.navigation && r.navigation.$nextEl && i.is(r.navigation.$nextEl) && ((r.isEnd && !r.params.loop) || r.slideNext(), r.isEnd ? s(t.lastSlideMessage) : s(t.nextSlideMessage)), r.navigation && r.navigation.$prevEl && i.is(r.navigation.$prevEl) && ((r.isBeginning && !r.params.loop) || r.slidePrev(), r.isBeginning ? s(t.firstSlideMessage) : s(t.prevSlideMessage)), r.pagination && i.is(A(r.params.pagination.bulletClass)) && i[0].click(); } } function m() { return ( r.pagination && r.pagination.bullets && r.pagination.bullets.length ); } function v() { return m() && r.params.pagination.clickable; } const g = (e, t, i) => { a(e), "BUTTON" !== e[0].tagName && (o(e, "button"), e.on("keydown", u)), c(e, i), e.attr("aria-controls", t); }, f = () => { r.a11y.clicked = !0; }, w = () => { requestAnimationFrame(() => { requestAnimationFrame(() => { r.destroyed || (r.a11y.clicked = !1); }); }); }, b = (e) => { var t, i, s; r.a11y.clicked || ((t = e.target.closest("." + r.params.slideClass)) && r.slides.includes(t) && ((i = r.slides.indexOf(t) === r.activeIndex), (s = r.params.watchSlidesProgress && r.visibleSlides && r.visibleSlides.includes(t)), i || s || (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) || (r.isHorizontal() ? (r.el.scrollLeft = 0) : (r.el.scrollTop = 0), r.slideTo(r.slides.indexOf(t), 0)))); }, E = () => { const a = r.params.a11y, n = (a.itemRoleDescriptionMessage && d(z(r.slides), a.itemRoleDescriptionMessage), a.slideRole && o(z(r.slides), a.slideRole), (r.params.loop ? r.slides.filter( (e) => !e.classList.contains(r.params.slideDuplicateClass) ) : r.slides ).length); a.slideLabelMessage && r.slides.each((e, t) => { const i = z(e), s = r.params.loop ? parseInt(i.attr("data-swiper-slide-index"), 10) : t; c( i, a.slideLabelMessage .replace(/\{\{index\}\}/, s + 1) .replace(/\{\{slidesLength\}\}/, n) ); }); }; i("beforeInit", () => { l = z( `` ); }), i("afterInit", () => { if (r.params.a11y.enabled) { var i = r.params.a11y, s = (r.$el.append(l), r.$el); i.containerRoleDescriptionMessage && d(s, i.containerRoleDescriptionMessage), i.containerMessage && c(s, i.containerMessage); const a = r.$wrapperEl, n = i.id || a.attr("id") || "swiper-wrapper-" + "x" .repeat((s = void 0 === (s = 16) ? 16 : s)) .replace(/x/g, () => Math.round(16 * Math.random()).toString(16) ); s = r.params.autoplay && r.params.autoplay.enabled ? "off" : "polite"; let e, t; a.attr("id", n), a.attr("aria-live", s), E(), r.navigation && r.navigation.$nextEl && (e = r.navigation.$nextEl), r.navigation && r.navigation.$prevEl && (t = r.navigation.$prevEl), e && e.length && g(e, n, i.nextSlideMessage), t && t.length && g(t, n, i.prevSlideMessage), v() && r.pagination.$el.on( "keydown", A(r.params.pagination.bulletClass), u ), r.$el.on("focus", b, !0), r.$el.on("pointerdown", f, !0), r.$el.on("pointerup", w, !0); } }), i( "slidesLengthChange snapGridLengthChange slidesGridLengthChange", () => { r.params.a11y.enabled && E(); } ), i("fromEdge toEdge afterInit lock unlock", () => { var e, t; r.params.a11y.enabled && !r.params.loop && !r.params.rewind && r.navigation && (({ $nextEl: e, $prevEl: t } = r.navigation), t && 0 < t.length && (r.isBeginning ? (p(t), n(t)) : (h(t), a(t))), e && 0 < e.length && (r.isEnd ? (p(e), n(e)) : (h(e), a(e)))); }), i("paginationUpdate", () => { if (r.params.a11y.enabled) { const i = r.params.a11y; m() && r.pagination.bullets.each((e) => { const t = z(e); r.params.pagination.clickable && (a(t), r.params.pagination.renderBullet || (o(t, "button"), c( t, i.paginationBulletMessage.replace( /\{\{index\}\}/, t.index() + 1 ) ))), t.is("." + r.params.pagination.bulletActiveClass) ? t.attr("aria-current", "true") : t.removeAttr("aria-current"); }); } }), i("destroy", () => { if (r.params.a11y.enabled) { let e, t; l && 0 < l.length && l.remove(), r.navigation && r.navigation.$nextEl && (e = r.navigation.$nextEl), r.navigation && r.navigation.$prevEl && (t = r.navigation.$prevEl), e && e.off("keydown", u), t && t.off("keydown", u), v() && r.pagination.$el.off( "keydown", A(r.params.pagination.bulletClass), u ), r.$el.off("focus", b, !0), r.$el.off("pointerdown", f, !0), r.$el.off("pointerup", w, !0); } }); }, function (e) { let { swiper: r, extendParams: t, on: i } = e, l = (t({ history: { enabled: !1, root: "", replaceState: !1, key: "slides", keepQuery: !1, }, }), !1), s = {}; const o = (e) => e .toString() .replace(/\s+/g, "-") .replace(/[^\w-]+/g, "") .replace(/--+/g, "-") .replace(/^-+/, "") .replace(/-+$/, ""), a = (e) => { var t = $(); let i; (e = (i = e ? new URL(e) : t.location).pathname .slice(1) .split("/") .filter((e) => "" !== e)), (t = e.length); return { key: e[t - 2], value: e[t - 1] }; }, n = (i, s) => { const a = $(); if (l && r.params.history.enabled) { let e; e = r.params.url ? new URL(r.params.url) : a.location; const n = r.slides.eq(s); let t = o(n.attr("data-history")); if (0 < r.params.history.root.length) { let e = r.params.history.root; "/" === e[e.length - 1] && (e = e.slice(0, e.length - 1)), (t = e + `/${i}/` + t); } else e.pathname.includes(i) || (t = i + "/" + t); r.params.history.keepQuery && (t += e.search); s = a.history.state; (s && s.value === t) || (r.params.history.replaceState ? a.history.replaceState({ value: t }, null, t) : a.history.pushState({ value: t }, null, t)); } }, d = (i, s, a) => { if (s) for (let e = 0, t = r.slides.length; e < t; e += 1) { const n = r.slides.eq(e); if ( o(n.attr("data-history")) === s && !n.hasClass(r.params.slideDuplicateClass) ) { const s = n.index(); r.slideTo(s, i, a); } } else r.slideTo(0, i, a); }, c = () => { (s = a(r.params.url)), d(r.params.speed, s.value, !1); }; i("init", () => { if (r.params.history.enabled) { const e = $(); if (r.params.history) { if (!e.history || !e.history.pushState) return void ((r.params.history.enabled = !1), (r.params.hashNavigation.enabled = !0)); (l = !0), ((s = a(r.params.url)).key || s.value) && (d(0, s.value, r.params.runCallbacksOnInit), r.params.history.replaceState || e.addEventListener("popstate", c)); } } }), i("destroy", () => { if (r.params.history.enabled) { const e = $(); r.params.history.replaceState || e.removeEventListener("popstate", c); } }), i("transitionEnd _freeModeNoMomentumRelease", () => { l && n(r.params.history.key, r.activeIndex); }), i("slideChange", () => { l && r.params.cssMode && n(r.params.history.key, r.activeIndex); }); }, function (e) { let { swiper: a, extendParams: t, emit: i, on: s } = e, n = !1; const r = S(), l = $(), o = (t({ hashNavigation: { enabled: !1, replaceState: !1, watchState: !1, }, }), () => { i("hashChange"); var e = r.location.hash.replace("#", ""); e !== a.slides.eq(a.activeIndex).attr("data-hash") && void 0 !== (e = a.$wrapperEl .children(`.${a.params.slideClass}[data-hash="${e}"]`) .index()) && a.slideTo(e); }), d = () => { if (n && a.params.hashNavigation.enabled) if ( a.params.hashNavigation.replaceState && l.history && l.history.replaceState ) l.history.replaceState( null, null, "#" + a.slides.eq(a.activeIndex).attr("data-hash") || "" ), i("hashSet"); else { const e = a.slides.eq(a.activeIndex), t = e.attr("data-hash") || e.attr("data-history"); (r.location.hash = t || ""), i("hashSet"); } }; s("init", () => { if ( a.params.hashNavigation.enabled && !( !a.params.hashNavigation.enabled || (a.params.history && a.params.history.enabled) ) ) { n = !0; const i = r.location.hash.replace("#", ""); if (i) for (let e = 0, t = a.slides.length; e < t; e += 1) { const s = a.slides.eq(e); if ( (s.attr("data-hash") || s.attr("data-history")) === i && !s.hasClass(a.params.slideDuplicateClass) ) { const i = s.index(); a.slideTo(i, 0, a.params.runCallbacksOnInit, !0); } } a.params.hashNavigation.watchState && z(l).on("hashchange", o); } }), s("destroy", () => { a.params.hashNavigation.enabled && a.params.hashNavigation.watchState && z(l).off("hashchange", o); }), s("transitionEnd _freeModeNoMomentumRelease", () => { n && d(); }), s("slideChange", () => { n && a.params.cssMode && d(); }); }, function (e) { let i, { swiper: s, extendParams: t, on: a, emit: n } = e; function r() { if (!s.size) return (s.autoplay.running = !1), void (s.autoplay.paused = !1); const e = s.slides.eq(s.activeIndex); let t = s.params.autoplay.delay; e.attr("data-swiper-autoplay") && (t = e.attr("data-swiper-autoplay") || s.params.autoplay.delay), clearTimeout(i), (i = x(() => { let e; s.params.autoplay.reverseDirection ? s.params.loop ? (s.loopFix(), (e = s.slidePrev(s.params.speed, !0, !0)), n("autoplay")) : s.isBeginning ? s.params.autoplay.stopOnLastSlide ? o() : ((e = s.slideTo( s.slides.length - 1, s.params.speed, !0, !0 )), n("autoplay")) : ((e = s.slidePrev(s.params.speed, !0, !0)), n("autoplay")) : s.params.loop ? (s.loopFix(), (e = s.slideNext(s.params.speed, !0, !0)), n("autoplay")) : s.isEnd ? s.params.autoplay.stopOnLastSlide ? o() : ((e = s.slideTo(0, s.params.speed, !0, !0)), n("autoplay")) : ((e = s.slideNext(s.params.speed, !0, !0)), n("autoplay")), ((s.params.cssMode && s.autoplay.running) || !1 === e) && r(); }, t)); } function l() { return ( void 0 === i && !s.autoplay.running && ((s.autoplay.running = !0), n("autoplayStart"), r(), !0) ); } function o() { return ( !!s.autoplay.running && void 0 !== i && (i && (clearTimeout(i), (i = void 0)), (s.autoplay.running = !1), n("autoplayStop"), !0) ); } function d(e) { !s.autoplay.running || s.autoplay.paused || (i && clearTimeout(i), (s.autoplay.paused = !0), 0 !== e && s.params.autoplay.waitForTransition ? ["transitionend", "webkitTransitionEnd"].forEach((e) => { s.$wrapperEl[0].addEventListener(e, p); }) : ((s.autoplay.paused = !1), r())); } function c() { var e = S(); "hidden" === e.visibilityState && s.autoplay.running && d(), "visible" === e.visibilityState && s.autoplay.paused && (r(), (s.autoplay.paused = !1)); } function p(e) { s && !s.destroyed && s.$wrapperEl && e.target === s.$wrapperEl[0] && (["transitionend", "webkitTransitionEnd"].forEach((e) => { s.$wrapperEl[0].removeEventListener(e, p); }), (s.autoplay.paused = !1), (s.autoplay.running ? r : o)()); } function h() { s.params.autoplay.disableOnInteraction ? o() : (n("autoplayPause"), d()), ["transitionend", "webkitTransitionEnd"].forEach((e) => { s.$wrapperEl[0].removeEventListener(e, p); }); } function u() { s.params.autoplay.disableOnInteraction || ((s.autoplay.paused = !1), n("autoplayResume"), r()); } (s.autoplay = { running: !1, paused: !1 }), t({ autoplay: { enabled: !1, delay: 3e3, waitForTransition: !0, disableOnInteraction: !0, stopOnLastSlide: !1, reverseDirection: !1, pauseOnMouseEnter: !1, }, }), a("init", () => { s.params.autoplay.enabled && (l(), S().addEventListener("visibilitychange", c), s.params.autoplay.pauseOnMouseEnter && (s.$el.on("mouseenter", h), s.$el.on("mouseleave", u))); }), a("beforeTransitionStart", (e, t, i) => { s.autoplay.running && (i || !s.params.autoplay.disableOnInteraction ? s.autoplay.pause(t) : o()); }), a("sliderFirstMove", () => { s.autoplay.running && (s.params.autoplay.disableOnInteraction ? o : d)(); }), a("touchEnd", () => { s.params.cssMode && s.autoplay.paused && !s.params.autoplay.disableOnInteraction && r(); }), a("destroy", () => { s.$el.off("mouseenter", h), s.$el.off("mouseleave", u), s.autoplay.running && o(), S().removeEventListener("visibilitychange", c); }), Object.assign(s.autoplay, { pause: d, run: r, start: l, stop: o, }); }, function (e) { let { swiper: o, extendParams: t, on: i } = e, s = (t({ thumbs: { swiper: null, multipleActiveThumbs: !0, autoScrollOffset: 0, slideThumbActiveClass: "swiper-slide-thumb-active", thumbsContainerClass: "swiper-thumbs", }, }), !1), a = !1; function n() { var e = o.thumbs.swiper; if (e && !e.destroyed) { const i = e.clickedIndex, s = e.clickedSlide; if ( !( (s && z(s).hasClass(o.params.thumbs.slideThumbActiveClass)) || null == i ) ) { let t; if ( ((t = e.params.loop ? parseInt( z(e.clickedSlide).attr("data-swiper-slide-index"), 10 ) : i), o.params.loop) ) { let e = o.activeIndex; o.slides.eq(e).hasClass(o.params.slideDuplicateClass) && (o.loopFix(), (o._clientLeft = o.$wrapperEl[0].clientLeft), (e = o.activeIndex)); const i = o.slides .eq(e) .prevAll(`[data-swiper-slide-index="${t}"]`) .eq(0) .index(), s = o.slides .eq(e) .nextAll(`[data-swiper-slide-index="${t}"]`) .eq(0) .index(); t = void 0 === i || (void 0 !== s && s - e < e - i) ? s : i; } o.slideTo(t); } } } function r() { var e = o.params["thumbs"]; if (s) return !1; s = !0; const t = o.constructor; return ( e.swiper instanceof t ? ((o.thumbs.swiper = e.swiper), Object.assign(o.thumbs.swiper.originalParams, { watchSlidesProgress: !0, slideToClickedSlide: !1, }), Object.assign(o.thumbs.swiper.params, { watchSlidesProgress: !0, slideToClickedSlide: !1, })) : d(e.swiper) && ((e = Object.assign({}, e.swiper)), Object.assign(e, { watchSlidesProgress: !0, slideToClickedSlide: !1, }), (o.thumbs.swiper = new t(e)), (a = !0)), o.thumbs.swiper.$el.addClass( o.params.thumbs.thumbsContainerClass ), o.thumbs.swiper.on("tap", n), !0 ); } function l(s) { const a = o.thumbs.swiper; if (a && !a.destroyed) { const l = "auto" === a.params.slidesPerView ? a.slidesPerViewDynamic() : a.params.slidesPerView; let t = 1; var i = o.params.thumbs.slideThumbActiveClass; if ( (1 < o.params.slidesPerView && !o.params.centeredSlides && (t = o.params.slidesPerView), o.params.thumbs.multipleActiveThumbs || (t = 1), (t = Math.floor(t)), a.slides.removeClass(i), a.params.loop || (a.params.virtual && a.params.virtual.enabled)) ) for (let e = 0; e < t; e += 1) a.$wrapperEl .children( `[data-swiper-slide-index="${o.realIndex + e}"]` ) .addClass(i); else for (let e = 0; e < t; e += 1) a.slides.eq(o.realIndex + e).addClass(i); var n = o.params.thumbs.autoScrollOffset, r = n && !a.params.loop; if (o.realIndex !== a.realIndex || r) { let e, t, i = a.activeIndex; if (a.params.loop) { a.slides.eq(i).hasClass(a.params.slideDuplicateClass) && (a.loopFix(), (a._clientLeft = a.$wrapperEl[0].clientLeft), (i = a.activeIndex)); const s = a.slides .eq(i) .prevAll(`[data-swiper-slide-index="${o.realIndex}"]`) .eq(0) .index(), l = a.slides .eq(i) .nextAll(`[data-swiper-slide-index="${o.realIndex}"]`) .eq(0) .index(); (e = void 0 === s ? l : void 0 === l ? s : l - i == i - s ? 1 < a.params.slidesPerGroup ? l : i : l - i < i - s ? l : s), (t = o.activeIndex > o.previousIndex ? "next" : "prev"); } else (e = o.realIndex), (t = e > o.previousIndex ? "next" : "prev"); r && (e += "next" === t ? n : -1 * n), a.visibleSlidesIndexes && a.visibleSlidesIndexes.indexOf(e) < 0 && (a.params.centeredSlides ? (e = e > i ? e - Math.floor(l / 2) + 1 : e + Math.floor(l / 2) - 1) : e > i && a.params.slidesPerGroup, a.slideTo(e, s ? 0 : void 0)); } } } (o.thumbs = { swiper: null }), i("beforeInit", () => { var e = o.params["thumbs"]; e && e.swiper && (r(), l(!0)); }), i("slideChange update resize observerUpdate", () => { l(); }), i("setTransition", (e, t) => { const i = o.thumbs.swiper; i && !i.destroyed && i.setTransition(t); }), i("beforeDestroy", () => { const e = o.thumbs.swiper; e && !e.destroyed && a && e.destroy(); }), Object.assign(o.thumbs, { init: r, update: l }); }, function (e) { let { swiper: h, extendParams: t, emit: u, once: m } = e; t({ freeMode: { enabled: !1, momentum: !0, momentumRatio: 1, momentumBounce: !0, momentumBounceRatio: 1, momentumVelocityRatio: 1, sticky: !1, minimumVelocity: 0.02, }, }), Object.assign(h, { freeMode: { onTouchStart: function () { var e = h.getTranslate(); h.setTranslate(e), h.setTransition(0), (h.touchEventsData.velocities.length = 0), h.freeMode.onTouchEnd({ currentPos: h.rtl ? h.translate : -h.translate, }); }, onTouchMove: function () { const { touchEventsData: e, touches: t } = h; 0 === e.velocities.length && e.velocities.push({ position: t[h.isHorizontal() ? "startX" : "startY"], time: e.touchStartTime, }), e.velocities.push({ position: t[h.isHorizontal() ? "currentX" : "currentY"], time: f(), }); }, onTouchEnd: function (n) { let r = n["currentPos"]; const { params: l, $wrapperEl: o, rtlTranslate: d, snapGrid: c, touchEventsData: p, } = h, e = f() - p.touchStartTime; if (r < -h.minTranslate()) h.slideTo(h.activeIndex); else if (r > -h.maxTranslate()) h.slides.length < c.length ? h.slideTo(c.length - 1) : h.slideTo(h.slides.length - 1); else { if (l.freeMode.momentum) { if (1 < p.velocities.length) { const n = p.velocities.pop(), r = p.velocities.pop(), u = n.position - r.position, m = n.time - r.time; (h.velocity = u / m), (h.velocity /= 2), Math.abs(h.velocity) < l.freeMode.minimumVelocity && (h.velocity = 0), (150 < m || 300 < f() - n.time) && (h.velocity = 0); } else h.velocity = 0; (h.velocity *= l.freeMode.momentumVelocityRatio), (p.velocities.length = 0); let e = 1e3 * l.freeMode.momentumRatio; const r = h.velocity * e; let i = h.translate + r; d && (i = -i); let t, s = !1; n = 20 * Math.abs(h.velocity) * l.freeMode.momentumBounceRatio; let a; if (i < h.maxTranslate()) l.freeMode.momentumBounce ? (i + h.maxTranslate() < -n && (i = h.maxTranslate() - n), (t = h.maxTranslate()), (s = !0), (p.allowMomentumBounce = !0)) : (i = h.maxTranslate()), l.loop && l.centeredSlides && (a = !0); else if (i > h.minTranslate()) l.freeMode.momentumBounce ? (i - h.minTranslate() > n && (i = h.minTranslate() + n), (t = h.minTranslate()), (s = !0), (p.allowMomentumBounce = !0)) : (i = h.minTranslate()), l.loop && l.centeredSlides && (a = !0); else if (l.freeMode.sticky) { let t; for (let e = 0; e < c.length; e += 1) if (c[e] > -i) { t = e; break; } i = -(i = Math.abs(c[t] - i) < Math.abs(c[t - 1] - i) || "next" === h.swipeDirection ? c[t] : c[t - 1]); } if ( (a && m("transitionEnd", () => { h.loopFix(); }), 0 !== h.velocity) ) { if ( ((e = d ? Math.abs((-i - h.translate) / h.velocity) : Math.abs((i - h.translate) / h.velocity)), l.freeMode.sticky) ) { const r = Math.abs((d ? -i : i) - h.translate), u = h.slidesSizesGrid[h.activeIndex]; e = r < u ? l.speed : r < 2 * u ? 1.5 * l.speed : 2.5 * l.speed; } } else if (l.freeMode.sticky) return void h.slideToClosest(); l.freeMode.momentumBounce && s ? (h.updateProgress(t), h.setTransition(e), h.setTranslate(i), h.transitionStart(!0, h.swipeDirection), (h.animating = !0), o.transitionEnd(() => { h && !h.destroyed && p.allowMomentumBounce && (u("momentumBounce"), h.setTransition(l.speed), setTimeout(() => { h.setTranslate(t), o.transitionEnd(() => { h && !h.destroyed && h.transitionEnd(); }); }, 0)); })) : h.velocity ? (u("_freeModeNoMomentumRelease"), h.updateProgress(i), h.setTransition(e), h.setTranslate(i), h.transitionStart(!0, h.swipeDirection), h.animating || ((h.animating = !0), o.transitionEnd(() => { h && !h.destroyed && h.transitionEnd(); }))) : h.updateProgress(i), h.updateActiveIndex(), h.updateSlidesClasses(); } else { if (l.freeMode.sticky) return void h.slideToClosest(); l.freeMode && u("_freeModeNoMomentumRelease"); } (!l.freeMode.momentum || e >= l.longSwipesMs) && (h.updateProgress(), h.updateActiveIndex(), h.updateSlidesClasses()); } }, }, }); }, function (e) { let p, h, u, { swiper: m, extendParams: t } = e; t({ grid: { rows: 1, fill: "column" } }), (m.grid = { initSlides: (e) => { var t = m.params["slidesPerView"], { rows: i, fill: s } = m.params.grid; (h = p / i), (u = Math.floor(e / i)), (p = Math.floor(e / i) === e / i ? e : Math.ceil(e / i) * i), "auto" !== t && "row" === s && (p = Math.max(p, t * i)); }, updateSlide: (e, t, i, s) => { var { slidesPerGroup: a, spaceBetween: n } = m.params, { rows: r, fill: l } = m.params.grid; let o, d, c; if ("row" === l && 1 < a) { const h = Math.floor(e / (a * r)), u = e - r * a * h, m = 0 === h ? a : Math.min(Math.ceil((i - h * r * a) / r), a); (c = Math.floor(u / m)), (o = (d = u - c * m + h * a) + (c * p) / r), t.css({ "-webkit-order": o, order: o }); } else "column" === l ? ((d = Math.floor(e / r)), (c = e - d * r), (d > u || (d === u && c === r - 1)) && (c += 1) >= r && ((c = 0), (d += 1))) : ((c = Math.floor(e / h)), (d = e - c * h)); t.css(s("margin-top"), 0 !== c ? n && n + "px" : ""); }, updateWrapperSize: (i, s, e) => { var { spaceBetween: t, centeredSlides: a, roundLengths: n, } = m.params, r = m.params.grid["rows"]; if ( ((m.virtualSize = (i + t) * p), (m.virtualSize = Math.ceil(m.virtualSize / r) - t), m.$wrapperEl.css({ [e("width")]: m.virtualSize + t + "px", }), a) ) { s.splice(0, s.length); const i = []; for (let t = 0; t < s.length; t += 1) { let e = s[t]; n && (e = Math.floor(e)), s[t] < m.virtualSize + s[0] && i.push(e); } s.push(...i); } }, }); }, function (e) { e = e.swiper; Object.assign(e, { appendSlide: function (t) { const { $wrapperEl: i, params: e } = this; if ( (e.loop && this.loopDestroy(), "object" == typeof t && "length" in t) ) for (let e = 0; e < t.length; e += 1) t[e] && i.append(t[e]); else i.append(t); e.loop && this.loopCreate(), e.observer || this.update(); }.bind(e), prependSlide: function (t) { const e = this, { params: i, $wrapperEl: s, activeIndex: a } = e; i.loop && e.loopDestroy(); let n = a + 1; if ("object" == typeof t && "length" in t) { for (let e = 0; e < t.length; e += 1) t[e] && s.prepend(t[e]); n = a + t.length; } else s.prepend(t); i.loop && e.loopCreate(), i.observer || e.update(), e.slideTo(n, 0, !1); }.bind(e), addSlide: function (t, i) { const s = this, { $wrapperEl: a, params: n, activeIndex: e } = s; let r = e; n.loop && ((r -= s.loopedSlides), s.loopDestroy(), (s.slides = a.children("." + n.slideClass))); var l = s.slides.length; if (t <= 0) s.prependSlide(i); else if (l <= t) s.appendSlide(i); else { let e = r > t ? r + 1 : r; const o = []; for (let e = l - 1; e >= t; --e) { const t = s.slides.eq(e); t.remove(), o.unshift(t); } if ("object" == typeof i && "length" in i) { for (let e = 0; e < i.length; e += 1) i[e] && a.append(i[e]); e = r > t ? r + i.length : r; } else a.append(i); for (let e = 0; e < o.length; e += 1) a.append(o[e]); n.loop && s.loopCreate(), n.observer || s.update(), n.loop ? s.slideTo(e + s.loopedSlides, 0, !1) : s.slideTo(e, 0, !1); } }.bind(e), removeSlide: function (t) { const i = this, { params: e, $wrapperEl: s, activeIndex: a } = i; let n = a; e.loop && ((n -= i.loopedSlides), i.loopDestroy(), (i.slides = s.children("." + e.slideClass))); let r, l = n; if ("object" == typeof t && "length" in t) { for (let e = 0; e < t.length; e += 1) (r = t[e]), i.slides[r] && i.slides.eq(r).remove(), r < l && --l; l = Math.max(l, 0); } else (r = t), i.slides[r] && i.slides.eq(r).remove(), r < l && --l, (l = Math.max(l, 0)); e.loop && i.loopCreate(), e.observer || i.update(), e.loop ? i.slideTo(l + i.loopedSlides, 0, !1) : i.slideTo(l, 0, !1); }.bind(e), removeAllSlides: function () { const t = []; for (let e = 0; e < this.slides.length; e += 1) t.push(e); this.removeSlide(t); }.bind(e), }); }, function (e) { let { swiper: r, extendParams: t, on: i } = e; t({ fadeEffect: { crossFade: !1, transformEl: null } }), P({ effect: "fade", swiper: r, on: i, setTranslate: () => { const s = r["slides"], a = r.params.fadeEffect; for (let i = 0; i < s.length; i += 1) { const s = r.slides.eq(i); let e = -s[0].swiperSlideOffset, t = (r.params.virtualTranslate || (e -= r.translate), 0); r.isHorizontal() || ((t = e), (e = 0)); var n = r.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(s[0].progress), 0) : 1 + Math.min(Math.max(s[0].progress, -1), 0); I(a, s) .css({ opacity: n }) .transform(`translate3d(${e}px, ${t}px, 0px)`); } }, setTransition: (e) => { var t = r.params.fadeEffect["transformEl"]; (t ? r.slides.find(t) : r.slides).transition(e), O({ swiper: r, duration: e, transformEl: t, allSlides: !0, }); }, overwriteParams: () => ({ slidesPerView: 1, slidesPerGroup: 1, watchSlidesProgress: !0, spaceBetween: 0, virtualTranslate: !r.params.cssMode, }), }); }, function (e) { let { swiper: v, extendParams: t, on: i } = e; t({ cubeEffect: { slideShadows: !0, shadow: !0, shadowOffset: 20, shadowScale: 0.94, }, }); const g = (e, t, i) => { let s = i ? e.find(".swiper-slide-shadow-left") : e.find(".swiper-slide-shadow-top"), a = i ? e.find(".swiper-slide-shadow-right") : e.find(".swiper-slide-shadow-bottom"); 0 === s.length && ((s = z( `
    ` )), e.append(s)), 0 === a.length && ((a = z( `
    ` )), e.append(a)), s.length && (s[0].style.opacity = Math.max(-t, 0)), a.length && (a[0].style.opacity = Math.max(t, 0)); }; P({ effect: "cube", swiper: v, on: i, setTranslate: () => { const { $el: e, $wrapperEl: t, slides: l, width: i, height: s, rtlTranslate: o, size: d, browser: a, } = v, c = v.params.cubeEffect, p = v.isHorizontal(), h = v.virtual && v.params.virtual.enabled; let n, u = 0; c.shadow && (p ? (0 === (n = t.find(".swiper-cube-shadow")).length && ((n = z('
    ')), t.append(n)), n.css({ height: i + "px" })) : 0 === (n = e.find(".swiper-cube-shadow")).length && ((n = z('
    ')), e.append(n))); for (let r = 0; r < l.length; r += 1) { const v = l.eq(r); let e = r, t = 90 * (e = h ? parseInt(v.attr("data-swiper-slide-index"), 10) : e), i = Math.floor(t / 360); o && ((t = -t), (i = Math.floor(-t / 360))); const z = Math.max(Math.min(v[0].progress, 1), -1); let s = 0, a = 0, n = 0; e % 4 == 0 ? ((s = 4 * -i * d), (n = 0)) : (e - 1) % 4 == 0 ? ((s = 0), (n = 4 * -i * d)) : (e - 2) % 4 == 0 ? ((s = d + 4 * i * d), (n = d)) : (e - 3) % 4 == 0 && ((s = -d), (n = 3 * d + 4 * d * i)), o && (s = -s), p || ((a = s), (s = 0)); var m = `rotateX(${p ? 0 : -t}deg) rotateY(${ p ? t : 0 }deg) translate3d(${s}px, ${a}px, ${n}px)`; z <= 1 && -1 < z && ((u = 90 * e + 90 * z), o && (u = 90 * -e - 90 * z)), v.transform(m), c.slideShadows && g(v, z, p); } if ( (t.css({ "-webkit-transform-origin": `50% 50% -${d / 2}px`, "transform-origin": `50% 50% -${d / 2}px`, }), c.shadow) ) if (p) n.transform( `translate3d(0px, ${i / 2 + c.shadowOffset}px, ${ -i / 2 }px) rotateX(90deg) rotateZ(0deg) scale(${c.shadowScale})` ); else { const e = Math.abs(u) - 90 * Math.floor(Math.abs(u) / 90), v = 1.5 - (Math.sin((2 * e * Math.PI) / 360) / 2 + Math.cos((2 * e * Math.PI) / 360) / 2), t = c.shadowScale, l = c.shadowScale / v, g = c.shadowOffset; n.transform( `scale3d(${t}, 1, ${l}) translate3d(0px, ${ s / 2 + g }px, ${-s / 2 / l}px) rotateX(-90deg)` ); } var r = a.isSafari || a.isWebView ? -d / 2 : 0; t.transform( `translate3d(0px,0,${r}px) rotateX(${ v.isHorizontal() ? 0 : u }deg) rotateY(${v.isHorizontal() ? -u : 0}deg)` ), t[0].style.setProperty("--swiper-cube-translate-z", r + "px"); }, setTransition: (e) => { const { $el: t, slides: i } = v; i .transition(e) .find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left" ) .transition(e), v.params.cubeEffect.shadow && !v.isHorizontal() && t.find(".swiper-cube-shadow").transition(e); }, recreateShadows: () => { const i = v.isHorizontal(); v.slides.each((e) => { var t = Math.max(Math.min(e.progress, 1), -1); g(z(e), t, i); }); }, getEffectParams: () => v.params.cubeEffect, perspective: () => !0, overwriteParams: () => ({ slidesPerView: 1, slidesPerGroup: 1, watchSlidesProgress: !0, resistanceRatio: 0, spaceBetween: 0, centeredSlides: !1, virtualTranslate: !0, }), }); }, function (e) { let { swiper: p, extendParams: t, on: i } = e; t({ flipEffect: { slideShadows: !0, limitRotation: !0, transformEl: null, }, }); const h = (e, t, i) => { let s = p.isHorizontal() ? e.find(".swiper-slide-shadow-left") : e.find(".swiper-slide-shadow-top"), a = p.isHorizontal() ? e.find(".swiper-slide-shadow-right") : e.find(".swiper-slide-shadow-bottom"); 0 === s.length && (s = D(i, e, p.isHorizontal() ? "left" : "top")), 0 === a.length && (a = D(i, e, p.isHorizontal() ? "right" : "bottom")), s.length && (s[0].style.opacity = Math.max(-t, 0)), a.length && (a[0].style.opacity = Math.max(t, 0)); }; P({ effect: "flip", swiper: p, on: i, setTranslate: () => { const { slides: r, rtlTranslate: l } = p, o = p.params.flipEffect; for (let n = 0; n < r.length; n += 1) { const c = r.eq(n); let e = c[0].progress; p.params.flipEffect.limitRotation && (e = Math.max(Math.min(c[0].progress, 1), -1)); var d = c[0].swiperSlideOffset; let t = -180 * e, i = 0, s = p.params.cssMode ? -d - p.translate : -d, a = 0; p.isHorizontal() ? l && (t = -t) : ((a = s), (s = 0), (i = -t), (t = 0)), (c[0].style.zIndex = -Math.abs(Math.round(e)) + r.length), o.slideShadows && h(c, e, o); d = `translate3d(${s}px, ${a}px, 0px) rotateX(${i}deg) rotateY(${t}deg)`; I(o, c).transform(d); } }, setTransition: (e) => { var t = p.params.flipEffect["transformEl"]; (t ? p.slides.find(t) : p.slides) .transition(e) .find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left" ) .transition(e), O({ swiper: p, duration: e, transformEl: t }); }, recreateShadows: () => { const s = p.params.flipEffect; p.slides.each((e) => { var t = z(e); let i = t[0].progress; p.params.flipEffect.limitRotation && (i = Math.max(Math.min(e.progress, 1), -1)), h(t, i, s); }); }, getEffectParams: () => p.params.flipEffect, perspective: () => !0, overwriteParams: () => ({ slidesPerView: 1, slidesPerGroup: 1, watchSlidesProgress: !0, spaceBetween: 0, virtualTranslate: !p.params.cssMode, }), }); }, function (e) { let { swiper: b, extendParams: t, on: i } = e; t({ coverflowEffect: { rotate: 50, stretch: 0, depth: 100, scale: 1, modifier: 1, slideShadows: !0, transformEl: null, }, }), P({ effect: "coverflow", swiper: b, on: i, setTranslate: () => { const { width: e, height: o, slides: d, slidesSizesGrid: c, } = b, p = b.params.coverflowEffect, h = b.isHorizontal(), u = b.translate, m = h ? e / 2 - u : o / 2 - u, v = h ? p.rotate : -p.rotate, g = p.depth; for (let l = 0, e = d.length; l < e; l += 1) { const b = d.eq(l), o = c[l], u = (m - b[0].swiperSlideOffset - o / 2) / o, w = "function" == typeof p.modifier ? p.modifier(u) : u * p.modifier; let e = h ? v * w : 0, t = h ? 0 : v * w, i = -g * Math.abs(w), s = p.stretch, a = ("string" == typeof s && -1 !== s.indexOf("%") && (s = (parseFloat(p.stretch) / 100) * o), h ? 0 : s * w), n = h ? s * w : 0, r = 1 - (1 - p.scale) * Math.abs(w); Math.abs(n) < 0.001 && (n = 0), Math.abs(a) < 0.001 && (a = 0), Math.abs(i) < 0.001 && (i = 0), Math.abs(e) < 0.001 && (e = 0), Math.abs(t) < 0.001 && (t = 0), Math.abs(r) < 0.001 && (r = 0); var f = `translate3d(${n}px,${a}px,${i}px) rotateX(${t}deg) rotateY(${e}deg) scale(${r})`; if ( (I(p, b).transform(f), (b[0].style.zIndex = 1 - Math.abs(Math.round(w))), p.slideShadows) ) { let e = h ? b.find(".swiper-slide-shadow-left") : b.find(".swiper-slide-shadow-top"), t = h ? b.find(".swiper-slide-shadow-right") : b.find(".swiper-slide-shadow-bottom"); 0 === e.length && (e = D(p, b, h ? "left" : "top")), 0 === t.length && (t = D(p, b, h ? "right" : "bottom")), e.length && (e[0].style.opacity = 0 < w ? w : 0), t.length && (t[0].style.opacity = 0 < -w ? -w : 0); } } }, setTransition: (e) => { var t = b.params.coverflowEffect["transformEl"]; (t ? b.slides.find(t) : b.slides) .transition(e) .find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left" ) .transition(e); }, perspective: () => !0, overwriteParams: () => ({ watchSlidesProgress: !0 }), }); }, function (e) { let { swiper: b, extendParams: t, on: i } = e; t({ creativeEffect: { transformEl: null, limitProgress: 1, shadowPerProgress: !1, progressMultiplier: 1, perspective: !0, prev: { translate: [0, 0, 0], rotate: [0, 0, 0], opacity: 1, scale: 1, }, next: { translate: [0, 0, 0], rotate: [0, 0, 0], opacity: 1, scale: 1, }, }, }); P({ effect: "creative", swiper: b, on: i, setTranslate: () => { const { slides: a, $wrapperEl: e, slidesSizesGrid: n } = b, r = b.params.creativeEffect, l = r["progressMultiplier"], o = b.params.centeredSlides; if (o) { const a = n[0] / 2 - b.params.slidesOffsetBefore || 0; e.transform(`translateX(calc(50% - ${a}px))`); } for (let s = 0; s < a.length; s += 1) { const n = a.eq(s), u = n[0].progress, m = Math.min( Math.max(n[0].progress, -r.limitProgress), r.limitProgress ); let e = m; o || (e = Math.min( Math.max(n[0].originalProgress, -r.limitProgress), r.limitProgress )); const v = n[0].swiperSlideOffset, g = [b.params.cssMode ? -v - b.translate : -v, 0, 0], f = [0, 0, 0]; let t = !1, i = (b.isHorizontal() || ((g[1] = g[0]), (g[0] = 0)), { translate: [0, 0, 0], rotate: [0, 0, 0], scale: 1, opacity: 1, }); m < 0 ? ((i = r.next), (t = !0)) : 0 < m && ((i = r.prev), (t = !0)), g.forEach((e, t) => { g[t] = `calc(${e}px + (${ ((e = i.translate[t]), "string" == typeof e ? e : e + "px") } * ${Math.abs(m * l)}))`; }), f.forEach((e, t) => { f[t] = i.rotate[t] * Math.abs(m * l); }), (n[0].style.zIndex = -Math.abs(Math.round(u)) + a.length); var d = g.join(", "), c = `rotateX(${f[0]}deg) rotateY(${f[1]}deg) rotateZ(${f[2]}deg)`, p = e < 0 ? `scale(${1 + (1 - i.scale) * e * l})` : `scale(${1 - (1 - i.scale) * e * l})`, h = e < 0 ? 1 + (1 - i.opacity) * e * l : 1 - (1 - i.opacity) * e * l, d = `translate3d(${d}) ${c} ` + p; if ((t && i.shadow) || !t) { let e = n.children(".swiper-slide-shadow"); if ((e = 0 === e.length && i.shadow ? D(r, n) : e).length) { const b = r.shadowPerProgress ? m * (1 / r.limitProgress) : m; e[0].style.opacity = Math.min( Math.max(Math.abs(b), 0), 1 ); } } const w = I(r, n); w.transform(d).css({ opacity: h }), i.origin && w.css("transform-origin", i.origin); } }, setTransition: (e) => { var t = b.params.creativeEffect["transformEl"]; (t ? b.slides.find(t) : b.slides) .transition(e) .find(".swiper-slide-shadow") .transition(e), O({ swiper: b, duration: e, transformEl: t, allSlides: !0 }); }, perspective: () => b.params.creativeEffect.perspective, overwriteParams: () => ({ watchSlidesProgress: !0, virtualTranslate: !b.params.cssMode, }), }); }, function (e) { let { swiper: b, extendParams: t, on: i } = e; t({ cardsEffect: { slideShadows: !0, transformEl: null, rotate: !0, perSlideRotate: 2, perSlideOffset: 8, }, }), P({ effect: "cards", swiper: b, on: i, setTranslate: () => { const { slides: l, activeIndex: o } = b, d = b.params.cardsEffect, { startTranslate: c, isTouched: p } = b.touchEventsData, h = b.translate; for (let r = 0; r < l.length; r += 1) { const g = l.eq(r), f = g[0].progress, w = Math.min(Math.max(f, -4), 4); let e = g[0].swiperSlideOffset, t = (b.params.centeredSlides && !b.params.cssMode && b.$wrapperEl.transform( `translateX(${b.minTranslate()}px)` ), b.params.centeredSlides && b.params.cssMode && (e -= l[0].swiperSlideOffset), b.params.cssMode ? -e - b.translate : -e), i = 0; var u = -100 * Math.abs(w); let s = 1, a = -d.perSlideRotate * w, n = d.perSlideOffset - 0.75 * Math.abs(w); var m = b.virtual && b.params.virtual.enabled ? b.virtual.from + r : r, v = (m === o || m === o - 1) && 0 < w && w < 1 && (p || b.params.cssMode) && h < c, m = (m === o || m === o + 1) && w < 0 && -1 < w && (p || b.params.cssMode) && c < h; if (v || m) { const l = (1 - Math.abs((Math.abs(w) - 0.5) / 0.5)) ** 0.5; (a += -28 * w * l), (s += -0.5 * l), (n += 96 * l), (i = -25 * l * Math.abs(w) + "%"); } if ( ((t = w < 0 ? `calc(${t}px + (${n * Math.abs(w)}%))` : 0 < w ? `calc(${t}px + (-${n * Math.abs(w)}%))` : t + "px"), !b.isHorizontal()) ) { const l = i; (i = t), (t = l); } (v = w < 0 ? "" + (1 + (1 - s) * w) : "" + (1 - (1 - s) * w)), (m = ` translate3d(${t}, ${i}, ${u}px) rotateZ(${d.rotate ? a : 0}deg) scale(${v}) `); if (d.slideShadows) { let e = g.find(".swiper-slide-shadow"); (e = 0 === e.length ? D(d, g) : e).length && (e[0].style.opacity = Math.min( Math.max((Math.abs(w) - 0.5) / 0.5, 0), 1 )); } (g[0].style.zIndex = -Math.abs(Math.round(f)) + l.length), I(d, g).transform(m); } }, setTransition: (e) => { var t = b.params.cardsEffect["transformEl"]; (t ? b.slides.find(t) : b.slides) .transition(e) .find(".swiper-slide-shadow") .transition(e), O({ swiper: b, duration: e, transformEl: t }); }, perspective: () => !0, overwriteParams: () => ({ watchSlidesProgress: !0, virtualTranslate: !b.params.cssMode, }), }); }, ]), C ); }); var ANIUTIL = (function () { function t(e) { function t(e) { (this.opts = e), (this.resizeTiming = e.resizeTiming || 100), this.setElement(), this.setVideoStyle(), this.bindEvent(); } var i = t.prototype; (i.setElement = function () { void 0 !== this.opts.wrapElement && (this.wrapElement = this.opts.wrapElement.jquery ? this.opts.wrapElement[0] : this.opts.wrapElement), void 0 !== this.opts.targetVideo && (this.targetVideo = this.opts.targetVideo.jquery ? this.opts.targetVideo[0] : this.opts.targetVideo); }), (i.setVideoStyle = function () { (this.wrapElement.style.overflow = "hidden"), (this.targetVideo.style.position = "absolute"), (this.targetVideo.style.top = "50%"), (this.targetVideo.style.left = "50%"), (this.targetVideo.style.transform = "translate(-50%, -50%)"); }), (i.bindEvent = function () { var e = this; window.addEventListener("load", function () { e.setVideoSize(); }), window.addEventListener("resize", function () { e.setVideoSize(); }); }), (i.getVideoInfo = function () { (this.wrapWidth = this.wrapElement.clientWidth), (this.wrapHeight = this.wrapElement.clientHeight), (this.videoWidth = this.targetVideo.clientWidth), (this.videoHeight = this.targetVideo.clientHeight), (this.wrapRatio = this.wrapHeight / this.wrapWidth), (this.videoRatio = this.videoHeight / this.videoWidth); }), (i.setVideoSize = function () { var e = this; clearTimeout(null), setTimeout(function () { e.getVideoInfo(), e.wrapRatio < e.videoRatio ? ((e.targetVideo.style.width = "100%"), (e.targetVideo.style.height = "auto")) : ((e.targetVideo.style.width = "auto"), (e.targetVideo.style.height = "100%")); }, this.resizeTiming); }), new t(e); } function i(e) { var t, i, s = null, a = null, n = e ? e + 200 : 200, r = function () { null == s ? ((i = document.scrollingElement || document.documentElement || document.body.parentNode || document.body), (t = document.body.clientHeight), (i = window.pageYOffset + i.clientHeight), (s = i / t)) : (t = document.body.clientHeight); }, l = function () { clearTimeout(a), (a = setTimeout(function () { window.scrollTo(0, t * s - window.innerHeight), (s = null); }, n)); }; window.addEventListener("resize", function () { r(), l(); }); } function s() { return ( !( -1 < navigator.userAgent.indexOf("Windows") || -1 < navigator.userAgent.indexOf("Macintosh") ) && (!!( "ontouchstart" in window || (window.DocumentTouch && document instanceof window.DocumentTouch) ) || void 0) ); } return { calRange: function (e) { return ( 0 < (e = { targetValue: (e = e).targetValue, progress: e.progress, startPoint: e.startPoint || 0, endPoint: e.endPoint || 100, }).startPoint && (e.endPoint = 0 < e.endPoint - e.startPoint ? e.endPoint - e.startPoint : e.endPoint), (t = (t = (t = (e.targetValue * (e.progress - e.startPoint)) / e.endPoint) > e.targetValue ? e.targetValue : t) < 0 ? 0 : t) ); var t; }, videoObjectFit: function (e) { t(e); }, addClass: function (e) { for (var t = e, i = t.classList.length, s = 0; s < i; s++) t.targetElement.classList.add(t.classList[s]); }, removeClass: function (e) { for (var t = e, i = t.classList.length, s = 0; s < i; s++) t.targetElement.classList.remove(t.classList[s]); }, scrollController: function (e) { var i, s = (s = e) || {}, t = navigator.userAgent.toLowerCase(), a = document.scrollingElement || document.documentElement || document.body.parentNode || document.body, n = s.speed || 120, r = 0 <= s.duration ? s.duration : 1, l = a.scrollTop, o = a === document.body && document.documentElement ? document.documentElement : a, d = !1, c = null, e = function () { ("Netscape" == navigator.appName && -1 != navigator.userAgent.search("Trident")) || -1 != t.indexOf("msie") ? document.addEventListener( "mousewheel", function (e) { "hidden" != document.documentElement.style.overflow && h.scrollEvent(e); }, { passive: !1 } ) : document.addEventListener( "wheel", function (e) { h.hasScrollBox(e.target) || h.scrollEvent(e); }, { passive: !1 } ); }, p = function () { window.addEventListener("scroll", function () { "hidden" == document.documentElement.style.overflow || d || (l = a.scrollTop); }); }, h = { scrollEvent: function (e) { e.preventDefault(); var t = document.body.getAttribute("data-scroll-speed"), e = this.normalizeWheelDelta(e), t = s.currDelta && t ? t : t || n ? n : 120; (l += -e * t), (i = Math.max( 0, Math.min(l, a.scrollHeight - o.clientHeight) )), this.update(); }, normalizeWheelDelta: function (e) { return e.detail ? e.wheelDelta ? (e.wheelDelta / e.detail / 40) * (0 < e.detail ? 1 : -1) : -e.detail / 3 : e.wheelDelta / 120; }, update: function () { var e = i - a.scrollTop, e = Math.ceil(a.scrollTop + e) <= 0 ? 0 : i < l ? i : Math.ceil(a.scrollTop + e); (d = !0), TweenMax.to(a, r, { ease: "power1.out", scrollTop: e, onComplete: function () { clearTimeout(c), (c = null), (c = setTimeout(function () { (d = !1), (l = a.scrollTop); }, 500)); }, }), l <= 0 ? (l = 0) : i <= l && (l = i); }, hasScrollBox: function (e) { for (; e && e !== document.body && e !== document; ) { var t = window.getComputedStyle(e).overflow; if (t && (-1 < t.indexOf("auto") || -1 < t.indexOf("scroll"))) return !0; e = e.parentNode; } return !1; }, }; window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame, (-1 == t.indexOf("chrome") && -1 != t.indexOf("safari")) || (e(), p()); }, resizeScrollOffset: function (e) { i(e); }, checkTouchDevice: s, checkFold: function () { var e, t = screen.width / screen.height, i = s() && 0.7137 < t && t < 0.8 && "width=768" == document.getElementsByName("viewport")[0].content, t = s() && 0.8 < t && t < 0.95 && "width=768" == document.getElementsByName("viewport")[0].content; return i ? (e = "isFold") : t && (e = "isFoldLatest"), e; }, deviceConsole: function (e, t) { var i, s; document.querySelector(".console-layer") || ((i = document.createElement("div")).classList.add("console-layer"), i.setAttribute( "style", "position: fixed; left: 0; top: 0; padding: 20px; z-index:1000000000; background: #fff;" ), document.querySelector("body").append(i)), "multi" == t ? ((i = document.querySelector(".console-layer")), (s = document.createElement("div")).classList.add( "console-value" ), s.setAttribute( "style", "border: 1px #ddd solid; float: left; padding: 10px;" ), i.append(s)) : (s = (document.querySelector(".console-value") || ((s = document.createElement("div")).classList.add( "console-value" ), s.setAttribute( "style", "border: 1px #ddd solid; float: left; padding: 10px;" ), i.append(s)), document.querySelector(".console-value"))), (s.innerHTML = e); }, percentToPixel: function (e) { return e.targetValue * (e.progress / 100); }, responsiveHandler: function (s) { var a, e, n, r, t = (window.resolutionStatus = null), s = (window.innerWidth, { resolution: s.resolution, statusName: s.statusName || [], callback: s.callback || [], activeTiming: s.activeTiming || 100, }), i = function () { r = window.innerWidth; for (var e = 0; e < s.resolution.length; e++) { var t = s.resolution[e], i = s.resolution[e + 1] || 0; (r <= t && i < r && a != s.statusName[e]) || (r <= t && i < r && n != e) ? (document.documentElement.classList.remove(a), (a = s.statusName[e] || e), (n = e), document.documentElement.classList.add(a)) : ((r >= s.resolution[0] && a != s.statusName[0]) || (r >= s.resolution[0] && !n)) && (document.documentElement.classList.remove(a), (a = s.statusName[0] || e), (n = e), document.documentElement.classList.add(a)); } }, l = function () { clearTimeout(t), console.log(s.activeTiming), e != n && s.callback[n] && (t = setTimeout(function () { s.callback[n](), (t = null), (e = n); }, s.activeTiming)); }; return (function () { return ( window.addEventListener("DOMContentLoaded", function () { i(), (e = n); }), window.addEventListener("resize", function () { i(), l(); }), this ); })(); }, }; })(); window.VXT = window.VXT || {}; const UTILS = (function () { return { isIosDevice: ((s = /iPad|iPhone|iPod/.test(navigator.userAgent)) ? document.documentElement.classList.add("isIosDevice") : document.documentElement.classList.add("isNotIosDevice"), s), checkGlobal: void (0 === location.pathname.indexOf("/global/galaxy") || !0 === window.IS_CAMPAIGN ? document.documentElement.classList.add("global") : document.documentElement.classList.add("dotcom")), checkOS: ((s = (s = navigator.appVersion.match(/(mac|win|linux)/i)) ? s[1].toLowerCase() : ""), void document.documentElement.classList.add(s)), isFireFox: void ( /firefox/i.test(navigator.userAgent) && document.documentElement.classList.add("firefox") ), isWebkit: void ( /applewebkit/i.test(navigator.userAgent) && document.documentElement.classList.add("webkit") ), isChrome: void ( /chrome/i.test(navigator.userAgent) && document.documentElement.classList.add("chrome") ), isOpera: void ( /opera/i.test(navigator.userAgent) && document.documentElement.classList.add("opera") ), isIos: void ( /ip(ad|hone|od)/i.test(navigator.userAgent) && document.documentElement.classList.add("ios") ), isCrIos: void ( /crios/i.test(navigator.userAgent) && document.documentElement.classList.add("crios") ), isAndroid: void ( /android/i.test(navigator.userAgent) && document.documentElement.classList.add("android") ), isSafari: ((s = /applewebkit/i.test(navigator.userAgent)), (i = /chrome/i.test(navigator.userAgent)), void (s && !i && document.documentElement.classList.add("safari"))), isHuawei: void ( /HUAWEICLT/i.test(navigator.userAgent) && document.documentElement.classList.add("huawei") ), isUCBrowser: void ( /UCBrowser/i.test(navigator.userAgent) && document.documentElement.classList.add("ucbrowser") ), winSize: ((s = "Netscape" === navigator.appName), (i = -1 !== navigator.appVersion.indexOf("Mac")), (e = -1 !== navigator.userAgent.indexOf("Safari")), (t = -1 !== navigator.userAgent.indexOf("Chrome")), s && !i && e && !t ? function () { return { w: $(win).width(), h: $(win).height() }; } : function () { return { w: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, h: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight, }; }), requestAFrame: window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (e) { return window.setTimeout(e, 1e3 / 60); }, cancelAFrame: window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.webkitCancelRequestAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || window.msCancelAnimationFrame || function (e) { window.clearTimeout(e); }, isInVerticalViewPort: function (e) { e = e.getBoundingClientRect(); return e.top - 200 <= UTILS.getViewPort().height && 0 <= e.bottom; }, isInHorizontalViewPort: function (e) { e = e.getBoundingClientRect(); return ( e.left - 200 <= UTILS.getViewPort().width && 0 <= e.right + 200 ); }, isInViewPort(e) { return ( UTILS.isInVerticalViewPort(e) && UTILS.isInHorizontalViewPort(e) ); }, isVisible(e) { return ( UTILS.isInViewPort(e) && !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length) ); }, isObject: function (e) { return ( "object" == typeof e && null !== e && e.constructor && e.constructor === Object ); }, def: function () { for (var e = [], t = arguments.length; t--; ) e[t] = arguments[t]; for (var i = Object(e[0]), s = 1; s < e.length; s += 1) { var a = e[s]; if (null != a) for ( var n = Object.keys(Object(a)), r = 0, l = n.length; r < l; r += 1 ) { var o = n[r], d = Object.getOwnPropertyDescriptor(a, o); void 0 !== d && d.enumerable && (this.isObject(i[o]) && this.isObject(a[o]) ? this.def(i[o], a[o]) : !this.isObject(i[o]) && this.isObject(a[o]) ? ((i[o] = {}), this.def(i[o], a[o])) : (i[o] = a[o])); } } return i; }, convertArray: function (e) { return Array.prototype.slice.call(e); }, getOffset: function (e) { var t = e.getBoundingClientRect().top + window.pageYOffset, i = e.getBoundingClientRect().bottom + window.pageYOffset; return { top: t, left: e.getBoundingClientRect().left + window.scrollX, bottom: i, }; }, getScroll: function () { var e = window.pageYOffset; return { top: e, bottom: e + window.innerHeight }; }, getViewPort: function () { var e = window, t = "inner"; return ( "innerWidth" in window || ((t = "client"), (e = document.documentElement || document.body)), { width: e[t + "Width"], height: e[t + "Height"] } ); }, getCurrentDevice: function () { var e = UTILS.getViewPort().width; return 1024 <= e ? "desktop" : e < 1024 && 768 <= e ? "tablet" : "mobile"; }, isVerticalVisible: function (e) { return ( UTILS.isInVerticalViewPort(e) && !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length) ); }, isHorizontalVisible: function (e) { return ( UTILS.isInHorizontalViewPort(e) && !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length) ); }, setCookie: function (e, t, i) { var s = new Date(); s.setTime(s.getTime() + 60 * i * 60 * 24 * 1e3), (document.cookie = e + "=" + t + "; exprires=" + s.toUTCString() + "; path=/"); }, getCookie: function (e) { e = document.cookie.match("(^|;) ?" + e + "=([^;]*)(;|$)"); return e ? e[2] : null; }, triggerEvent: function (e, t, i, s, a) { var n, i = i || null, s = s || !1, a = a || !0; null == i ? (n = document.createEvent("HTMLEvents")).initEvent(t, s, a) : (n = document.createEvent("CustomEvent")).initCustomEvent( t, s, a, i ), e.dispatchEvent(n); }, visibleScroll: function () { document.documentElement.classList.contains("isTouchDevice") || (!0 === this.scrollFlag && ((this.scrollFlag = !1), (document.body.style.position = ""), (document.body.style.width = ""), (document.body.style.top = ""), (document.body.style.boxSizing = ""), (document.body.style.paddingRight = ""), (document.documentElement.style.overflow = ""), null !== this.popupEl && ((this.popupEl.style.paddingRight = ""), (this.popupEl = null)), window.scrollTo(0, this.currentPos))); }, hiddenScroll: function (e) { var t; document.documentElement.classList.contains("isTouchDevice") || ((this.popupEl = e || null), (this.scrollFlag = !0), (this.currentPos = window.pageYOffset || document.documentElement.scrollTop), (e = window.innerWidth - document.documentElement.clientWidth), (t = 0 < this.currentPos ? "-" + this.currentPos + "px" : 0), (document.body.style.position = "fixed"), (document.body.style.width = "100%"), (document.body.style.top = t), (document.body.style.boxSizing = "border-box"), (document.body.style.paddingRight = e + "px"), (document.documentElement.style.overflow = "hidden"), null !== this.popupEl && (this.popupEl.style.paddingRight = e + "px")); }, closest: function (e, t) { do { if (e == document.documentElement) return null; if (e.matches ? e.matches(t) : e.msMatchesSelector(t)) return e; } while ( null !== (e = e.parentElement || e.parentNode) || 1 === e.nodeType ); return null; }, onPopupAccessibility: function (e) { e.setAttribute("aria-hidden", !0), e.setAttribute("tabindex", -1); for ( var t = e.querySelectorAll("a, button, input, select, iframe"), i = 0; i < t.length; i++ ) { var s = t[i].getAttribute("aria-hidden"), a = t[i].getAttribute("tabindex"); null != s && null == t[i].getAttribute("data-prev-aria-hidden") && t[i].setAttribute("data-prev-aria-hidden", s), null != a && null == t[i].getAttribute("data-prev-tabindex") && t[i].setAttribute("data-prev-tabindex", a), t[i].setAttribute("tabindex", -1), t[i].setAttribute("aria-hidden", !0); } }, offPopupAccessibility: function (e) { e.removeAttribute("aria-hidden"), e.removeAttribute("tabindex"); for ( var t = e.querySelectorAll("a, button, input, select, iframe"), i = 0; i < t.length; i++ ) { var s = t[i].getAttribute("data-prev-aria-hidden"), a = t[i].getAttribute("data-prev-tabindex"); null != s ? t[i].setAttribute("aria-hidden", s) : t[i].removeAttribute("aria-hidden"), null != a ? t[i].setAttribute("tabindex", a) : t[i].removeAttribute("tabindex"), t[i].removeAttribute("data-prev-aria-hidden"), t[i].removeAttribute("data-prev-tabindex"); } }, onAccessibility: function (e) { if ( !document.documentElement.classList.contains( "is-layer-popup-opened" ) ) { e.setAttribute("aria-hidden", !0), e.setAttribute("tabindex", -1); for ( var t = e.querySelectorAll("a, button, input, select, iframe"), i = 0; i < t.length; i++ ) t[i].setAttribute("tabindex", -1), t[i].setAttribute("aria-hidden", !0); } }, offAccessibility: function (e) { if ( !document.documentElement.classList.contains( "is-layer-popup-opened" ) ) { e.removeAttribute("aria-hidden"), e.removeAttribute("tabindex"); for ( var t = e.querySelectorAll("a, button, input, select, iframe"), i = 0; i < t.length; i++ ) t[i].removeAttribute("tabindex"), t[i].removeAttribute("aria-hidden"); } }, extend: function (t, i) { return ( Object.keys(i).forEach(function (e) { t[e] = i[e]; }), t ); }, getHeight: function (e) { var t, i, s; return e ? ((t = (i = window.getComputedStyle(e)).display), (i = parseInt(i.maxHeight)), (s = 0), "none" != t && 0 != i ? e.offsetHeight : ((e.style.position = "absolute"), (e.style.visibility = "hidden"), (e.style.display = "block"), (s = e.offsetHeight), (e.style.display = ""), (e.style.position = ""), (e.style.visibility = ""), s)) : 0; }, setLastActiveItem: function (e) { this.lastActiveItem = e || null; }, getLastActiveItem: function () { return null != this.lastActiveItem ? this.lastActiveItem : null; }, isRTL: function () { return document.documentElement.classList.contains("rtl"); }, checkRegion: function () { for ( var e = document.getElementsByTagName("meta"), t = "", i = 0; i < e.length; i++ ) if ("sitecode" == e[i].getAttribute("name")) return (t = e[i].getAttribute("content")); if ("" == t) return -1 < document.location.pathname.indexOf("global") ? "global" : "jp"; }, isLowNetwork: function () { var e = "global" == UTILS.checkRegion() || "jp" == UTILS.checkRegion() ? "___GALAXY_SPEED" : "__COM_SPEED"; return null == UTILS.getCookie(e) || null == UTILS.getCookie(e) ? null : "L" == UTILS.getCookie(e) || ("H" != UTILS.getCookie(e) && void 0); }, getQueryString: function (e) { var t = (s = location.href).indexOf("?") + 1, i = -1 < s.indexOf("#") ? s.indexOf("#") + 1 : s.length; if (0 == t) return ""; for ( var s = (s = s.substring(t, i)).split("&"), a = "", n = 0; n < s.length; n++ ) { var r = s[n].split("="); if (2 != r.length) break; r[0] == e && (a = r[1]); break; } return a; }, customParallax: function (e) { var t = e.mode || "center", i = e.delay || 0, s = e.ease || "Power0.easeNone", a = e.transZ || 0, n = e.duration || 0.3, r = e.distance || 0, l = e.correction || 0, o = e.windowCorrection ? window.innerHeight * e.windowCorrection : 0, d = e.direction || 1, c = e.activeElement, p = e.targetElement || c, h = e.wrapperElement || c, e = e.unit || "px", u = window.pageYOffset, m = window.pageYOffset + window.innerHeight, c = c.getBoundingClientRect(), v = u + h.getBoundingClientRect().top, h = v + h.getBoundingClientRect().height, g = window.innerHeight + c.height + 2 * o, f = "center" == t ? c.top - (window.innerHeight - c.height) / 2 : c.top - window.innerHeight; "px" == e && (r = (c.height * r) / 100), v <= m + o && u - o <= h && TweenMax.to(p, n, { y: l + ((f * ("center" == t ? 2 * r : r)) / g) * d + e, z: a, ease: s, delay: i, }); }, getNavHeight: function () { var e, t, i = 0, s = document.querySelector(".pd-g-header-navigation") || document.querySelector("#subnav") || document.querySelector(".sticky-menu") || document.querySelector(".pd-g-floating-nav"); return (i = s ? s.classList.contains("pd-g-header-navigation") ? ((t = (e = s.querySelector( ".pd-header-navigation" )).querySelector(".pd-header-navigation__menu-wrap")), e.clientHeight + t.clientHeight) : s.clientHeight : i); }, isBrokenFixed: function () { var e = window.innerWidth, t = window.innerHeight, i = !1; return ( document.documentElement.classList.remove("is-broken-fixed"), (1440 <= e && t <= 540) || (e <= 810 && t / e < 0.5277) || e / window.outerWidth < 0.4 || t < UTILS.MIN_VIEW_HEIGHT ? (document.documentElement.classList.add("is-broken-fixed"), (i = !0)) : document.documentElement.classList.remove("is-broken-fixed"), i ); }, isFullAnimationBrokenFixed: () => { var e = window.innerWidth, t = window.innerHeight, i = !!UTILS.isTouchDevice && window.matchMedia("(orientation: landscape)").matches; let s = !1; return ( (!!UTILS.isTouchDevice && !window.matchMedia("(orientation: landscape)").matches && t / e < 1.5) || i || t < 700 ? (document.documentElement.classList.add( "is-animation-broken-fixed" ), (s = !0)) : document.documentElement.classList.remove( "is-animation-broken-fixed" ), s ); }, isTouchDevice: ((s = "ontouchstart" in window || (window.DocumentTouch && document instanceof window.DocumentTouch)) ? document.documentElement.classList.add("isTouchDevice") : document.documentElement.classList.add("isNotTouchDevice"), s), isIEorEdge: (function () { var e, t = navigator.userAgent.toLowerCase(); if ("Microsoft Internet Explorer" == navigator.appName) e = "msie "; else if (-1 < t.search("trident")) e = "trident/.*rv:"; else { if (!(-1 < t.search("edge/"))) return -1; e = "edge/"; } return null != new RegExp(e + "([0-9]{1,})(\\.{0,}[0-9]{0,1})").exec(t) ? (document.documentElement.classList.add("isIEorEdge"), parseFloat(RegExp.$1 + RegExp.$2)) : -1; })(), page: { scrollLock: { className: "is-no-scroll", barWidth: function () { return window.innerWidth - document.documentElement.clientWidth; }, el: $("html"), run: function (e) { document.documentElement.style.paddingRight = e + "px"; }, off: function () { this.barWidth(); this.el.removeClass(this.className), this.el.removeClass("hive-layer-scroll-lock"), this.run(0); }, on: function () { var e = this.barWidth(); this.el.addClass(this.className), this.run(e); }, }, }, MIN_VIEW_HEIGHT: 400, RESPONSIVE: { PC: { NAME: "pc", WIDTH: 1440 }, TABLET: { NAME: "tablet", WIDTH: 1024 }, MOBILE: { NAME: "mobile", WIDTH: 767 }, }, }; var e, t, i, s; })(); (VXT.UTILS = UTILS), (function () { "use strict"; window.VXT = window.VXT || {}; const m = VXT.UTILS; VXT.ImageLoader = class { constructor(e = container, t) { t = { el: e, lazyClass: ".js-img-src", lazyCompleteClass: "load-complete", startLazyClass: t.startLazyClass || ".js-start-img-src", endLazyClass: t.endLazyClass || ".js-end-img-src", responsiveClass: t.responsiveClass || ".js-res-img", loadOption: t.loadOption, visiblePoint: t.visiblePoint || 0, useDefaultImg: t.useDefaultImg, resizeStart: null, }; (this.opts = t), (this.classes = t.classes), (this.el = document.querySelector(e)), this.init(); } init() { this.initOpts(), this.getLazyImage(), this.getResponsiveImage(), this.bindEvents(); } initOpts() { (this.targetAttr = this.opts.loadOption[0].attribute), (this.responsiveCheck = this.opts.loadOption), (this.dynamicCallCount = 0), (this.dynamicLoadedComplate = !1), this.opts.useDefaultImg && this.setDefaultImage(); } getLazyImage() { const e = Array.from(this.el.querySelectorAll(this.opts.lazyClass)); var t = Array.from( this.el.querySelectorAll(this.opts.startLazyClass) ), t = e.concat(t); (this.lazyImages = t), (this.lazyLength = t.length); } getResponsiveImage() { var e = this.el.querySelectorAll(this.opts.responsiveClass); (this.responsiveImages = e), (this.responsiveLength = e.length); } bindEvents() { window.addEventListener("load", this.onLoadHandler.bind(this)), window.addEventListener("scroll", this.lazyEvent.bind(this)), this.responsiveCheck && window.addEventListener( "resize", this.onResizeHandler.bind(this) ); } onLoadHandler() { this.responsiveHandler(), this.lazyEvent(); } onResizeHandler() { clearTimeout(this.opts.resizeStart), (this.opts.resizeStart = setTimeout(() => { this.responsiveHandler(), this.lazyEvent(); }, 80)); } lazyEvent() { this.setLazyImage(), this.lazyLength === this.lazyCompleteLength && window.removeEventListener("scroll", this.lazyEvent.bind(this)); } responsiveHandler() { this.windowWidth = window.innerWidth; var a = this.opts.loadOption.length; for (let s = 0; s < a; s++) { let e = s + 1, t = e == a ? 0 : this.opts.loadOption[e].resolution, i = !1; (i = (0 == s || this.windowWidth <= this.opts.loadOption[s].resolution) && this.windowWidth > t) && this.opts.loadOption[s].attribute !== this.oldAttr && ((this.targetAttr = this.opts.loadOption[s].attribute), (this.oldAttr = this.targetAttr), (this.attrIndex = s), (this.dynamicCallCount = 0), this.setResponsiveImage()); } } setResponsiveImage(i) { var e = this.opts.lazyClass.split("."), s = e[e.length - 1], e = this.opts.startLazyClass.split("."), a = e[e.length - 1]; if (i) for (let t = 0; t < i.length; t++) { var n = i[t]; let e = i[t].getAttribute(this.targetAttr); (e = e || this.findImageHandler(n)), i[t].classList.contains(this.opts.lazyCompleteClass) || (i[t].setAttribute("src", e), i[t].classList.add(this.opts.lazyCompleteClass), 1 == this.opts.startLazyClass.split(" ").length && i[t].classList.remove(a), 1 == this.opts.lazyClass.split(" ").length && i[t].classList.remove(s)); } else for (let i = 0; i < this.responsiveLength; i++) { let e = this.responsiveImages[i], t = e.getAttribute(this.targetAttr); (t = t || this.findImageHandler(e)), e.classList.contains(this.opts.lazyCompleteClass) && e.setAttribute("src", t); } } checkCompleteImage() { var e = this.el.querySelectorAll("." + this.opts.lazyCompleteClass); this.lazyCompleteLength = e.length; } setDefaultImage() { for (var e = 0; e < this.lazyLength; e++) this.lazyImages[e].setAttribute( "src", "data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH/C1hNUCBEYXRhWE1QAz94cAAh+QQFAAAAACwAAAAAAQABAAACAkQBADs=" ); } setLazyImage() { this.windowHeight = window.innerHeight; for (let p = 0; p < this.lazyLength; p++) { let t = this.lazyImages[p], e = this.windowHeight * this.opts.visiblePoint, i = m.getScroll.call(this).top - e, s = m.getScroll.call(this).bottom + e, a = m.getOffset.call(this, t).top, n = m.getOffset.call(this, t).bottom, r = this.opts.lazyClass.split("."), l = r[r.length - 1], o = this.opts.startLazyClass.split("."), d = o[o.length - 1], c; var h, u; if ( ("none" === window.getComputedStyle(t).display ? null != (h = t.parentNode).offsetParent && ((c = h.offsetParent), (a = m.getOffset.call(this, h).top), (n = m.getOffset.call(this, h).bottom)) : (c = t.offsetParent), ((s > a && i <= a) || (i < n && s > n) || (i < a && s > n) || (i > a && s < n)) && null != c) ) { let e = t.getAttribute(this.targetAttr); (e = e || this.findImageHandler(t)), t.classList.contains(this.opts.lazyCompleteClass) || (t.setAttribute("src", e), (u = () => { 1 == this.opts.startLazyClass.split(" ").length && t.classList.remove(d), 1 == this.opts.lazyClass.split(" ").length && t.classList.remove(l), this.checkCompleteImage(), t.removeEventListener("load", u); }), t.addEventListener("load", u), t.classList.add(this.opts.lazyCompleteClass)); } } } findRemainingImageAttr(e) { for (var t = this.opts.loadOption.length, i = 0; i < t; i++) { var s = e.getAttribute(this.opts.loadOption[i].attribute); if (s) return s; } } findNextImageAttr(t) { for (let e = this.attrIndex; 0 <= e; e--) { var i = t.getAttribute(this.opts.loadOption[e].attribute); if (i) return i; if (0 == e && null == i) return this.findRemainingImageAttr(t); } } findImageHandler(e) { return 0 !== this.attrIndex ? this.findNextImageAttr(e) : this.findRemainingImageAttr(e); } updateResponsiveImage(t) { for (let e = 0; e < t.length; e++) { const s = t[e]; var i = s.getAttribute(this.targetAttr); i !== s.getAttribute("src") && s.setAttribute("src", i); } } }; })(), (function () { "use strict"; window.VXT = window.VXT || {}; const e = VXT.UTILS, t = e.RESPONSIVE; VXT.VideoLoader = class { constructor(e = container, t) { t = { el: e, lazyClass: t.lazyClass || ".js-video-src", responsiveClass: t.responsiveClass || ".js-res-video", imageLazyCompleteClass: "load-complete", imageEndLazyClass: t.imageEndLazyClass || ".js-end-img-src", notLoadElement: t.notLoadElement || [], loadOption: t.loadOption, visiblePoint: t.visiblePoint || 0, resizeStart: null, classes: { loaded: "loaded", ended: "ended" }, }; (this.opts = t), (this.classes = t.classes), (this.el = document.querySelector(e)), this.init(); } init() { this.initOpts(), this.getLazyVideo(), this.getResponsiveVideo(), this.bindEvents(); } initOpts() { this.getCurrentDevice(); var e = "mobile" !== this.currentDevice ? 0 : 1; (this.prevVideoSrc = ""), (this.targetAttr = this.opts.loadOption[e].attribute), (this.responsiveCheck = this.opts.loadOption), (this.videoCallStack = []); } getLazyVideo() { let e = Array.from( this.el.querySelectorAll(this.opts.lazyClass) ).filter((t) => { t.isVideoInit = !1; { let e = 0; if (e < this.opts.notLoadElement.length) return !t.closest(this.opts.notLoadElement[e]); } }); (e = e.filter((e) => { if (e.querySelector("video")) return e; })), (this.lazyVideos = e), (this.lazyLength = e.length); } getResponsiveVideo() { var e = Array.from( this.el.querySelectorAll(this.opts.responsiveClass) ).filter((t) => { { let e = 0; if (e < this.opts.notLoadElement.length) return !t.closest(this.opts.notLoadElement[e]); } }); (this.responsiveVideos = e), (this.responsiveLength = e.length); } bindEvents() { window.addEventListener("load", this.onLoadHandler.bind(this)), window.addEventListener("scroll", this.lazyEvent.bind(this)), this.responsiveCheck && window.addEventListener( "resize", this.onResizeHandler.bind(this) ); } getCurrentDevice() { (this.winWidth = e.winSize().w), this.winWidth >= t.TABLET.WIDTH ? (this.currentDevice = "desktop") : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? (this.currentDevice = "tablet") : (this.currentDevice = "mobile"), (this.prevDevice = this.currentDevice); } onLoadHandler() { this.getCurrentDevice(), this.responsiveHandler(), this.lazyEvent(); } onResizeHandler() { clearTimeout(this.opts.resizeStart), (this.opts.resizeStart = setTimeout(() => { this.getCurrentDevice(), this.responsiveHandler(), this.lazyEvent(); }, 80)); } lazyEvent() { this.setLazyVideo(), this.lazyLength === this.lazyCompleteLength && window.removeEventListener("scroll", this.lazyEvent.bind(this)); } responsiveHandler() { this.windowWidth = window.innerWidth; var a = this.opts.loadOption.length; for (let s = 0; s < a; s++) { let e = s + 1, t = e == a ? 0 : this.opts.loadOption[e].resolution, i = !1; (i = (0 == s || this.windowWidth <= this.opts.loadOption[s].resolution) && this.windowWidth > t) && this.opts.loadOption[s].attribute !== this.oldAttr && ((this.targetAttr = this.opts.loadOption[s].attribute), (this.oldAttr = this.targetAttr), (this.attrIndex = s), this.setResponsiveVideo()); } } setResponsiveVideo() { for (let e = 0; e < this.responsiveLength; e++) { const s = this.responsiveVideos[e], a = s.querySelector("video"); let i = s.getAttribute(this.targetAttr); (i = i.split(".mp4")[0]), s.classList.contains(this.classes.loaded) && s.isVideoInit && a.querySelectorAll("source").forEach((e) => { const t = e.getAttribute("type"); -1 < t.indexOf("webm") && (e.src = i + ".webm"), -1 < t.indexOf("mp4") && (e.src = i + ".mp4"), a.load(), a.addEventListener( "canplaythrough", () => { window.setTimeout(() => { s.classList.add(this.classes.loaded); }, 500), this.checkCompleteVideo(), this.getEndImage(s); }, { once: !0 } ); }); } } setLazyVideo() { for (let e = 0; e < this.lazyLength; e++) { var t = window.pageYOffset, i = t + window.innerHeight; const n = this.lazyVideos[e]; var s = n.getBoundingClientRect(), a = t + s.top, s = t + s.bottom; i > a - window.innerHeight * (0 != window.pageYOffset ? this.opts.visiblePoint : 0) && t < s + window.innerHeight * (0 != window.pageYOffset ? this.opts.visiblePoint : 0) && !n.isVideoInit && this.videoCallStack.indexOf(e) < 0 && (this.videoCallStack.push(e), this.setVideoSrc()); } } setVideoSrc() { var e = this.videoCallStack[0]; const t = this.lazyVideos[e], i = t.querySelector("video"); let s = t.getAttribute(this.targetAttr); s = s.split(".mp4")[0]; e = this.opts.lazyClass.split("."); const a = e[e.length - 1]; e = s; this.prevVideoSrc !== e && (i.querySelectorAll("source").forEach((e) => { const t = e.getAttribute("type"); -1 < t.indexOf("webm") && (e.src = s + ".webm"), -1 < t.indexOf("mp4") && (e.src = s + ".mp4"); }), i.load(), i.addEventListener( "canplaythrough", () => { window.setTimeout(() => { t.classList.add(this.classes.loaded); }, 500), 1 == this.opts.lazyClass.split(" ").length && t.classList.remove(a), this.checkCompleteVideo(), this.getEndImage(t), this.videoCallStack.splice(0, 1), 0 < this.videoCallStack.length && this.setVideoSrc(); }, { once: !0 } ), (t.isVideoInit = !0)), (this.prevVideoSrc = e); } getEndImage(e) { var t = "desktop" === this.currentDevice ? "data-src-pc" : "tablet" === this.currentDevice ? "data-src-tablet" : "data-src-mobile"; const i = e.querySelector(this.opts.imageEndLazyClass); e = this.opts.imageEndLazyClass.split("."); const s = e[e.length - 1]; i && !i.classList.contains(this.opts.imageLazyCompleteClass) && ((i.src = i.getAttribute(t)), i.addEventListener( "load", () => { 1 == this.opts.imageEndLazyClass.split(" ").length && i.classList.remove(s), i.classList.add(this.opts.imageLazyCompleteClass); }, { once: !0 } )); } checkCompleteVideo() { var e = Array.from( this.el.querySelectorAll("." + this.classes.loaded) ).filter((t) => { { let e = 0; if (e < this.opts.notLoadElement.length) return !t.closest(this.opts.notLoadElement[e]); } }); this.lazyCompleteLength = e.length; } }; })(), (function () { "use strict"; window.VXT = window.VXT || {}; const o = VXT.UTILS, e = o.RESPONSIVE; VXT.VideoPlayer = class { constructor(e, t) { e = { sectionElement: t.sectionElement, videoParentElement: null, videoElement: e, videoController: ".video__controller", hiddenElement: ".blind", endImage: ".video__end-frame img", videoLazyClass: ".js-video-src", lazyCompleteClass: "load-complete", imageEndLazyClass: ".js-end-img-src", visiblePoint: t.visiblePoint || 0, classes: { loaded: "loaded", ended: "ended", paused: "paused", playing: "playing", isPaused: "is-paused", }, resizeStart: null, on: { updateController: null, updatePlayState: null }, }; (this.opts = o.def(e, t || {})), (this.classes = e.classes), this.init(); } init() { this.setElements(), this.initOpts(), null !== this.video && (this.video.paused || this.video.pause(), (this.videoElement.playState = !1), this.updateController(), this.bindEvents()); } setElements() { (this.videoElement = this.opts.videoElement), (this.video = this.videoElement.querySelector("video")), null !== this.video && (null !== this.opts.videoParentElement ? (this.videoParentElement = this.video.closest( this.opts.videoParentElement )) : (this.videoParentElement = this.videoElement), (this.videoController = this.videoParentElement.querySelector( this.opts.videoController ))); } initOpts() { this.getCurrentDevice(), (this.autoPlay = !!this.videoElement.dataset.autoPlay && JSON.parse(this.videoElement.dataset.autoPlay)), (this.videoElement.playState = !1), (this.videoElement.autoPlayState = !1), (this.useController = !!this.videoController), (this.isReset = !1); } getCurrentDevice() { (this.winWidth = o.winSize().w), this.winWidth >= e.TABLET.WIDTH ? (this.currentDevice = "desktop") : this.winWidth > e.MOBILE.WIDTH && this.winWidth < e.TABLET.WIDTH ? (this.currentDevice = "tablet") : (this.currentDevice = "mobile"), (this.prevDevice = this.currentDevice); } getEndImage() { var e = "desktop" === this.currentDevice ? "data-src-pc" : "tablet" === this.currentDevice ? "data-src-tablet" : "data-src-mobile"; const t = this.videoElement.querySelector( this.opts.imageEndLazyClass ); var i = this.opts.imageEndLazyClass.split("."); const s = i[i.length - 1]; t && ((t.src = t.getAttribute(e)), t.addEventListener( "load", () => { 1 == this.opts.imageEndLazyClass.split(" ").length && t.classList.remove(s), t.classList.add(this.opts.lazyCompleteClass); }, { once: !0 } )); } bindEvents() { window.addEventListener("resize", this.onResizeHandler.bind(this)), window.addEventListener( "scroll", this.onScrollHandler.bind(this) ), this.video.addEventListener( "canplaythrough", this.onCanplayThrough.bind(this), { once: !0 } ), this.useController && this.videoController.addEventListener( "click", this.onClickController.bind(this) ); } onChange(e) { if (e === this.videoElement) { e = "mobile" !== this.currentDevice ? "data-src-pc" : "data-src-mobile"; let i = this.videoElement.getAttribute(e); e = i = i.split(".mp4")[0]; this.prevVideoSrc !== e && ((this.videoElement.playState = !1), this.video.querySelectorAll("source").forEach((e) => { const t = e.getAttribute("type"); -1 < t.indexOf("webm") && (e.src = i + ".webm"), -1 < t.indexOf("mp4") && (e.src = i + ".mp4"), this.video.load(); }), this.videoElement.classList.remove(this.classes.playing), this.videoElement.classList.remove(this.classes.paused), this.video.addEventListener( "canplaythrough", () => { o.isLowNetwork() || this.onPlay(), this.getEndImage(); }, { once: !0 } )), (this.prevVideoSrc = e); } } onLoad(e) { if (e === this.videoElement) { e = "mobile" !== this.currentDevice ? "data-src-pc" : "data-src-mobile"; let i = this.videoElement.getAttribute(e); (i = i.split(".mp4")[0]), (this.videoElement.playState = !1), this.video.querySelectorAll("source").forEach((e) => { const t = e.getAttribute("type"); -1 < t.indexOf("webm") && (e.src = i + ".webm"), -1 < t.indexOf("mp4") && (e.src = i + ".mp4"), this.video.load(); }), this.video.addEventListener( "canplaythrough", () => { o.isLowNetwork() || this.onPlay(), this.getEndImage(); }, { once: !0 } ); } } onPlay(e) { var t = () => { 0 < this.video.readyState && !this.videoElement.playState && (this.video.currentTime === this.video.duration && (this.video.currentTime = 0), this.autoPlay && (this.videoElement.autoPlayState = !0), (this.videoElement.playState = !0), this.videoElement.classList.contains(this.classes.paused) ? this.videoElement.classList.add(this.classes.playing) : window.setTimeout(() => { this.videoElement.classList.add(this.classes.playing); }, 350), this.videoElement.classList.remove(this.classes.ended), this.videoElement.classList.remove(this.classes.paused), window.setTimeout(() => { this.video.play(), (this.isReset = !1), this.updateController(), this.outCallback("updatePlayState", !0); }, 350), this.video.addEventListener( "ended", this.updatePlayEnded.bind(this), { once: !0 } )); }; (e && e !== this.videoElement) || t(); } onPause() { this.video.paused || this.video.pause(), (this.videoElement.playState = !1), this.videoElement.classList.remove(this.classes.ended), this.videoElement.classList.remove(this.classes.playing), this.videoElement.classList.add(this.classes.paused), this.updateController(); } onEnded() { 3 < this.video.readyState && (this.video.ended || this.video.pause(), (this.video.currentTime = this.video.duration), (this.videoElement.playState = !1), this.videoElement.classList.add(this.classes.ended), this.videoElement.classList.remove(this.classes.playing), this.videoElement.classList.remove(this.classes.paused), this.updateController()); } onReset(e) { var t = () => { this.video.pause(), (this.video.currentTime = 0), (this.videoElement.playState = !1), (this.isReset = !0), this.autoPlay && (this.videoElement.autoPlayState = !1), this.videoElement.classList.remove(this.classes.ended), this.videoElement.classList.remove(this.classes.playing), this.videoElement.classList.remove(this.classes.paused), this.updateController(); }; (e && e !== this.videoElement) || t(); } onCanplayThrough() { var e = this.opts.videoLazyClass.split("."), e = e[e.length - 1]; this.useController && window.setTimeout(() => { this.videoController.style.display = "block"; }, 500), this.videoElement.classList.add(this.classes.loaded), 1 == this.opts.videoLazyClass.split(" ").length && this.videoElement.classList.remove(e), (this.isCanplay = !0), this.onScrollHandler(), (this.isCanplay = !1); } onClickController(e) { e.preventDefault(), this.videoElement.playState ? this.onPause() : this.onPlay(); } updatePlayEnded() { this.onPause(); } updateController() { var e; this.useController && (this.videoElement.playState ? this.videoController.classList.add(this.classes.isPaused) : this.videoController.classList.remove(this.classes.isPaused), (e = { el: this.videoController, playState: this.videoElement.playState, }), this.outCallback("updateController", e)); } onScrollHandler() { if (!this.videoElement.closest(".cm-layer")) { var e = window.scrollY, t = (this.lastScrollY, o.getHeight(this.videoElement), o.winSize().h, o.getNavHeight()), i = o.getScroll().top, s = o.getScroll().bottom, a = o.getOffset(this.videoElement).top, t = o.getOffset(this.videoElement).bottom - t; const l = this.videoElement.classList.contains(this.classes.playing) && this.videoElement.playState; var n = this.videoElement.classList.contains(this.classes.paused) && !this.videoElement.playState, r = this.videoElement.classList.contains(this.classes.ended) && !this.videoElement.playState; if ( (a < s && i <= a) || (i < t && t < s) || (i < a && t < s) || (a < i && s < t) ) { const l = this.isCanplay || this.isReset; !l || !this.autoPlay || this.videoElement.playState || this.videoElement.autoPlayState || (!o.isLowNetwork() && o.isInViewPort(this.videoElement) && this.onPlay()); } else ((this.autoPlay && this.videoElement.autoPlayState) || this.isReset) && (l || n || r) && this.onReset(); this.lastScrollY = e; } } onResponsiveChange() { window.setTimeout(() => { (this.isCanplay = !0), this.onReset(), this.onScrollHandler(), (this.isCanplay = !1); }, 20); } onResizeHandler() { o.winSize().w !== this.winWidth && ((this.winWidth = o.winSize().w), null == this.opts.resizeStart && ((this.opts.resizeStart = this.winWidth), this.resizeAnimateFunc()), window.clearTimeout(this.resizeEndTime), (this.resizeEndTime = window.setTimeout( this.resizeEndFunc.bind(this), 150 ))); } resizeAnimateFunc() { this.setLayout(), (this.resizeRequestFrame = o.requestAFrame.call( window, this.resizeAnimateFunc.bind(this) )); } resizeEndFunc() { (this.opts.resizeStart = null), o.cancelAFrame.call(window, this.resizeRequestFrame); } setLayout() { this.winWidth >= e.TABLET.WIDTH ? (this.currentDevice = "desktop") : this.winWidth > e.MOBILE.WIDTH && this.winWidth < e.TABLET.WIDTH ? (this.currentDevice = "tablet") : (this.currentDevice = "mobile"), this.currentDevice !== this.prevDevice && this.onResponsiveChange(), (this.prevDevice = this.currentDevice); } outCallback(e, t) { e = this.opts.on[e]; null != e && e(t); } }; })(), (function () { "use strict"; (e = !(r = {})), (t = null), (s = function () { a(), n(), UTILS.isLowNetwork() && document.documentElement.classList.add("low_network"), document.documentElement.classList.add("load"), window.removeEventListener("load", s); }), (a = function () { (e = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile"), clearTimeout(r.resizeTimeout), (r.resizeTimeout = setTimeout(function () { UTILS.isBrokenFixed(); }, 100)), e != t && (document.documentElement.classList.add(e), document.documentElement.classList.remove(t), (t = e)); }), (n = function () { for ( var e = window.pageYOffset, t = e + window.innerHeight, i = 0; i < r.allClickables.length; i++ ) { var s = r.allClickables[i], a = e + s.getBoundingClientRect().top, n = e + UTILS.getNavHeight(); n <= a && a <= t ? (s.isVisible = !0) : (a < n || t < a) && (s.isVisible = !1); } }), (l = function (e) { var s; (!document.documentElement.classList.contains("ios") && e && null == e.relatedTarget) || ((s = this).isClicked || this.isVisible || i(this) || setTimeout(function () { var e = window.pageYOffset, t = s.getBoundingClientRect(), i = (window.innerHeight - UTILS.getNavHeight()) / 2, e = e - UTILS.getNavHeight() + t.top + t.height / 2; window.scrollTo(0, e - i); }, 10), (this.isClicked = !1)); }), (i = function (e) { var e = e.parentNode, t = e.getAttribute("id"); return ( "contents" != t && e != document.body && (!("subnav" != t && !e.classList.contains("sc-s22ultra-popup")) || i(e)) ); }), (o = function () { this.isClicked = !0; }); var r, e, t, s, a, n, l, i, o, d = { init: function () { (r.resizeTimeout = null), (r.contents = document.getElementById("contents") || document.getElementById("content")), (r.allClickables = r.contents.querySelectorAll( "a, button, input, select" )); var e = 0; for ( window.addEventListener("load", s), window.addEventListener("resize", a), window.addEventListener("scroll", n), e = 0; e < r.allClickables.length; e++ ) { var t = r.allClickables[e]; (t.isClicked = !1), (t.isVisible = !1), t.addEventListener("focusin", l), t.addEventListener("mousedown", o); } var i = document.documentElement.classList; "global" == UTILS.checkRegion() || i.contains("mac") || i.contains("safari") || ANIUTIL.scrollController({ speed: 120, duration: 0.5 }); }, }; window.initialize = d; })(), (function () { "use strict"; window.VXT = window.VXT || {}; VXT.Choose = class { constructor(e = container, t) { var i = { el: e, swiperEl: ".vxt-choose__container", swiperSlideEl: ".vxt-choose__list-item", tabEl: ".vxt-choose__tab", tabList: ".vxt-choose__tab-list", tabItem: ".vxt-choose__tab-item", tabCta: ".vxt-choose__tab-cta", btnPrev: ".swiper-button-prev", btnNext: ".swiper-button-next", videoEl: ".video__container", classes: { loaded: "loaded" }, on: { updateResponsiveImage: null }, }; (this.opts = i), (this.classes = i.classes), (document.querySelectorAll(e).length > 0 && document.querySelectorAll(e).forEach(ele => { this.el = ele; this.init(); })) } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.initOpts(), this.buildTabSwiper(), this.buildSwiper(), this.buildVideoPlayer(), this.bindEvents()); } setElements() { (this.swiperEl = this.el.querySelector(this.opts.swiperEl)), (this.swiperSlideEl = this.swiperEl.querySelectorAll( this.opts.swiperSlideEl )), (this.tabEl = this.el.querySelector(this.opts.tabEl)), (this.tabList = this.tabEl.querySelector(this.opts.tabList)), (this.tabItem = this.tabList.querySelectorAll(this.opts.tabItem)), (this.tabCta = this.tabList.querySelectorAll(this.opts.tabCta)), (this.btnPrev = this.el.querySelector(this.opts.btnPrev)), (this.btnNext = this.el.querySelector(this.opts.btnNext)), (this.videoEl = this.el.querySelector(this.opts.videoEl)); } getCurrentDevice() { window.innerWidth >= UTILS.RESPONSIVE.TABLET.WIDTH ? (this.currDevice = "desktop") : window.innerWidth > UTILS.RESPONSIVE.MOBILE.WIDTH && window.innerWidth < UTILS.RESPONSIVE.TABLET.WIDTH ? (this.currDevice = "tablet") : (this.currDevice = "mobile"); } initOpts() { this.getCurrentDevice(); } bindEvents() { window.addEventListener("load", this.onLoadHandler.bind(this)), window.addEventListener( "resize", this.onResizeHandler.bind(this) ), this.tabItem.forEach((e) => { const t = e.querySelector(this.opts.tabCta); t.addEventListener("focus", this.onFocusTab.bind(this)), t.addEventListener("click", this.onClickTab.bind(this)); }); } getDirection(e) { return UTILS.isRTL() ? ("left" === e ? "right" : "left") : e; } createSlidePosition() { this.slidePositionArray = []; for (let i = 0; i < this.tabItem.length; i++) { let e, t; var s = this.tabEl.getBoundingClientRect(), a = this.tabItem[i].getBoundingClientRect(); UTILS.isRTL() ? ((e = a.x - s.x), (t = s - (e + a.width)), (e = t + a.width)) : ((e = a.x - s.x), (t = e + a.width)), this.slidePositionArray.push({ left: e, right: t }); } } buildSwiper() { (this.swiper = { instance: null, options: { slidesPerView: "auto", a11y: !1, observer: !0, observeParents: !0, centeredSlides: !0, navigation: { prevEl: this.opts.btnPrev, nextEl: this.opts.btnNext, }, thumbs: { swiper: this.swiperTab.instance }, controller: { control: this.swiperTab.instance }, }, slideChange: () => { const i = this.swiper.instance.realIndex, e = this.swiperSlideEl[i], t = e.querySelector(this.opts.videoEl); t && (t.classList.contains(this.classes.loaded) ? UTILS.isLowNetwork() || this.videoPlayer.play(t) : this.videoPlayer.load(t)), this.swiperSlideEl.forEach((e, t) => { t !== i && (t = e.querySelector(this.opts.videoEl)) && this.videoPlayer.reset(t); }); }, build: () => { null === this.swiper.instance && ((this.swiper.options.on = { slideChange: this.swiper.slideChange.bind(this), }), (this.swiper.instance = new Swiper( this.swiperEl, this.swiper.options ))); }, destroy: () => { null != this.swiper.instance && (this.swiper.instance.destroy(), (this.swiper.instance = null)); }, }), this.swiper.build(); } buildTabSwiper() { (this.swiperTab = { instance: null, options: { a11y: !1, observer: !0, observeParents: !0, slidesPerView: "auto", freeMode: !0, }, updateMove: (e) => { this.swiperTab.instance.translateTo(e, 400, !1, !1), this.swiperTab.instance.updateSize(), this.swiperTab.instance.updateSlides(), this.swiperTab.instance.updateProgress(); }, build: () => { null === this.swiperTab.instance && (this.swiperTab.instance = new Swiper( this.tabEl, this.swiperTab.options )); }, destroy: () => { null != this.swiperTab.instance && (this.swiperTab.instance.destroy(), (this.swiperTab.instance = null)); }, }), this.swiperTab.build(); } buildVideoPlayer() { (this.videoPlayer = { instance: null, load: (e) => { null !== this.swiper.instance && this.videoPlayer.instance.onLoad(e); }, reset: (e) => { null !== this.swiper.instance && this.videoPlayer.instance.onReset(e); }, play: (e) => { null !== this.swiper.instance && this.videoPlayer.instance.onPlay(e); }, build: () => { null === this.videoPlayer.instance && (this.videoPlayer.instance = new VXT.VideoPlayer( this.videoEl, { sectionElement: this.opts.el, on: { updateController: (e) => { const t = e.el; var e = e.playState, i = t.getAttribute("an-la").split(":")[0]; e ? t.setAttribute("an-la", i + ":stop video") : t.setAttribute("an-la", i + ":play video"); }, }, } )); }, }), this.videoPlayer.build(); } onClickTab(e) { var t = e.currentTarget.parentNode, t = Array.from(this.tabList.children).indexOf(t); this.tabCta.forEach((e) => { e.setAttribute("aria-selected", !1); }), e.currentTarget.setAttribute("aria-selected", !0), this.swiper.instance.slideTo(t), this.swiperTab.instance.slideTo(t); } onFocusTab(t) { if ("desktop" !== this.currDevice && "tablet" !== this.currDevice) { var t = t.currentTarget.parentNode, t = Array.from(this.tabList.children).indexOf(t), i = this.tabEl.getBoundingClientRect().width - this.tabList.getBoundingClientRect().width, s = Math.ceil( -1 * (this.tabEl.getBoundingClientRect().width - this.tabList.scrollWidth - i) ); let e = this.slidePositionArray[t][this.getDirection("left")] - i; (e = (e = e <= 0 ? 0 : e) >= s ? s : e), (e *= -1), this.swiperTab.updateMove(e); } } updateResponsiveImage() { var e = this.swiperEl.querySelectorAll("img"); this.outCallback("updateResponsiveImage", e); } onLoadHandler() { this.onResizeHandler(), window.removeEventListener("load", this.onLoadHandler.bind(this)); } onResizeHandler() { this.getCurrentDevice(), clearTimeout(this.resizeTimeout), (this.resizeTimeout = setTimeout(() => { this.onResponsive(); }, 100)), this.currDevice != this.prevDevice && (this.onResponsiveChange(), (this.prevDevice = this.currDevice)); } onResponsive() { this.createSlidePosition(), "mobile" === this.currDevice && this.updateResponsiveImage(); } onResponsiveChange() { this.onResponsive(); } outCallback(e, t) { e = this.opts.on[e]; null != e && e(t); } }; })(), (function () { "use strict"; window.VXT = window.VXT || {}; VXT.Content = class { constructor(e = container, t) { var i = { el: e, swiperEl: ".vxt-content__slide", swiperSlide: ".vxt-content__slide-item", swiperArrow: ".vxt-content__arrow-cta", nextArrow: ".vxt-content__arrow-next", prevArrow: ".vxt-content__arrow-prev", navigaionEl: ".vxt-content__nav", pagination: ".vxt-content__pagination", paginationItem: "li", paginationCta: ".s-line-wrap", featureHide: "is-feature-hide", videoElement: ".vxt-content__player", classes: { isActive: "is-active", loaded: "loaded", ended: "ended", paused: "paused", playing: "playing", }, on: { updateResponsiveImage: null }, }; (this.opts = UTILS.def(i, t || {})), (this.classes = i.classes), (this.el = document.querySelector(e)), this.init(); } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.initOpts(), this.initLayout(), this.buildSwiper(), this.bindEvents(), this.buildVideoPlayer()); } setElements() { (this.swiperEl = this.el.querySelector(this.opts.swiperEl)), (this.swiperSlide = this.swiperEl.querySelectorAll( this.opts.swiperSlide )), (this.swiperArrow = this.el.querySelectorAll( this.opts.swiperArrow )), (this.nextArrow = this.el.querySelector(this.opts.nextArrow)), (this.prevArrow = this.el.querySelector(this.opts.prevArrow)), (this.navigaionEl = this.el.querySelector(this.opts.navigaionEl)), (this.pagination = this.el.querySelector(this.opts.pagination)), (this.paginationItem = this.pagination.querySelectorAll( this.opts.paginationItem )), (this.paginationCta = this.pagination.querySelectorAll( this.opts.paginationCta )), (this.videoElement = this.el.querySelectorAll( this.opts.videoElement )); } getCurrentDevice() { window.innerWidth >= UTILS.RESPONSIVE.TABLET.WIDTH ? (this.currDevice = "desktop") : window.innerWidth > UTILS.RESPONSIVE.MOBILE.WIDTH && window.innerWidth < UTILS.RESPONSIVE.TABLET.WIDTH ? (this.currDevice = "tablet") : (this.currDevice = "mobile"); } initOpts() { this.getCurrentDevice(); } initLayout() { this.paginationItem[0].classList.add(this.classes.isActive); } bindEvents() { window.addEventListener("load", this.onLoadHandler.bind(this)), window.addEventListener( "resize", this.onResizeHandler.bind(this) ); } buildSwiper() { (this.swiper = { instance: null, options: { slidesPerView: "auto", a11y: !1, observer: !0, observeParents: !0, navigation: { nextEl: this.nextArrow, prevEl: this.prevArrow }, pagination: { el: ".vxt-content__pagination", clickable: !0, type: "bullets", renderBullet: function (e, t) { const i = this.slides[e]; return `
  • `; }, }, }, slideChange: () => { const i = this.swiper.instance.realIndex, e = this.swiperSlide[i], t = e.querySelector(this.opts.videoElement); t && (t.classList.contains(this.classes.loaded) ? UTILS.isLowNetwork() || this.videoPlayer.play(t) : this.videoPlayer.load(t)), this.swiperSlide.forEach((e, t) => { t !== i && (t = e.querySelector(this.opts.videoElement)) && this.videoPlayer.reset(t); }), this.paginationCta.forEach((e) => { e.removeAttribute("title"); }), this.paginationCta[i].setAttribute("title", "selected"); }, destroy: () => { null !== this.swiper.instance && (this.swiper.instance.destroy(), (this.swiper.instance = null)); }, build: () => { null === this.swiper.instance && ((this.swiper.options.on = { slideChange: this.swiper.slideChange.bind(this), }), (this.swiper.instance = new Swiper( this.opts.swiperEl, this.swiper.options )), (this.paginationCta = this.pagination.querySelectorAll( this.opts.paginationCta )), this.paginationCta[0].setAttribute("title", "selected")); }, }), this.swiper.build(); } buildVideoPlayer() { (this.videoPlayer = { instance: [], load: (t) => { this.videoPlayer.instance.length && this.videoPlayer.instance.forEach((e) => { e.onLoad(t); }); }, reset: (t) => { this.videoPlayer.instance.length && this.videoPlayer.instance.forEach((e) => { e.onReset(t); }); }, play: (t) => { this.videoPlayer.instance.length && this.videoPlayer.instance.forEach((e) => { e.onPlay(t); }); }, build: () => { this.videoPlayer.instance.length || this.videoElement.forEach((e, t) => { this.videoPlayer.instance.push( new VXT.VideoPlayer(e, { sectionElement: this.opts.el, on: { updateController: (e) => { const t = e.el; var e = e.playState, i = t.getAttribute("an-la").split(":")[0]; e ? t.setAttribute("an-la", i + ":stop video") : t.setAttribute("an-la", i + ":play video"); }, }, }) ); }); }, }), this.videoPlayer.build(); } updateResponsiveImage() { var e = this.swiperEl.querySelectorAll("img"); this.outCallback("updateResponsiveImage", e); } onLoadHandler() { this.onResizeHandler(), window.removeEventListener("load", this.onLoadHandler.bind(this)); } onResizeHandler() { this.getCurrentDevice(), clearTimeout(this.resizeTimeout), (this.resizeTimeout = setTimeout(() => { this.onResponsive(); }, 100)), this.currDevice != this.prevDevice && (this.onResponsiveChange(), (this.prevDevice = this.currDevice)); } onResponsive() { "mobile" === this.currDevice && this.updateResponsiveImage(); } onResponsiveChange() { this.onResponsive(); } outCallback(e, t) { e = this.opts.on[e]; null != e && e(t); } }; })(), (function () { "use strict"; window.VXT = window.VXT || {}; const t = VXT.UTILS; t.RESPONSIVE; VXT.Contrast = class { constructor(e = container, t) { var i = { el: e, defaultBtn: ".type-default", contrastBtn: ".type-contrast", cookieName: "highContrastMode", featureHide: "is-feature-hide", }; (this.opts = i), (this.classes = i.classes), (this.el = document.querySelector(e)), this.init(); } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.bindEvents()); } setElements() { (this.defaultBtn = this.el.querySelector(this.opts.defaultBtn)), (this.defaultBtnTitle = this.defaultBtn .getAttribute("title") .trim()), (this.contrastBtn = this.el.querySelector(this.opts.contrastBtn)), (this.contrastBtnTitle = this.contrastBtn .getAttribute("title") .trim()), (this.cookieName = this.opts.cookieName); } bindEvents() { window.addEventListener("load", this.onLoadHandler.bind(this)), this.defaultBtn && this.defaultBtn.addEventListener( "click", this.onClickDefaultBtn.bind(this) ), this.contrastBtn && this.contrastBtn.addEventListener( "click", this.onClickContrastBtn.bind(this) ); } onLoadHandler() { this.activeContrast(); } onClickDefaultBtn(e) { e.preventDefault(), t.setCookie(this.cookieName, "0", 1), this.activeContrast(); } onClickContrastBtn(e) { e.preventDefault(), t.setCookie(this.cookieName, "1", 1), this.activeContrast(); } activeContrast() { var e = t.getCookie(this.cookieName); null != e && e.length && "1" == e ? (document.documentElement.classList.add("color_yb"), this.contrastBtn.setAttribute( "title", this.contrastBtnTitle + " selected" ), this.defaultBtn.setAttribute("title", this.defaultBtnTitle)) : (document.documentElement.classList.remove("color_yb"), this.contrastBtn.setAttribute("title", this.contrastBtnTitle), this.defaultBtn.setAttribute( "title", this.defaultBtnTitle + " selected" )); } }; })(), (function () { "use strict"; window.VXT = window.VXT || {}; VXT.KeyVisual = class { constructor(e = container, t) { var i = { el: e, classes: {}, titleEl: ".vxt-common__title", descriptionEl: ".vxt-common__description", videoElement: ".video__container", featureHide: "is-feature-hide", }; (this.opts = i), (this.classes = i.classes), (this.el = document.querySelector(e)), this.init(); } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.buildVideoPlayer()); } setElements() { (this.titleEl = this.el.querySelector(this.opts.titleEl)), (this.descriptionEl = this.el.querySelector( this.opts.descriptionEl )), (this.videoElement = this.el.querySelector( this.opts.videoElement )); } buildVideoPlayer() { (this.videoPlayer = { instance: null, build: () => { null === this.videoPlayer.instance && (this.videoPlayer.instance = new VXT.VideoPlayer( this.videoElement, { sectionElement: this.opts.el, on: { updateController: (e) => { const t = e.el; var e = e.playState, i = t.getAttribute("an-la").split(":")[0]; e ? t.setAttribute("an-la", i + ":stop video") : t.setAttribute("an-la", i + ":play video"); }, }, } )); }, }), this.videoPlayer.build(); } }; })(), (function () { "use strict"; window.VXT = window.VXT || {}; VXT.LNB = class { constructor(e = container, t) { var i = { el: e, navEl: ".vxt-lnb__nav", navArea: ".vxt-lnb__area", navList: ".vxt-lnb__nav-list", navItem: ".vxt-lnb__nav-item", navLink: "a", navContents: ".js-content", btnPrev: ".swiper-nav-prev", btnNext: ".swiper-nav-next", classes: { isFixed: "is-fixed", isActive: "is-active", isHold: "is-hold", }, }; (this.opts = i), (this.classes = i.classes), (this.el = document.querySelector(e)), this.init(); } init() { null !== this.el && (this.setElements(), this.initOpts(), this.buildSwiper(), this.bindEvents()); } setElements() { (this.navEl = this.el.querySelector(this.opts.navEl)), (this.navArea = this.el.querySelector(this.opts.navArea)), (this.btnPrev = this.el.querySelector(this.opts.btnPrev)), (this.btnNext = this.el.querySelector(this.opts.btnNext)), (this.navList = this.el.querySelector(this.opts.navList)), (this.navItem = this.el.querySelectorAll(this.opts.navItem)), (this.navContents = Array.from( document.documentElement.querySelectorAll(this.opts.navContents) )); } getCurrentDevice() { window.innerWidth >= UTILS.RESPONSIVE.TABLET.WIDTH ? (this.currDevice = "desktop") : window.innerWidth > UTILS.RESPONSIVE.MOBILE.WIDTH && window.innerWidth < UTILS.RESPONSIVE.TABLET.WIDTH ? (this.currDevice = "tablet") : (this.currDevice = "mobile"); } initOpts() { (this.navTop = UTILS.getOffset(this.el).top), (this.navCount = -1), this.navContents.forEach((e) => { e.dataset.visIndex = ++this.navCount; }), this.getCurrentDevice(), this.createSlidePosition(); } bindEvents() { this.onScrollHandler(), window.addEventListener( "resize", this.onResizeHandler.bind(this) ), window.addEventListener( "scroll", this.onScrollHandler.bind(this) ); const s = window.location.hash; this.navItem.forEach((e, t) => { const i = e.querySelector(this.opts.navLink); i.addEventListener("focus", this.onFocusNavItem.bind(this)), -1 < i.getAttribute("href").indexOf("#") && ((i.dataset.navIndex = t), i.addEventListener("click", this.onFocusNavItem.bind(this))), s && -1 < i.getAttribute("href").indexOf(s) && (i.parentNode.classList.remove(this.classes.isActive), i.click()); }); } getDirection(e) { return UTILS.isRTL() ? ("left" === e ? "right" : "left") : e; } createSlidePosition() { this.slidePositionArray = []; for (let i = 0; i < this.navItem.length; i++) { let e, t; var s = this.navEl.getBoundingClientRect(), a = this.navItem[i].getBoundingClientRect(); UTILS.isRTL() ? ((e = a.x - s.x), (t = s.width - (e + a.width)), (e = t + a.width)) : ((e = a.x - s.x), (t = e + a.width)), this.slidePositionArray.push({ left: e, right: t }); } } onFocusNavItem(e) { e.preventDefault(); const t = e.currentTarget.parentNode; if ( (this.updateNavMove(t), "click" === e.type && !this.el.classList.contains(this.classes.isHold) && !t.classList.contains(this.classes.isActive)) ) { this.navItem.forEach((e) => { e.classList.remove(this.classes.isActive); }), t.classList.contains(this.classes.isActive) || t.classList.add(this.classes.isActive); e = e.currentTarget.dataset.navIndex; const i = this.navContents[e]; (e = i.getBoundingClientRect()), (e = (parseInt(window.getComputedStyle(i).paddingTop), window.scrollY + e.top - UTILS.getNavHeight())); this.el.classList.add(this.classes.isHold), $("html, body") .stop() .animate({ scrollTop: e }, 400, "swing", () => { this.el.classList.remove(this.classes.isHold); }); } } updateNavMove(e) { var e = Array.from(this.navItem).indexOf(e), t = this.navEl.getBoundingClientRect().width - this.navList.getBoundingClientRect().width, i = this.swiper.instance.snapGrid[ this.swiper.instance.snapGrid.length - 1 ]; let s = this.slidePositionArray[e][this.getDirection("left")] - t; (s = (s = s <= 0 ? 0 : s) >= i ? i : s), (s *= -1), this.swiper.updateMove(s); } buildSwiper() { (this.swiper = { instance: null, options: { a11y: !1, observer: !0, slidesPerView: "auto", navigation: { prevEl: this.opts.btnPrev, nextEl: this.opts.btnNext, }, }, updateMove: (e) => { this.swiper.instance.translateTo(e, 400, !1, !1), this.swiper.instance.updateSize(), this.swiper.instance.updateSlides(), this.swiper.instance.updateProgress(); }, build: () => { null === this.swiper.instance && (this.swiper.instance = new Swiper( this.opts.navEl, this.swiper.options )); }, }), this.swiper.build(); } onScrollHandler() { const a = window.scrollY, n = (this.navTop < a ? this.navArea.classList.add(this.classes.isFixed) : this.navArea.classList.remove(this.classes.isFixed), (window.innerHeight + UTILS.getNavHeight()) / 2); this.navContents.forEach((e) => { var t = e.getBoundingClientRect(), i = a + t.top, t = a + t.bottom; if ( !this.el.classList.contains(this.classes.isHold) && a + n >= i && a + n <= t ) { const s = e.dataset.visIndex; this.navItem.forEach((e, t) => { t != s && e.classList.contains(this.classes.isActive) && e.classList.remove(this.classes.isActive), t != s || e.classList.contains(this.classes.isActive) || (e.classList.add(this.classes.isActive), window.setTimeout(() => { this.updateNavMove(e); }, 100)); }); } }); } onResizeHandler() { this.getCurrentDevice(), clearTimeout(this.resizeTimeout), (this.resizeTimeout = setTimeout(() => { this.onResponsive(); }, 100)), this.currDevice != this.prevDevice && (this.onResponsiveChange(), (this.prevDevice = this.currDevice)); } onResponsive() { this.onScrollHandler(), this.createSlidePosition(); } onResponsiveChange() { this.onResponsive(); } }; })(), (function () { "use strict"; window.VXT = window.VXT || {}; VXT.Pirs = class { constructor(e = container, t) { var i = { el: e, swiperEl: ".vxt-pirs__swiper", swiperSlide: ".vxt-pirs__item", swiperArrow: ".vxt-pirs__arrow-cta", nextArrow: ".vxt-pirs__arrow-next", prevArrow: ".vxt-pirs__arrow-prev", navigaionEl: ".vxt-pirs__nav", pagination: ".vxt-pirs__pagination", paginationItem: "li", paginationCta: ".s-line-wrap", classes: { isActive: "is-active" }, on: { updateResponsiveImage: null }, }; (this.opts = UTILS.def(i, t || {})), (this.classes = i.classes), (this.el = document.querySelector(e)), this.init(); } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.setElements(), this.initOpts(), this.initLayout(), this.bindEvents(), this.buildSwiper()); } setElements() { (this.swiperEl = this.el.querySelector(this.opts.swiperEl)), (this.swiperSlide = this.swiperEl.querySelectorAll( this.opts.swiperSlide )), (this.swiperArrow = this.el.querySelectorAll( this.opts.swiperArrow )), (this.nextArrow = this.el.querySelector(this.opts.nextArrow)), (this.prevArrow = this.el.querySelector(this.opts.prevArrow)), (this.navigaionEl = this.el.querySelector(this.opts.navigaionEl)), (this.pagination = this.el.querySelector(this.opts.pagination)), (this.paginationItem = this.pagination.querySelectorAll( this.opts.paginationItem )), (this.paginationCta = this.pagination.querySelectorAll( this.opts.paginationCta )); } getCurrentDevice() { window.innerWidth >= UTILS.RESPONSIVE.TABLET.WIDTH ? (this.currDevice = "desktop") : window.innerWidth > UTILS.RESPONSIVE.MOBILE.WIDTH && window.innerWidth < UTILS.RESPONSIVE.TABLET.WIDTH ? (this.currDevice = "tablet") : (this.currDevice = "mobile"); } initOpts() { this.getCurrentDevice(); } initLayout() { this.paginationItem[0].classList.add("this.classes.isActive"); } bindEvents() { window.addEventListener("load", this.onLoadHandler.bind(this)), window.addEventListener( "resize", this.onResizeHandler.bind(this) ); } buildSwiper() { (this.swiper = { instance: null, options: { slidesPerView: "auto", a11y: !1, observer: !0, observeParents: !0, navigation: { nextEl: this.nextArrow, prevEl: this.prevArrow }, pagination: { el: ".vxt-pirs__pagination", clickable: !0, type: "bullets", renderBullet: function (e, t) { const i = this.slides[e]; return `
  • `; }, }, }, slideChange: () => { var e = this.swiper.instance.realIndex; this.paginationCta.forEach((e) => { e.removeAttribute("title"); }), this.paginationCta[e].setAttribute("title", "selected"); }, destroy: () => { null !== this.swiper.instance && (this.swiper.instance.destroy(), (this.swiper.instance = null)); }, build: () => { null === this.swiper.instance && ((this.swiper.options.on = { slideChange: this.swiper.slideChange.bind(this), }), (this.swiper.instance = new Swiper( this.opts.swiperEl, this.swiper.options )), (this.paginationCta = this.pagination.querySelectorAll( this.opts.paginationCta )), this.paginationCta[0].setAttribute("title", "selected")); }, }), this.swiper.build(); } updateResponsiveImage() { var e = this.swiperEl.querySelectorAll("img"); this.outCallback("updateResponsiveImage", e); } onLoadHandler() { this.onResizeHandler(), window.removeEventListener("load", this.onLoadHandler.bind(this)); } onResizeHandler() { this.getCurrentDevice(), clearTimeout(this.resizeTimeout), (this.resizeTimeout = setTimeout(() => { this.onResponsive(); }, 100)), this.currDevice != this.prevDevice && (this.onResponsiveChange(), (this.prevDevice = this.currDevice)); } onResponsive() { "mobile" === this.currDevice && this.updateResponsiveImage(); } onResponsiveChange() { this.onResponsive(); } outCallback(e, t) { e = this.opts.on[e]; null != e && e(t); } }; })(), (function () { "use strict"; window.VXT = window.VXT || {}; const s = VXT.UTILS; s.RESPONSIVE; VXT.RemoteManagement = class { constructor(e = container, t) { var i = { el: e, classes: {}, accodianItemEl: ".vxt-remote-management__accodian-item", accodianTitleEl: ".vxt-remote-management__accodian-title", accodianTitleTextEl: ".vxt-common__title", accodianMobileTitleEl: ".vxt-remote-management__accodian-title--mobile", accodianImageEl: ".vxt-remote-management__accodian-image", featureHide: "is-feature-hide", swiperContainer: ".vxt-remote-management__accodian-wrap", swiperWrapper: ".vxt-remote-management__accodian-list", swiperPagination: ".vxt-remote-management__pagination", btnPrev: ".vxt-remote-management__prev", btnNext: ".vxt-remote-management__next", ariaData: { ariaSelected: "aria-selected", ariaLabel: "aria-label", ariaExpanded: "aria-expanded", ariaHidden: "aria-hidden", }, on: { updateResponsiveImage: null }, }; (this.opts = s.def(i, t || {})), (this.classes = i.classes), (this.el = document.querySelector(e)), this.init(); } init() { null === this.el || this.el.classList.contains(this.opts.featureHide) || (this.initOpts(), this.setElements(), this.buildSwiper(), this.bindEvents()); } initOpts() { this.getCurrentDevice(), (this.currentIndex = 0); } getCurrentDevice() { window.innerWidth >= s.RESPONSIVE.TABLET.WIDTH ? (this.currDevice = "desktop") : window.innerWidth > s.RESPONSIVE.MOBILE.WIDTH && window.innerWidth < s.RESPONSIVE.TABLET.WIDTH ? (this.currDevice = "tablet") : (this.currDevice = "mobile"); } setElements() { (this.accodianItemEl = this.el.querySelectorAll( this.opts.accodianItemEl )), (this.accodianTitleEl = this.el.querySelectorAll( this.opts.accodianTitleEl )), (this.accodianMobileTitleEl = this.el.querySelectorAll( this.opts.accodianMobileTitleEl )), (this.accodianImageEl = this.el.querySelectorAll( this.opts.accodianImageEl )), (this.swiperContainer = this.el.querySelector( this.opts.swiperContainer )), (this.swiperWrapper = this.el.querySelector( this.opts.swiperWrapper )); } bindEvents() { window.addEventListener("load", this.onLoadHandler.bind(this)), window.addEventListener( "resize", this.onResizeHandler.bind(this) ), this.accodianTitleEl.forEach((e) => { e.addEventListener( "focus", this.onClickAccodianItem.bind(this) ); }); } setMobileLayout() { this.setMobileAccodianTitle(), this.destroyAccodian(), this.reinitSwiper(); } setPcLayout() { this.buildAccodian(), this.swiper.destroy(); } onClickAccodianItem(e) { "mobile" != this.currentDevice && ((this.currentIndex = Array.from(this.accodianItemEl).indexOf( e.target.parentNode )), this.accodianTitleEl.forEach((e) => { e.setAttribute(this.opts.ariaData.ariaExpanded, "false"); }), this.accodianImageEl.forEach((e) => { e.setAttribute(this.opts.ariaData.ariaHidden, "true"); }), e.target.setAttribute(this.opts.ariaData.ariaExpanded, "true"), e.target.parentNode .querySelector(this.opts.accodianImageEl) .setAttribute(this.opts.ariaData.ariaHidden, "false")); } buildAccodian() { this.accodianTitleEl.forEach((e) => { e.setAttribute(this.opts.ariaData.ariaExpanded, "false"); }), this.accodianImageEl.forEach((e) => { e.setAttribute(this.opts.ariaData.ariaHidden, "true"); }), this.accodianTitleEl[this.currentIndex].setAttribute( this.opts.ariaData.ariaExpanded, "true" ), this.accodianImageEl[this.currentIndex].setAttribute( this.opts.ariaData.ariaHidden, "false" ); } destroyAccodian() { this.accodianTitleEl.forEach((e) => { e.setAttribute(this.opts.ariaData.ariaExpanded, "true"); }), this.accodianImageEl.forEach((e) => { e.setAttribute(this.opts.ariaData.ariaHidden, "false"); }); } setMobileAccodianTitle() { var i = []; this.accodianTitleEl.forEach((e) => { i.push(e.querySelector(this.opts.accodianTitleTextEl).innerHTML); }), this.accodianMobileTitleEl.forEach((e, t) => { e.innerHTML = i[t]; }); } reinitSwiper() { this.swiper.destroy(), this.swiper.build(); } buildSwiper() { const s = this; (this.swiper = { instance: null, options: { a11y: !1, slideToClickedSlide: !0, spaceBetween: 0, loop: !0, loopedSlides: 4, initialSlide: this.currentIndex, navigation: { prevEl: this.opts.btnPrev, nextEl: this.opts.btnNext, }, pagination: { el: this.opts.swiperPagination, clickable: "true", renderBullet: function (e, t) { var i = []; return ( s.accodianTitleEl.forEach((e) => { i.push( e.querySelector(s.opts.accodianTitleTextEl).innerText ); }), `
  • ` ); }, }, }, init: () => { var e = this.swiper.instance.realIndex; this.swiper.instance.pagination.bullets.length && this.swiper.paginationChange(e); }, paginationChange: (e) => { this.swiper.instance.slides.attr( s.opts.ariaData.ariaSelected, "false" ), this.swiper.instance.slides .eq(e) .attr(s.opts.ariaData.ariaSelected, "true"), this.swiper.instance.pagination.bullets .find("button") .removeAttr("title"), this.swiper.instance.pagination.bullets .eq(e) .find("button") .attr("title", "selected"); }, destroy: () => { null != this.swiper.instance && (this.swiper.instance.destroy(), (this.swiper.instance = null)); }, build: () => { null === this.swiper.instance && ((this.swiper.options.initialSlide = this.currentIndex), (this.swiper.instance = new Swiper( this.opts.swiperContainer, this.swiper.options )), this.swiper.init(), this.swiper.instance.on( "slideChangeTransitionStart", function () { var e = this.realIndex; (s.currentIndex = e), s.swiper.paginationChange(e); } )); }, }), this.swiper.build(); } updateResponsiveImage() { var e = this.swiperWrapper.querySelectorAll("img"); this.outCallback("updateResponsiveImage", e); } onLoadHandler(e) { this.onResizeHandler(), window.removeEventListener("load", this.onLoadHandler.bind(this)); } onResizeHandler() { this.getCurrentDevice(), clearTimeout(this.resizeTimeout), (this.resizeTimeout = setTimeout(() => { this.onResponsive(); }, 100)), this.currDevice != this.prevDevice && (this.onResponsiveChange(), (this.prevDevice = this.currDevice)); } onResponsive() { "mobile" === this.currDevice && this.updateResponsiveImage(); } onResponsiveChange() { this.onResponsive(), "desktop" === this.currDevice || "tablet" === this.currDevice ? this.setPcLayout() : this.setMobileLayout(); } outCallback(e, t) { e = this.opts.on[e]; null != e && e(t); } }; })(), (function () { "use strict"; VXT.UTILS.RESPONSIVE; new (class { constructor(e = container) { (this.opts = { el: e, wrapEl: "#wrap", lnbEl: ".vxt-lnb", keyVisualEl: ".vxt-kv", chooseEl: ".vxt-choose", contentEl: ".vxt-content", remoteManagementEl: ".vxt-remote-management", pirsEl: ".vxt-pirs", contrastEl: ".cp-high-contrast", subNavEl: "#subnav", }), (this.el = document.querySelector(e)), this.init(); } init() { null !== this.el && (this.buildComponents(), initialize.init()); } buildComponents() { (this.imageLoader = new VXT.ImageLoader(this.opts.el, { loadOption: [ { resolution: 1920, attribute: "data-src-pc" }, { resolution: 1080, attribute: "data-src-tablet" }, { resolution: 767, attribute: "data-src-mobile" }, ], })), (this.videoLoader = new VXT.VideoLoader(this.opts.el, { notLoadElement: [".cm-layer"], loadOption: [ { resolution: 1920, attribute: "data-src-pc" }, { resolution: 767, attribute: "data-src-mobile" }, ], })), (this.lnb = new VXT.LNB(this.opts.lnbEl)), (this.keyVisual = new VXT.KeyVisual(this.opts.keyVisualEl)), (this.choose = new VXT.Choose(this.opts.chooseEl)), (this.content = new VXT.Content(this.opts.contentEl, { on: { updateResponsiveImage: (e) => { this.imageLoader.updateResponsiveImage(e); }, }, })), (this.remoteManagement = new VXT.RemoteManagement( this.opts.remoteManagementEl, { on: { updateResponsiveImage: (e) => { this.imageLoader.updateResponsiveImage(e); }, }, } )), (this.pirs = new VXT.Pirs(this.opts.pirsEl, { on: { updateResponsiveImage: (e) => { this.imageLoader.updateResponsiveImage(e); }, }, })), (this.contrast = new VXT.Contrast(this.opts.contrastEl)); } })(".vxt"); })(); });

    FAQ

    • What is the sign-in process for Samsung VXT CMS

      Samsung VXT CMS Account has Samsung Account based system, and therefore you would need your own Samsung Account to use the CMS service. If you do not have your Samsung Account yet, create your own Samsung Account at Samsung.com, and use the account information to sign-in to the VXT CMS service. Get started now.
    • VXT CMS enables you to create and upload contents that will be scheduled on your signage. VXT CMS also allows you to remotely manage signage including monitoring, controlling settings and applying security measures.
    • VXT Player is an App that allows contents from CMS Server to be played on signage. You can download the App on signage at Apps menu without any additional charges.
    • VXT Art provides art contents that will enrich your content breadth and enhance signage experience. If you purchased VXT Art separately, you can find VXT Art at VXT Canvas and have hands on experience with art contents with content details.
    • Yes! Search VXT CMS on search engine right now to try out! VXT CMS provide you with up to 3 free trial licenses for 6 months. You can basically use entire contents management features to test if VXT CMS suits your business.

      * For VXT Art, you can view the artworks in VXT Canvas, but you cannot distribute them to your screen.
    • VXT CMS is being developed to support non-Samsung devices as well as Samsung products.
    • You don’t need to purchase physical screens to try out VXT CMS. With any device that supports chrome browser, you can swiftly explore entire Samsung VXT CMS journey.

    Resources

    Samsung VXT CMS Samsung VXT CMS

    Samsung VXT CMS

    React Faster. Create new possibilities.

    Samsung VXT CMS Web Manual

    Samsung VXT CMS Web Manual

    Use our detailed guides to effectively utilize VXT CMS Solution

    It’s time to meet Samsung VXT CMS!

    It’s time to meet Samsung VXT CMS!

    Contact a digital signage sales expert

    All fields required

    -->
    Product Interest (select one or more):

    Discover digital signage displays & screens

    Explore our wide selection of digital signage and commercial displays. From outdoor signage and video walls to microLED, interactive and standalone displays—ranging from Full HD to 8K UHD resolution—we offer digital display screens and solutions for virtually any business need.

    © 2024 Samsung Electronics America, Inc. All rights reserved. Samsung is a registered trademark of Samsung Electronics Co., Ltd. All products, logos and brand names are trademarks or registered trademarks of their respective companies. Screen images simulated.

    Stay in the know

    Stay in the know

    *By submitting your email, you agree to receive periodic emails from Samsung on exclusive discounts, new product announcements, our latest technology insights, special events and more. Please consult our Privacy Policy to understand how we protect your privacy

    Contact a sales expert

    Contact a sales expert

    Get in touch with our sales team to discuss tailored solutions for your business. You can call (866) 726-4249 to talk to an expert now, or use the form below to submit your requests.

    Get product support

    Get product support

    Find manuals, downloads, warranty information and more. We also offer FAQs and demos to help with business product questions.