Imagen utilizada con fines ilustrativos. Los colores disponibles de los Galaxy Buds3 Pro pueden variar según el operador. Los Galaxy Buds3 Pro son compatibles con funciones de Galaxy AI, como Interpreter y Live Translate, cuando se vinculan con dispositivos Samsung Galaxy compatibles. La disponibilidad de las funciones de Galaxy AI puede variar según el modelo del dispositivo. Consulta samsung.com/mx para obtener más detalles.
Galaxy AIha llegado
'Galaxy AI llegó para tus nuevo 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 audífonos plateados Galaxy Buds3 Pro en un estuche cerrado.
Sonido envolvente con Ultra High-Quality Audio
Varios puntos blancos en formación circular con otros puntos blancos que forman olas en el fondo.
Adaptive Noise Control ,
Un audífono Galaxy Buds3 Pro plateado con la Blade Light encendida.
Sonido con tecnología Galaxy AI , ,
Ya llegó Galaxy AI
Iluminación de los Nuevos Galaxy Buds , ,
Diseño ergonómico para un sonido supremo
Experimenta nuestro diseño completamente nuevo, creado para un sonido óptimo. Nuestros Galaxy Buds3 Pro renovados cuentan con cabezas pequeñas en ángulo para un ajuste cómodo y para optimizar tu experiencia de audio, mientras que las Blade Lights con detalles te permiten expresarte. El diseño de la hoja resalta una elegante caja 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 plateados aparecen en un estuche cerrado que se abre. Una vez abierto, los audífonos se deslizan hacia arriba con las Blade Lights encendidas y flotan sobre el estuche abierto.
Color
PlataBlanco
Estuche plateado
Estuche blanco
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.
Swipe Content
A finger swipes across the blade of a single, Galaxy Buds3 Pro earbud.
Pinch Control Content
A finger pinches the blade of a single, Galaxy Buds3 Pro earbud.
Redefinición del sonido
Varias partículas forman un rayo de luz y se transforman en la Blade Light en los Galaxy Buds3 Pro que se muestran puestos
Sonido nítido en cada nota
Disfruta de los detalles más minuciosos, desde el profundo estruendo de los graves hasta los agudos más claros y nítidos, con el altavoz bidireccional mejorado. Escucha el vibrato de los instrumentos con una distorsión mínima a través de nuestro primer amplificador dual.
Wind Shield
Blade Lights
Desliza
Control por pellizco
Amplificador dual
Gracias a nuestro primer woofer y tweeter controlados de forma independiente, los Galaxy Buds3 Pro reducen las interferencias entre las bocinas, lo que te permite disfrutar de un espectro de sonido más amplio y de un mayor equilibrio entre las distintas frecuencias.,
Bocina bidireccional mejorada
Descubre una orquesta de sonido, desde los graves opulentos del violonchelo que emite el woofer hasta el sutil temblor de las cuerdas a través de un tweeter planar, que se unen en armonía para evocar oleadas de emoción y revela detalles minúsculos que de otro modo habrían pasado desapercibidos.,
Sonido impresionante, digno de un 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.,
16 bit / 44.1 kHz
24 bit / 96 kHz
Samsung Seamless Codec
Galaxy AIha llegado para tus nuevos Buds Galaxy Buds , , , , ,
Galaxy AI ajusta el sonido a tu medida
Explora tu paisaje sonoro personal con la tecnología Adaptive EQ/Adaptive ANC con Galaxy AI. En función de la forma de cada oreja y de los hábitos de uso, nuestro algoritmo optimizado con AI analiza el sonido que detectan los micrófonos internos y externos en tiempo real. Después, Galaxy AI optimiza tu experiencia auditiva ajustando el sonido a tu medida con una precisión milimétrica.,
Adaptive Noise Control. Concéntrate en lo más importante
Mantén tus Galaxy Buds3 Pro encendidos y continúa interactuando con el mundo que te rodea. Con Galaxy AI, los Galaxy Buds3 Pro identifican y evitan el ruido innecesario de manera automática. Luego, optimizan tu experiencia de audio al reajustar el equilibrio entre el modo ANC y el modo Ambiente para que corresponda a su entorno. Para que puedas escuchar tus canciones favoritas, sin interrupciones., , , ,
Un audífono Galaxy Buds3 Pro plateado aparece en medio de la página con partículas grandes que se mueven en forma de espiral hacia el audífono. Sigue apareciendo a la derecha del audífono sin partículas. Las partículas y la espiral desaparecen, y muestran un solo audífono Galaxy Buds3 Pro con 2 imágenes en cada lado.
Noise Control:
En lugar de ajustar el ANC manualmente, el Adaptive 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.
Alarmas/Sirenas:
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 quete 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 correcta de sonido ANC y ambiente, lo que te permitirá concentrarte en oír lo que quieres oír.
Mantén una conversación y
Voice Detect encenderá/apagará el sonido ANC y ambiente en consecuencia, para que puedas
escuchar fuerte y claro sin necesidad de quitarte los Galaxy Buds3 Pro.
Escucha tu lista de reproducción tranquilamente con
Siren Detect. Los Galaxy Buds3 Pro bloquean el ruido externo innecesario, excepto las alarmas y las sirenas, para
advertirte que te mantengas alejado del peligro.
Rompe las barreras lingüísticas en un santiamén
Con Galaxy AI, comprende el mundo como nunca antes. Ve la traducción en tu Smartphone Samsung Galaxy y escucha simultáneamente tu conversación interpretada en tiempo real a través de tus Galaxy Buds3 Pro. Descubre lo que significa vivir sin 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 pir su propuesta, la he revisado deternidamente
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. , ,
Entra en el mundo de TV 360° Audio
Disfruta de una experiencia de sonido espacial. 360° Audio es una función que identifica la dirección exacta del sonido al inclinar la cabeza, y proporciona sonido surround para una experiencia auditiva y visual más intensa., ,
PC Auto Switch mantiene la sinergia
PC Auto Switch en los Galaxy Buds3 Pro detecta la actividad de audio y transfiere la conexión a tus dispositivos Samsung Galaxy favoritos, para que puedas 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 tu sonido a través del 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ústalos en el panel de configuración rápida mientras la aplicación reproduce medios. Ya sea que disfrutes de 360 Audio en YouTube o prefieras el ecualizador de refuerzo de graves en Spotify, tu audio siempre estará ajustado como a ti te gusta. 58, 59, 60, 61
Se desliza hacia abajo en la pantalla de un teléfono inteligente Galaxy para abrir el panel de configuración rápida. Se acerca el zoom al control deslizante de volumen, que se pulsa durante unos segundos para abrir un widget que muestra el nivel de batería de los Buds y el nivel de Active Noise Canceling. Otra pantalla se acerca al widget de nivel de Active Noise Canceling, que muestra el nivel de ANC deslizándose de izquierda a derecha. Debajo, un widget de audio de YouTube muestra los ajustes de 360 Audio, ecualizador, amplificación de diálogo y normalización de volumen. Luego cambia a un widget para el audio de Spotify, que muestra un conjunto diferente de configuraciones de audio. Para Spotify, el audio muestra la configuración de 360 Audio, ecualizador, amplificación de diálogo desactivada y normalización de volumen activada. Finalmente, la vista se aleja para mostrar todos los ajustes que se mostraron anteriormente.
Comparte tu sonido con los que te rodean a través de Auracast
Con la tecnología de difusión Auracast, comparte tu transmisión de audio con un número ilimitado de dispositivos. Transforma fácilmente tu Samsung TV,Smartphone Samsung Galaxy o Tablet en una fuente de radio para empezar a interactuar con los demás. , , , ,
Control conveniente con solo un comando
Controla la configuración de audio sin necesidad de tocar el teléfono. Solo tienes que decir un comando, como “next song” o “volume up”, y dejar que los Galaxy Buds3 Pro hagan el resto. , , , , ,
Tu santuario de sonido personalizado
La atención plena se consigue con la práctica diaria. Con solo pulsar un botón, teletranspórtate a tu propio mundo sin preocupaciones con Samsung Health de Calm. Alivia el estrés con tranquilas melodías de la naturaleza, mejora tu concentración con ruido blanco o relájate con ASMR para sentirte más feliz y sano., , , ,
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.
Disfruta de la experiencia perfecta en todos los teléfonos inteligentes Android
Comienza tu experiencia con Galaxy Wearable en tu teléfono inteligente Android. Empareja tu Galaxy Watch , Buds o Ring fácilmente con el teléfono Android que ya tienes. Solo tienes que descargar las aplicaciones Galaxy Wearable y Samsung Health en Google Play y listo. Incluso puedes probar diferentes esferas de reloj en la aplicación Galaxy Wearable: mezcla y combina distintas funciones a tu gusto. , , , , , , , , ,
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.
Los colores disponibles pueden variar según el proveedor.
La caja incluye los Galaxy Buds3 Pro, un estuche de carga, tres juegos de almohadillas para el oído izquierdo y derecho (P, M (predeterminado), G), un cable USB y una guía de inicio rápido.
Los Galaxy Buds3 Pro son los primeros Galaxy Buds con bocina bidireccional con un tweeter planar y amplificador dual.
El audio de ultra alta calidad de hasta 24bit/96kHz está 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 sea compatibles dispositivos adicionales en el futuro.
Es posible que se requiera iniciar sesión en una Samsung Account para usar ciertas funciones de AI de Samsung.
Samsung no promete, asegura ni garantiza la exactitud, integridad o confiabilidad de los resultados que proporcionan las funciones de AI.
Las funciones de Galaxy AI son gratis hasta el final de 2025 en dispositivos Samsung Galaxy compatibles. Las funciones de AI provistas por terceros pueden tener diferentes términos.
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 pellizcar y mantener presionado está configurada a modo de control de ruido. Para cambiar el intérprete al modo de escucha, se debe configurar en la aplicación Galaxy Wearable.
360 Audio solo está disponible en teléfonos inteligentes Samsung Galaxy y dispositivos Galaxy Tab con Android One UI versión 3.1 o posterior, y en modelos de Samsung TV seleccionados. 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 con 360 Audio y el seguimiento de la cabeza pueden 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 coincide con el idioma del sistema. El comando de voz se limita a comandos fijos y solo está disponible en coreano, inglés (India, Reino Unido, Estados Unidos), portugués (Brasil), chino, alemán, español (México, España), italiano y polaco 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.
Algunos contenidos pueden acarrear cargos adicionales. Se requiere iniciar sesión en una Samsung Account para usar Samsung Health.
Con ANC encendido/apagado, los audífonos y la funda proporcionan hasta 30 horas de tiempo de reproducción con una carga completa. Basado en pruebas internas. El tiempo de reproducción se probó emparejando unos Galaxy Buds3 Pro de preproducción a un smartphones Galaxy lanzado recientemente con la configuración predeterminada. La duración real de la batería puede variar y depender de las condiciones de uso, la configuración, la cantidad de veces que se cargó, 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 teléfono y reproducen música. El tiempo de reproducción real puede variar de acuerdo con la configuración.
La clasificación IP57 se basa en condiciones de prueba de laboratorio de inmersión en agua dulce con una profundidad máxima de 1 metro por un máximo de 30 minutos.
No se recomienda su uso en las albercas. El estuche de carga no es resistente al agua. Si los audífonos están dañados, no se garantiza que sean resistentes al agua. Si los audífonos 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 audífonos pueden dañarse.
El estuche de carga proporcionado es para cargar los Galaxy Buds3 Pro.
La aplicación 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, la configuración, la cantidad de veces que se cargó, 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.
The TV 360 Audio feature is not supported as of July 2024 for Galaxy Buds3 and Galaxy Buds3 Pro models, but is expected to be available in a feature update
The typical capacity has been tested under independent laboratory settings using the IEC 61960-3 standard. Typical capacity is the average estimated capacity, accounting for variations across battery samples. The rated capacity is 53mAh for the earbuds and 515mAh for the charging case.
El Galaxy Watch7, el Galaxy Watch Ultra y el Galaxy Ring deben estar emparejados con un teléfono inteligente con Android 11.0 o superior y una memoria mínima de 1.5GB.
La conexión de los Galaxy Buds como audio Bluetooth está disponible independientemente del sistema operativo, pero para configurar los ajustes avanzados en la aplicación Galaxy Wearable, los Galaxy Buds
Los ajustes avanzados de la aplicación Galaxy Wearable incluyen control de ruido, Adaptive EQ, control por pellizco y actualización de software.
Algunas funciones solo están disponibles en determinados teléfonos inteligentes Samsung Galaxy.
La aplicación Galaxy Wearable no es compatible con iOS.
La aplicación Samsung Health Monitor solo está disponible en teléfonos inteligentes Samsung Galaxy.
Las funciones Gesto y Encontrar mi anillo solo están disponibles en los teléfonos inteligentes Samsung Galaxy.
La función Suggested Replies en el Galaxy Watch7 y el Galaxy Watch Ultra solo está disponible en los teléfonos inteligentes Samsung Galaxy.
La disponibilidad y las funciones pueden variar según el país, la región o el operador.
Android es una marca comercial de Google LCC.
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.
El video simulado se usa con fines ilustrativos.
La UX/UI real puede ser diferente.
La disponibilidad de las funciones puede variar en función del país, el idioma, el modelo o las aplicaciones del dispositivo. Algunos widgets funcionales pueden requerir una conexión de red y/o inicio de sesión en una Samsung Account.
Disponible en dispositivos Samsung Galaxy con One UI 7.0 o superior. Es posible que sea compatibles dispositivos adicionales en el futuro.
"
)).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.
El precio del valor de la bonificación mostrado al momento de aplicar a Galaxy Canje, será el valor máximo a otorgar según el grado de su Dispositivo Electrónico Participante. En caso de que el valor del bono de su dispositivo electrónico sea mayor al precio de compra del Equipo Nuevo, Samsung solo bonificará el valor del precio de compra del Equipo Nuevo. El bono del Dispositivo Electrónico Participante es tentativo y podrá cambiar al momento de su revisión por parte de nuestros técnicos especialistas.
Selecciona tu modelo
El precio del valor de la bonificación mostrado al momento de aplicar a Galaxy Canje, será el valor máximo a otorgar según el grado de su Dispositivo Electrónico Participante. En caso de que el valor del bono de su dispositivo electrónico sea mayor al precio de compra del Equipo Nuevo, Samsung solo bonificará el valor del precio de compra del Equipo Nuevo. El bono del Dispositivo Electrónico Participante es tentativo y podrá cambiar al momento de su revisión por parte de nuestros técnicos especialistas.
¡Casi listo! Por favor ingresa tu número de IMEI/Número de Serie
Bonificación Galaxy Canje(Upfront discount)
Encuentra tu número de IMEI/Número de Serie
*#06#
Opción 1Marca *#06# para encontrar tu IMEI/Número de serie
Opción 2Ve a ajustes > Acerca del telefono > IMEI/Numero de Serie
Ingresa tu numero de IMEI/Numero de Serie
Incorrecto
Corregir
El precio del valor de la bonificación mostrado al momento de aplicar a Galaxy Canje, será el valor máximo a otorgar según el grado de su Dispositivo Electrónico Participante. En caso de que el valor del bono de su dispositivo electrónico sea mayor al precio de compra del Equipo Nuevo, Samsung solo bonificará el valor del precio de compra del Equipo Nuevo. El bono del Dispositivo Electrónico Participante es tentativo y podrá cambiar al momento de su revisión por parte de nuestros técnicos especialistas.
Último paso, ¿Está tu producto en buenas condiciones?
Not eligible for trade-in
El precio del valor de la bonificación mostrado al momento de aplicar a Galaxy Canje, será el valor máximo a otorgar según el grado de su Dispositivo Electrónico Participante. En caso de que el valor del bono de su dispositivo electrónico sea mayor al precio de compra del Equipo Nuevo, Samsung solo bonificará el valor del precio de compra del Equipo Nuevo. El bono del Dispositivo Electrónico Participante es tentativo y podrá cambiar al momento de su revisión por parte de nuestros técnicos especialistas.
¡Bien! Todo listo. Revisa el valor final para terminar
Bonificación Galaxy Canje
** El valor de la bonificación podrá variar de acuerdo a la revisión técnica de tu dispositivo actual por parte de nuestros especialistas
El producto enciente y carga correctamente
Pantalla funcional y en buen estado.
Producto reiniciado de fabrica y desbloqueo de Software
Confirmo términos y condiciones
El precio del valor de la bonificación mostrado al momento de aplicar a Galaxy Canje, será el valor máximo a otorgar según el grado de su Dispositivo Electrónico Participante. En caso de que el valor del bono de su dispositivo electrónico sea mayor al precio de compra del Equipo Nuevo, Samsung solo bonificará el valor del precio de compra del Equipo Nuevo. El bono del Dispositivo Electrónico Participante es tentativo y podrá cambiar al momento de su revisión por parte de nuestros técnicos especialistas.
Upgrade Terms and Conditions
El producto enciente y carga correctamente
Normal wear & Tear
Pantalla funcional y en buen estado.
Not blacklisted
Producto reiniciado de fabrica y desbloqueo 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
Campo requerido
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.