*El descuento solo aplica para el teléfono declarado en las condiciones anteriores. Se anulará la compra en caso de lo contrario.
The device you are trading in is more valuable than the phone you are buying. Unfortunately we cannot credit you the excess value, so please remove the trade in device, or change the device you are purchasing
Para continuar, el pago minimo de esta compra son {{tradeInResult.tenText}}
Imagen simulada. Los colores disponibles de los Galaxy Buds3 Pro pueden variar según el país o el operador. Galaxy Buds3 Pro es compatible con funciones de Galaxy AI como Interpreter y Live Translate cuando se empareja con dispositivos Samsung Galaxy compatibles. La disponibilidad de las funciones de Galaxy AI puede variar según el modelo de dispositivo. Visita samsung.com para obtener más detalles.
Galaxy AIestá aquí
Galaxy AI llegó para tus nuevos Galaxy Buds3 Pro
Redefine tu experiencia auditiva con nuestro primer tweeter planar y el debut del amplificador doble en los Galaxy Buds. Captura una gran variedad de detalles complejos con los altavoces bidireccionales mejorados. Minimiza la distorsión con nuestro potente amplificador doble. Escuche cada nota con claridad nítida, gracias al códec de 24-bit. Lleva tu experiencia auditiva al siguiente nivel con el control de sonido impulsado por Galaxy AI y la interpretación en tiempo real. Mira tus Galaxy Buds bajo una nueva luz. , ,
Diseño icónico con Blade Lights , ,
Un par de auriculares Galaxy Buds3 Pro en Silver en un estuche cerrado.
Sonido envolvente con Ultra High-Quality Audio
Varios puntos blancos en una formación circular con puntos blancos adicionales formando ondas en el fondo.
Adaptive Noise Control ,
Un único auricular Galaxy Buds3 Pro en Silver con Blade Light encendido.
Sonido impulsado con Galaxy AI , ,
Galaxy AI ya llegó
Iluminación de los nuevos Galaxy Buds , ,
Diseño completamente nuevo
Experimenta nuestro diseño totalmente nuevo creado para brindar un sonido óptimo. Nuestros Galaxy Buds3 Pro reinventados cuentan con cabezales pequeños y en ángulo para un ajuste cómodo y para optimizar tu experiencia de audio, mientras que las Blade Lights acentuadas te permiten expresarte. El diseño de hoja destaca por su elegante carcasa con una cubierta transparente y una delicada forma curva, equipada con USB-C y capacidades de carga inalámbrica. , , ,
Un par de Galaxy Buds3 Pro en Silver aparecen en una caja cerrada que se abre. Una vez abierta, los auriculares se deslizan hacia arriba con las Blade Lights encendidas y flotan sobre el estuche abierto.
Color
Estuche en Silver
Estuche en White<
SilverWhite
Control perfecto al alcance de la mano
Deja tu smartphone en el bolsillo y controla cómodamente tus auriculares con gestos sencillos. Incluso si deslizas rápidamente, tendrás la tranquilidad de que tus Galaxy Buds3 Pro permanecerán seguros en tus oídos.
Contenido con función de deslizar
Un dedo se desliza por la superficie de contacto de un único auricular Galaxy Buds3 Pro.
Contenido con control por pellizco
Un dedo pellizca la superficie de contacto de un único auricular Galaxy Buds3 Pro.
Redefinición del sonido
Múltiples partículas forman un haz de luz y se transforman en la Blade Light en los Galaxy Buds3 Pro, que se muestran siendo usados
Sonido de súper nítido en cada nota
Sumérgete en los elaborados detalles, desde el profundo sonido de los bajos hasta los altos nítidos y claros de los agudos, con altavoces bidireccionales mejorados. Escucha el vibrato de los instrumentos con una distorsión mínima a través de nuestro primer amplificador doble.
Protector contra el viento
Blade Lights
Desliza
Control por pellizco
Amplificador doble
Equipado con nuestro primer woofer y tweeter con control independiente, Galaxy Buds3 Pro disminuye la interferencia entre altavoces, lo que te permite experimentar un espectro más amplio de sonido y equilibrio en varias frecuencias.,
Altavoces bidireccionales mejorados
Descubre una orquesta de sonido, los bajos intensos del violonchelo, desde el woofer hasta el sutil temblor de las cuerdas a través de un tweeter planar, que se unen en armonía para evocar olas de emoción y revelar los detalles minúsculos que habrían pasado desapercibidos.,
Impresionante, sonido tipo estudio
Conserva Ultra High-Quality Audio del estudio de grabación en tus Galaxy Buds3 Pro. El Samsung Seamless Codec comprime y codifica audio de hasta 24bit / 96kHz. A continuación, se decodifica en los Galaxy Buds3 Pro, manteniendo el sonido de alta fidelidad de 24bit / 96kHz para que puedas oír los detalles complejos, como debe ser. ,
16bit / 44.1kHz
24 bit / 96 kHz
Samsung Seamless Codec
Galaxy AIllegó para tus nuevos Galaxy Buds , , , , , ,
Galaxy AI mejora tu música
Sumérgete en tu mundo musical con Adaptive EQ/ Adaptive ANC asistido por Galaxy AI. Basados en la forma natural del oido y los hábitos de uso, nuestro algoritmo impulsado por AI analiza el sonido detectado a través de los micrófonos internos y externos en tiempo real. Luego, Galaxy AI optimiza tu experiencia auditiva ajustando el sónido para que se adapte a tu comodidad con precisión. ,
Adaptive Noise Control. Sintoniza lo que importa
Mantén tus Galaxy Buds3 Pro encendidos y sigue interactuando con el mundo que te rodea. Mediante Galaxy AI, los Galaxy Buds3 Pro identifican y evitan ruidos innecesarios de forma intuitiva. Después, optimizan tu experiencia de audio al reajustar el equilibrio entre el modo ANC y el modo Ambiente para que se corresponda con tu entorno. Para que puedas escuchar tus canciones favoritas sin interrupciones., , ,
Un auricular Galaxy Buds3 Pro en Silver se encuentra en el centro de la página con partículas grandes que se mueven en forma de espiral hacia el auricular. Sigue apareciendo a la derecha del auricular sin partículas. Las partículas y la espiral se desvanecen, mostrando el único auricular Galaxy Buds3 Pro con 2 imágenes a cada lado.
Noise Control:
En lugar de ajustar el ANC manualmente, elAdaptive Noise Control evalúa y reduce automáticamente el ruido externo no deseado, como el tráfico, lo que crea el equilibrio adecuado, lo que le permite concentrarse en escuchar lo que desea escuchar.
Conversación:
Conversa sin problemas y Voice Detect encenderá/apagará los modos ANC y Ambiente según corresponda, para que puedas escuchar alto y claro sin necesidad de quitarte los Galaxy Buds3 Pro.
Alarma/Sirena:
Escucha tu lista de reproducción en paz gracias a Siren Detect. Cuando se detecta una alarma o sirena, los Galaxy Buds3 Pro cambian automáticamente al modo Ambiente, lo que te permite escuchar sirenas y permanecer alerta, incluso mientras escuchas música., , , ,
Con
Adaptive Noise Control, elimina el ruido externo no deseado como el tráfico, y disfruta de la combinación adecuada de ANC y sonido ambiente, lo que te permitirá concentrarte en escuchar lo que desea oír.
Conversa sin problemas y
Voice Detect activará o desactivará el ANC y el sonido ambiente en consecuencia, para que puedas
escuchar alto y claro sin necesidad de quitarte los Galaxy Buds3 Pro.
Escucha tu lista de reproducción en paz gracias a
Siren Detect. Los Galaxy Buds3 Pro bloquean el ruido externo innecesario, excepto las alarmas y las sirenas,
para advertirte de que te alejes del peligro.
Romper las barreras lingüísticas en un instante gracias a AI.
Con Galaxy AI, entiende el mundo como nunca antes. Consulta la traducción en tu teléfono inteligente Samsung Galaxy y escucha, en simultáneo, tu conversación interpretada en tiempo real a través de tus Galaxy Buds3 Pro. Descubre lo que significa estar realmente libre de barreras lingüísticas. , , , , , ,
Hola. todos La lección de hoy será sobre la inflación.
Hello. everyone Today’s lesson will be about inflation.
Gracias por su propuesta, la he revisado detenidamente
Thanks for your proposal, I’ve looked it over carefully.
Para acceder al modo de escucha, solo mantén pellizcado los auriculares y tus Galaxy Buds3 Pro seguirán interpretando mientras la otra persona habla.
En Conversation Mode, coloca el micrófono del smartphone hacia el altavoz, pulsa brevemente tus Galaxy Buds3 Pro y escucha tu conversación traducida en tiempo real.
Una vez abierta la aplicación, la función Interpreter se iniciará con el último modo utilizado.
Llamada súper clara, como si estuvieras cerca
¿Buscas llamadas fluidas, fiables y de alta calidad? Galaxy Buds3 Pro ofrece una calidad de llamada muy mejorada gracias al aprendizaje automático mejorado y a la tecnología de banda superancha. El modelo de aprendizaje automático cuidadosamente entrenado analiza el ruido ambiental y los patrones de voz del usuario. A continuación, elimina de forma selectiva el ruido innecesario y mejora la calidad de la llamada, garantizando que su voz se oiga, incluso en entornos ruidosos. Mejore sus conversaciones con una claridad rica y realista gracias a las llamadas de banda superancha: el doble de ancho de banda de voz que las llamadas Bluetooth convencionales. , ,
Empieza a disfrutar de inmediato con TV 360 Audio
Sumérgete en una experiencia de sonido espacial. 360 Audio es una función que identifica la dirección exacta del sonido a medida que inclinas la cabeza, proporcionando un sonido envolvente para una experiencia auditiva y de visualización más vívida., , , , , , ,
PC Auto Switch mantiene la sinergia
PC Auto Switch en Galaxy Buds3 Pro detecta la actividad de audio y transfiere la conexión a tus dispositivos Samsung Galaxy favoritos, para que pueda trabajar y jugar sin problemas.,
De izquierda a derecha hay una computadora portátil Samsung Galaxy Book, Galaxy Buds3 Pro y Galaxy Z Fold6. Aparece una llamada desde el Galaxy Z Fold6 en la computadora portátil Samsung Galaxy Book. Después de responder a la llamada en el Galaxy Z Fold6, la función PC Auto Switch cambia la salida de audio del Galaxy Buds3 Pro de la computadora portátil al teléfono inteligente.
Personaliza el sonido a través de un panel de configuración rápida
Ajusta el audio directamente desde el panel de configuración rápida. Simplemente desliza hacia abajo desde la parte superior de la pantalla, mantén presionado el control deslizante de volumen o el icono Buds y ajusta el control de ruido y la configuración de sonido. Lo mejor de todo es que ahora tu configuración de sonido preferida se guarda para cada aplicación. Simplemente ajústalas en el panel de configuración rápida mientras la aplicación reproduce contenido multimedia. Ya sea que te guste 360 Audio en YouTube o que prefieras el ecualizador de refuerzo de bajos de Spotify, tu audio siempre está sintonizado de la manera que te gusta. 58, 59, 60, 61
La pantalla de un teléfono inteligente Galaxy se desliza hacia abajo, lo que abre el panel de configuración rápida. Un acercamiento del control deslizante de volumen mientras se presiona durante unos segundos para abrir un widget que muestra el nivel de batería de los Buds y el nivel de Active Noise Canceling. Otro acercamiento de pantalla del widget de nivel de Active Noise Canceling donde el nivel de ANC se desliza hacia arriba de izquierda a derecha. Abajo, un widget para audio de YouTube muestra la configuración para 360 audio, ecualizador, diálogo de Boost y normalización de volumen. Luego, cambia a un widget para audio de Spotify, que muestra un conjunto diferente de configuraciones de audio. Para Spotify, el audio muestra la configuración para 360 audio, ecualizador, diálogo de Boost desactivado y normalización de volumen activado. Finalmente, la vista se aleja para mostrar todas las configuraciones que se mostraron anteriormente.
Comparte tu sonido con los que te rodean a través de Auracast
Con la tecnología de transmisión Auracast, comparte tu transmisión de audio con un número ilimitado de dispositivos. Transforma sin esfuerzo tu Samsung TV, teléfono inteligente o tableta Samsung Galaxy en una fuente de radio para empezar a interactuar con los demás. , , , ,
Control cómodo con solo un comando
Controla tus configuraciones de audio sin necesidad de tocar el smartphone. Solo tienes que decir un comando, como “next song” o “volume up” y deja que los Galaxy Buds3 Pro se encarguen del resto. , , , , ,
Tu santuario de sonido personalizado
La concentración plena viene con la práctica diaria. Con solo pulsar un botón, puedes teletransportarte a un mundo sin preocupaciones con Samsung Health impulsado con Calm. Alivia el estrés con melodías tranquilas de la naturaleza, mejora tu concentración con ruido blanco o relájate con ASMR y siéntete más feliz y saludable., , , , ,
El Galaxy Z Fold6 está abierto con un auricular Galaxy Buds3 Pro a la derecha e iconos de la aplicación Samsung Health con tecnología Calm en la parte inferior. Al presionar los Galaxy Buds3 Pro, la aplicación se activa y, al mismo tiempo, la imagen de la oficina cambia a 5 imágenes de la naturaleza. Imagen de árboles, un río, gotas de lluvia cayendo, palmeras y una fogata.
<
Cargado para la acción
* Soporte de carga inalámbrica
Conectado constantemente
Mantén tu música y audio fluyendo, donde y cuando quieras. , , , ,
Interpreter requiere iniciar sesión en una Samsung Account. Algunos idiomas pueden requerir la descarga del paquete de idiomas. La disponibilidad del servicio puede variar según el idioma. No se garantiza la precisión de los resultados. La disponibilidad y las funciones compatibles pueden variar según el país, la región o el operador. La disponibilidad de los idiomas compatibles puede variar.
La interpretación de audio solo está disponible cuando se llevan Galaxy Buds y se conectan a un teléfono inteligente Samsung Galaxy. La función Interpreter no la proporcionan directamente los propios Galaxy Buds. Si los Galaxy Buds no están disponibles, el contenido interpretado se proporciona en la pantalla de tu teléfono inteligente Samsung Galaxy.
Blade Lights solo están disponibles en Samsung Galaxy Buds3 Pro.
Los modos específicos de Blade Light se pueden configurar en los Ajustes.
Ultra High-Quality Audio de hasta 24bit / 96kHz disponible en las series Galaxy S24, Galaxy S23, Galaxy Z Fold6, Galaxy Z Flip6, Galaxy Z Fold5, Galaxy Z Flip5 y Galaxy Tab S9 con One UI 6.1.1 o superior. Es posible que en el futuro más dispositivos sean compatibles.
Adaptive Noise Control y Voice Detect están desactivados y Siren Detect está desactivada de forma predeterminada, y se pueden configurar en la aplicación The Galaxy Wearable.
Las funciones de Adaptive Noise Control, Voice Detect y Siren Detect solo están disponibles en Samsung Galaxy Buds3 Pro.
Images simuladas solo con fines ilustrativos. Secuencias acortadas y simuladas. La interfaz de usuario real puede diferir.
Las funciones de Galaxy AI son compatibles con las series Galaxy S24, Galaxy S23, Galaxy Z Fold5, Galaxy Z Flip5, Galaxy S23 FE, Galaxy S22 Series, Galaxy Z Fold4 y Galaxy Z Flip4 a partir de mayo de 2024.
La disponibilidad de los colores puede variar según el país o el operador.
Los artículos en la caja incluyen el Galaxy Buds3 Pro, un estuche de carga, tres juegos de almohadillas para el oído izquierdo y el derecho (S [pequeño], M [mediano] (predeterminado), L [grande]), un cable USB y una guía de inicio rápido.
Los Galaxy Buds3 Pro son los primeros Galaxy Buds con altavoces bidireccionales con un tweeter planar y amplificador doble.
Audio de calidad ultraalta de hasta 24bit/96kHz disponible en las series Galaxy S24, S23, Z Fold6, Z Flip6, Z Fold5, Z Flip5 y Tab S9 con One UI 6.1.1 o superior. Es posible que en el futuro más dispositivos sean compatibles.
Es posible que sea necesario iniciar sesión en la Samsung Account para utilizar determinadas funciones de Samsung AI.
Samsung no promete, asegura ni garantiza la exactitud, integridad ni fiabilidad de los resultados proporcionados por las funciones de la IA.
Las funciones de Galaxy AI se proporcionarán de forma gratuita hasta finales de 2025 en dispositivos compatibles con Samsung Galaxy. Pueden aplicar diferentes términos para las funciones de IA proporcionadas por terceros.
La “configuración predeterminada” se refiere a la configuración original de los Galaxy Buds3 Pro cuando se lanzaron por primera vez, simplemente con la energía activada.
Los dispositivos se venden por separado.
Es posible que los dispositivos Samsung Galaxy requieran la última actualización de software para admitir correctamente las funciones de Galaxy AI.
La configuración predeterminada del gesto mantener pellizcado se establece en control de sonido. Para cambiar Interpreter al modo de escucha, los ajustes deben configurarse en la aplicación The Galaxy Wearable.
La configuración predeterminada del gesto de mantener pellizcado se establece en Noise Control. Para cambiar Interpreter al modo de escucha, los ajustes deben configurarse en la aplicación The Galaxy Wearable
360 Audio se encuentra disponible solo en teléfonos inteligentes Samsung Galaxy y dispositivos Galaxy Tab con Android One UI versión 3.1 o posterior y en determinados modelos de Samsung TV. Los modelos de Samsung TV compatibles incluyen: Neo QLED 8K (QN900D, QN800D), Neo QLED 4K (QN95D, QN90D, QN87D, QN85D) OLED (S95D, S90D, S85D), QLED (Q80D, Q70D). La compatibilidad de 360 Audio y del seguimiento de la cabeza puede variar según la aplicación y el contenido.
La función Auto Switch solo está disponible en la serie Samsung Galaxy Book con One UI 6.0 o posterior, teléfonos inteligentes Samsung Galaxy y dispositivos Galaxy Tab con One UI 4.1.1 o posterior y en la serie Galaxy Watch4 o posterior. Los dispositivos Samsung Galaxy deben iniciar sesión en Samsung Account para activar la función Auto Switch. La función Auto Switch para Samsung TV solo está disponible en los Samsung TV lanzados en febrero de 2022 o después, tras recibir una actualización de firmware de julio de 2022. Auto Switch con televisor solo está disponible para realizar y recibir llamadas telefónicas.
Los dispositivos con capacidad Auracast Source solo están disponibles en teléfonos inteligentes Samsung Galaxy, tabletas con Android One UI versión 6.1 o posterior y determinados modelos de TV. Los modelos de teléfono inteligente y tableta Galaxy compatibles incluyen: S24+, S24, S24 Ultra, Galaxy Z Flip6, Galaxy Z Fold6,Galaxy Z Flip5, Galaxy Z Fold5, S23+, S23 (excepto la edición FE), S23 Ultra, Tab S9+, Tab S9+ 5G , Tab S9, Tab S9 Ultra, Tab S9 Ultra 5G , Tab S9 FE+, Tab S9 FE+ 5G , Tab S9 FE, Tab S9 FE 5G y Tab S9 5G. Los modelos de TV compatibles incluyen: modelos 2024 NeoQLED 8K QND800, QND900, 2023 Neo QLED 8K y 2023 MICRO LED.
Los dispositivos con capacidad de Auracast Assistant solo están disponibles en teléfonos inteligentes Samsung Galaxy, tabletas con Android One UI versión 5.1.1 o posterior. Los modelos de teléfono inteligente y tableta Galaxy compatibles incluyen: S24+, S24, S24 Ultra, S23+, S23, S23 Ultra, Z Fold6, Z Flip6,Z Fold5, Z Flip5, Z Fold4, Z Flip4, A54 5G, A55 5G, M54 5G, Tab S9+, Tab S9+ 5G, Tab S9, Tab S9 Ultra, Tab S9 Ultra 5G, Tab S9 FE+, Tab S9 FE+ 5G, Tab S9 FE, Tab S9 FE 5G, Tab S9 5G y Tab Active 5G.
La conexión de 2 o más dispositivos a Auracast está limitada a dispositivos Samsung Galaxy.
La calidad de la transmisión de audio Auracast puede variar según la aplicación, la conexión de red y otros factores.
El menú Comando de voz aparece cuando existe un paquete de idiomas que coincida con el idioma del sistema. El comando de voz se limita a comandos fijos y solo está disponible en coreano e inglés (Estados Unidos) al momento del lanzamiento.
El idioma inicial para los comandos sigue la configuración de idioma del sistema y se puede modificar en la aplicación The Galaxy Wearable.
Es posible que en el futuro más paquetes de idioma sean compatibles.
Algunos contenidos pueden incurrir en cargos adicionales. Para Samsung Health se requiere iniciar sesión en Samsung Account.
Es posible que cierto contenido genere cargos adicionales. Se requiere iniciar sesión en Samsung Account para Samsung Health.
Con ANC activado/desactivado, los auriculares y el estuche proporcionan hasta 30 horas de tiempo de reproducción con una carga completa. Basado en pruebas internas. Tiempo de reproducción de audio probado al emparejar un Galaxy Buds3 Pro de preproducción con un teléfono inteligente Galaxy lanzado recientemente con ajustes predeterminados. La duración real de la batería puede variar y depender de las condiciones de uso, los ajustes, la cantidad de veces que se carga, la intensidad de la señal Bluetooth y otros factores. “Tiempo de reproducción” se refiere a cuando los Galaxy Buds3 Pro están conectados al smartphone, transmitiendo música. El tiempo de reproducción real puede variar según los ajustes seleccionados.
La clasificación IP57 se basa en las condiciones de prueba de inmersión hasta 1 metro en agua dulce durante un máximo de 30 minutos.
No se recomienda su uso en la playa ni en la piscina. El estuche de carga no es resistente al agua. Si los auriculares están dañados, no se garantiza que sean resistentes al agua. Si los auriculares o las manos están mojados, deben secarse bien antes de manipularlos o colocarlos en el estuche de carga. Si se colocan en el estuche de carga sin secarse, los auriculares pueden dañarse.
El estuche de carga proporcionado es para cargar los Galaxy Buds3 Pro.
La aplicación The Galaxy Wearable solo se puede descargar en teléfonos inteligentes con Android 10.0 o superior y con una memoria mínima de 1.5GB.
La duración real de la batería puede variar y depender de las condiciones de uso, los ajustes, la cantidad de veces que se carga, la intensidad de la señal Bluetooth y otros factores.
El sonido ambiental se enciende automáticamente cuando se detecta una sirena. Si la sirena es breve o más silenciosa que el ruido de fondo, es posible que no se detecte. Si bien Siren Detect puede ser útil en situaciones de emergencia, tu seguridad no está garantizada.
La disponibilidad de la función puede variar según el idioma, el país o la región.
Para usar la función concentración plena en la aplicación The Galaxy Wearable, se debe descargar la aplicación Samsung Health app.
La disponibilidad del servicio puede variar según el país o la región.
La llamada de banda superancha está disponible en Galaxy Z Fold6, Galaxy Z Flip6 con One UI 6.1.1 o superior. Es posible que se admitan dispositivos adicionales en el futuro.
Super Wideband (SWB) está disponible independientemente de la App de llamada. SWB puede no ser compatible dependiendo de la red móvil entre dispositivos.
Video simulado solo con fines ilustrativos.
La UX/UI real puede ser diferente.
La disponibilidad del servicio puede variar según el país, el idioma, el modelo del dispositivo y las aplicaciones. Algunos widgets funcionales pueden requerir una conexión de red y/o inicio de sesión en Samsung Account.
Disponible en dispositivos Samsung Galaxy con One UI 7.0 o superior. Es posible que en el futuro más dispositivos sean compatibles.
"
)).attr("data-swiper-slide-index") ||
e.attr("data-swiper-slide-index", t),
i.cache && (this.virtual.cache[t] = e),
e);
},
appendSlide: function (e) {
if ("object" == typeof e && "length" in e)
for (var t = 0; t < e.length; t += 1)
e[t] && this.virtual.slides.push(e[t]);
else this.virtual.slides.push(e);
this.virtual.update(!0);
},
prependSlide: function (e) {
var s,
a,
t = this.activeIndex,
i = t + 1,
n = 1;
if (Array.isArray(e)) {
for (var r = 0; r < e.length; r += 1)
e[r] && this.virtual.slides.unshift(e[r]);
(i = t + e.length), (n = e.length);
} else this.virtual.slides.unshift(e);
this.params.virtual.cache &&
((s = this.virtual.cache),
(a = {}),
Object.keys(s).forEach(function (e) {
var t = s[e],
i = t.attr("data-swiper-slide-index");
i && t.attr("data-swiper-slide-index", parseInt(i, 10) + 1),
(a[parseInt(e, 10) + n] = t);
}),
(this.virtual.cache = a)),
this.virtual.update(!0),
this.slideTo(i, 0);
},
removeSlide: function (e) {
if (null != e) {
var t = this.activeIndex;
if (Array.isArray(e))
for (var i = e.length - 1; 0 <= i; --i)
this.virtual.slides.splice(e[i], 1),
this.params.virtual.cache &&
delete this.virtual.cache[e[i]],
e[i] < t && --t,
(t = Math.max(t, 0));
else
this.virtual.slides.splice(e, 1),
this.params.virtual.cache && delete this.virtual.cache[e],
e < t && --t,
(t = Math.max(t, 0));
this.virtual.update(!0), this.slideTo(t, 0);
}
},
removeAllSlides: function () {
(this.virtual.slides = []),
this.params.virtual.cache && (this.virtual.cache = {}),
this.virtual.update(!0),
this.slideTo(0, 0);
},
},
b = {
name: "virtual",
params: {
virtual: {
enabled: !1,
slides: [],
cache: !0,
renderSlide: null,
renderExternal: null,
addSlidesBefore: 0,
addSlidesAfter: 0,
},
},
create: function () {
j.extend(this, {
virtual: {
update: w.update.bind(this),
appendSlide: w.appendSlide.bind(this),
prependSlide: w.prependSlide.bind(this),
removeSlide: w.removeSlide.bind(this),
removeAllSlides: w.removeAllSlides.bind(this),
renderSlide: w.renderSlide.bind(this),
slides: this.params.virtual.slides,
cache: {},
},
});
},
on: {
beforeInit: function () {
var e;
this.params.virtual.enabled &&
(this.classNames.push(
this.params.containerModifierClass + "virtual"
),
j.extend(this.params, (e = { watchSlidesProgress: !0 })),
j.extend(this.originalParams, e),
this.params.initialSlide || this.virtual.update());
},
setTranslate: function () {
this.params.virtual.enabled && this.virtual.update();
},
},
},
K = {
handle: function (e) {
var t = this.rtlTranslate,
i =
(e = e.originalEvent ? e.originalEvent : e).keyCode ||
e.charCode;
if (
!this.allowSlideNext &&
((this.isHorizontal() && 39 === i) ||
(this.isVertical() && 40 === i) ||
34 === i)
)
return !1;
if (
!this.allowSlidePrev &&
((this.isHorizontal() && 37 === i) ||
(this.isVertical() && 38 === i) ||
33 === i)
)
return !1;
if (
!(
e.shiftKey ||
e.altKey ||
e.ctrlKey ||
e.metaKey ||
(c.activeElement &&
c.activeElement.nodeName &&
("input" === c.activeElement.nodeName.toLowerCase() ||
"textarea" === c.activeElement.nodeName.toLowerCase()))
)
) {
if (
this.params.keyboard.onlyInViewport &&
(33 === i ||
34 === i ||
37 === i ||
39 === i ||
38 === i ||
40 === i)
) {
var s = !1;
if (
0 < this.$el.parents("." + this.params.slideClass).length &&
0 ===
this.$el.parents("." + this.params.slideActiveClass).length
)
return;
var a = U.innerWidth,
n = U.innerHeight,
r = this.$el.offset();
t && (r.left -= this.$el[0].scrollLeft);
for (
var o = [
[r.left, r.top],
[r.left + this.width, r.top],
[r.left, r.top + this.height],
[r.left + this.width, r.top + this.height],
],
l = 0;
l < o.length;
l += 1
) {
var d = o[l];
0 <= d[0] && d[0] <= a && 0 <= d[1] && d[1] <= n && (s = !0);
}
if (!s) return;
}
this.isHorizontal()
? ((33 !== i && 34 !== i && 37 !== i && 39 !== i) ||
(e.preventDefault
? e.preventDefault()
: (e.returnValue = !1)),
(((34 !== i && 39 !== i) || t) &&
((33 !== i && 37 !== i) || !t)) ||
this.slideNext(),
(((33 !== i && 37 !== i) || t) &&
((34 !== i && 39 !== i) || !t)) ||
this.slidePrev())
: ((33 !== i && 34 !== i && 38 !== i && 40 !== i) ||
(e.preventDefault
? e.preventDefault()
: (e.returnValue = !1)),
(34 !== i && 40 !== i) || this.slideNext(),
(33 !== i && 38 !== i) || this.slidePrev()),
this.emit("keyPress", i);
}
},
enable: function () {
this.keyboard.enabled ||
(E(c).on("keydown", this.keyboard.handle),
(this.keyboard.enabled = !0));
},
disable: function () {
this.keyboard.enabled &&
(E(c).off("keydown", this.keyboard.handle),
(this.keyboard.enabled = !1));
},
},
S = {
name: "keyboard",
params: { keyboard: { enabled: !1, onlyInViewport: !0 } },
create: function () {
j.extend(this, {
keyboard: {
enabled: !1,
enable: K.enable.bind(this),
disable: K.disable.bind(this),
handle: K.handle.bind(this),
},
});
},
on: {
init: function () {
this.params.keyboard.enabled && this.keyboard.enable();
},
destroy: function () {
this.keyboard.enabled && this.keyboard.disable();
},
},
};
function x() {
for (var i, e = [], t = arguments.length; t--; ) e[t] = arguments[t];
(i =
(i =
1 === e.length && e[0].constructor && e[0].constructor === Object
? e[0]
: ((n = e[0]), e[1])) || {}),
(i = j.extend({}, i)),
n && !i.el && (i.el = n),
h.call(this, i),
Object.keys(W).forEach(function (t) {
Object.keys(W[t]).forEach(function (e) {
x.prototype[e] || (x.prototype[e] = W[t][e]);
});
});
var s,
a,
n,
r = this,
o =
(void 0 === r.modules && (r.modules = {}),
Object.keys(r.modules).forEach(function (e) {
var t,
e = r.modules[e];
e.params &&
((t = Object.keys(e.params)[0]),
"object" == typeof (e = e.params[t])) &&
null !== e &&
t in i &&
"enabled" in e &&
(!0 === i[t] && (i[t] = { enabled: !0 }),
"object" != typeof i[t] ||
"enabled" in i[t] ||
(i[t].enabled = !0),
i[t] || (i[t] = { enabled: !1 }));
}),
j.extend({}, F)),
l =
(r.useModulesParams(o),
(r.params = j.extend({}, o, G, i)),
(r.originalParams = j.extend({}, r.params)),
(r.passedParams = j.extend({}, i)),
(r.$ = E)(r.params.el));
if ((n = l[0]))
return 1 < l.length
? ((s = []),
l.each(function (e, t) {
t = j.extend({}, i, { el: t });
s.push(new x(t));
}),
s)
: ((n.swiper = r),
l.data("swiper", r),
n && n.shadowRoot && n.shadowRoot.querySelector
? ((a = E(
n.shadowRoot.querySelector("." + r.params.wrapperClass)
)).children = function (e) {
return l.children(e);
})
: (a = l.children("." + r.params.wrapperClass)),
j.extend(r, {
$el: l,
el: n,
$wrapperEl: a,
wrapperEl: a[0],
classNames: [],
slides: E(),
slidesGrid: [],
snapGrid: [],
slidesSizesGrid: [],
isHorizontal: function () {
return "horizontal" === r.params.direction;
},
isVertical: function () {
return "vertical" === r.params.direction;
},
rtl:
"rtl" === n.dir.toLowerCase() || "rtl" === l.css("direction"),
rtlTranslate:
"horizontal" === r.params.direction &&
("rtl" === n.dir.toLowerCase() ||
"rtl" === l.css("direction")),
wrongRTL: "-webkit-box" === a.css("display"),
activeIndex: 0,
realIndex: 0,
isBeginning: !0,
isEnd: !1,
translate: 0,
previousTranslate: 0,
progress: 0,
velocity: 0,
animating: !1,
allowSlideNext: r.params.allowSlideNext,
allowSlidePrev: r.params.allowSlidePrev,
touchEvents:
((o = y.pointerEvents
? ["pointerdown", "pointermove", "pointerup"]
: ["mousedown", "mousemove", "mouseup"]),
(r.touchEventsTouch = {
start: (n = [
"touchstart",
"touchmove",
"touchend",
"touchcancel",
])[0],
move: n[1],
end: n[2],
cancel: n[3],
}),
(r.touchEventsDesktop = {
start: o[0],
move: o[1],
end: o[2],
}),
y.touch || !r.params.simulateTouch
? r.touchEventsTouch
: r.touchEventsDesktop),
touchEventsData: {
isTouched: void 0,
isMoved: void 0,
allowTouchCallbacks: void 0,
touchStartTime: void 0,
isScrolling: void 0,
currentTranslate: void 0,
startTranslate: void 0,
allowThresholdMove: void 0,
formElements:
"input, select, option, textarea, button, video",
lastClickTime: j.now(),
clickTimeout: void 0,
velocities: [],
allowMomentumBounce: void 0,
isTouchEvent: void 0,
startMoving: void 0,
},
allowClick: !0,
allowTouchMove: r.params.allowTouchMove,
touches: {
startX: 0,
startY: 0,
currentX: 0,
currentY: 0,
diff: 0,
},
imagesToLoad: [],
imagesLoaded: 0,
}),
r.useModules(),
r.params.init && r.init(),
r);
}
var A = {
lastScrollTime: j.now(),
lastEventBeforeSnap: void 0,
recentWheelEvents: [],
event: function () {
return -1 < U.navigator.userAgent.indexOf("firefox")
? "DOMMouseScroll"
: ((t = "onwheel" in c) ||
((e = c.createElement("div")).setAttribute(
"onwheel",
"return;"
),
(t = "function" == typeof e.onwheel)),
(t =
!t &&
c.implementation &&
c.implementation.hasFeature &&
!0 !== c.implementation.hasFeature("", "")
? c.implementation.hasFeature("Events.wheel", "3.0")
: t)
? "wheel"
: "mousewheel");
var e, t;
},
normalize: function (e) {
var 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))),
{
spinX: (t = s && !t ? (s < 1 ? -1 : 1) : t),
spinY: (i = a && !i ? (a < 1 ? -1 : 1) : i),
pixelX: s,
pixelY: a,
}
);
},
handleMouseEnter: function () {
this.mouseEntered = !0;
},
handleMouseLeave: function () {
this.mouseEntered = !1;
},
handle: function (e) {
var t = e,
i = this,
s = i.params.mousewheel;
if (
(i.params.cssMode && t.preventDefault(),
!i.mouseEntered && !s.releaseOnEdges)
)
return !0;
t.originalEvent && (t = t.originalEvent);
var a = 0,
n = i.rtlTranslate ? -1 : 1,
r = A.normalize(t);
if (s.forceToAxis)
if (i.isHorizontal()) {
if (!(Math.abs(r.pixelX) > Math.abs(r.pixelY))) return !0;
a = r.pixelX * n;
} else {
if (!(Math.abs(r.pixelY) > Math.abs(r.pixelX))) return !0;
a = r.pixelY;
}
else
a =
Math.abs(r.pixelX) > Math.abs(r.pixelY)
? -r.pixelX * n
: -r.pixelY;
if (0 === a) return !0;
if ((s.invert && (a = -a), i.params.freeMode)) {
var o = {
time: j.now(),
delta: Math.abs(a),
direction: Math.sign(a),
},
n = i.mousewheel.lastEventBeforeSnap,
r =
n &&
o.time < n.time + 500 &&
o.delta <= n.delta &&
o.direction === n.direction;
if (!r) {
(i.mousewheel.lastEventBeforeSnap = void 0),
i.params.loop && i.loopFix();
var l,
d,
n = i.getTranslate() + a * s.sensitivity,
s = i.isBeginning,
h = i.isEnd;
if (
((n = n >= i.minTranslate() ? i.minTranslate() : n) <=
i.maxTranslate() && (n = i.maxTranslate()),
i.setTransition(0),
i.setTranslate(n),
i.updateProgress(),
i.updateActiveIndex(),
i.updateSlidesClasses(),
((!s && i.isBeginning) || (!h && i.isEnd)) &&
i.updateSlidesClasses(),
i.params.freeModeSticky &&
(clearTimeout(i.mousewheel.timeout),
(i.mousewheel.timeout = void 0),
15 <= (l = i.mousewheel.recentWheelEvents).length &&
l.shift(),
(s = l.length ? l[l.length - 1] : void 0),
(h = l[0]),
l.push(o),
s && (o.delta > s.delta || o.direction !== s.direction)
? l.splice(0)
: 15 <= l.length &&
o.time - h.time < 500 &&
1 <= h.delta - o.delta &&
o.delta <= 6 &&
((d = 0 < a ? 0.8 : 0.2),
(i.mousewheel.lastEventBeforeSnap = o),
l.splice(0),
(i.mousewheel.timeout = j.nextTick(function () {
i.slideToClosest(i.params.speed, !0, void 0, d);
}, 0))),
i.mousewheel.timeout ||
(i.mousewheel.timeout = j.nextTick(function () {
(i.mousewheel.lastEventBeforeSnap = o),
l.splice(0),
i.slideToClosest(i.params.speed, !0, void 0, 0.5);
}, 500))),
r || i.emit("scroll", t),
i.params.autoplay &&
i.params.autoplayDisableOnInteraction &&
i.autoplay.stop(),
n === i.minTranslate() || n === i.maxTranslate())
)
return !0;
}
} else {
(s = {
time: j.now(),
delta: Math.abs(a),
direction: Math.sign(a),
raw: e,
}),
(h = i.mousewheel.recentWheelEvents),
(r =
(2 <= h.length && h.shift(),
h.length ? h[h.length - 1] : void 0));
if (
(h.push(s),
(!r || s.direction !== r.direction || s.delta > r.delta) &&
i.mousewheel.animateSlider(s),
i.mousewheel.releaseScroll(s))
)
return !0;
}
return (
t.preventDefault ? t.preventDefault() : (t.returnValue = !1), !1
);
},
animateSlider: function (e) {
return (
(6 <= e.delta && j.now() - this.mousewheel.lastScrollTime < 60) ||
(e.direction < 0
? (this.isEnd && !this.params.loop) ||
this.animating ||
(this.slideNext(), this.emit("scroll", e.raw))
: (this.isBeginning && !this.params.loop) ||
this.animating ||
(this.slidePrev(), this.emit("scroll", e.raw)),
(this.mousewheel.lastScrollTime = new U.Date().getTime()),
!1)
);
},
releaseScroll: function (e) {
var t = this.params.mousewheel;
if (e.direction < 0) {
if (this.isEnd && !this.params.loop && t.releaseOnEdges)
return !0;
} else if (
this.isBeginning &&
!this.params.loop &&
t.releaseOnEdges
)
return !0;
return !1;
},
enable: function () {
var e,
t = A.event();
return this.params.cssMode
? (this.wrapperEl.removeEventListener(t, this.mousewheel.handle),
!0)
: !!t &&
!this.mousewheel.enabled &&
((e = this.$el),
(e =
"container" !== this.params.mousewheel.eventsTarged
? E(this.params.mousewheel.eventsTarged)
: e).on("mouseenter", this.mousewheel.handleMouseEnter),
e.on("mouseleave", this.mousewheel.handleMouseLeave),
e.on(t, this.mousewheel.handle),
(this.mousewheel.enabled = !0));
},
disable: function () {
var e,
t = A.event();
return this.params.cssMode
? (this.wrapperEl.addEventListener(t, this.mousewheel.handle), !0)
: !!t &&
!(
!this.mousewheel.enabled ||
((e = this.$el),
(e =
"container" !== this.params.mousewheel.eventsTarged
? E(this.params.mousewheel.eventsTarged)
: e).off(t, this.mousewheel.handle),
(this.mousewheel.enabled = !1))
);
},
},
T = {
update: function () {
var e,
t,
i = this.params.navigation;
this.params.loop ||
((e = (t = this.navigation).$nextEl),
(t = t.$prevEl) &&
0 < t.length &&
(this.isBeginning
? t.addClass(i.disabledClass)
: t.removeClass(i.disabledClass),
t[
this.params.watchOverflow && this.isLocked
? "addClass"
: "removeClass"
](i.lockClass)),
e &&
0 < e.length &&
(this.isEnd
? e.addClass(i.disabledClass)
: e.removeClass(i.disabledClass),
e[
this.params.watchOverflow && this.isLocked
? "addClass"
: "removeClass"
](i.lockClass)));
},
onPrevClick: function (e) {
e.preventDefault(),
(this.isBeginning && !this.params.loop) || this.slidePrev();
},
onNextClick: function (e) {
e.preventDefault(),
(this.isEnd && !this.params.loop) || this.slideNext();
},
init: function () {
var e,
t,
i = this.params.navigation;
(i.nextEl || i.prevEl) &&
(i.nextEl &&
((e = E(i.nextEl)), this.params.uniqueNavElements) &&
"string" == typeof i.nextEl &&
1 < e.length &&
1 === this.$el.find(i.nextEl).length &&
(e = this.$el.find(i.nextEl)),
i.prevEl &&
((t = E(i.prevEl)), this.params.uniqueNavElements) &&
"string" == typeof i.prevEl &&
1 < t.length &&
1 === this.$el.find(i.prevEl).length &&
(t = this.$el.find(i.prevEl)),
e && 0 < e.length && e.on("click", this.navigation.onNextClick),
t && 0 < t.length && t.on("click", this.navigation.onPrevClick),
j.extend(this.navigation, {
$nextEl: e,
nextEl: e && e[0],
$prevEl: t,
prevEl: t && t[0],
}));
},
destroy: function () {
var e = this.navigation,
t = e.$nextEl,
e = e.$prevEl;
t &&
t.length &&
(t.off("click", this.navigation.onNextClick),
t.removeClass(this.params.navigation.disabledClass)),
e &&
e.length &&
(e.off("click", this.navigation.onPrevClick),
e.removeClass(this.params.navigation.disabledClass));
},
},
L = {
update: function () {
var e = this.rtl,
s = this.params.pagination;
if (
s.el &&
this.pagination.el &&
this.pagination.$el &&
0 !== this.pagination.$el.length
) {
var a,
t = (
this.virtual && this.params.virtual.enabled
? this.virtual
: this
).slides.length,
i = this.pagination.$el,
n = this.params.loop
? Math.ceil(
(t - 2 * this.loopedSlides) / this.params.slidesPerGroup
)
: this.snapGrid.length;
if (
(this.params.loop
? ((a = Math.ceil(
(this.activeIndex - this.loopedSlides) /
this.params.slidesPerGroup
)) >
t - 1 - 2 * this.loopedSlides &&
(a -= t - 2 * this.loopedSlides),
n - 1 < a && (a -= n),
a < 0 &&
"bullets" !== this.params.paginationType &&
(a = n + a))
: (a =
void 0 !== this.snapIndex
? this.snapIndex
: this.activeIndex || 0),
"bullets" === s.type &&
this.pagination.bullets &&
0 < this.pagination.bullets.length)
) {
var r,
o,
l,
d = this.pagination.bullets;
if (
(s.dynamicBullets &&
((this.pagination.bulletSize = d
.eq(0)
[this.isHorizontal() ? "outerWidth" : "outerHeight"](!0)),
i.css(
this.isHorizontal() ? "width" : "height",
this.pagination.bulletSize * (s.dynamicMainBullets + 4) +
"px"
),
1 < s.dynamicMainBullets &&
void 0 !== this.previousIndex &&
((this.pagination.dynamicBulletIndex +=
a - this.previousIndex),
this.pagination.dynamicBulletIndex >
s.dynamicMainBullets - 1
? (this.pagination.dynamicBulletIndex =
s.dynamicMainBullets - 1)
: this.pagination.dynamicBulletIndex < 0 &&
(this.pagination.dynamicBulletIndex = 0)),
(r = a - this.pagination.dynamicBulletIndex),
(l =
((o =
r + (Math.min(d.length, s.dynamicMainBullets) - 1)) +
r) /
2)),
d.removeClass(
s.bulletActiveClass +
" " +
s.bulletActiveClass +
"-next " +
s.bulletActiveClass +
"-next-next " +
s.bulletActiveClass +
"-prev " +
s.bulletActiveClass +
"-prev-prev " +
s.bulletActiveClass +
"-main"
),
1 < i.length)
)
d.each(function (e, t) {
var t = E(t),
i = t.index();
i === a && t.addClass(s.bulletActiveClass),
s.dynamicBullets &&
(r <= i &&
i <= o &&
t.addClass(s.bulletActiveClass + "-main"),
i === r &&
t
.prev()
.addClass(s.bulletActiveClass + "-prev")
.prev()
.addClass(s.bulletActiveClass + "-prev-prev"),
i === o) &&
t
.next()
.addClass(s.bulletActiveClass + "-next")
.next()
.addClass(s.bulletActiveClass + "-next-next");
});
else {
var t = d.eq(a),
h = t.index();
if ((t.addClass(s.bulletActiveClass), s.dynamicBullets)) {
for (var t = d.eq(r), c = d.eq(o), p = r; p <= o; p += 1)
d.eq(p).addClass(s.bulletActiveClass + "-main");
if (this.params.loop)
if (h >= d.length - s.dynamicMainBullets) {
for (var u = s.dynamicMainBullets; 0 <= u; --u)
d.eq(d.length - u).addClass(
s.bulletActiveClass + "-main"
);
d.eq(d.length - s.dynamicMainBullets - 1).addClass(
s.bulletActiveClass + "-prev"
);
} else
t
.prev()
.addClass(s.bulletActiveClass + "-prev")
.prev()
.addClass(s.bulletActiveClass + "-prev-prev"),
c
.next()
.addClass(s.bulletActiveClass + "-next")
.next()
.addClass(s.bulletActiveClass + "-next-next");
else
t
.prev()
.addClass(s.bulletActiveClass + "-prev")
.prev()
.addClass(s.bulletActiveClass + "-prev-prev"),
c
.next()
.addClass(s.bulletActiveClass + "-next")
.next()
.addClass(s.bulletActiveClass + "-next-next");
}
}
s.dynamicBullets &&
((h = Math.min(d.length, s.dynamicMainBullets + 4)),
(t =
(this.pagination.bulletSize * h -
this.pagination.bulletSize) /
2 -
l * this.pagination.bulletSize),
(c = e ? "right" : "left"),
d.css(this.isHorizontal() ? c : "top", t + "px"));
}
"fraction" === s.type &&
(i
.find("." + s.currentClass)
.text(s.formatFractionCurrent(a + 1)),
i.find("." + s.totalClass).text(s.formatFractionTotal(n))),
"progressbar" === s.type &&
((h = s.progressbarOpposite
? this.isHorizontal()
? "vertical"
: "horizontal"
: this.isHorizontal()
? "horizontal"
: "vertical"),
(l = (a + 1) / n),
(c = e = 1),
"horizontal" == h ? (e = l) : (c = l),
i
.find("." + s.progressbarFillClass)
.transform(
"translate3d(0,0,0) scaleX(" + e + ") scaleY(" + c + ")"
)
.transition(this.params.speed)),
"custom" === s.type && s.renderCustom
? (i.html(s.renderCustom(this, a + 1, n)),
this.emit("paginationRender", this, i[0]))
: this.emit("paginationUpdate", this, i[0]),
i[
this.params.watchOverflow && this.isLocked
? "addClass"
: "removeClass"
](s.lockClass);
}
},
render: function () {
var e = this.params.pagination;
if (
e.el &&
this.pagination.el &&
this.pagination.$el &&
0 !== this.pagination.$el.length
) {
var t = (
this.virtual && this.params.virtual.enabled
? this.virtual
: this
).slides.length,
i = this.pagination.$el,
s = "";
if ("bullets" === e.type) {
for (
var a = this.params.loop
? Math.ceil(
(t - 2 * this.loopedSlides) /
this.params.slidesPerGroup
)
: this.snapGrid.length,
n = 0;
n < a;
n += 1
)
e.renderBullet
? (s += e.renderBullet.call(this, n, e.bulletClass))
: (s +=
"<" +
e.bulletElement +
' class="' +
e.bulletClass +
'">' +
e.bulletElement +
">");
i.html(s),
(this.pagination.bullets = i.find("." + e.bulletClass));
}
"fraction" === e.type &&
((s = e.renderFraction
? e.renderFraction.call(this, e.currentClass, e.totalClass)
: ' / '),
i.html(s)),
"progressbar" === e.type &&
((s = e.renderProgressbar
? e.renderProgressbar.call(this, e.progressbarFillClass)
: ''),
i.html(s)),
"custom" !== e.type &&
this.emit("paginationRender", this.pagination.$el[0]);
}
},
init: function () {
var e,
t = this,
i = t.params.pagination;
i.el &&
0 !== (e = E(i.el)).length &&
(t.params.uniqueNavElements &&
"string" == typeof i.el &&
1 < e.length &&
1 === t.$el.find(i.el).length &&
(e = t.$el.find(i.el)),
"bullets" === i.type &&
i.clickable &&
e.addClass(i.clickableClass),
e.addClass(i.modifierClass + i.type),
"bullets" === i.type &&
i.dynamicBullets &&
(e.addClass("" + i.modifierClass + i.type + "-dynamic"),
(t.pagination.dynamicBulletIndex = 0),
i.dynamicMainBullets < 1) &&
(i.dynamicMainBullets = 1),
"progressbar" === i.type &&
i.progressbarOpposite &&
e.addClass(i.progressbarOppositeClass),
i.clickable &&
e.on("click", "." + i.bulletClass, function (e) {
e.preventDefault();
e = E(this).index() * t.params.slidesPerGroup;
t.params.loop && (e += t.loopedSlides), t.slideTo(e);
}),
j.extend(t.pagination, { $el: e, el: e[0] }));
},
destroy: function () {
var e,
t = this.params.pagination;
t.el &&
this.pagination.el &&
this.pagination.$el &&
0 !== this.pagination.$el.length &&
((e = this.pagination.$el).removeClass(t.hiddenClass),
e.removeClass(t.modifierClass + t.type),
this.pagination.bullets &&
this.pagination.bullets.removeClass(t.bulletActiveClass),
t.clickable) &&
e.off("click", "." + t.bulletClass);
},
},
P = {
setTranslate: function () {
var e, t, i, s, a, n, r, o;
this.params.scrollbar.el &&
this.scrollbar.el &&
((n = this.scrollbar),
(e = this.rtlTranslate),
(o = this.progress),
(t = n.dragSize),
(i = n.trackSize),
(s = n.$dragEl),
(a = n.$el),
(n = this.params.scrollbar),
(o = (i - (r = t)) * o),
e
? 0 < (o = -o)
? ((r = t - o), (o = 0))
: i < -o + t && (r = i + o)
: o < 0
? ((r = t + o), (o = 0))
: i < o + t && (r = i - o),
this.isHorizontal()
? (s.transform("translate3d(" + o + "px, 0, 0)"),
(s[0].style.width = r + "px"))
: (s.transform("translate3d(0px, " + o + "px, 0)"),
(s[0].style.height = r + "px")),
n.hide) &&
(clearTimeout(this.scrollbar.timeout),
(a[0].style.opacity = 1),
(this.scrollbar.timeout = setTimeout(function () {
(a[0].style.opacity = 0), a.transition(400);
}, 1e3)));
},
setTransition: function (e) {
this.params.scrollbar.el &&
this.scrollbar.el &&
this.scrollbar.$dragEl.transition(e);
},
updateSize: function () {
var e, t, i, s, a, n, r;
this.params.scrollbar.el &&
this.scrollbar.el &&
((t = (e = this.scrollbar).$dragEl),
(i = e.$el),
(t[0].style.width = ""),
(t[0].style.height = ""),
(s = this.isHorizontal() ? i[0].offsetWidth : i[0].offsetHeight),
(n =
(a = this.size / (this.size * this.snapGrid.length)) *
(s / this.size)),
(r =
"auto" === this.params.scrollbar.dragSize
? s * a
: parseInt(this.params.scrollbar.dragSize, 10)),
this.isHorizontal()
? (t[0].style.width = r + "px")
: (t[0].style.height = r + "px"),
(i[0].style.display = 1 <= a ? "none" : ""),
this.params.scrollbar.hide && (i[0].style.opacity = 0),
j.extend(e, {
trackSize: s,
divider: a,
moveDivider: n,
dragSize: r,
}),
e.$el[
this.params.watchOverflow && this.isLocked
? "addClass"
: "removeClass"
](this.params.scrollbar.lockClass));
},
getPointerPosition: function (e) {
return this.isHorizontal()
? ("touchstart" === e.type || "touchmove" === e.type
? e.targetTouches[0]
: e
).clientX
: ("touchstart" === e.type || "touchmove" === e.type
? e.targetTouches[0]
: e
).clientY;
},
setDragPosition: function (e) {
var t = this.scrollbar,
i = this.rtlTranslate,
s = t.$el,
a = t.dragSize,
n = t.trackSize,
r = t.dragStartPos,
t =
(t.getPointerPosition(e) -
s.offset()[this.isHorizontal() ? "left" : "top"] -
(null !== r ? r : a / 2)) /
(n - a),
e =
((t = Math.max(Math.min(t, 1), 0)),
i && (t = 1 - t),
this.minTranslate() +
(this.maxTranslate() - this.minTranslate()) * t);
this.updateProgress(e),
this.setTranslate(e),
this.updateActiveIndex(),
this.updateSlidesClasses();
},
onDragStart: function (e) {
var t = this.params.scrollbar,
i = this.scrollbar,
s = this.$wrapperEl,
a = i.$el,
n = i.$dragEl;
(this.scrollbar.isTouched = !0),
(this.scrollbar.dragStartPos =
e.target === n[0] || e.target === n
? i.getPointerPosition(e) -
e.target.getBoundingClientRect()[
this.isHorizontal() ? "left" : "top"
]
: null),
e.preventDefault(),
e.stopPropagation(),
s.transition(100),
n.transition(100),
i.setDragPosition(e),
clearTimeout(this.scrollbar.dragTimeout),
a.transition(0),
t.hide && a.css("opacity", 1),
this.params.cssMode &&
this.$wrapperEl.css("scroll-snap-type", "none"),
this.emit("scrollbarDragStart", e);
},
onDragMove: function (e) {
var t = this.scrollbar,
i = this.$wrapperEl,
s = t.$el,
a = t.$dragEl;
this.scrollbar.isTouched &&
(e.preventDefault ? e.preventDefault() : (e.returnValue = !1),
t.setDragPosition(e),
i.transition(0),
s.transition(0),
a.transition(0),
this.emit("scrollbarDragMove", e));
},
onDragEnd: function (e) {
var t = this.params.scrollbar,
i = this.scrollbar,
s = this.$wrapperEl,
a = i.$el;
this.scrollbar.isTouched &&
((this.scrollbar.isTouched = !1),
this.params.cssMode &&
(this.$wrapperEl.css("scroll-snap-type", ""), s.transition("")),
t.hide &&
(clearTimeout(this.scrollbar.dragTimeout),
(this.scrollbar.dragTimeout = j.nextTick(function () {
a.css("opacity", 0), a.transition(400);
}, 1e3))),
this.emit("scrollbarDragEnd", e),
t.snapOnRelease) &&
this.slideToClosest();
},
enableDraggable: function () {
var e, t, i, s, a;
this.params.scrollbar.el &&
((i = this.scrollbar),
(e = this.touchEventsTouch),
(t = this.touchEventsDesktop),
(a = this.params),
(i = i.$el[0]),
(s = !(!y.passiveListener || !a.passiveListeners) && {
passive: !1,
capture: !1,
}),
(a = !(!y.passiveListener || !a.passiveListeners) && {
passive: !0,
capture: !1,
}),
y.touch
? (i.addEventListener(e.start, this.scrollbar.onDragStart, s),
i.addEventListener(e.move, this.scrollbar.onDragMove, s),
i.addEventListener(e.end, this.scrollbar.onDragEnd, a))
: (i.addEventListener(t.start, this.scrollbar.onDragStart, s),
c.addEventListener(t.move, this.scrollbar.onDragMove, s),
c.addEventListener(t.end, this.scrollbar.onDragEnd, a)));
},
disableDraggable: function () {
var e, t, i, s, a;
this.params.scrollbar.el &&
((i = this.scrollbar),
(e = this.touchEventsTouch),
(t = this.touchEventsDesktop),
(a = this.params),
(i = i.$el[0]),
(s = !(!y.passiveListener || !a.passiveListeners) && {
passive: !1,
capture: !1,
}),
(a = !(!y.passiveListener || !a.passiveListeners) && {
passive: !0,
capture: !1,
}),
y.touch
? (i.removeEventListener(
e.start,
this.scrollbar.onDragStart,
s
),
i.removeEventListener(e.move, this.scrollbar.onDragMove, s),
i.removeEventListener(e.end, this.scrollbar.onDragEnd, a))
: (i.removeEventListener(
t.start,
this.scrollbar.onDragStart,
s
),
c.removeEventListener(t.move, this.scrollbar.onDragMove, s),
c.removeEventListener(t.end, this.scrollbar.onDragEnd, a)));
},
init: function () {
var e, t, i, s;
this.params.scrollbar.el &&
((e = this.scrollbar),
(s = this.$el),
(i = E((t = this.params.scrollbar).el)),
0 ===
(s = (i =
this.params.uniqueNavElements &&
"string" == typeof t.el &&
1 < i.length &&
1 === s.find(t.el).length
? s.find(t.el)
: i).find("." + this.params.scrollbar.dragClass)).length &&
((s = E(
''
)),
i.append(s)),
j.extend(e, { $el: i, el: i[0], $dragEl: s, dragEl: s[0] }),
t.draggable) &&
e.enableDraggable();
},
destroy: function () {
this.scrollbar.disableDraggable();
},
},
Q = {
setTransform: function (e, t) {
var i = this.rtl,
e = E(e),
i = i ? -1 : 1,
s = e.attr("data-swiper-parallax") || "0",
a = e.attr("data-swiper-parallax-x"),
n = e.attr("data-swiper-parallax-y"),
r = e.attr("data-swiper-parallax-scale"),
o = e.attr("data-swiper-parallax-opacity");
a || n
? ((a = a || "0"), (n = n || "0"))
: this.isHorizontal()
? ((a = s), (n = "0"))
: ((n = s), (a = "0")),
(a =
0 <= a.indexOf("%")
? parseInt(a, 10) * t * i + "%"
: a * t * i + "px"),
(n =
0 <= n.indexOf("%") ? parseInt(n, 10) * t + "%" : n * t + "px"),
null != o &&
((s = o - (o - 1) * (1 - Math.abs(t))),
(e[0].style.opacity = s)),
null == r
? e.transform("translate3d(" + a + ", " + n + ", 0px)")
: ((i = r - (r - 1) * (1 - Math.abs(t))),
e.transform(
"translate3d(" + a + ", " + n + ", 0px) scale(" + i + ")"
));
},
setTranslate: function () {
var s = this,
e = s.$el,
t = s.slides,
a = s.progress,
n = s.snapGrid;
e
.children(
"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]"
)
.each(function (e, t) {
s.parallax.setTransform(t, a);
}),
t.each(function (e, t) {
var i = t.progress;
1 < s.params.slidesPerGroup &&
"auto" !== s.params.slidesPerView &&
(i += Math.ceil(e / 2) - a * (n.length - 1)),
(i = Math.min(Math.max(i, -1), 1)),
E(t)
.find(
"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]"
)
.each(function (e, t) {
s.parallax.setTransform(t, i);
});
});
},
setTransition: function (s) {
void 0 === s && (s = this.params.speed),
this.$el
.find(
"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]"
)
.each(function (e, t) {
var t = E(t),
i =
parseInt(t.attr("data-swiper-parallax-duration"), 10) ||
s;
0 === s && (i = 0), t.transition(i);
});
},
},
J = {
getDistanceBetweenTouches: function (e) {
var t, i, s;
return e.targetTouches.length < 2
? 1
: ((t = e.targetTouches[0].pageX),
(i = e.targetTouches[0].pageY),
(s = e.targetTouches[1].pageX),
(e = e.targetTouches[1].pageY),
Math.sqrt(Math.pow(s - t, 2) + Math.pow(e - i, 2)));
},
onGestureStart: function (e) {
var t = this.params.zoom,
i = this.zoom,
s = i.gesture;
if (
((i.fakeGestureTouched = !1),
(i.fakeGestureMoved = !1),
!y.gestures)
) {
if (
"touchstart" !== e.type ||
("touchstart" === e.type && e.targetTouches.length < 2)
)
return;
(i.fakeGestureTouched = !0),
(s.scaleStart = J.getDistanceBetweenTouches(e));
}
(s.$slideEl && s.$slideEl.length) ||
((s.$slideEl = E(e.target).closest(".swiper-slide")),
0 === s.$slideEl.length &&
(s.$slideEl = this.slides.eq(this.activeIndex)),
(s.$imageEl = s.$slideEl.find("img, svg, canvas")),
(s.$imageWrapEl = s.$imageEl.parent("." + t.containerClass)),
(s.maxRatio =
s.$imageWrapEl.attr("data-swiper-zoom") || t.maxRatio),
0 !== s.$imageWrapEl.length)
? (s.$imageEl.transition(0), (this.zoom.isScaling = !0))
: (s.$imageEl = void 0);
},
onGestureChange: function (e) {
var t = this.params.zoom,
i = this.zoom,
s = i.gesture;
if (!y.gestures) {
if (
"touchmove" !== e.type ||
("touchmove" === e.type && e.targetTouches.length < 2)
)
return;
(i.fakeGestureMoved = !0),
(s.scaleMove = J.getDistanceBetweenTouches(e));
}
s.$imageEl &&
0 !== s.$imageEl.length &&
((i.scale = y.gestures
? e.scale * i.currentScale
: (s.scaleMove / s.scaleStart) * i.currentScale),
i.scale > s.maxRatio &&
(i.scale =
s.maxRatio - 1 + Math.pow(i.scale - s.maxRatio + 1, 0.5)),
i.scale < t.minRatio &&
(i.scale =
t.minRatio + 1 - Math.pow(t.minRatio - i.scale + 1, 0.5)),
s.$imageEl.transform(
"translate3d(0,0,0) scale(" + i.scale + ")"
));
},
onGestureEnd: function (e) {
var t = this.params.zoom,
i = this.zoom,
s = i.gesture;
if (!y.gestures) {
if (!i.fakeGestureTouched || !i.fakeGestureMoved) return;
if (
"touchend" !== e.type ||
("touchend" === e.type &&
e.changedTouches.length < 2 &&
!o.android)
)
return;
(i.fakeGestureTouched = !1), (i.fakeGestureMoved = !1);
}
s.$imageEl &&
0 !== s.$imageEl.length &&
((i.scale = Math.max(Math.min(i.scale, s.maxRatio), t.minRatio)),
s.$imageEl
.transition(this.params.speed)
.transform("translate3d(0,0,0) scale(" + i.scale + ")"),
(i.currentScale = i.scale),
(i.isScaling = !1),
1 === i.scale) &&
(s.$slideEl = void 0);
},
onTouchStart: function (e) {
var t = this.zoom,
i = t.gesture,
t = t.image;
i.$imageEl &&
0 !== i.$imageEl.length &&
!t.isTouched &&
(o.android && e.preventDefault(),
(t.isTouched = !0),
(t.touchesStart.x = (
"touchstart" === e.type ? e.targetTouches[0] : e
).pageX),
(t.touchesStart.y = (
"touchstart" === e.type ? e.targetTouches[0] : e
).pageY));
},
onTouchMove: function (e) {
var t = this.zoom,
i = t.gesture,
s = t.image,
a = t.velocity;
if (
i.$imageEl &&
0 !== i.$imageEl.length &&
((this.allowClick = !1), s.isTouched) &&
i.$slideEl
) {
s.isMoved ||
((s.width = i.$imageEl[0].offsetWidth),
(s.height = i.$imageEl[0].offsetHeight),
(s.startX = j.getTranslate(i.$imageWrapEl[0], "x") || 0),
(s.startY = j.getTranslate(i.$imageWrapEl[0], "y") || 0),
(i.slideWidth = i.$slideEl[0].offsetWidth),
(i.slideHeight = i.$slideEl[0].offsetHeight),
i.$imageWrapEl.transition(0),
this.rtl && ((s.startX = -s.startX), (s.startY = -s.startY)));
var n = s.width * t.scale,
r = s.height * t.scale;
if (!(n < i.slideWidth && r < i.slideHeight)) {
if (
((s.minX = Math.min(i.slideWidth / 2 - n / 2, 0)),
(s.maxX = -s.minX),
(s.minY = Math.min(i.slideHeight / 2 - r / 2, 0)),
(s.maxY = -s.minY),
(s.touchesCurrent.x = (
"touchmove" === e.type ? e.targetTouches[0] : e
).pageX),
(s.touchesCurrent.y = (
"touchmove" === e.type ? e.targetTouches[0] : e
).pageY),
!s.isMoved && !t.isScaling)
) {
if (
this.isHorizontal() &&
((Math.floor(s.minX) === Math.floor(s.startX) &&
s.touchesCurrent.x < s.touchesStart.x) ||
(Math.floor(s.maxX) === Math.floor(s.startX) &&
s.touchesCurrent.x > s.touchesStart.x))
)
return void (s.isTouched = !1);
if (
!this.isHorizontal() &&
((Math.floor(s.minY) === Math.floor(s.startY) &&
s.touchesCurrent.y < s.touchesStart.y) ||
(Math.floor(s.maxY) === Math.floor(s.startY) &&
s.touchesCurrent.y > s.touchesStart.y))
)
return void (s.isTouched = !1);
}
e.preventDefault(),
e.stopPropagation(),
(s.isMoved = !0),
(s.currentX =
s.touchesCurrent.x - s.touchesStart.x + s.startX),
(s.currentY =
s.touchesCurrent.y - s.touchesStart.y + s.startY),
s.currentX < s.minX &&
(s.currentX =
s.minX + 1 - Math.pow(s.minX - s.currentX + 1, 0.8)),
s.currentX > s.maxX &&
(s.currentX =
s.maxX - 1 + Math.pow(s.currentX - s.maxX + 1, 0.8)),
s.currentY < s.minY &&
(s.currentY =
s.minY + 1 - Math.pow(s.minY - s.currentY + 1, 0.8)),
s.currentY > s.maxY &&
(s.currentY =
s.maxY - 1 + Math.pow(s.currentY - s.maxY + 1, 0.8)),
a.prevPositionX || (a.prevPositionX = s.touchesCurrent.x),
a.prevPositionY || (a.prevPositionY = s.touchesCurrent.y),
a.prevTime || (a.prevTime = Date.now()),
(a.x =
(s.touchesCurrent.x - a.prevPositionX) /
(Date.now() - a.prevTime) /
2),
(a.y =
(s.touchesCurrent.y - a.prevPositionY) /
(Date.now() - a.prevTime) /
2),
Math.abs(s.touchesCurrent.x - a.prevPositionX) < 2 &&
(a.x = 0),
Math.abs(s.touchesCurrent.y - a.prevPositionY) < 2 &&
(a.y = 0),
(a.prevPositionX = s.touchesCurrent.x),
(a.prevPositionY = s.touchesCurrent.y),
(a.prevTime = Date.now()),
i.$imageWrapEl.transform(
"translate3d(" + s.currentX + "px, " + s.currentY + "px,0)"
);
}
}
},
onTouchEnd: function () {
var e,
t,
i,
s,
a = this.zoom,
n = a.gesture,
r = a.image,
o = a.velocity;
n.$imageEl &&
0 !== n.$imageEl.length &&
(r.isTouched && r.isMoved
? ((r.isTouched = !1),
(r.isMoved = !1),
(e = o.x * (i = 300)),
(e = r.currentX + e),
(t = o.y * (s = 300)),
(t = r.currentY + t),
0 !== o.x && (i = Math.abs((e - r.currentX) / o.x)),
0 !== o.y && (s = Math.abs((t - r.currentY) / o.y)),
(o = Math.max(i, s)),
(r.currentX = e),
(r.currentY = t),
(i = r.width * a.scale),
(s = r.height * a.scale),
(r.minX = Math.min(n.slideWidth / 2 - i / 2, 0)),
(r.maxX = -r.minX),
(r.minY = Math.min(n.slideHeight / 2 - s / 2, 0)),
(r.maxY = -r.minY),
(r.currentX = Math.max(Math.min(r.currentX, r.maxX), r.minX)),
(r.currentY = Math.max(Math.min(r.currentY, r.maxY), r.minY)),
n.$imageWrapEl
.transition(o)
.transform(
"translate3d(" +
r.currentX +
"px, " +
r.currentY +
"px,0)"
))
: ((r.isTouched = !1), (r.isMoved = !1)));
},
onTransitionEnd: function () {
var e = this.zoom,
t = e.gesture;
t.$slideEl &&
this.previousIndex !== this.activeIndex &&
(t.$imageEl.transform("translate3d(0,0,0) scale(1)"),
t.$imageWrapEl.transform("translate3d(0,0,0)"),
(e.scale = 1),
(e.currentScale = 1),
(t.$slideEl = void 0),
(t.$imageEl = void 0),
(t.$imageWrapEl = void 0));
},
toggle: function (e) {
var t = this.zoom;
t.scale && 1 !== t.scale ? t.out() : t.in(e);
},
in: function (e) {
var t,
i,
s,
a,
n = this.zoom,
r = this.params.zoom,
o = n.gesture,
l = n.image;
o.$slideEl ||
((o.$slideEl = this.clickedSlide
? E(this.clickedSlide)
: this.slides.eq(this.activeIndex)),
(o.$imageEl = o.$slideEl.find("img, svg, canvas")),
(o.$imageWrapEl = o.$imageEl.parent("." + r.containerClass))),
o.$imageEl &&
0 !== o.$imageEl.length &&
(o.$slideEl.addClass("" + r.zoomedSlideClass),
(l =
void 0 === l.touchesStart.x && e
? ((t = ("touchend" === e.type ? e.changedTouches[0] : e)
.pageX),
("touchend" === e.type ? e.changedTouches[0] : e).pageY)
: ((t = l.touchesStart.x), l.touchesStart.y)),
(n.scale =
o.$imageWrapEl.attr("data-swiper-zoom") || r.maxRatio),
(n.currentScale =
o.$imageWrapEl.attr("data-swiper-zoom") || r.maxRatio),
e
? ((r = o.$slideEl[0].offsetWidth),
(e = o.$slideEl[0].offsetHeight),
(t = o.$slideEl.offset().left + r / 2 - t),
(l = o.$slideEl.offset().top + e / 2 - l),
(s = o.$imageEl[0].offsetWidth),
(a = o.$imageEl[0].offsetHeight),
(s = s * n.scale),
(a = a * n.scale),
(s = -(r = Math.min(r / 2 - s / 2, 0))),
(a = -(e = Math.min(e / 2 - a / 2, 0))),
s < (i = (i = t * n.scale) < r ? r : i) && (i = s),
a < (s = (s = l * n.scale) < e ? e : s) && (s = a))
: (s = i = 0),
o.$imageWrapEl
.transition(300)
.transform("translate3d(" + i + "px, " + s + "px,0)"),
o.$imageEl
.transition(300)
.transform("translate3d(0,0,0) scale(" + n.scale + ")"));
},
out: function () {
var e = this.zoom,
t = this.params.zoom,
i = e.gesture;
i.$slideEl ||
((i.$slideEl = this.clickedSlide
? E(this.clickedSlide)
: this.slides.eq(this.activeIndex)),
(i.$imageEl = i.$slideEl.find("img, svg, canvas")),
(i.$imageWrapEl = i.$imageEl.parent("." + t.containerClass))),
i.$imageEl &&
0 !== i.$imageEl.length &&
((e.scale = 1),
(e.currentScale = 1),
i.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),
i.$imageEl
.transition(300)
.transform("translate3d(0,0,0) scale(1)"),
i.$slideEl.removeClass("" + t.zoomedSlideClass),
(i.$slideEl = void 0));
},
enable: function () {
var e,
t,
i = this.zoom;
i.enabled ||
((i.enabled = !0),
(e = !(
"touchstart" !== this.touchEvents.start ||
!y.passiveListener ||
!this.params.passiveListeners
) && { passive: !0, capture: !1 }),
(t = !y.passiveListener || { passive: !1, capture: !0 }),
y.gestures
? (this.$wrapperEl.on(
"gesturestart",
".swiper-slide",
i.onGestureStart,
e
),
this.$wrapperEl.on(
"gesturechange",
".swiper-slide",
i.onGestureChange,
e
),
this.$wrapperEl.on(
"gestureend",
".swiper-slide",
i.onGestureEnd,
e
))
: "touchstart" === this.touchEvents.start &&
(this.$wrapperEl.on(
this.touchEvents.start,
".swiper-slide",
i.onGestureStart,
e
),
this.$wrapperEl.on(
this.touchEvents.move,
".swiper-slide",
i.onGestureChange,
t
),
this.$wrapperEl.on(
this.touchEvents.end,
".swiper-slide",
i.onGestureEnd,
e
),
this.touchEvents.cancel) &&
this.$wrapperEl.on(
this.touchEvents.cancel,
".swiper-slide",
i.onGestureEnd,
e
),
this.$wrapperEl.on(
this.touchEvents.move,
"." + this.params.zoom.containerClass,
i.onTouchMove,
t
));
},
disable: function () {
var e,
t,
i = this.zoom;
i.enabled &&
((this.zoom.enabled = !1),
(e = !(
"touchstart" !== this.touchEvents.start ||
!y.passiveListener ||
!this.params.passiveListeners
) && { passive: !0, capture: !1 }),
(t = !y.passiveListener || { passive: !1, capture: !0 }),
y.gestures
? (this.$wrapperEl.off(
"gesturestart",
".swiper-slide",
i.onGestureStart,
e
),
this.$wrapperEl.off(
"gesturechange",
".swiper-slide",
i.onGestureChange,
e
),
this.$wrapperEl.off(
"gestureend",
".swiper-slide",
i.onGestureEnd,
e
))
: "touchstart" === this.touchEvents.start &&
(this.$wrapperEl.off(
this.touchEvents.start,
".swiper-slide",
i.onGestureStart,
e
),
this.$wrapperEl.off(
this.touchEvents.move,
".swiper-slide",
i.onGestureChange,
t
),
this.$wrapperEl.off(
this.touchEvents.end,
".swiper-slide",
i.onGestureEnd,
e
),
this.touchEvents.cancel) &&
this.$wrapperEl.off(
this.touchEvents.cancel,
".swiper-slide",
i.onGestureEnd,
e
),
this.$wrapperEl.off(
this.touchEvents.move,
"." + this.params.zoom.containerClass,
i.onTouchMove,
t
));
},
},
Z = {
loadInSlide: function (e, o) {
void 0 === o && (o = !0);
var l,
d = this,
h = d.params.lazy;
void 0 !== e &&
0 !== d.slides.length &&
((e = (l =
d.virtual && d.params.virtual.enabled
? d.$wrapperEl.children(
"." +
d.params.slideClass +
'[data-swiper-slide-index="' +
e +
'"]'
)
: d.slides.eq(e)).find(
"." +
h.elementClass +
":not(." +
h.loadedClass +
"):not(." +
h.loadingClass +
")"
)),
0 !==
(e =
!l.hasClass(h.elementClass) ||
l.hasClass(h.loadedClass) ||
l.hasClass(h.loadingClass)
? e
: e.add(l[0])).length) &&
e.each(function (e, t) {
var i = E(t),
s = (i.addClass(h.loadingClass), i.attr("data-background")),
a = i.attr("data-src"),
n = i.attr("data-srcset"),
r = i.attr("data-sizes");
d.loadImage(i[0], a || s, n, r, !1, function () {
var e, t;
null == d ||
!d ||
(d && !d.params) ||
d.destroyed ||
(s
? (i.css("background-image", 'url("' + s + '")'),
i.removeAttr("data-background"))
: (n &&
(i.attr("srcset", n), i.removeAttr("data-srcset")),
r && (i.attr("sizes", r), i.removeAttr("data-sizes")),
a && (i.attr("src", a), i.removeAttr("data-src"))),
i.addClass(h.loadedClass).removeClass(h.loadingClass),
l.find("." + h.preloaderClass).remove(),
d.params.loop &&
o &&
((e = l.attr("data-swiper-slide-index")),
l.hasClass(d.params.slideDuplicateClass)
? ((t = d.$wrapperEl.children(
'[data-swiper-slide-index="' +
e +
'"]:not(.' +
d.params.slideDuplicateClass +
")"
)),
d.lazy.loadInSlide(t.index(), !1))
: ((t = d.$wrapperEl.children(
"." +
d.params.slideDuplicateClass +
'[data-swiper-slide-index="' +
e +
'"]'
)),
d.lazy.loadInSlide(t.index(), !1))),
d.emit("lazyImageReady", l[0], i[0]));
}),
d.emit("lazyImageLoad", l[0], i[0]);
});
},
load: function () {
var i = this,
t = i.$wrapperEl,
s = i.params,
a = i.slides,
e = i.activeIndex,
n = i.virtual && s.virtual.enabled,
r = s.lazy,
o = s.slidesPerView;
function l(e) {
if (n) {
if (
t.children(
"." + s.slideClass + '[data-swiper-slide-index="' + e + '"]'
).length
)
return 1;
} else if (a[e]) return 1;
}
function d(e) {
return n ? E(e).attr("data-swiper-slide-index") : E(e).index();
}
if (
("auto" === o && (o = 0),
i.lazy.initialImageLoaded || (i.lazy.initialImageLoaded = !0),
i.params.watchSlidesVisibility)
)
t.children("." + s.slideVisibleClass).each(function (e, t) {
t = n ? E(t).attr("data-swiper-slide-index") : E(t).index();
i.lazy.loadInSlide(t);
});
else if (1 < o)
for (var h = e; h < e + o; h += 1) l(h) && i.lazy.loadInSlide(h);
else i.lazy.loadInSlide(e);
if (r.loadPrevNext)
if (1 < o || (r.loadPrevNextAmount && 1 < r.loadPrevNextAmount)) {
for (
var r = r.loadPrevNextAmount,
c = o,
p = Math.min(e + c + Math.max(r, c), a.length),
c = Math.max(e - Math.max(c, r), 0),
u = e + o;
u < p;
u += 1
)
l(u) && i.lazy.loadInSlide(u);
for (var v = c; v < e; v += 1) l(v) && i.lazy.loadInSlide(v);
} else {
(r = t.children("." + s.slideNextClass)),
(c =
(0 < r.length && i.lazy.loadInSlide(d(r)),
t.children("." + s.slidePrevClass)));
0 < c.length && i.lazy.loadInSlide(d(c));
}
},
},
I = {
LinearSpline: function (e, t) {
var i, s, a, n, r;
return (
(this.x = e),
(this.y = t),
(this.lastIndex = e.length - 1),
(this.interpolate = function (e) {
return e
? ((r = (function (e, t) {
for (s = -1, i = e.length; 1 < i - s; )
e[(a = (i + s) >> 1)] <= t ? (s = a) : (i = a);
return i;
})(this.x, e)),
(n = r - 1),
((e - this.x[n]) * (this.y[r] - this.y[n])) /
(this.x[r] - this.x[n]) +
this.y[n])
: 0;
}),
this
);
},
getInterpolateFunction: function (e) {
this.controller.spline ||
(this.controller.spline = this.params.loop
? new I.LinearSpline(this.slidesGrid, e.slidesGrid)
: new I.LinearSpline(this.snapGrid, e.snapGrid));
},
setTranslate: function (e, t) {
var i,
s,
a = this,
n = a.controller.control;
function r(e) {
var t = a.rtlTranslate ? -a.translate : a.translate;
"slide" === a.params.controller.by &&
(a.controller.getInterpolateFunction(e),
(s = -a.controller.spline.interpolate(-t))),
(s && "container" !== a.params.controller.by) ||
((i =
(e.maxTranslate() - e.minTranslate()) /
(a.maxTranslate() - a.minTranslate())),
(s = (t - a.minTranslate()) * i + e.minTranslate())),
a.params.controller.inverse && (s = e.maxTranslate() - s),
e.updateProgress(s),
e.setTranslate(s, a),
e.updateActiveIndex(),
e.updateSlidesClasses();
}
if (Array.isArray(n))
for (var o = 0; o < n.length; o += 1)
n[o] !== t && n[o] instanceof u && r(n[o]);
else n instanceof u && t !== n && r(n);
},
setTransition: function (t, e) {
var i,
s = this,
a = s.controller.control;
function n(e) {
e.setTransition(t, s),
0 !== t &&
(e.transitionStart(),
e.params.autoHeight &&
j.nextTick(function () {
e.updateAutoHeight();
}),
e.$wrapperEl.transitionEnd(function () {
a &&
(e.params.loop &&
"slide" === s.params.controller.by &&
e.loopFix(),
e.transitionEnd());
}));
}
if (Array.isArray(a))
for (i = 0; i < a.length; i += 1)
a[i] !== e && a[i] instanceof u && n(a[i]);
else a instanceof u && e !== a && n(a);
},
},
ee = {
makeElFocusable: function (e) {
return e.attr("tabIndex", "0"), e;
},
addElRole: function (e, t) {
return e.attr("role", t), e;
},
addElLabel: function (e, t) {
return e.attr("aria-label", t), e;
},
disableEl: function (e) {
return e.attr("aria-disabled", !0), e;
},
enableEl: function (e) {
return e.attr("aria-disabled", !1), e;
},
onEnterKey: function (e) {
var t = this.params.a11y;
13 === e.keyCode &&
((e = E(e.target)),
this.navigation &&
this.navigation.$nextEl &&
e.is(this.navigation.$nextEl) &&
((this.isEnd && !this.params.loop) || this.slideNext(),
this.isEnd
? this.a11y.notify(t.lastSlideMessage)
: this.a11y.notify(t.nextSlideMessage)),
this.navigation &&
this.navigation.$prevEl &&
e.is(this.navigation.$prevEl) &&
((this.isBeginning && !this.params.loop) || this.slidePrev(),
this.isBeginning
? this.a11y.notify(t.firstSlideMessage)
: this.a11y.notify(t.prevSlideMessage)),
this.pagination) &&
e.is("." + this.params.pagination.bulletClass) &&
e[0].click();
},
notify: function (e) {
var t = this.a11y.liveRegion;
0 !== t.length && (t.html(""), t.html(e));
},
updateNavigation: function () {
var e, t;
!this.params.loop &&
this.navigation &&
((e = (t = this.navigation).$nextEl),
(t = t.$prevEl) &&
0 < t.length &&
(this.isBeginning
? this.a11y.disableEl(t)
: this.a11y.enableEl(t)),
e) &&
0 < e.length &&
(this.isEnd ? this.a11y.disableEl(e) : this.a11y.enableEl(e));
},
updatePagination: function () {
var i = this,
s = i.params.a11y;
i.pagination &&
i.params.pagination.clickable &&
i.pagination.bullets &&
i.pagination.bullets.length &&
i.pagination.bullets.each(function (e, t) {
t = E(t);
i.a11y.makeElFocusable(t),
i.a11y.addElRole(t, "button"),
i.a11y.addElLabel(
t,
s.paginationBulletMessage.replace(
/{{index}}/,
t.index() + 1
)
);
});
},
init: function () {
this.$el.append(this.a11y.liveRegion);
var e,
t,
i = this.params.a11y;
this.navigation &&
this.navigation.$nextEl &&
(e = this.navigation.$nextEl),
this.navigation &&
this.navigation.$prevEl &&
(t = this.navigation.$prevEl),
e &&
(this.a11y.makeElFocusable(e),
this.a11y.addElRole(e, "button"),
this.a11y.addElLabel(e, i.nextSlideMessage),
e.on("keydown", this.a11y.onEnterKey)),
t &&
(this.a11y.makeElFocusable(t),
this.a11y.addElRole(t, "button"),
this.a11y.addElLabel(t, i.prevSlideMessage),
t.on("keydown", this.a11y.onEnterKey)),
this.pagination &&
this.params.pagination.clickable &&
this.pagination.bullets &&
this.pagination.bullets.length &&
this.pagination.$el.on(
"keydown",
"." + this.params.pagination.bulletClass,
this.a11y.onEnterKey
);
},
destroy: function () {
var e, t;
this.a11y.liveRegion &&
0 < this.a11y.liveRegion.length &&
this.a11y.liveRegion.remove(),
this.navigation &&
this.navigation.$nextEl &&
(e = this.navigation.$nextEl),
this.navigation &&
this.navigation.$prevEl &&
(t = this.navigation.$prevEl),
e && e.off("keydown", this.a11y.onEnterKey),
t && t.off("keydown", this.a11y.onEnterKey),
this.pagination &&
this.params.pagination.clickable &&
this.pagination.bullets &&
this.pagination.bullets.length &&
this.pagination.$el.off(
"keydown",
"." + this.params.pagination.bulletClass,
this.a11y.onEnterKey
);
},
},
k = {
init: function () {
var e;
this.params.history &&
(U.history && U.history.pushState
? (((e = this.history).initialized = !0),
(e.paths = k.getPathValues()),
(e.paths.key || e.paths.value) &&
(e.scrollToSlide(
0,
e.paths.value,
this.params.runCallbacksOnInit
),
this.params.history.replaceState ||
U.addEventListener(
"popstate",
this.history.setHistoryPopState
)))
: ((this.params.history.enabled = !1),
(this.params.hashNavigation.enabled = !0)));
},
destroy: function () {
this.params.history.replaceState ||
U.removeEventListener(
"popstate",
this.history.setHistoryPopState
);
},
setHistoryPopState: function () {
(this.history.paths = k.getPathValues()),
this.history.scrollToSlide(
this.params.speed,
this.history.paths.value,
!1
);
},
getPathValues: function () {
var e = U.location.pathname
.slice(1)
.split("/")
.filter(function (e) {
return "" !== e;
}),
t = e.length;
return { key: e[t - 2], value: e[t - 1] };
},
setHistory: function (e, t) {
this.history.initialized &&
this.params.history.enabled &&
((t = this.slides.eq(t)),
(t = k.slugify(t.attr("data-history"))),
U.location.pathname.includes(e) || (t = e + "/" + t),
((e = U.history.state) && e.value === t) ||
(this.params.history.replaceState
? U.history.replaceState({ value: t }, null, t)
: U.history.pushState({ value: t }, null, t)));
},
slugify: function (e) {
return e
.toString()
.replace(/\s+/g, "-")
.replace(/[^\w-]+/g, "")
.replace(/--+/g, "-")
.replace(/^-+/, "")
.replace(/-+$/, "");
},
scrollToSlide: function (e, t, i) {
if (t)
for (var s = 0, a = this.slides.length; s < a; s += 1) {
var n = this.slides.eq(s);
k.slugify(n.attr("data-history")) !== t ||
n.hasClass(this.params.slideDuplicateClass) ||
((n = n.index()), this.slideTo(n, e, i));
}
else this.slideTo(0, e, i);
},
},
M = {
onHashCange: function () {
var e = c.location.hash.replace("#", "");
e !== this.slides.eq(this.activeIndex).attr("data-hash") &&
void 0 !==
(e = this.$wrapperEl
.children(
"." + this.params.slideClass + '[data-hash="' + e + '"]'
)
.index()) &&
this.slideTo(e);
},
setHash: function () {
var e;
this.hashNavigation.initialized &&
this.params.hashNavigation.enabled &&
(this.params.hashNavigation.replaceState &&
U.history &&
U.history.replaceState
? U.history.replaceState(
null,
null,
"#" + this.slides.eq(this.activeIndex).attr("data-hash") ||
""
)
: ((e =
(e = this.slides.eq(this.activeIndex)).attr("data-hash") ||
e.attr("data-history")),
(c.location.hash = e || "")));
},
init: function () {
if (
!(
!this.params.hashNavigation.enabled ||
(this.params.history && this.params.history.enabled)
)
) {
this.hashNavigation.initialized = !0;
var e = c.location.hash.replace("#", "");
if (e)
for (var t = 0, i = this.slides.length; t < i; t += 1) {
var s = this.slides.eq(t);
(s.attr("data-hash") || s.attr("data-history")) !== e ||
s.hasClass(this.params.slideDuplicateClass) ||
((s = s.index()),
this.slideTo(s, 0, this.params.runCallbacksOnInit, !0));
}
this.params.hashNavigation.watchState &&
E(U).on("hashchange", this.hashNavigation.onHashCange);
}
},
destroy: function () {
this.params.hashNavigation.watchState &&
E(U).off("hashchange", this.hashNavigation.onHashCange);
},
},
z = {
run: function () {
var e = this,
t = e.slides.eq(e.activeIndex),
i = e.params.autoplay.delay;
t.attr("data-swiper-autoplay") &&
(i = t.attr("data-swiper-autoplay") || e.params.autoplay.delay),
clearTimeout(e.autoplay.timeout),
(e.autoplay.timeout = j.nextTick(function () {
e.params.autoplay.reverseDirection
? e.params.loop
? (e.loopFix(),
e.slidePrev(e.params.speed, !0, !0),
e.emit("autoplay"))
: e.isBeginning
? e.params.autoplay.stopOnLastSlide
? e.autoplay.stop()
: (e.slideTo(e.slides.length - 1, e.params.speed, !0, !0),
e.emit("autoplay"))
: (e.slidePrev(e.params.speed, !0, !0), e.emit("autoplay"))
: e.params.loop
? (e.loopFix(),
e.slideNext(e.params.speed, !0, !0),
e.emit("autoplay"))
: e.isEnd
? e.params.autoplay.stopOnLastSlide
? e.autoplay.stop()
: (e.slideTo(0, e.params.speed, !0, !0), e.emit("autoplay"))
: (e.slideNext(e.params.speed, !0, !0), e.emit("autoplay")),
e.params.cssMode && e.autoplay.running && e.autoplay.run();
}, i));
},
start: function () {
return (
void 0 === this.autoplay.timeout &&
!this.autoplay.running &&
((this.autoplay.running = !0),
this.emit("autoplayStart"),
this.autoplay.run(),
!0)
);
},
stop: function () {
return (
!!this.autoplay.running &&
void 0 !== this.autoplay.timeout &&
(this.autoplay.timeout &&
(clearTimeout(this.autoplay.timeout),
(this.autoplay.timeout = void 0)),
(this.autoplay.running = !1),
this.emit("autoplayStop"),
!0)
);
},
pause: function (e) {
!this.autoplay.running ||
this.autoplay.paused ||
(this.autoplay.timeout && clearTimeout(this.autoplay.timeout),
(this.autoplay.paused = !0),
0 !== e && this.params.autoplay.waitForTransition
? (this.$wrapperEl[0].addEventListener(
"transitionend",
this.autoplay.onTransitionEnd
),
this.$wrapperEl[0].addEventListener(
"webkitTransitionEnd",
this.autoplay.onTransitionEnd
))
: ((this.autoplay.paused = !1), this.autoplay.run()));
},
},
te = {
setTranslate: function () {
for (var e = this.slides, t = 0; t < e.length; t += 1) {
var i = this.slides.eq(t),
s = -i[0].swiperSlideOffset,
a = (this.params.virtualTranslate || (s -= this.translate), 0),
n =
(this.isHorizontal() || ((a = s), (s = 0)),
this.params.fadeEffect.crossFade
? Math.max(1 - Math.abs(i[0].progress), 0)
: 1 + Math.min(Math.max(i[0].progress, -1), 0));
i.css({ opacity: n }).transform(
"translate3d(" + s + "px, " + a + "px, 0px)"
);
}
},
setTransition: function (e) {
var i,
s = this,
t = s.slides,
a = s.$wrapperEl;
t.transition(e),
s.params.virtualTranslate &&
0 !== e &&
((i = !1),
t.transitionEnd(function () {
if (!i && s && !s.destroyed) {
(i = !0), (s.animating = !1);
for (
var e = ["webkitTransitionEnd", "transitionend"], t = 0;
t < e.length;
t += 1
)
a.trigger(e[t]);
}
}));
},
},
ie = {
setTranslate: function () {
var e,
t = this.$el,
i = this.$wrapperEl,
s = this.slides,
a = this.width,
n = this.height,
r = this.rtlTranslate,
o = this.size,
l = this.params.cubeEffect,
d = this.isHorizontal(),
h = this.virtual && this.params.virtual.enabled,
c = 0;
l.shadow &&
(d
? (0 === (e = i.find(".swiper-cube-shadow")).length &&
((e = E('')),
i.append(e)),
e.css({ height: a + "px" }))
: 0 === (e = t.find(".swiper-cube-shadow")).length &&
((e = E('')),
t.append(e)));
for (var p, u = 0; u < s.length; u += 1) {
var v = s.eq(u),
m = u,
g =
90 *
(m = h ? parseInt(v.attr("data-swiper-slide-index"), 10) : m),
f = Math.floor(g / 360),
w =
(r && ((g = -g), (f = Math.floor(-g / 360))),
Math.max(Math.min(v[0].progress, 1), -1)),
b = 0,
y = 0,
S = 0,
f =
(m % 4 == 0
? ((b = 4 * -f * o), (S = 0))
: (m - 1) % 4 == 0
? ((b = 0), (S = 4 * -f * o))
: (m - 2) % 4 == 0
? ((b = o + 4 * f * o), (S = o))
: (m - 3) % 4 == 0 && ((b = -o), (S = 3 * o + 4 * o * f)),
r && (b = -b),
d || ((y = b), (b = 0)),
"rotateX(" +
(d ? 0 : -g) +
"deg) rotateY(" +
(d ? g : 0) +
"deg) translate3d(" +
b +
"px, " +
y +
"px, " +
S +
"px)");
w <= 1 &&
-1 < w &&
((c = 90 * m + 90 * w), r) &&
(c = 90 * -m - 90 * w),
v.transform(f),
l.slideShadows &&
((g = d
? v.find(".swiper-slide-shadow-left")
: v.find(".swiper-slide-shadow-top")),
(b = d
? v.find(".swiper-slide-shadow-right")
: v.find(".swiper-slide-shadow-bottom")),
0 === g.length &&
((g = E(
''
)),
v.append(g)),
0 === b.length &&
((b = E(
''
)),
v.append(b)),
g.length && (g[0].style.opacity = Math.max(-w, 0)),
b.length) &&
(b[0].style.opacity = Math.max(w, 0));
}
i.css({
"-webkit-transform-origin": "50% 50% -" + o / 2 + "px",
"-moz-transform-origin": "50% 50% -" + o / 2 + "px",
"-ms-transform-origin": "50% 50% -" + o / 2 + "px",
"transform-origin": "50% 50% -" + o / 2 + "px",
}),
l.shadow &&
(d
? e.transform(
"translate3d(0px, " +
(a / 2 + l.shadowOffset) +
"px, " +
-a / 2 +
"px) rotateX(90deg) rotateZ(0deg) scale(" +
l.shadowScale +
")"
)
: ((t = Math.abs(c) - 90 * Math.floor(Math.abs(c) / 90)),
(a =
1.5 -
(Math.sin((2 * t * Math.PI) / 360) / 2 +
Math.cos((2 * t * Math.PI) / 360) / 2)),
(t = l.shadowScale),
(a = l.shadowScale / a),
(p = l.shadowOffset),
e.transform(
"scale3d(" +
t +
", 1, " +
a +
") translate3d(0px, " +
(n / 2 + p) +
"px, " +
-n / 2 / a +
"px) rotateX(-90deg)"
))),
i.transform(
"translate3d(0px,0," +
(C.isSafari || C.isUiWebView ? -o / 2 : 0) +
"px) rotateX(" +
(this.isHorizontal() ? 0 : c) +
"deg) rotateY(" +
(this.isHorizontal() ? -c : 0) +
"deg)"
);
},
setTransition: function (e) {
var t = this.$el;
this.slides
.transition(e)
.find(
".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left"
)
.transition(e),
this.params.cubeEffect.shadow &&
!this.isHorizontal() &&
t.find(".swiper-cube-shadow").transition(e);
},
},
se = {
setTranslate: function () {
for (
var e = this.slides, t = this.rtlTranslate, i = 0;
i < e.length;
i += 1
) {
var s,
a,
n = e.eq(i),
r = n[0].progress,
o =
-180 *
(r = this.params.flipEffect.limitRotation
? Math.max(Math.min(n[0].progress, 1), -1)
: r),
l = 0,
d = -n[0].swiperSlideOffset,
h = 0;
this.isHorizontal()
? t && (o = -o)
: ((h = d), (l = -o), (o = d = 0)),
(n[0].style.zIndex = -Math.abs(Math.round(r)) + e.length),
this.params.flipEffect.slideShadows &&
((s = this.isHorizontal()
? n.find(".swiper-slide-shadow-left")
: n.find(".swiper-slide-shadow-top")),
(a = this.isHorizontal()
? n.find(".swiper-slide-shadow-right")
: n.find(".swiper-slide-shadow-bottom")),
0 === s.length &&
((s = E(
''
)),
n.append(s)),
0 === a.length &&
((a = E(
''
)),
n.append(a)),
s.length && (s[0].style.opacity = Math.max(-r, 0)),
a.length) &&
(a[0].style.opacity = Math.max(r, 0)),
n.transform(
"translate3d(" +
d +
"px, " +
h +
"px, 0px) rotateX(" +
l +
"deg) rotateY(" +
o +
"deg)"
);
}
},
setTransition: function (e) {
var i,
s = this,
t = s.slides,
a = s.activeIndex,
n = s.$wrapperEl;
t
.transition(e)
.find(
".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left"
)
.transition(e),
s.params.virtualTranslate &&
0 !== e &&
((i = !1),
t.eq(a).transitionEnd(function () {
if (!i && s && !s.destroyed) {
(i = !0), (s.animating = !1);
for (
var e = ["webkitTransitionEnd", "transitionend"], t = 0;
t < e.length;
t += 1
)
n.trigger(e[t]);
}
}));
},
},
ae = {
setTranslate: function () {
for (
var e = this.width,
t = this.height,
i = this.slides,
s = this.$wrapperEl,
a = this.slidesSizesGrid,
n = this.params.coverflowEffect,
r = this.isHorizontal(),
o = this.translate,
l = r ? e / 2 - o : t / 2 - o,
d = r ? n.rotate : -n.rotate,
h = n.depth,
c = 0,
p = i.length;
c < p;
c += 1
) {
var u = i.eq(c),
v = a[c],
v = ((l - u[0].swiperSlideOffset - v / 2) / v) * n.modifier,
m = r ? d * v : 0,
g = r ? 0 : d * v,
f = -h * Math.abs(v),
w = r ? 0 : n.stretch * v,
b = r ? n.stretch * v : 0,
b =
(Math.abs(b) < 0.001 && (b = 0),
Math.abs(w) < 0.001 && (w = 0),
Math.abs(f) < 0.001 && (f = 0),
Math.abs(m) < 0.001 && (m = 0),
"translate3d(" +
b +
"px," +
w +
"px," +
f +
"px) rotateX(" +
(g = Math.abs(g) < 0.001 ? 0 : g) +
"deg) rotateY(" +
m +
"deg)");
u.transform(b),
(u[0].style.zIndex = 1 - Math.abs(Math.round(v))),
n.slideShadows &&
((w = r
? u.find(".swiper-slide-shadow-left")
: u.find(".swiper-slide-shadow-top")),
(f = r
? u.find(".swiper-slide-shadow-right")
: u.find(".swiper-slide-shadow-bottom")),
0 === w.length &&
((w = E(
''
)),
u.append(w)),
0 === f.length &&
((f = E(
''
)),
u.append(f)),
w.length && (w[0].style.opacity = 0 < v ? v : 0),
f.length) &&
(f[0].style.opacity = 0 < -v ? -v : 0);
}
(y.pointerEvents || y.prefixedPointerEvents) &&
(s[0].style.perspectiveOrigin = l + "px 50%");
},
setTransition: function (e) {
this.slides
.transition(e)
.find(
".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left"
)
.transition(e);
},
},
ne = {
init: function () {
var e = this.params.thumbs,
t = this.constructor;
e.swiper instanceof t
? ((this.thumbs.swiper = e.swiper),
j.extend(this.thumbs.swiper.originalParams, {
watchSlidesProgress: !0,
slideToClickedSlide: !1,
}),
j.extend(this.thumbs.swiper.params, {
watchSlidesProgress: !0,
slideToClickedSlide: !1,
}))
: j.isObject(e.swiper) &&
((this.thumbs.swiper = new t(
j.extend({}, e.swiper, {
watchSlidesVisibility: !0,
watchSlidesProgress: !0,
slideToClickedSlide: !1,
})
)),
(this.thumbs.swiperCreated = !0)),
this.thumbs.swiper.$el.addClass(
this.params.thumbs.thumbsContainerClass
),
this.thumbs.swiper.on("tap", this.thumbs.onThumbClick);
},
onThumbClick: function () {
var e,
t,
i,
s = this.thumbs.swiper;
s &&
((e = s.clickedIndex),
((i = s.clickedSlide) &&
E(i).hasClass(this.params.thumbs.slideThumbActiveClass)) ||
null == e ||
((i = s.params.loop
? parseInt(
E(s.clickedSlide).attr("data-swiper-slide-index"),
10
)
: e),
this.params.loop &&
((s = this.activeIndex),
this.slides.eq(s).hasClass(this.params.slideDuplicateClass) &&
(this.loopFix(),
(this._clientLeft = this.$wrapperEl[0].clientLeft),
(s = this.activeIndex)),
(e = this.slides
.eq(s)
.prevAll('[data-swiper-slide-index="' + i + '"]')
.eq(0)
.index()),
(t = this.slides
.eq(s)
.nextAll('[data-swiper-slide-index="' + i + '"]')
.eq(0)
.index()),
(i =
void 0 === e || (void 0 !== t && t - s < s - e) ? t : e)),
this.slideTo(i)));
},
update: function (e) {
var t = this.thumbs.swiper;
if (t) {
var i,
s,
a,
n =
"auto" === t.params.slidesPerView
? t.slidesPerViewDynamic()
: t.params.slidesPerView,
r =
(this.realIndex !== t.realIndex &&
((i = t.activeIndex),
(a = t.params.loop
? (t.slides
.eq(i)
.hasClass(t.params.slideDuplicateClass) &&
(t.loopFix(),
(t._clientLeft = t.$wrapperEl[0].clientLeft),
(i = t.activeIndex)),
(s = t.slides
.eq(i)
.prevAll(
'[data-swiper-slide-index="' + this.realIndex + '"]'
)
.eq(0)
.index()),
(a = t.slides
.eq(i)
.nextAll(
'[data-swiper-slide-index="' + this.realIndex + '"]'
)
.eq(0)
.index()),
void 0 === s
? a
: void 0 === a
? s
: a - i == i - s
? i
: a - i < i - s
? a
: s)
: this.realIndex),
t.visibleSlidesIndexes) &&
t.visibleSlidesIndexes.indexOf(a) < 0 &&
(t.params.centeredSlides
? (a =
i < a
? a - Math.floor(n / 2) + 1
: a + Math.floor(n / 2) - 1)
: i < a && (a = a - n + 1),
t.slideTo(a, e ? 0 : void 0)),
1),
o = this.params.thumbs.slideThumbActiveClass;
if (
(1 < this.params.slidesPerView &&
!this.params.centeredSlides &&
(r = this.params.slidesPerView),
this.params.thumbs.multipleActiveThumbs || (r = 1),
(r = Math.floor(r)),
t.slides.removeClass(o),
t.params.loop || (t.params.virtual && t.params.virtual.enabled))
)
for (var l = 0; l < r; l += 1)
t.$wrapperEl
.children(
'[data-swiper-slide-index="' + (this.realIndex + l) + '"]'
)
.addClass(o);
else
for (var d = 0; d < r; d += 1)
t.slides.eq(this.realIndex + d).addClass(o);
}
},
},
D = [
v,
X,
Y,
m,
f,
b,
S,
{
name: "mousewheel",
params: {
mousewheel: {
enabled: !1,
releaseOnEdges: !1,
invert: !1,
forceToAxis: !1,
sensitivity: 1,
eventsTarged: "container",
},
},
create: function () {
j.extend(this, {
mousewheel: {
enabled: !1,
enable: A.enable.bind(this),
disable: A.disable.bind(this),
handle: A.handle.bind(this),
handleMouseEnter: A.handleMouseEnter.bind(this),
handleMouseLeave: A.handleMouseLeave.bind(this),
animateSlider: A.animateSlider.bind(this),
releaseScroll: A.releaseScroll.bind(this),
lastScrollTime: j.now(),
lastEventBeforeSnap: void 0,
recentWheelEvents: [],
},
});
},
on: {
init: function () {
!this.params.mousewheel.enabled &&
this.params.cssMode &&
this.mousewheel.disable(),
this.params.mousewheel.enabled && this.mousewheel.enable();
},
destroy: function () {
this.params.cssMode && this.mousewheel.enable(),
this.mousewheel.enabled && this.mousewheel.disable();
},
},
},
{
name: "navigation",
params: {
navigation: {
nextEl: null,
prevEl: null,
hideOnClick: !1,
disabledClass: "swiper-button-disabled",
hiddenClass: "swiper-button-hidden",
lockClass: "swiper-button-lock",
},
},
create: function () {
j.extend(this, {
navigation: {
init: T.init.bind(this),
update: T.update.bind(this),
destroy: T.destroy.bind(this),
onNextClick: T.onNextClick.bind(this),
onPrevClick: T.onPrevClick.bind(this),
},
});
},
on: {
init: function () {
this.navigation.init(), this.navigation.update();
},
toEdge: function () {
this.navigation.update();
},
fromEdge: function () {
this.navigation.update();
},
destroy: function () {
this.navigation.destroy();
},
click: function (e) {
var t,
i = this.navigation,
s = i.$nextEl,
i = i.$prevEl;
!this.params.navigation.hideOnClick ||
E(e.target).is(i) ||
E(e.target).is(s) ||
(s
? (t = s.hasClass(this.params.navigation.hiddenClass))
: i && (t = i.hasClass(this.params.navigation.hiddenClass)),
!0 === t
? this.emit("navigationShow", this)
: this.emit("navigationHide", this),
s && s.toggleClass(this.params.navigation.hiddenClass),
i && i.toggleClass(this.params.navigation.hiddenClass));
},
},
},
{
name: "pagination",
params: {
pagination: {
el: null,
bulletElement: "span",
clickable: !1,
hideOnClick: !1,
renderBullet: null,
renderProgressbar: null,
renderFraction: null,
renderCustom: null,
progressbarOpposite: !1,
type: "bullets",
dynamicBullets: !1,
dynamicMainBullets: 1,
formatFractionCurrent: function (e) {
return e;
},
formatFractionTotal: function (e) {
return e;
},
bulletClass: "swiper-pagination-bullet",
bulletActiveClass: "swiper-pagination-bullet-active",
modifierClass: "swiper-pagination-",
currentClass: "swiper-pagination-current",
totalClass: "swiper-pagination-total",
hiddenClass: "swiper-pagination-hidden",
progressbarFillClass: "swiper-pagination-progressbar-fill",
progressbarOppositeClass:
"swiper-pagination-progressbar-opposite",
clickableClass: "swiper-pagination-clickable",
lockClass: "swiper-pagination-lock",
},
},
create: function () {
j.extend(this, {
pagination: {
init: L.init.bind(this),
render: L.render.bind(this),
update: L.update.bind(this),
destroy: L.destroy.bind(this),
dynamicBulletIndex: 0,
},
});
},
on: {
init: function () {
this.pagination.init(),
this.pagination.render(),
this.pagination.update();
},
activeIndexChange: function () {
(!this.params.loop && void 0 !== this.snapIndex) ||
this.pagination.update();
},
snapIndexChange: function () {
this.params.loop || this.pagination.update();
},
slidesLengthChange: function () {
this.params.loop &&
(this.pagination.render(), this.pagination.update());
},
snapGridLengthChange: function () {
this.params.loop ||
(this.pagination.render(), this.pagination.update());
},
destroy: function () {
this.pagination.destroy();
},
click: function (e) {
this.params.pagination.el &&
this.params.pagination.hideOnClick &&
0 < this.pagination.$el.length &&
!E(e.target).hasClass(this.params.pagination.bulletClass) &&
(!0 ===
this.pagination.$el.hasClass(
this.params.pagination.hiddenClass
)
? this.emit("paginationShow", this)
: this.emit("paginationHide", this),
this.pagination.$el.toggleClass(
this.params.pagination.hiddenClass
));
},
},
},
{
name: "scrollbar",
params: {
scrollbar: {
el: null,
dragSize: "auto",
hide: !1,
draggable: !1,
snapOnRelease: !0,
lockClass: "swiper-scrollbar-lock",
dragClass: "swiper-scrollbar-drag",
},
},
create: function () {
j.extend(this, {
scrollbar: {
init: P.init.bind(this),
destroy: P.destroy.bind(this),
updateSize: P.updateSize.bind(this),
setTranslate: P.setTranslate.bind(this),
setTransition: P.setTransition.bind(this),
enableDraggable: P.enableDraggable.bind(this),
disableDraggable: P.disableDraggable.bind(this),
setDragPosition: P.setDragPosition.bind(this),
getPointerPosition: P.getPointerPosition.bind(this),
onDragStart: P.onDragStart.bind(this),
onDragMove: P.onDragMove.bind(this),
onDragEnd: P.onDragEnd.bind(this),
isTouched: !1,
timeout: null,
dragTimeout: null,
},
});
},
on: {
init: function () {
this.scrollbar.init(),
this.scrollbar.updateSize(),
this.scrollbar.setTranslate();
},
update: function () {
this.scrollbar.updateSize();
},
resize: function () {
this.scrollbar.updateSize();
},
observerUpdate: function () {
this.scrollbar.updateSize();
},
setTranslate: function () {
this.scrollbar.setTranslate();
},
setTransition: function (e) {
this.scrollbar.setTransition(e);
},
destroy: function () {
this.scrollbar.destroy();
},
},
},
{
name: "parallax",
params: { parallax: { enabled: !1 } },
create: function () {
j.extend(this, {
parallax: {
setTransform: Q.setTransform.bind(this),
setTranslate: Q.setTranslate.bind(this),
setTransition: Q.setTransition.bind(this),
},
});
},
on: {
beforeInit: function () {
this.params.parallax.enabled &&
((this.params.watchSlidesProgress = !0),
(this.originalParams.watchSlidesProgress = !0));
},
init: function () {
this.params.parallax.enabled && this.parallax.setTranslate();
},
setTranslate: function () {
this.params.parallax.enabled && this.parallax.setTranslate();
},
setTransition: function (e) {
this.params.parallax.enabled && this.parallax.setTransition(e);
},
},
},
{
name: "zoom",
params: {
zoom: {
enabled: !1,
maxRatio: 3,
minRatio: 1,
toggle: !0,
containerClass: "swiper-zoom-container",
zoomedSlideClass: "swiper-slide-zoomed",
},
},
create: function () {
var s = this,
t = {
enabled: !1,
scale: 1,
currentScale: 1,
isScaling: !1,
gesture: {
$slideEl: void 0,
slideWidth: void 0,
slideHeight: void 0,
$imageEl: void 0,
$imageWrapEl: void 0,
maxRatio: 3,
},
image: {
isTouched: void 0,
isMoved: void 0,
currentX: void 0,
currentY: void 0,
minX: void 0,
minY: void 0,
maxX: void 0,
maxY: void 0,
width: void 0,
height: void 0,
startX: void 0,
startY: void 0,
touchesStart: {},
touchesCurrent: {},
},
velocity: {
x: void 0,
y: void 0,
prevPositionX: void 0,
prevPositionY: void 0,
prevTime: void 0,
},
},
a =
("onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out"
.split(" ")
.forEach(function (e) {
t[e] = J[e].bind(s);
}),
j.extend(s, { zoom: t }),
1);
Object.defineProperty(s.zoom, "scale", {
get: function () {
return a;
},
set: function (e) {
var t, i;
a !== e &&
((t = s.zoom.gesture.$imageEl
? s.zoom.gesture.$imageEl[0]
: void 0),
(i = s.zoom.gesture.$slideEl
? s.zoom.gesture.$slideEl[0]
: void 0),
s.emit("zoomChange", e, t, i)),
(a = e);
},
});
},
on: {
init: function () {
this.params.zoom.enabled && this.zoom.enable();
},
destroy: function () {
this.zoom.disable();
},
touchStart: function (e) {
this.zoom.enabled && this.zoom.onTouchStart(e);
},
touchEnd: function (e) {
this.zoom.enabled && this.zoom.onTouchEnd(e);
},
doubleTap: function (e) {
this.params.zoom.enabled &&
this.zoom.enabled &&
this.params.zoom.toggle &&
this.zoom.toggle(e);
},
transitionEnd: function () {
this.zoom.enabled &&
this.params.zoom.enabled &&
this.zoom.onTransitionEnd();
},
slideChange: function () {
this.zoom.enabled &&
this.params.zoom.enabled &&
this.params.cssMode &&
this.zoom.onTransitionEnd();
},
},
},
{
name: "lazy",
params: {
lazy: {
enabled: !1,
loadPrevNext: !1,
loadPrevNextAmount: 1,
loadOnTransitionStart: !1,
elementClass: "swiper-lazy",
loadingClass: "swiper-lazy-loading",
loadedClass: "swiper-lazy-loaded",
preloaderClass: "swiper-lazy-preloader",
},
},
create: function () {
j.extend(this, {
lazy: {
initialImageLoaded: !1,
load: Z.load.bind(this),
loadInSlide: Z.loadInSlide.bind(this),
},
});
},
on: {
beforeInit: function () {
this.params.lazy.enabled &&
this.params.preloadImages &&
(this.params.preloadImages = !1);
},
init: function () {
this.params.lazy.enabled &&
!this.params.loop &&
0 === this.params.initialSlide &&
this.lazy.load();
},
scroll: function () {
this.params.freeMode &&
!this.params.freeModeSticky &&
this.lazy.load();
},
resize: function () {
this.params.lazy.enabled && this.lazy.load();
},
scrollbarDragMove: function () {
this.params.lazy.enabled && this.lazy.load();
},
transitionStart: function () {
this.params.lazy.enabled &&
(this.params.lazy.loadOnTransitionStart ||
(!this.params.lazy.loadOnTransitionStart &&
!this.lazy.initialImageLoaded)) &&
this.lazy.load();
},
transitionEnd: function () {
this.params.lazy.enabled &&
!this.params.lazy.loadOnTransitionStart &&
this.lazy.load();
},
slideChange: function () {
this.params.lazy.enabled &&
this.params.cssMode &&
this.lazy.load();
},
},
},
{
name: "controller",
params: {
controller: { control: void 0, inverse: !1, by: "slide" },
},
create: function () {
j.extend(this, {
controller: {
control: this.params.controller.control,
getInterpolateFunction: I.getInterpolateFunction.bind(this),
setTranslate: I.setTranslate.bind(this),
setTransition: I.setTransition.bind(this),
},
});
},
on: {
update: function () {
this.controller.control &&
this.controller.spline &&
((this.controller.spline = void 0),
delete this.controller.spline);
},
resize: function () {
this.controller.control &&
this.controller.spline &&
((this.controller.spline = void 0),
delete this.controller.spline);
},
observerUpdate: function () {
this.controller.control &&
this.controller.spline &&
((this.controller.spline = void 0),
delete this.controller.spline);
},
setTranslate: function (e, t) {
this.controller.control && this.controller.setTranslate(e, t);
},
setTransition: function (e, t) {
this.controller.control && this.controller.setTransition(e, t);
},
},
},
{
name: "a11y",
params: {
a11y: {
enabled: !0,
notificationClass: "swiper-notification",
prevSlideMessage: "Previous slide",
nextSlideMessage: "Next slide",
firstSlideMessage: "This is the first slide",
lastSlideMessage: "This is the last slide",
paginationBulletMessage: "Go to slide {{index}}",
},
},
create: function () {
var t = this;
j.extend(t, {
a11y: {
liveRegion: E(
''
),
},
}),
Object.keys(ee).forEach(function (e) {
t.a11y[e] = ee[e].bind(t);
});
},
on: {
init: function () {
this.params.a11y.enabled &&
(this.a11y.init(), this.a11y.updateNavigation());
},
toEdge: function () {
this.params.a11y.enabled && this.a11y.updateNavigation();
},
fromEdge: function () {
this.params.a11y.enabled && this.a11y.updateNavigation();
},
paginationUpdate: function () {
this.params.a11y.enabled && this.a11y.updatePagination();
},
destroy: function () {
this.params.a11y.enabled && this.a11y.destroy();
},
},
},
{
name: "history",
params: {
history: { enabled: !1, replaceState: !1, key: "slides" },
},
create: function () {
j.extend(this, {
history: {
init: k.init.bind(this),
setHistory: k.setHistory.bind(this),
setHistoryPopState: k.setHistoryPopState.bind(this),
scrollToSlide: k.scrollToSlide.bind(this),
destroy: k.destroy.bind(this),
},
});
},
on: {
init: function () {
this.params.history.enabled && this.history.init();
},
destroy: function () {
this.params.history.enabled && this.history.destroy();
},
transitionEnd: function () {
this.history.initialized &&
this.history.setHistory(
this.params.history.key,
this.activeIndex
);
},
slideChange: function () {
this.history.initialized &&
this.params.cssMode &&
this.history.setHistory(
this.params.history.key,
this.activeIndex
);
},
},
},
{
name: "hash-navigation",
params: {
hashNavigation: { enabled: !1, replaceState: !1, watchState: !1 },
},
create: function () {
j.extend(this, {
hashNavigation: {
initialized: !1,
init: M.init.bind(this),
destroy: M.destroy.bind(this),
setHash: M.setHash.bind(this),
onHashCange: M.onHashCange.bind(this),
},
});
},
on: {
init: function () {
this.params.hashNavigation.enabled &&
this.hashNavigation.init();
},
destroy: function () {
this.params.hashNavigation.enabled &&
this.hashNavigation.destroy();
},
transitionEnd: function () {
this.hashNavigation.initialized &&
this.hashNavigation.setHash();
},
slideChange: function () {
this.hashNavigation.initialized &&
this.params.cssMode &&
this.hashNavigation.setHash();
},
},
},
{
name: "autoplay",
params: {
autoplay: {
enabled: !1,
delay: 3e3,
waitForTransition: !0,
disableOnInteraction: !0,
stopOnLastSlide: !1,
reverseDirection: !1,
},
},
create: function () {
var t = this;
j.extend(t, {
autoplay: {
running: !1,
paused: !1,
run: z.run.bind(t),
start: z.start.bind(t),
stop: z.stop.bind(t),
pause: z.pause.bind(t),
onVisibilityChange: function () {
"hidden" === document.visibilityState &&
t.autoplay.running &&
t.autoplay.pause(),
"visible" === document.visibilityState &&
t.autoplay.paused &&
(t.autoplay.run(), (t.autoplay.paused = !1));
},
onTransitionEnd: function (e) {
t &&
!t.destroyed &&
t.$wrapperEl &&
e.target === this &&
(t.$wrapperEl[0].removeEventListener(
"transitionend",
t.autoplay.onTransitionEnd
),
t.$wrapperEl[0].removeEventListener(
"webkitTransitionEnd",
t.autoplay.onTransitionEnd
),
(t.autoplay.paused = !1),
t.autoplay.running
? t.autoplay.run()
: t.autoplay.stop());
},
},
});
},
on: {
init: function () {
this.params.autoplay.enabled &&
(this.autoplay.start(),
document.addEventListener(
"visibilitychange",
this.autoplay.onVisibilityChange
));
},
beforeTransitionStart: function (e, t) {
this.autoplay.running &&
(t || !this.params.autoplay.disableOnInteraction
? this.autoplay.pause(e)
: this.autoplay.stop());
},
sliderFirstMove: function () {
this.autoplay.running &&
(this.params.autoplay.disableOnInteraction
? this.autoplay.stop()
: this.autoplay.pause());
},
touchEnd: function () {
this.params.cssMode &&
this.autoplay.paused &&
!this.params.autoplay.disableOnInteraction &&
this.autoplay.run();
},
destroy: function () {
this.autoplay.running && this.autoplay.stop(),
document.removeEventListener(
"visibilitychange",
this.autoplay.onVisibilityChange
);
},
},
},
{
name: "effect-fade",
params: { fadeEffect: { crossFade: !1 } },
create: function () {
j.extend(this, {
fadeEffect: {
setTranslate: te.setTranslate.bind(this),
setTransition: te.setTransition.bind(this),
},
});
},
on: {
beforeInit: function () {
var e;
"fade" === this.params.effect &&
(this.classNames.push(
this.params.containerModifierClass + "fade"
),
j.extend(
this.params,
(e = {
slidesPerView: 1,
slidesPerColumn: 1,
slidesPerGroup: 1,
watchSlidesProgress: !0,
spaceBetween: 0,
virtualTranslate: !0,
})
),
j.extend(this.originalParams, e));
},
setTranslate: function () {
"fade" === this.params.effect && this.fadeEffect.setTranslate();
},
setTransition: function (e) {
"fade" === this.params.effect &&
this.fadeEffect.setTransition(e);
},
},
},
{
name: "effect-cube",
params: {
cubeEffect: {
slideShadows: !0,
shadow: !0,
shadowOffset: 20,
shadowScale: 0.94,
},
},
create: function () {
j.extend(this, {
cubeEffect: {
setTranslate: ie.setTranslate.bind(this),
setTransition: ie.setTransition.bind(this),
},
});
},
on: {
beforeInit: function () {
var e;
"cube" === this.params.effect &&
(this.classNames.push(
this.params.containerModifierClass + "cube"
),
this.classNames.push(
this.params.containerModifierClass + "3d"
),
j.extend(
this.params,
(e = {
slidesPerView: 1,
slidesPerColumn: 1,
slidesPerGroup: 1,
watchSlidesProgress: !0,
resistanceRatio: 0,
spaceBetween: 0,
centeredSlides: !1,
virtualTranslate: !0,
})
),
j.extend(this.originalParams, e));
},
setTranslate: function () {
"cube" === this.params.effect && this.cubeEffect.setTranslate();
},
setTransition: function (e) {
"cube" === this.params.effect &&
this.cubeEffect.setTransition(e);
},
},
},
{
name: "effect-flip",
params: { flipEffect: { slideShadows: !0, limitRotation: !0 } },
create: function () {
j.extend(this, {
flipEffect: {
setTranslate: se.setTranslate.bind(this),
setTransition: se.setTransition.bind(this),
},
});
},
on: {
beforeInit: function () {
var e;
"flip" === this.params.effect &&
(this.classNames.push(
this.params.containerModifierClass + "flip"
),
this.classNames.push(
this.params.containerModifierClass + "3d"
),
j.extend(
this.params,
(e = {
slidesPerView: 1,
slidesPerColumn: 1,
slidesPerGroup: 1,
watchSlidesProgress: !0,
spaceBetween: 0,
virtualTranslate: !0,
})
),
j.extend(this.originalParams, e));
},
setTranslate: function () {
"flip" === this.params.effect && this.flipEffect.setTranslate();
},
setTransition: function (e) {
"flip" === this.params.effect &&
this.flipEffect.setTransition(e);
},
},
},
{
name: "effect-coverflow",
params: {
coverflowEffect: {
rotate: 50,
stretch: 0,
depth: 100,
modifier: 1,
slideShadows: !0,
},
},
create: function () {
j.extend(this, {
coverflowEffect: {
setTranslate: ae.setTranslate.bind(this),
setTransition: ae.setTransition.bind(this),
},
});
},
on: {
beforeInit: function () {
"coverflow" === this.params.effect &&
(this.classNames.push(
this.params.containerModifierClass + "coverflow"
),
this.classNames.push(
this.params.containerModifierClass + "3d"
),
(this.params.watchSlidesProgress = !0),
(this.originalParams.watchSlidesProgress = !0));
},
setTranslate: function () {
"coverflow" === this.params.effect &&
this.coverflowEffect.setTranslate();
},
setTransition: function (e) {
"coverflow" === this.params.effect &&
this.coverflowEffect.setTransition(e);
},
},
},
{
name: "thumbs",
params: {
thumbs: {
multipleActiveThumbs: !0,
swiper: null,
slideThumbActiveClass: "swiper-slide-thumb-active",
thumbsContainerClass: "swiper-container-thumbs",
},
},
create: function () {
j.extend(this, {
thumbs: {
swiper: null,
init: ne.init.bind(this),
update: ne.update.bind(this),
onThumbClick: ne.onThumbClick.bind(this),
},
});
},
on: {
beforeInit: function () {
var e = this.params.thumbs;
e && e.swiper && (this.thumbs.init(), this.thumbs.update(!0));
},
slideChange: function () {
this.thumbs.swiper && this.thumbs.update();
},
update: function () {
this.thumbs.swiper && this.thumbs.update();
},
resize: function () {
this.thumbs.swiper && this.thumbs.update();
},
observerUpdate: function () {
this.thumbs.swiper && this.thumbs.update();
},
setTransition: function (e) {
var t = this.thumbs.swiper;
t && t.setTransition(e);
},
beforeDestroy: function () {
var e = this.thumbs.swiper;
e && this.thumbs.swiperCreated && e && e.destroy();
},
},
},
];
return (
void 0 === u.use &&
((u.use = u.Class.use), (u.installModule = u.Class.installModule)),
u.use(D),
u
);
});
const ANIUTIL = {
scrollController: function () {
let i = {},
e = navigator.userAgent.toLowerCase(),
s = -1 < e.indexOf("mac os"),
a =
document.scrollingElement ||
document.documentElement ||
document.body.parentNode ||
document.body,
n = s ? 60 : 120,
r,
o,
l,
d,
h =
a === document.body && document.documentElement
? document.documentElement
: a,
t = !1,
c = null;
const p = {
wheel: function () {
("Netscape" == navigator.appName &&
-1 != navigator.userAgent.search("Trident")) ||
-1 != e.indexOf("msie")
? document.documentElement.addEventListener(
"mousewheel",
u.scrollEvent,
{ passive: !1 }
)
: document.documentElement.addEventListener(
"wheel",
u.scrollEvent,
{ passive: !1 }
);
},
scroll: function () {
window.addEventListener("scroll", function () {
"hidden" == document.documentElement.style.overflow ||
"hidden" == document.body.style.overflow ||
t ||
(l = a.scrollTop);
});
},
},
u = {
scrollEvent: function (e) {
var t;
"hidden" != document.documentElement.style.overflow &&
"hidden" != document.body.style.overflow &&
(e.preventDefault(),
(t = document.body.getAttribute("data-scroll-speed")),
(e = u.normalizeWheelDelta(e)),
(t = i.currDelta && t ? t : t || r ? r : 120),
(l += -e * t),
(d = Math.max(
0,
Math.min(l, a.scrollHeight - h.clientHeight)
)),
u.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 = d - a.scrollTop,
e =
Math.ceil(a.scrollTop + e) <= 0
? 0
: l > d
? d
: Math.ceil(a.scrollTop + e);
(t = !0),
TweenMax.to(a, o, {
ease: "circ.out",
scrollTop: e,
onComplete: function () {
clearTimeout(c),
(c = null),
(c = setTimeout(function () {
(t = !1), (l = a.scrollTop);
}, 500));
},
}),
l <= 0 ? (l = 0) : l >= d && (l = d);
},
};
return {
init: function (e) {
var t;
return (
(t = e),
(r = t.speed ? (s ? t.speed / 2 : t.speed) : n),
(o = t.duration || 0.6),
(l = a.scrollTop),
p.wheel(),
p.scroll(),
(this.opt = e)
);
},
destroy: function (e) {
document.documentElement.removeEventListener(
"mousewheel",
u.scrollEvent
),
document.documentElement.removeEventListener(
"wheel",
u.scrollEvent
),
e && (i = {});
},
};
},
},
UTILS =
((window.BUDS = window.BUDS || {}),
(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: (function () {
let e = navigator.appVersion.match(/(mac|win|linux)/i);
(e = e ? e[1].toLowerCase() : ""),
document.documentElement.classList.add(e);
})(),
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);
},
isObject: function (e) {
return (
"object" == typeof e &&
null !== e &&
e.constructor &&
e.constructor === Object
);
},
def: function () {
let t = [],
e = arguments.length;
for (; e--; ) t[e] = arguments[e];
var i = Object(t[0]);
for (let e = 1; e < t.length; e += 1) {
var s = t[e];
if (null != s) {
var a = Object.keys(Object(s));
for (let e = 0, t = a.length; e < t; e += 1) {
var n = a[e],
r = Object.getOwnPropertyDescriptor(s, n);
void 0 !== r &&
r.enumerable &&
(this.isObject(i[n]) && this.isObject(s[n])
? this.def(i[n], s[n])
: !this.isObject(i[n]) && this.isObject(s[n])
? ((i[n] = {}), this.def(i[n], s[n]))
: (i[n] = s[n]));
}
}
}
return i;
},
convertArray: function (e) {
return Array.prototype.slice.call(e);
},
getOffset: function (e) {
return {
top: e.getBoundingClientRect().top + window.pageYOffset,
bottom: e.getBoundingClientRect().bottom + window.pageYOffset,
};
},
getScroll: function () {
var e = window.pageYOffset;
return { top: e, bottom: e + window.innerHeight };
},
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;
},
getHeight: function (e) {
if (e) {
var t = window.getComputedStyle(e),
i = t.display,
t = parseInt(t.maxHeight);
const s = 0;
return "none" != i && 0 != t
? 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);
}
return 0;
},
isRTL: function () {
return document.documentElement.classList.contains("rtl");
},
checkRegion: function () {
var t = document.getElementsByTagName("meta");
let i = "";
for (let e = 0; e < t.length; e++)
if ("sitecode" == t[e].getAttribute("name"))
return (i = t[e].getAttribute("content"));
if ("" == i)
return -1 < document.location.pathname.indexOf("global")
? "global"
: "jp";
},
isLowNetwork: function () {
var e =
UTILS.getCookie("___GALAXY_SPEED") ||
UTILS.getCookie("__COM_SPEED");
return null != e && ("L" == e || ("H" != e && void 0));
},
getNavHeight: function () {
let e = 0;
var t,
i,
s =
document.querySelector(".pd-g-header-navigation") ||
document.querySelector("#subnav") ||
document.querySelector(".sticky-menu") ||
document.querySelector(".pd-g-floating-nav");
return (e = s
? s.classList.contains("pd-g-header-navigation")
? ((i = (t = s.querySelector(
".pd-header-navigation"
)).querySelector(".pd-header-navigation__menu-wrap")),
t.clientHeight + i.clientHeight)
: s.clientHeight
: e);
},
isBrokenFixed: function () {
var e = window.innerWidth,
t = window.innerHeight;
const i = !1;
return (
document.documentElement.classList.remove("is-broken-fixed"),
(1440 <= e && t <= 540) ||
(e <= 810 && t / e < 0.5277) ||
t < UTILS.MIN_VIEW_HEIGHT
? (document.documentElement.classList.add("is-broken-fixed"),
(i = !0))
: document.documentElement.classList.remove(
"is-broken-fixed"
),
i
);
},
isTouchDevice:
((s =
"ontouchstart" in window ||
(window.DocumentTouch &&
document instanceof window.DocumentTouch))
? document.documentElement.classList.add("isTouchDevice")
: document.documentElement.classList.add("isNotTouchDevice"),
s),
isIEorEdge: (function () {
let e;
var 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;
})());
(BUDS.UTILS = UTILS),
(function () {
"use strict";
window.BUDS = window.BUDS || {};
const p = BUDS.UTILS;
BUDS.ImageLoader = class {
constructor(e = container, t) {
t = {
el: e,
lazyClass: ".js-img-src",
lazyCompleteClass: "load-complete",
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.events = {
load: this.onLoadHandler.bind(this),
resize: this.onResizeHandler.bind(this),
scroll: this.lazyEvent.bind(this),
}),
(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() {
let t = [];
var e = this.el.children;
Array.from(e).forEach((e) => {
e.classList.contains("is-feature-hide") ||
((e = e.querySelectorAll(this.opts.lazyClass)), t.push(...e));
}),
(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.events.load),
window.addEventListener("scroll", this.events.scroll),
this.responsiveCheck &&
window.addEventListener("resize", this.events.resize);
}
onLoadHandler() {
this.events.resize(),
this.events.scroll(),
setTimeout(() => {
this.responsiveHandler(), this.lazyEvent();
}, 300),
window.removeEventListener("load", this.events.load);
}
onResizeHandler() {
clearTimeout(this.opts.resizeStart),
(this.opts.resizeStart = setTimeout(() => {
this.responsiveHandler(), this.lazyEvent();
}, 150));
}
lazyEvent() {
this.setLazyImage(),
this.lazyLength === this.lazyCompleteLength &&
window.removeEventListener("scroll", this.events.scroll);
}
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) {
if (i)
for (let t = 0; t < i.length; t++) {
var s = i[t];
let e = i[t].getAttribute(this.targetAttr);
(e = e || this.findImageHandler(s)),
void 0 === window.GALAXY &&
!window.GALAXY &&
(-1 < e.indexOf(".jpg") || -1 < e.indexOf(".png")) &&
(e += "?imbypass=true"),
i[t].classList.contains(this.opts.lazyCompleteClass) ||
(i[t].setAttribute("src", e),
i[t].classList.add(this.opts.lazyCompleteClass));
}
else
for (let t = 0; t < this.responsiveLength; t++) {
var a = this.responsiveImages[t];
let e = a.getAttribute(this.targetAttr);
(e = e || this.findImageHandler(a)),
void 0 === window.GALAXY &&
!window.GALAXY &&
(-1 < e.indexOf(".jpg") || -1 < e.indexOf(".png")) &&
(e += "?imbypass=true"),
a.classList.contains(this.opts.lazyCompleteClass) &&
a.setAttribute("src", e);
}
}
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 d = 0; d < this.lazyLength; d++) {
let t = this.lazyImages[d],
e = this.windowHeight * this.opts.visiblePoint,
i = p.getScroll.call(this).top - e,
s = p.getScroll.call(this).bottom + e,
a = p.getOffset.call(this, t).top,
n = p.getOffset.call(this, t).bottom,
r = this.opts.lazyClass.split("."),
o = r[r.length - 1],
l;
var h, c;
if (
("none" === window.getComputedStyle(t).display
? null != (h = t.parentNode).offsetParent &&
((l = h.offsetParent),
(a = p.getOffset.call(this, h).top),
(n = p.getOffset.call(this, h).bottom))
: (l = t.offsetParent),
((s > a && i <= a) ||
(i < n && s > n) ||
(i < a && s > n) ||
(i > a && s < n)) &&
null != l)
) {
let e = t.getAttribute(this.targetAttr);
(e = e || this.findImageHandler(t)),
void 0 === window.GALAXY &&
!window.GALAXY &&
(-1 < e.indexOf(".jpg") || -1 < e.indexOf(".png")) &&
(e += "?imbypass=true"),
t.classList.contains(this.opts.lazyCompleteClass) ||
(t.setAttribute("src", e),
(c = () => {
1 == this.opts.lazyClass.split(" ").length &&
t.classList.remove(o),
this.checkCompleteImage(),
t.removeEventListener("load", c);
}),
t.addEventListener("load", c),
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);
}
};
})(),
(function () {
"use strict";
window.BUDS = window.BUDS || {};
const e = BUDS.UTILS,
t = e.RESPONSIVE;
BUDS.VideoLoader = class {
constructor(e = container, t) {
t = {
el: e,
lazyClass: t.lazyClass || ".js-video-src",
responsiveClass: t.responsiveClass || ".js-res-video",
imageLazyCompleteClass: "load-complete",
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.prevSrcArray = []),
(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") && !e.closest(".is-feature-hide"))
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 t = this.responsiveVideos[e],
i = t.querySelector("video"),
s = t.getAttribute(this.targetAttr);
t.classList.contains(this.classes.loaded) &&
t.isVideoInit &&
(i.querySelectorAll("source").forEach((e) => {
var t = e.getAttribute("type");
-1 < t.indexOf("webm") &&
(e.src =
s +
(".webm" +
(void 0 !== window.GALAXY || window.GALAXY
? ""
: "?imbypass=true"))),
-1 < t.indexOf("mp4") &&
(e.src =
s +
(".mp4" +
(void 0 !== window.GALAXY || window.GALAXY
? ""
: "?imbypass=true")));
}),
(i.isCanplayThrough = !1),
i.load(),
i.addEventListener(
"canplaythrough",
() => {
window.setTimeout(() => {
(i.isCanplayThrough = !0),
t.classList.add(this.classes.loaded);
}, 500),
this.checkCompleteVideo();
},
{ once: !0 }
));
}
}
setLazyVideo() {
for (let e = 0; e < this.lazyLength; e++) {
var t = window.pageYOffset,
i = t + window.innerHeight,
s = this.lazyVideos[e],
a = s.getBoundingClientRect(),
n = t + a.top,
a = t + a.bottom;
i >
n -
window.innerHeight *
(0 != window.pageYOffset ? this.opts.visiblePoint : 0) &&
t <
a +
window.innerHeight *
(0 != window.pageYOffset ? this.opts.visiblePoint : 0) &&
!s.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"),
s = t.getAttribute(this.targetAttr);
var a = this.opts.lazyClass.split(".");
const n = a[a.length - 1];
a = s;
const r = () => {
this.checkCompleteVideo(),
this.videoCallStack.splice(0, 1),
0 < this.videoCallStack.length && this.setVideoSrc();
};
var o = () => {
window.setTimeout(() => {
(i.isCanplayThrough = !0), t.classList.add(this.classes.loaded);
}, 500),
1 == this.opts.lazyClass.split(" ").length &&
t.classList.remove(n),
r();
};
this.prevSrcArray[e] !== a &&
(i.querySelectorAll("source").forEach((e) => {
var t = e.getAttribute("type");
-1 < t.indexOf("webm") &&
(e.src =
s +
(".webm" +
(void 0 !== window.GALAXY || window.GALAXY
? ""
: "?imbypass=true"))),
-1 < t.indexOf("mp4") &&
(e.src =
s +
(".mp4" +
(void 0 !== window.GALAXY || window.GALAXY
? ""
: "?imbypass=true")));
}),
(i.isCanplayThrough = !1),
i.load(),
i.addEventListener("canplaythrough", o, { once: !0 }),
i.addEventListener(
"error",
() => {
window
.fetch(
s +
(".webm" +
(void 0 !== window.GALAXY || window.GALAXY
? ""
: "?imbypass=true")),
{ mode: "no-cors" }
)
.then((e) => {
if (404 === e.status)
return fetch(
s +
(".mp4" +
(void 0 !== window.GALAXY || window.GALAXY
? ""
: "?imbypass=true")),
{ mode: "no-cors" }
);
})
.then((e) => {
404 === e.status && r();
})
.catch(() => {
r();
});
},
!0
),
(t.isVideoInit = !0),
(this.prevSrcArray[e] = a));
}
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.BUDS = window.BUDS || {};
const d = BUDS.UTILS,
e = d.RESPONSIVE;
BUDS.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",
playOffset: 0.5,
playType: "oneWay",
visiblePoint: t.visiblePoint || 0,
classes: {
loaded: "loaded",
ended: "ended",
paused: "paused",
playing: "playing",
isPaused: "is-paused",
},
resizeStart: null,
on: {
updateController: null,
updatePlayState: null,
updateTime: null,
},
};
(this.opts = d.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);
}
getCurrentDevice() {
(this.winWidth = d.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);
}
bindEvents() {
window.addEventListener("resize", this.onResizeHandler.bind(this)),
window.addEventListener(
"scroll",
this.onScrollHandler.bind(this)
),
this.video.addEventListener("play", this.onVideoPlay.bind(this)),
this.video.addEventListener(
"pause",
this.onVideoPause.bind(this)
),
this.video.addEventListener(
"ended",
this.onVideoEnded.bind(this)
),
this.video.addEventListener(
"canplaythrough",
this.onCanplayThrough.bind(this),
{ once: !0 }
),
this.video.addEventListener(
"timeupdate",
this.onTimeUpdate.bind(this)
),
this.useController &&
this.videoController.addEventListener(
"click",
this.onClickController.bind(this)
);
}
onChange(e) {
if (e === this.videoElement) {
e =
"mobile" !== this.currentDevice
? "data-media-pc"
: "data-media-mo";
const i = this.videoElement.getAttribute(e);
e = i;
this.prevVideoSrc !== e &&
((this.videoElement.playState = !1),
this.video.querySelectorAll("source").forEach((e) => {
var 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",
() => {
d.isLowNetwork() || this.onPlay();
},
{ once: !0 }
)),
(this.prevVideoSrc = e);
}
}
onLoad(e) {
if (e === this.videoElement) {
e =
"mobile" !== this.currentDevice
? "data-media-pc"
: "data-media-mo";
const i = this.videoElement.getAttribute(e);
(this.videoElement.playState = !1),
this.video.querySelectorAll("source").forEach((e) => {
var 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.isCanplayThrough = !1),
this.video.addEventListener(
"canplaythrough",
() => {
(this.video.isCanplayThrough = !0),
d.isLowNetwork() || this.onPlay();
},
{ once: !0 }
);
}
}
onPlay(e) {
var t = () => {
if (!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.remove(this.classes.ended),
this.videoElement.classList.remove(this.classes.paused);
const e = () => {
this.video.isCanplayThrough && 3 < this.video.readyState
? (cancelAnimationFrame(this.opts.videoFrame),
clearTimeout(this.opts.videoPlayTimeout),
(this.opts.videoPlayTimeout = setTimeout(() => {
this.video.play(),
this.updateController(),
this.outCallback("updatePlayState", !0),
this.videoElement.classList.remove(
this.classes.ended
),
this.videoElement.classList.remove(
this.classes.paused
),
this.videoElement.classList.add(this.classes.playing);
}, 250)))
: (this.opts.videoFrame = requestAnimationFrame(e));
};
(this.opts.videoFrame = requestAnimationFrame(e)),
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) {
this.videoElement.playState ||
(cancelAnimationFrame(this.opts.videoFrame),
clearTimeout(this.opts.videoPlayTimeout));
var t = () => {
this.video.pause(),
(this.video.currentTime = 0),
(this.videoElement.playState = !1),
this.autoPlay && (this.videoElement.autoPlayState = !1),
this.videoElement.classList.remove(this.classes.ended),
this.videoElement.classList.remove(this.classes.playing),
this.videoElement.classList.remove(this.classes.paused),
this.updateController();
};
(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);
}
onTimeUpdate() {
var e = {
el: this.videoElement,
duration: this.video.duration,
currentTime: this.video.currentTime,
playState: this.videoElement.playState,
controller: this.videoController,
};
this.outCallback("updateTime", e);
}
onClickController(e) {
e.preventDefault(),
this.videoElement.playState ? this.onPause() : this.onPlay();
}
onVideoPlay() {
(this.videoElement.playState = !0),
this.videoElement.classList.remove(this.classes.ended),
this.videoElement.classList.add(this.classes.playing),
this.videoElement.classList.remove(this.classes.paused),
this.updateController(),
this.outCallback("updatePlayState", !0);
}
onVideoPause() {
(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(),
this.outCallback("updatePlayState", !1);
}
onVideoEnded() {
(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(),
this.outCallback("updatePlayState", !1);
}
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),
this.outCallback("updatePlayState", this.videoElement.playState));
}
onScrollHandler() {
if (!this.videoElement.closest(".cm-layer")) {
var e = scrollY > this.lastScrollY ? "down" : "up",
t = d.getHeight(this.videoElement) * this.opts.playOffset,
i = d.getScroll().top,
s = d.getScroll().bottom,
a = d.getOffset(this.videoElement).top,
n = d.getOffset(this.videoElement).bottom;
const l =
this.videoElement.classList.contains(this.classes.playing) &&
this.videoElement.playState;
var r =
this.videoElement.classList.contains(this.classes.paused) &&
!this.videoElement.playState,
o =
this.videoElement.classList.contains(this.classes.ended) &&
!this.videoElement.playState;
if ("oneWay" === this.opts.playType)
if (a + t <= s && i <= n) {
const l = this.isCanplay || "down" == e;
!l ||
!this.autoPlay ||
this.videoElement.playState ||
this.videoElement.autoPlayState ||
d.isLowNetwork() ||
this.onPlay();
} else
s < a
? this.autoPlay &&
this.videoElement.autoPlayState &&
(l || r || o) &&
this.onReset()
: n < i &&
this.autoPlay &&
(this.videoElement.autoPlayState
? (l || r) && this.onEnded()
: this.videoElement.classList.add(this.classes.ended));
else
"reverse" === this.opts.playType &&
(a + t <= s && i <= n - t
? !this.autoPlay ||
this.videoElement.playState ||
this.videoElement.autoPlayState ||
d.isLowNetwork() ||
this.onPlay()
: (n < i || s < a) && this.autoPlay && this.onReset());
this.lastScrollY = scrollY;
}
}
onResponsiveChange() {
window.setTimeout(() => {
(this.isCanplay = !0),
this.onReset(),
this.onScrollHandler(),
(this.isCanplay = !1);
}, 100);
}
onResizeHandler() {
d.winSize().w !== this.winWidth &&
((this.winWidth = d.winSize().w),
null == this.opts.resizeStart &&
((this.opts.resizeStart = this.winWidth),
this.resizeAnimateFunc()),
window.clearTimeout(this.resizeEndTime),
(this.resizeEndTime = window.setTimeout(
this.resizeEndFunc.bind(this),
150
)));
}
resizeAnimateFunc() {
this.setLayout(),
(this.resizeRequestFrame = d.requestAFrame.call(
window,
this.resizeAnimateFunc.bind(this)
));
}
resizeEndFunc() {
(this.opts.resizeStart = null),
d.cancelAFrame.call(window, this.resizeRequestFrame);
}
setLayout() {
this.onScrollHandler(),
this.winWidth >= e.MOBILE.WIDTH
? (this.currentDevice = "desktop")
: (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";
window.BUDS = window.BUDS || {};
var e = (function () {
const h = {};
let e = !1,
t = null,
c = null;
const a = function () {
n(), r();
{
const e = document.querySelectorAll(".click_sup"),
t = document.querySelectorAll(
"li.common-bottom-disclaimer__list-item"
),
s = Array.from(t).map((e) => e.getAttribute("data-sup"));
Array.from(e).map((e) => {
var t,
i = e.getAttribute("data-sup-tag");
-1 < s.indexOf(i) && (e.innerText = s.indexOf(i) + 1),
-1 === s.indexOf(i) &&
((i = e.parentElement),
1 === (t = e.parentElement?.children.length ?? 0) &&
i.remove(),
1 < t) &&
(i.removeChild(e.nextSibling),
e.remove(),
3 === i.childNodes.length) &&
i.removeChild(i.childNodes[2]);
});
}
UTILS.isLowNetwork() &&
document.documentElement.classList.add("low_network"),
document.documentElement.classList.add("load"),
window.removeEventListener("load", a);
},
n = function () {
(e =
1024 <= window.innerWidth
? "desktop"
: 768 <= window.innerWidth && window.innerWidth < 1024
? "tablet"
: "mobile"),
clearTimeout(h.resizeTimeout),
(h.resizeTimeout = setTimeout(function () {
UTILS.isBrokenFixed();
}, 100)),
e != t &&
(document.documentElement.classList.add(e),
document.documentElement.classList.remove(t),
(t = e));
},
r = function () {
var t = window.pageYOffset,
i = t + window.innerHeight;
for (let e = 0; e < h.allClickable.length; e++) {
var s = h.allClickable[e],
a = t + s.getBoundingClientRect().top,
n = t + UTILS.getNavHeight();
n <= a && a <= i
? (s.isVisible = !0)
: (a < n || i < a) && (s.isVisible = !1);
}
},
s = function (e) {
e.preventDefault(), e.stopPropagation();
const t = this;
var i = parseFloat(this.innerText);
let s = document.querySelectorAll("#desc-section ol");
s.forEach((e) => {
"block" === window.getComputedStyle(e).display && (s = e);
});
var a = s.querySelectorAll("li");
const n = s.querySelectorAll("li")[i - 1],
r = n.querySelector("span"),
o = r.innerHTML;
var i = `${o}`,
i =
((r.innerHTML = i),
(c = e.currentTarget),
n.querySelectorAll("img.js-res-img:not(.load-complete)"));
0 < i.length && h.opts.updateImageLoader(i);
const l = function () {
p.call(t), r.removeEventListener("focusin", l);
},
d = function () {
(r.innerHTML = o),
r.removeAttribute("tabindex"),
r.removeEventListener("focusout", d);
};
e.currentTarget.closest(".cm-layer") &&
((i = e.currentTarget.closest(".cm-layer")),
$(i).trigger("closeLayer", !1)),
r.addEventListener("focusin", l),
r.addEventListener("focusout", d),
setTimeout(() => {
n.querySelector("a").focus();
}, 0),
a.forEach((e) => e.classList.remove("is-active")),
n.classList.add("is-active");
},
o = function (e) {
var e = e.target.closest("li"),
t = e.getAttribute("data-sup"),
i = document.querySelectorAll(".click_sup");
for (let e = 0; e < i.length; e++)
i[e].getAttribute("data-sup-tag") === t &&
(p.call(this), c.focus());
var s,
a = c.closest(".cm-layer");
a &&
((s = a.id),
(a = a.parentNode.querySelector(`[data-layer-target="#${s}"]`)),
c.innerText === t) &&
a.focus(),
e.classList.remove("is-active");
},
p = function (e) {
if (
void 0 !== e &&
void 0 !== e.sourceCapabilities &&
null === e.sourceCapabilities
)
e.preventDefault();
else if (
document.documentElement.classList.contains("ios") ||
!e ||
null != e.relatedTarget
) {
const s = this;
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))
);
},
l = function () {
this.isClicked = !0;
};
return {
init: function (e) {
(h.opts = { ...e }),
(h.resizeTimeout = null),
(h.supClicker = document.querySelectorAll("a.click_sup")),
(h.supTopBtn = document.querySelectorAll(
"button.click_disclaimer"
)),
(h.contents =
document.getElementById("contents") ||
document.getElementById("content")),
(h.allClickable = h.contents.querySelectorAll(
"a, button, input, select"
));
{
let e = 0;
for (
window.addEventListener("load", a),
window.addEventListener("resize", n),
window.addEventListener("scroll", r),
e = 0;
e < h.allClickable.length;
e++
) {
var t = h.allClickable[e];
(t.isClicked = !1),
(t.isVisible = !1),
t.addEventListener("focusin", p),
t.addEventListener("mousedown", l);
}
for (e = 0; e < h.supClicker.length; e++)
h.supClicker[e].addEventListener("click", s);
for (e = 0; e < h.supTopBtn.length; e++)
h.supTopBtn[e].addEventListener("click", o);
}
{
var i = document.documentElement.classList;
"global" === UTILS.checkRegion() ||
i.contains("mac") ||
i.contains("safari") ||
ANIUTIL.scrollController({ speed: 120, duration: 0.5 });
}
},
};
})();
window.BUDS.Disclaimer = e;
})(),
(function (e) {
e.TrapFocus = (function () {
"use strict";
var e,
f = void 0,
t = window,
i = t.document,
w = t.jQuery,
s = null,
a = t.BUDS.UTILS;
function n(e, t) {
if (!(this instanceof n)) return new n(e, t);
var i = {
obj: e,
prevStep: null,
isDestroy: false,
IgnoreUtilFocusChanges: false,
ariaAttr: {
hidden: "aria-hidden",
disabled: "aria-disabled",
modal: "aria-modal",
},
ariaNotHidden: (() => {
return t && t.ariaNotHidden ? t.ariaNotHidden : [];
})(),
classAttr: { clone: "trapfocus" },
elAttr: { tabIndex: "tabindex", role: "role" },
customEvent: ".TrapFocus" + new Date().getTime() + Math.random(),
};
this.opts = a.def(i, t || {});
if (!(this.obj = w(this.opts.obj)).length) return;
if (s != null) s.destroy();
s = this;
this.init();
}
return (
(n.prototype = {
init: function () {
this.initLayout();
this.buildAria();
this.bindEvents(true);
this.loadComponent();
this.obj.data("TrapFocus", this);
},
initLayout: function () {
var e = this.opts.ariaAttr;
var t = this.opts.elAttr;
this.obj.attr(e.modal, "true");
this.obj.attr(t.role, "dialog");
},
buildAria: function () {
var m = this.opts.ariaAttr;
var g = this.opts.elAttr;
var e = "head, script, noscript, link, style, meta";
var t =
this.opts.ariaNotHidden.length > 0
? `, ${this.opts.ariaNotHidden.join(",")}`
: "";
a.def(this, {
aria: {
notHidden: Array(e + t),
focusType: ["A", "BUTTON", "INPUT", "SELECT", "TEXTAREA"],
dataAttr: {
ariaHidden: "trapfocusariahidden",
ariaDisabled: "trapfocusariadisabled",
tabIndex: "trapfocustabindex",
role: "trapfocusrole",
},
destroy: w.proxy(function () {
var a = this.aria.dataAttr;
var n = this.aria.hiddenEls;
var s = this.aria.focusEls;
var r = this.aria.tabindexEls;
for (var e = 0, t = n.length; e < t; e++)
(function (e) {
var t = n.eq(e),
i = t.data(a.ariaHidden),
s = t.data(a.role);
if (i != f) {
t.attr(m.hidden, i);
t.removeData(a.ariaHidden);
} else t.removeAttr(m.hidden);
if (s != f) {
t.attr(g.role, s);
t.removeData(a.role);
} else t.removeAttr(g.role);
})(e);
for (var i = 0, o = s.length; i < o; i++)
(function (e) {
var t = s.eq(e),
i = t.data(a.ariaDisabled);
t.removeAttr(g.tabIndex);
if (i != f) {
t.attr(m.disabled, i);
t.removeData(a.ariaDisabled);
} else t.removeAttr(m.disabled);
})(i);
for (var l = 0, d = r.length; l < d; l++)
(function (e) {
var t = r.eq(e),
i = t.data(a.tabIndex);
if (i != f) {
t.attr(g.tabIndex, i);
t.removeData(a.tabIndex);
} else t.removeAttr(g.tabIndex);
})(l);
var h = document.getElementById("teconsent");
if (h) {
var c = h.querySelector("a");
if (c && c.getAttribute("tabindex") === "-1") {
c.setAttribute("tabindex", "0");
c.removeAttribute("aria-disabled");
}
}
}, this),
build: w.proxy(function () {
var i = this;
var e = this.aria.focusType;
var a = this.aria.dataAttr;
var s = this.obj.parents();
var n = this.obj
.siblings()
.not(i.aria.notHidden.join(","));
var r = w("");
var o = w("");
for (var t = 0, l = s.length; t < l; t++)
(function (e) {
var t = s.eq(e);
n = n.add(
t.siblings().not(i.aria.notHidden.join(","))
);
})(t);
r = r.add(n);
o = o.add(n);
this.obj.removeAttr(m.hidden);
for (var d = 0, h = n.length; d < h; d++)
(function (e) {
var t = n.eq(e),
i = t.attr(m.hidden),
s = t.attr(g.role);
if (i != f) t.data(a.ariaHidden, i);
if (s != f) t.data(a.role, s);
t.attr(m.hidden, "true");
t.attr(g.role, "none presentation");
})(d);
r = r.add(n.find(e.join(",").toLowerCase()));
for (var c = 0, p = r.length; c < p; c++)
(function (e) {
var t = r.eq(e),
i = t.attr(m.disabled);
if (i != f) t.data(a.ariaDisabled, i);
t.attr(m.disabled, "true");
setTimeout(() => {
t.attr(g.tabIndex, -1);
});
})(c);
o = o.add(n.find("[" + g.tabIndex + "]"));
for (var u = 0, v = o.length; u < v; u++)
(function (e) {
var t = o.eq(e),
i = t.attr(g.tabIndex);
if (i != f) t.data(a.tabIndex, i);
t.attr(g.tabIndex, -1);
})(u);
this.aria.hiddenEls = n;
this.aria.focusEls = r;
this.aria.tabindexEls = o;
}, this),
},
});
},
changeEvents: function (e) {
var t = [],
i = e.split(" ");
for (var s in i) t.push(i[s] + this.opts.customEvent);
return t.join(" ");
},
bindEvents: function (e) {
if (e)
w(i).on(
this.changeEvents("focusin"),
w.proxy(this.trapFocus, this)
);
else w(i).off(this.changeEvents("focusin"));
},
focusFirstDescendant: function (e) {
for (var t = 0; t < e.childNodes.length; t++) {
var i = e.childNodes[t];
if (this.attemptFocus(i) || this.focusFirstDescendant(i))
return true;
}
return false;
},
focusLastDescendant: function (e) {
for (var t = e.childNodes.length - 1; t >= 0; t--) {
var i = e.childNodes[t];
if (this.attemptFocus(i) || this.focusLastDescendant(i))
return true;
}
return false;
},
isFocusable: function (e) {
if (
e.tabIndex > 0 ||
(e.tabIndex === 0 && e.getAttribute("tabIndex") !== null)
)
return true;
if (e.disabled) return false;
switch (e.nodeName) {
case "A":
return !!e.href && e.rel != "ignore";
case "INPUT":
return e.type != "hidden" && e.type != "file";
case "BUTTON":
case "SELECT":
case "TEXTAREA":
case "VIDEO":
case "SOURCE":
case "IFRAME":
return true;
default:
return false;
}
},
attemptFocus: function (e) {
if (this.opts.isDestroy) return;
if (!this.isFocusable(e)) return false;
this.opts.IgnoreUtilFocusChanges = true;
try {
e.focus();
} catch (e) {}
this.opts.IgnoreUtilFocusChanges = false;
return document.activeElement === e;
},
trapFocus: function (e) {
if (this.opts.isDestroy) return;
if (this.opts.IgnoreUtilFocusChanges) return;
var t = document;
this.dynamicComponentFocus();
},
loadComponent: function () {
this.dynamicComponentFocus();
setTimeout(() => {
this.dynamicComponentFocus();
}, 3e3);
this.focusFirstDescendant(this.obj[0]);
this.lastFocus = document.activeElement;
this.aria.build();
},
dynamicComponentFocus: function () {
const o = this.opts.ariaAttr;
const l = this.opts.elAttr;
setTimeout(() => {
var e = document.getElementById("QSIFeedbackButton-btn");
var t = document.getElementById(
"QSIFeedbackButton-close-btn"
);
var i = document.getElementById("nebula_div_btn");
var s = document.getElementById("spr-live-chat-app");
var a = document.getElementById("teconsent");
if (e) {
var n = e.parentElement;
e.setAttribute(o.disabled, "true");
e.setAttribute(l.tabIndex, "-1");
n.setAttribute(o.disabled, "true");
n.setAttribute(o.hidden, "true");
n.setAttribute(l.tabIndex, "-1");
n.setAttribute(l.role, "none presentation");
}
if (i) {
var r = i.parentElement;
i.setAttribute(o.disabled, "true");
i.setAttribute(l.tabIndex, "0");
r.setAttribute(o.disabled, "true");
r.setAttribute(o.hidden, "true");
r.setAttribute(l.tabIndex, "-1");
r.setAttribute(l.role, "none presentation");
}
if (s) {
s.setAttribute(o.disabled, "true");
s.setAttribute(o.hidden, "true");
s.setAttribute(l.tabIndex, "-1");
s.setAttribute(l.role, "none presentation");
}
if (a && a.hasAttribute("aria-label"))
setTimeout(() => {
var e = a.querySelector("a");
e.setAttribute(l.tabIndex, "-1");
e.setAttribute(o.disabled, "true");
e.setAttribute(o.hidden, "true");
});
});
},
destroy: function () {
s = null;
this.opts.isDestroy = true;
var e = this.opts.ariaAttr;
var t = this.opts.elAttr;
this.bindEvents(false);
this.aria.destroy();
this.obj.removeAttr(e.modal);
},
}),
n
);
})();
})(window),
(function () {
"use strict";
window.BUDS = window.BUDS || {};
const r = BUDS.UTILS;
BUDS.SubNav = class {
constructor(e = container, t) {
var i = {
navItems: "ul li>a",
navDests: '[class*="js-nav-"]',
visSections: ".js-visible",
resizeStart: null,
classes: { isOn: "on" },
};
(this.opts = i),
(this.classes = i.classes),
(this.el = document.querySelector(e)),
this.init();
}
init() {
null !== this.el &&
(this.setElements(), this.initOpts(), this.bindEvents());
}
setElements() {
(this.navItems = r.convertArray(
this.el.querySelectorAll(this.opts.navItems)
)),
(this.navDests = document.querySelectorAll(this.opts.navDests)),
(this.visSections = r.convertArray(
document.querySelectorAll(this.opts.visSections)
));
}
initOpts() {
(this.visCount = -1),
this.visSections.forEach((e) => {
e.dataset.visIndex = e.classList.contains("js-count")
? ++this.visCount
: this.visCount;
}),
(this.winOffsetTop = window.pageYOffset);
}
bindEvents() {
this.onScrollHandler(),
window.addEventListener(
"resize",
this.onResizeHandler.bind(this)
),
window.addEventListener(
"scroll",
this.onScrollHandler.bind(this)
);
const i = window.location.hash;
this.navItems.forEach((e, t) => {
-1 < e.getAttribute("href").indexOf("#") &&
((e.dataset.navIndex = t),
e.addEventListener(
"click",
this.onNavItemClickEvent.bind(this)
)),
i &&
-1 < e.getAttribute("href").indexOf(i) &&
(e.parentNode.classList.remove(this.classes.isOn), e.click());
});
}
onNavItemClickEvent(t) {
t.preventDefault();
var t = t.target,
i = t.parentNode;
if (
!this.el.classList.contains("hold") &&
!i.classList.contains(this.classes.isOn)
) {
this.navItems.forEach((e) => {
e.parentNode.classList.remove(this.classes.isOn);
}),
i.classList.contains(this.classes.isOn) ||
i.classList.add(this.classes.isOn);
var s,
a,
n,
i = t.dataset.navIndex;
let e = 0;
"nav" === t.dataset.type
? ((s = (t = this.navDests[i]).getBoundingClientRect()),
(a = parseInt(window.getComputedStyle(t).paddingTop)),
(n =
(window.innerHeight - (s.height - a) + r.getNavHeight()) /
2),
(e = t.classList.contains("js-nav-center")
? this.winOffsetTop + s.top + a - n
: this.winOffsetTop + s.top - r.getNavHeight()) < 150 &&
(e = 0))
: ((t = this.visSections[i].dataset.rectTop),
(e = t) < 150 && (e = 0)),
this.el.classList.add("hold"),
GALAXY.setSmoothScrollTop(e, 1500, () => {
this.el.classList.contains("hold") &&
this.el.classList.remove("hold"),
GALAXY.header && GALAXY.header.resetSubNav();
});
}
}
onScrollHandler() {
this.winOffsetTop = window.pageYOffset;
var a = (window.innerHeight + r.getNavHeight()) / 2;
this.visSections.forEach((e) => {
var i,
t,
s = e.getBoundingClientRect(),
s =
e.dataset.rectTop && e.dataset.rectBottom
? ((t = JSON.parse(e.dataset.rectTop)),
JSON.parse(e.dataset.rectBottom))
: ((t = this.winOffsetTop + s.top),
this.winOffsetTop + s.bottom);
!this.el.classList.contains("hold") &&
this.winOffsetTop + a >= t &&
this.winOffsetTop + a <= s &&
((i = e.dataset.visIndex),
this.navItems.forEach((e, t) => {
t != i &&
e.parentNode.classList.contains(this.classes.isOn) &&
e.parentNode.classList.remove(this.classes.isOn);
}),
(t = this.navItems[i].parentNode).classList.contains(
this.classes.isOn
) ||
(t.classList.add(this.classes.isOn),
!this.el.classList.contains("hold") &&
t.classList.contains(this.classes.isOn) &&
GALAXY.header &&
GALAXY.header.resetSubNav()));
});
}
onResizeHandler() {
r.winSize().w !== this.winWidth &&
((this.winWidth = r.winSize().w),
null == this.opts.resizeStart &&
((this.opts.resizeStart = this.winWidth),
this.resizeAnimateFunc()),
window.clearTimeout(this.resizeEndTime),
(this.resizeEndTime = window.setTimeout(
this.resizeEndFunc.bind(this),
150
)));
}
resizeAnimateFunc() {
this.onScrollHandler(),
(this.resizeRequestFrame = r.requestAFrame.call(
window,
this.resizeAnimateFunc.bind(this)
));
}
resizeEndFunc() {
(this.opts.resizeStart = null),
r.cancelAFrame.call(window, this.resizeRequestFrame);
}
};
})(),
(function () {
"use strict";
window.BUDS = window.BUDS || {};
BUDS.ImageTab = class {
constructor(e, t = {}) {
(this.opts = { currentIndex: 0, ...t }),
(this.selector = {
section: e,
tabList: ".common__tab-list",
tab: ".common__tab-cta",
tabPanel: ".common__tab-panel",
...t.selector,
}),
(this.class = {
isActive: "is-active",
featureHide: "is-feature-hide",
...t.class,
}),
(this.el = {
section: document.querySelector(this.selector.section) || null,
}),
(this.events = { click: this.onClickHandler.bind(this) }),
this.init();
}
init() {
null === this.el.section ||
this.el.section.classList.contains(this.class.featureHide) ||
(this.setElements(), this.bindEvents());
}
setElements() {
(this.el.tabs = this.el.section.querySelectorAll(
this.selector.tab
)),
(this.el.tabPanels = this.el.section.querySelectorAll(
this.selector.tabPanel
)),
Array.from(this.el.tabs).forEach((e, t) => {
this.opts.currentIndex === t && this.setActive(e, t),
this.opts.currentIndex !== t && this.setInactive(e, t);
});
}
bindEvents() {
Array.from(this.el.tabs).forEach((e, t) => {
e.addEventListener("click", (e) => this.events.click(e, t));
});
}
onClickHandler(e, t) {
(this.opts.currentIndex = t),
Array.from(this.el.tabs).forEach((e, t) => {
this.opts.currentIndex === t && this.setActive(e, t),
this.opts.currentIndex !== t && this.setInactive(e, t);
});
}
setActive(e, t) {
this.addClass(e),
e.setAttribute("title", LOCAL_VARI.selected),
this.addClass(this.el.tabPanels[t]),
this.el.tabPanels[t].setAttribute("aria-hidden", !1),
this.el.tabPanels[t].removeAttribute("tabindex"),
(this.el.tabPanels[t].style.zIndex = 1);
}
setInactive(e, t) {
this.el.tabPanels[t].classList.contains(this.class.isActive) &&
(this.removeClass(e),
e.removeAttribute("title"),
this.el.tabPanels[t].setAttribute("aria-hidden", !0),
this.el.tabPanels[t].setAttribute("tabindex", -1),
(this.el.tabPanels[t].style.zIndex = ""),
setTimeout(() => {
this.opts.currentIndex !== t &&
(this.removeClass(this.el.tabPanels[t]),
(this.el.tabPanels[t].style.zIndex = -1));
}, 300));
}
addClass(e) {
e.classList.add(this.class.isActive);
}
removeClass(e) {
e.classList.remove(this.class.isActive);
}
};
})(),
(function () {
"use strict";
window.BUDS = window.BUDS || {};
BUDS.UTILS;
BUDS.CommonVideo = class {
constructor(e, t) {
(this.opts = {
useController: !0,
controlTagging: { play: "movi-play", pause: "movi-pause" },
...t,
}),
(this.selector = {
section: e,
videoElement: ".video__container",
}),
(this.class = { featureHide: "is-feature-hide" }),
(this.el = {
section: document.querySelector(this.selector.section) || null,
videoElement: null,
videoPlayer: null,
}),
(this.events = {}),
this.init();
}
init() {
null === this.el.section ||
this.el.section.classList.contains(this.class.featureHide) ||
(this.setElements(), this.buildVideoPlayer());
}
setElements() {
this.el.videoElement = this.el.section.querySelector(
this.selector.videoElement
);
}
buildVideoPlayer() {
(this.el.videoPlayer = {
instance: null,
build: () => {
null === this.el.videoPlayer.instance &&
(this.el.videoPlayer.instance = new BUDS.VideoPlayer(
this.el.videoElement,
{
sectionElement: this.selector.section,
playType: "reverse",
on: {
updateController: (e) => {
var t, i;
this.opts.useController &&
((t = e.playState ? "pause" : "play"),
(e = e.el),
(i = this.opts.controlTagging),
e) &&
(e.setAttribute("data-omni", "" + i[t]),
e.setAttribute("ga-la", "" + i[t]),
(i = e.querySelector(".blind"))) &&
("undefined" != typeof LOCAL_VARI &&
LOCAL_VARI &&
void 0 !== LOCAL_VARI[t] &&
LOCAL_VARI[t]
? (i.innerText = LOCAL_VARI[t])
: (i.innerText = t));
},
},
}
));
},
}),
this.el.videoPlayer.build();
}
};
})(),
(function () {
"use strict";
window.BUDS = window.BUDS || {};
const r = BUDS.UTILS;
BUDS.ScrollToggle = class {
constructor(e, t) {
(this.opts = { direction: "reverse", motionStart: 0, ...t }),
(this.selector = {
section: e,
wrap: "#wrap",
target: ".charging__content",
...t.selector,
}),
(this.class = {
scrollEffect: "scroll-effect",
featureHide: "is-feature-hide",
...t.class,
}),
(this.el = {
wrap: document.querySelector(this.selector.wrap) || null,
section: document.querySelector(this.selector.section) || null,
}),
(this.events = {
load: this.onLoadHandler.bind(this),
scroll: this.onScrollHandler.bind(this),
}),
this.init();
}
init() {
null === this.el.section ||
this.el.section.classList.contains(this.class.featureHide) ||
(this.setElements(), this.bindEvents());
}
setElements() {
this.el.target = this.el.section.querySelector(
this.selector.target
);
}
bindEvents() {
window.addEventListener("load", this.events.load),
window.addEventListener("scroll", this.events.scroll);
}
onLoadHandler() {
this.events.scroll(),
window.removeEventListener("load", this.events.load);
}
onScrollHandler() {
var e = r.getNavHeight(),
t = scrollY + e,
i = scrollY + window.innerHeight,
e = (window.innerHeight - e) * this.opts.motionStart,
s = t + e,
e = scrollY + window.innerHeight - e,
a = this.el.target.getBoundingClientRect(),
n = scrollY + a.top,
a = scrollY + a.bottom;
(0 != this.opts.direction && "oneWay" != this.opts.direction) ||
((n <= e && s <= a) || (s <= a && n <= e)
? this.el.target.classList.add(this.class.scrollEffect)
: i < n &&
this.el.target.classList.remove(this.class.scrollEffect)),
"reverse" == this.opts.direction &&
((n <= e && s <= a) || (s <= a && n <= e)
? this.el.target.classList.add(this.class.scrollEffect)
: (i < n || a < t) &&
this.el.target.classList.remove(this.class.scrollEffect));
}
};
})(),
(function () {
"use strict";
window.BUDS = window.BUDS || {};
const o = BUDS.UTILS;
BUDS.HighlightCarousel = class {
constructor(e, t = {}) {
(this.opts = {
currDevice: null,
prevDevice: null,
resizeTimeout: null,
clickTimeout: null,
focusMoveTimeout: null,
tagging: {
pagination: {
"data-omni-type": "microsite_pcontentinter",
"data-omni":
"gbuds:highlights:catch-the-highlights^design:sldr-dots:#",
"ga-ca": "indication",
"ga-ac": "carousel",
"ga-la":
"gbuds:highlights:catch-the-highlights^design:sldr-dots:#",
},
navigation: {
"data-omni-type": "microsite_pcontentinter",
"data-omni":
"gbuds:highlights:catch-the-highlights:sldr-arrow:",
"ga-ca": "indication",
"ga-ac": "carousel",
"ga-la": "gbuds:highlights:catch-the-highlights:sldr-arrow:",
},
},
taggingIdList: ["design", "sound", "anc", "galaxy-ai"],
prevIndex: -1,
activeIndex: 0,
videoCanPlay: !0,
videoAnimationFrame: null,
videoCircleSize: 266,
isFocusPrevArrow: !1,
isFocusNextArrow: !1,
isCarouselAutoPlay: !0,
isVideoAutoPlay: !0,
prevState: !0,
startX: 0,
endX: 0,
isPointerMoving: !1,
...t,
}),
(this.selector = {
section: e,
frontSlider: ".front-slider",
backSlider: ".background-slider",
swiper: ".swiper",
swiperSlide: ".swiper-slide",
swiperSlideTitle: ".wearable-common__carousel-tit",
swiperPrevArrow: ".wearable-common__carousel-prev",
swiperNextArrow: ".wearable-common__carousel-next",
swiperPagination: ".wearable-common__carousel-pagination",
swiperScrollbar: ".swiper-scrollbar",
videoContainer: ".video__container",
videoController: ".video__controller",
blindController: ".js-blind-controller",
}),
(this.class = { featureHide: "is-feature-hide" }),
(this.el = {
section: document.querySelector(this.selector.section) || null,
frontSlider: null,
frontSwiper: null,
frontSwiperEl: null,
frontSwiperSlides: null,
backSlider: null,
backSwiper: null,
backSwiperEl: null,
swiperPrevArrow: null,
swiperNextArrow: null,
swiperPagination: null,
swiperScrollbar: null,
videoContainers: null,
videoControllers: null,
blindController: null,
}),
(this.events = {
load: this.onLoadHandler.bind(this),
scroll: this.onScrollHandler.bind(this),
resize: this.onResizeHandler.bind(this),
prevArrow: {
click: this.onClickPrevArrow.bind(this),
keyDown: this.onKeyDownPrevArrow.bind(this),
focusin: this.onFocusinPrevArrow.bind(this),
focusout: this.onFocusoutPrevArrow.bind(this),
},
nextArrow: {
click: this.onClickNextArrow.bind(this),
keyDown: this.onKeyDownNextArrow.bind(this),
focusin: this.onFocusinNextArrow.bind(this),
focusout: this.onFocusoutNextArrow.bind(this),
},
controller: { click: this.onClickControllButton.bind(this) },
blindController: {
click: this.onClickBlindController.bind(this),
},
click: {
down: this.onClickDownHandler.bind(this),
up: this.onClickUpHandler.bind(this),
},
}),
this.init();
}
init() {
null === this.el.section ||
this.el.section.classList.contains(this.class.featureHide) ||
(this.setElements(),
this.setVideoPlayer(),
this.setSwiper(),
this.bindEvents());
}
setElements() {
(this.el.frontSlider = this.el.section.querySelector(
this.selector.frontSlider
)),
(this.el.frontSwiperEl = this.el.frontSlider.querySelector(
this.selector.swiper
)),
(this.el.frontSwiperSlides = this.el.frontSlider.querySelectorAll(
this.selector.swiperSlide
)),
(this.el.swiperPrevArrow = this.el.frontSlider.querySelector(
this.selector.swiperPrevArrow
)),
(this.el.swiperNextArrow = this.el.frontSlider.querySelector(
this.selector.swiperNextArrow
)),
(this.el.swiperPagination = this.el.frontSlider.querySelector(
this.selector.swiperPagination
)),
(this.el.swiperScrollbar = this.el.frontSlider.querySelector(
this.selector.swiperScrollbar
)),
(this.el.blindController = this.el.frontSlider.querySelector(
this.selector.blindController
)),
(this.el.backSlider = this.el.section.querySelector(
this.selector.backSlider
)),
(this.el.backSwiperEl = this.el.backSlider.querySelector(
this.selector.swiper
)),
(this.el.videoContainers = this.el.section.querySelectorAll(
this.selector.videoContainer
)),
(this.el.videoControllers = this.el.section.querySelectorAll(
this.selector.videoController
));
}
bindEvents() {
window.addEventListener("load", this.events.load),
window.addEventListener("scroll", this.events.scroll),
window.addEventListener("resize", this.events.resize),
this.el.frontSwiperEl.addEventListener(
"mousedown",
this.events.click.down
),
this.el.frontSwiperEl.addEventListener(
"mouseup",
this.events.click.up
),
this.el.frontSwiperEl.addEventListener(
"touchstart",
this.events.click.down
),
this.el.frontSwiperEl.addEventListener(
"touchend",
this.events.click.up
),
Array.from(this.el.videoControllers).forEach((e) => {
e.addEventListener("click", this.events.controller.click);
}),
this.el.blindController.addEventListener(
"click",
this.events.blindController.click
);
}
onLoadHandler() {
this.events.resize(),
this.events.scroll(),
window.removeEventListener("load", this.events.load);
}
onResizeHandler() {
(this.opts.currDevice = 767 < innerWidth ? "desktop" : "mobile"),
this.opts.currDevice !== this.opts.prevDevice &&
((this.opts.activeIndex = 0),
(this.opts.videoCanPlay = !0),
clearTimeout(this.opts.resizeTimeout),
(this.opts.resizeTimeout = setTimeout(() => {
(this.opts.videoCanPlay = !0),
this.events.scroll(),
this.onResponsiveChange();
}, 150)),
(this.opts.prevDevice = this.opts.currDevice));
}
onResponsiveChange() {
this.resetVideo(), this.setSwiper();
}
onScrollHandler() {
var e = this.el.frontSwiperEl.getBoundingClientRect(),
t = e.height,
i = 0.15 * e.height,
s = scrollY,
a = s + innerHeight,
n = s + e.top,
e = s + e.bottom;
n + t <= a && s + o.getNavHeight() <= e - i
? this.opts.videoCanPlay &&
((this.opts.videoCanPlay = !1),
(t = this.el.frontSwiperSlides[
this.opts.activeIndex
].querySelector(this.selector.videoContainer))) &&
this.playVideo(t)
: (a < n || s + o.getNavHeight() > e - i) &&
!this.opts.videoCanPlay &&
(this.onFocusoutNextArrow(),
this.onFocusoutPrevArrow(),
(this.opts.videoCanPlay = !0),
this.resetVideo(!0));
}
setSwiper() {
this.destroyFrontSwiper(),
this.setFrontSwiper(),
this.destroyBackSwiper(),
this.setBackSwiper();
}
setFrontSwiper() {
if (null === this.el.frontSwiper) {
const s = this;
(this.el.frontSwiper = new Swiper(this.el.frontSwiperEl, {
init: !1,
a11y: !1,
speed: 400,
allowTouchMove: !0,
centeredSlides: !0,
centeresSlidesBounds: !0,
slidesPerView: "auto",
navigation: {
nextEl: s.el.swiperNextArrow,
prevEl: s.el.swiperPrevArrow,
},
scrollbar: { el: s.el.swiperScrollbar, draggable: !0 },
pagination: {
el: s.el.swiperPagination,
bulletActiveClass: "is-active",
renderBullet: function (e) {
var t = s.opts.tagging.pagination,
e = s.opts.taggingIdList[e];
return `
Now you get innovative smartphone with right tariff plan.
Upfront Cost
Der Anschlusspreis und monatlicher Tarifpreis werden vom jeweiligen Netzanbieter eingezogen. Du zahlst jetzt nur den einmaligen Gerätepreis.
Check the availabbility
1 of 3
Wrong address
Unfortunately, we cannot make you a DSL offer for the address you have checked.The address you have given is not unique, please choose from the address suggestions.
Empfohlene Adresse
Please provide a valid postcode
Please enter correct information again.
Please provide a valid street
Please enter correct information again.
Please provide a valid house number
Please enter correct information again.
Additional information placeholder
Please enter correct information again.
Please provide a valid city
Please enter correct information again.
*Required fields
Informationen zur Verarbeitung Deiner personenbezogenen Daten findest Du in unserer Datenschutzerklärung.
Pay monthly phone contracts
Buy your phone along with an inclusive monthly network plan and pay monthly*
Choose your network
Choose from a range of networks and inclusive monthly plans to get started with your new Galaxy phone straight away.
Pagar mensualmente
Pay for your phone and an inclusive bundle of calls, texts and data in one easy-to-manage monthly fee.
Pasos siguientes
You will be redirected to our trusted partner, A1 Comms Ltd (trading as Mobileshop), to purchase your phone and setup your monthly plan.
***Si el pago fue realizado con tarjeta de crédito, se abonará automáticamente en tu estado de cuenta. Si tu tarjeta ya facturó, se abonará en el siguiente período. En caso de haber pagado con tarjeta de débito podrás ver el monto devuelto en tu home banking de Mercado Pago. Entra a www.mercadopago.cl y crea una cuenta en Mercado Pago con el correo que realizaste la compra. Ingresa a tu cuenta y en configuración agenda los datos de tu cuenta bancaria donde quieres recibir tu dinero. Ve a actividad y haz click en retirar, luego selecciona la cuenta que agendaste para recibir tu dinero dentro de las próximas 48 horas hábiles. ***El cliente debe simular en la calculadora el producto que efectivamente va a comprar esto debido a que cada modelo tiene criterios diferentes en cuanto a los teléfonos que se reciben como parte de pago. ***El bono de un producto con trade in no aplica con otras promociones (descuentos de precios, Giftcard, regalos u otros). ***Programa Trade In disponible sólo en Región Metropolitana (no incluye periferia): Cerrillos, Cerro Navia, Conchalí, El Bosque, Estación Central, Huechuraba, Independencia, La Cisterna, La Florida, La Granja, La Pintana, La Reina, Las Condes, Lo Barnechea, Lo Espejo, Lo Prado, Macul, Maipú, Ñuñoa, Pedro Aguirre Cerda, Peñalolén, Providencia, Pudahuel, Puente Alto, Quilicura, Quinta Normal, Recoleta, Renca, San Bernardo, San Joaquín, San Miguel, San Ramón, Santiago y Vitacura.
***El cliente declara: Que es propietario exclusivo y legítimo del celular que vende a por intermedio de Sitelecom. Que es mayor de 18 anos y declara que no existe ningún impedimento para vender o transferir libremente su Celular. Que el celular no esta sujeto a un contrato de comodato vigente con ningún operador de telefonía móvil. Que el equipo no ha sido expuesto a líquidos, inmersiones o humedad, asi como no ha sido intervenido (abierto). Que asume cualquier responsabilidad derivada de la venta de su Celular. Es responsabilidad del cliente: - Poner termino a los contratos de telefonía asociados al Celular. - Extraer del mismo la correspondiente tarjeta SIM. - Pagar oportunamente toda cuenta o costo asociado al Celular, por cualquier concepto,generado antes o después de la entrega del Celular a Sitelecom. - La veracidad y exactitud de los datos que ha aportado. - Antes de entregar su Celular a Sitelecom, proceder al respaldo y posterioreliminación de todos los datos que este contenga, sea información personal,mensajes, fotografiás, juegos,canciones o cualquier otro de carácter personal
Por favor selecciona la marca de tu teléfono
***Si el pago fue realizado con tarjeta de crédito, se abonará automáticamente en tu estado de cuenta. Si tu tarjeta ya facturó, se abonará en el siguiente período. En caso de haber pagado con tarjeta de débito podrás ver el monto devuelto en tu home banking de Mercado Pago. Entra a www.mercadopago.cl y crea una cuenta en Mercado Pago con el correo que realizaste la compra. Ingresa a tu cuenta y en configuración agenda los datos de tu cuenta bancaria donde quieres recibir tu dinero. Ve a actividad y haz click en retirar, luego selecciona la cuenta que agendaste para recibir tu dinero dentro de las próximas 48 horas hábiles. ***El cliente debe simular en la calculadora el producto que efectivamente va a comprar esto debido a que cada modelo tiene criterios diferentes en cuanto a los teléfonos que se reciben como parte de pago. ***El bono de un producto con trade in no aplica con otras promociones (descuentos de precios, Giftcard, regalos u otros). ***Programa Trade In disponible sólo en Región Metropolitana (no incluye periferia): Cerrillos, Cerro Navia, Conchalí, El Bosque, Estación Central, Huechuraba, Independencia, La Cisterna, La Florida, La Granja, La Pintana, La Reina, Las Condes, Lo Barnechea, Lo Espejo, Lo Prado, Macul, Maipú, Ñuñoa, Pedro Aguirre Cerda, Peñalolén, Providencia, Pudahuel, Puente Alto, Quilicura, Quinta Normal, Recoleta, Renca, San Bernardo, San Joaquín, San Miguel, San Ramón, Santiago y Vitacura.
***El cliente declara: Que es propietario exclusivo y legítimo del celular que vende a por intermedio de Sitelecom. Que es mayor de 18 anos y declara que no existe ningún impedimento para vender o transferir libremente su Celular. Que el celular no esta sujeto a un contrato de comodato vigente con ningún operador de telefonía móvil. Que el equipo no ha sido expuesto a líquidos, inmersiones o humedad, asi como no ha sido intervenido (abierto). Que asume cualquier responsabilidad derivada de la venta de su Celular. Es responsabilidad del cliente: - Poner termino a los contratos de telefonía asociados al Celular. - Extraer del mismo la correspondiente tarjeta SIM. - Pagar oportunamente toda cuenta o costo asociado al Celular, por cualquier concepto,generado antes o después de la entrega del Celular a Sitelecom. - La veracidad y exactitud de los datos que ha aportado. - Antes de entregar su Celular a Sitelecom, proceder al respaldo y posterioreliminación de todos los datos que este contenga, sea información personal,mensajes, fotografiás, juegos,canciones o cualquier otro de carácter personal
¡Estas a punto de recibir tu descuento!
Verifica tu equipo(Descuento inmediato)
Encuentra tu número IMEI
*#06#
Opción 1para encontrar tu IMEI
Opción 2Ir a ajustes > Generales > Acerca del Teléfono.
Ingresa tu número de IMEI
Incorrecto
Correcto
***Si el pago fue realizado con tarjeta de crédito, se abonará automáticamente en tu estado de cuenta. Si tu tarjeta ya facturó, se abonará en el siguiente período. En caso de haber pagado con tarjeta de débito podrás ver el monto devuelto en tu home banking de Mercado Pago. Entra a www.mercadopago.cl y crea una cuenta en Mercado Pago con el correo que realizaste la compra. Ingresa a tu cuenta y en configuración agenda los datos de tu cuenta bancaria donde quieres recibir tu dinero. Ve a actividad y haz click en retirar, luego selecciona la cuenta que agendaste para recibir tu dinero dentro de las próximas 48 horas hábiles. ***El cliente debe simular en la calculadora el producto que efectivamente va a comprar esto debido a que cada modelo tiene criterios diferentes en cuanto a los teléfonos que se reciben como parte de pago. ***El bono de un producto con trade in no aplica con otras promociones (descuentos de precios, Giftcard, regalos u otros). ***Programa Trade In disponible sólo en Región Metropolitana (no incluye periferia): Cerrillos, Cerro Navia, Conchalí, El Bosque, Estación Central, Huechuraba, Independencia, La Cisterna, La Florida, La Granja, La Pintana, La Reina, Las Condes, Lo Barnechea, Lo Espejo, Lo Prado, Macul, Maipú, Ñuñoa, Pedro Aguirre Cerda, Peñalolén, Providencia, Pudahuel, Puente Alto, Quilicura, Quinta Normal, Recoleta, Renca, San Bernardo, San Joaquín, San Miguel, San Ramón, Santiago y Vitacura.
***El cliente declara: Que es propietario exclusivo y legítimo del celular que vende a por intermedio de Sitelecom. Que es mayor de 18 anos y declara que no existe ningún impedimento para vender o transferir libremente su Celular. Que el celular no esta sujeto a un contrato de comodato vigente con ningún operador de telefonía móvil. Que el equipo no ha sido expuesto a líquidos, inmersiones o humedad, asi como no ha sido intervenido (abierto). Que asume cualquier responsabilidad derivada de la venta de su Celular. Es responsabilidad del cliente: - Poner termino a los contratos de telefonía asociados al Celular. - Extraer del mismo la correspondiente tarjeta SIM. - Pagar oportunamente toda cuenta o costo asociado al Celular, por cualquier concepto,generado antes o después de la entrega del Celular a Sitelecom. - La veracidad y exactitud de los datos que ha aportado. - Antes de entregar su Celular a Sitelecom, proceder al respaldo y posterioreliminación de todos los datos que este contenga, sea información personal,mensajes, fotografiás, juegos,canciones o cualquier otro de carácter personal
Último paso, ¿tu teléfono está en excelentes condiciones?
Not eligible for trade-in
***Si el pago fue realizado con tarjeta de crédito, se abonará automáticamente en tu estado de cuenta. Si tu tarjeta ya facturó, se abonará en el siguiente período. En caso de haber pagado con tarjeta de débito podrás ver el monto devuelto en tu home banking de Mercado Pago. Entra a www.mercadopago.cl y crea una cuenta en Mercado Pago con el correo que realizaste la compra. Ingresa a tu cuenta y en configuración agenda los datos de tu cuenta bancaria donde quieres recibir tu dinero. Ve a actividad y haz click en retirar, luego selecciona la cuenta que agendaste para recibir tu dinero dentro de las próximas 48 horas hábiles. ***El cliente debe simular en la calculadora el producto que efectivamente va a comprar esto debido a que cada modelo tiene criterios diferentes en cuanto a los teléfonos que se reciben como parte de pago. ***El bono de un producto con trade in no aplica con otras promociones (descuentos de precios, Giftcard, regalos u otros). ***Programa Trade In disponible sólo en Región Metropolitana (no incluye periferia): Cerrillos, Cerro Navia, Conchalí, El Bosque, Estación Central, Huechuraba, Independencia, La Cisterna, La Florida, La Granja, La Pintana, La Reina, Las Condes, Lo Barnechea, Lo Espejo, Lo Prado, Macul, Maipú, Ñuñoa, Pedro Aguirre Cerda, Peñalolén, Providencia, Pudahuel, Puente Alto, Quilicura, Quinta Normal, Recoleta, Renca, San Bernardo, San Joaquín, San Miguel, San Ramón, Santiago y Vitacura.
***El cliente declara: Que es propietario exclusivo y legítimo del celular que vende a por intermedio de Sitelecom. Que es mayor de 18 anos y declara que no existe ningún impedimento para vender o transferir libremente su Celular. Que el celular no esta sujeto a un contrato de comodato vigente con ningún operador de telefonía móvil. Que el equipo no ha sido expuesto a líquidos, inmersiones o humedad, asi como no ha sido intervenido (abierto). Que asume cualquier responsabilidad derivada de la venta de su Celular. Es responsabilidad del cliente: - Poner termino a los contratos de telefonía asociados al Celular. - Extraer del mismo la correspondiente tarjeta SIM. - Pagar oportunamente toda cuenta o costo asociado al Celular, por cualquier concepto,generado antes o después de la entrega del Celular a Sitelecom. - La veracidad y exactitud de los datos que ha aportado. - Antes de entregar su Celular a Sitelecom, proceder al respaldo y posterioreliminación de todos los datos que este contenga, sea información personal,mensajes, fotografiás, juegos,canciones o cualquier otro de carácter personal
¡Todo Listo! Confirma tu precio final para terminar
Verifica tu equipo
El descuento Trade-In actual puede diferir del descuento estimado.
El dispositivo prende y funciona correctamente
Poco desgaste
Pantalla sin quiebres y funcionando
No pertenece a la lista negra de celulares robados
Reseteado de fábrica y sin bloqueos de software
Confirmar Términos y Condiciones:
***Si el pago fue realizado con tarjeta de crédito, se abonará automáticamente en tu estado de cuenta. Si tu tarjeta ya facturó, se abonará en el siguiente período. En caso de haber pagado con tarjeta de débito podrás ver el monto devuelto en tu home banking de Mercado Pago. Entra a www.mercadopago.cl y crea una cuenta en Mercado Pago con el correo que realizaste la compra. Ingresa a tu cuenta y en configuración agenda los datos de tu cuenta bancaria donde quieres recibir tu dinero. Ve a actividad y haz click en retirar, luego selecciona la cuenta que agendaste para recibir tu dinero dentro de las próximas 48 horas hábiles. ***El cliente debe simular en la calculadora el producto que efectivamente va a comprar esto debido a que cada modelo tiene criterios diferentes en cuanto a los teléfonos que se reciben como parte de pago. ***El bono de un producto con trade in no aplica con otras promociones (descuentos de precios, Giftcard, regalos u otros). ***Programa Trade In disponible sólo en Región Metropolitana (no incluye periferia): Cerrillos, Cerro Navia, Conchalí, El Bosque, Estación Central, Huechuraba, Independencia, La Cisterna, La Florida, La Granja, La Pintana, La Reina, Las Condes, Lo Barnechea, Lo Espejo, Lo Prado, Macul, Maipú, Ñuñoa, Pedro Aguirre Cerda, Peñalolén, Providencia, Pudahuel, Puente Alto, Quilicura, Quinta Normal, Recoleta, Renca, San Bernardo, San Joaquín, San Miguel, San Ramón, Santiago y Vitacura.
***El cliente declara: Que es propietario exclusivo y legítimo del celular que vende a por intermedio de Sitelecom. Que es mayor de 18 anos y declara que no existe ningún impedimento para vender o transferir libremente su Celular. Que el celular no esta sujeto a un contrato de comodato vigente con ningún operador de telefonía móvil. Que el equipo no ha sido expuesto a líquidos, inmersiones o humedad, asi como no ha sido intervenido (abierto). Que asume cualquier responsabilidad derivada de la venta de su Celular. Es responsabilidad del cliente: - Poner termino a los contratos de telefonía asociados al Celular. - Extraer del mismo la correspondiente tarjeta SIM. - Pagar oportunamente toda cuenta o costo asociado al Celular, por cualquier concepto,generado antes o después de la entrega del Celular a Sitelecom. - La veracidad y exactitud de los datos que ha aportado. - Antes de entregar su Celular a Sitelecom, proceder al respaldo y posterioreliminación de todos los datos que este contenga, sea información personal,mensajes, fotografiás, juegos,canciones o cualquier otro de carácter personal
Upgrade Terms and Conditions
El dispositivo prende y funciona correctamente
Poco desgaste
Pantalla sin quiebres y funcionando
No pertenece a la lista negra de celulares robados
Reseteado de fábrica y sin bloqueos de software
Samsung Upgrade
Get the latest TV every 3 years. Purchase a new qualifying TV through the Upgrade Program and sell the old TV back to us for a guaranteed residual value. {1}
Fixed monthly fee
Upgrade after 3 years and let us purchase the old TV back from you to a guaranteed resisdual value
Pick renewal period
How long would you like before deciding whether to renew or upgrade your product?
For a purchase price of 23,000 kr and 44 installments of 557 kr over 44 months, the fixed effective interest rate is 13.9%. The total amount to be paid is 24,508 kr.
Borrowing costs money!
If you cannot repay the debt on time, you risk a payment default. This may lead to difficulties in renting housing, signing contracts, and obtaining new loans. For support, contact budget and debt counseling in your municipality. Contact details are available at konsumentverket.se.
Términos y condiciones
* Campos requeridos
Return & Cancel
Garantía
Samsung Care+
Samsung Care+ Disclaimer with link
Here’s what’s covered
Hardware repairs
Get fast, convenient repairs using genuine Samsung parts, from our authorized technicians.
Software coverage
If your device isn’t running smoothly, we’ll check and fix the issue.
Battery replacement
Stay powered up with hassle-free battery replacements.
4 claims within
Make up to 4 claims for repair or replacement within 2 years, and save with a low deductible per claim.
Samsung Care+ es un paquete de servicios que contribuirán a alargar la vida útil de tus productos Samsung, cuidando así al máximo tu inversión. Revisa términos y condiciones según el producto que desees comprar.
Samsung Care+ es un paquete de servicios que contribuirán a alargar la vida útil de tus productos Samsung, cuidando así al máximo tu inversión. Revisa términos y condiciones según el producto que desees comprar.
※ Cover until canceled. Financing program is not available with device purchasing
※ Cover for 24 months. Financing program is available with device purchasing
Samsung Care+ Terms and Conditions
By clicking on confirm, you agree to Samsung terms and conditions.