O Galaxy S25 Ultra é visto a ser segurado e o YouTube está ativo no ecrã principal. Mantenha premido o botão lateral para pedir ao Google Gemini, com linguagem natural, para listar os locais mencionados num vídeo e guardá-los como uma nota. Irá percorrer várias aplicações para pesquisar online e, em seguida, criar e guardar uma nota.
O AI ProVisual Engine mais avançado,
São realizadas filmagens de uma mulher e do seu cão no exterior à noite. O cão corre em direção à mulher e as filmagens são nítidas graças à câmara do Galaxy S25 Ultra.
O processador mais poderoso feito à medida para Galaxy
O processador de 3 nm roda para visualização. Vários raios de luz saem do AP antes de se transformarem numa cena do jogo Night Crows.
Duração da bateria inigualável
Um time lapse de uma paisagem urbana vai do dia à noite durante 31 horas graças à bateria de longa duração do Galaxy S25 Ultra.
“O Galaxy S25 Ultra é um exercício de requinte, mostrando o melhor que o Android tem para oferecer em 2025”
T3
“A personalização é uma das melhores coisas das novas funcionalidades de AI na Galaxy S25 Series”
ZDNET
“Se precisa de ter a melhor câmara, vai querer escolher o Galaxy S25 Ultra”
ZDNET
Simples. Impactante.
Um grande plano do topo do perfil lateral do Galaxy S25 Ultra mostra o design elegante. O dispositivo roda para mostrar os seus cantos arredondados e a S Pen desliza para cima e aparece.
O design arredondado do Galaxy S25 Ultra expressa uma identidade unificada para a Galaxy S Series. Com a sua estrutura em titânio elegante e forte e uma S Pen incorporada, é uma visão ultramoderna de design arrojado.
A Now Bar aparece da direita para a esquerda com um alerta Now Brief. A Now Bar move-se para a parte inferior do ecrã principal do Galaxy S25 Ultra, que aparece focada. Três outros alertas da Now Bar aparecem acima do primeiro: temporizador, música e exercício.
Entre na próxima era da IA móvel com um companheiro de IA que está um passo à frente de cada uma das suas necessidades. Apenas basta falar naturalmente e deixar que a inteligência artificial trate por si as suas tarefas diárias.
Prima, fale e já está
O Galaxy S25 Ultra é visto a ser segurado e o YouTube está ativo no ecrã principal. Mantenha premido o botão lateral para pedir ao Google Gemini, com linguagem natural, para listar os locais mencionados num vídeo e guardá-los como uma nota. Irá percorrer várias aplicações para pesquisar online e, em seguida, criar e guardar uma nota.
Conclua facilmente as suas tarefas, sem ter de alternar entre várias aplicações. Basta premir sem soltar o botão lateral para aceder ao Google Gemini e obter ajuda.1
Conclua as suas tarefas de forma simples, sem ter de alternar entre várias aplicações. Basta dizer ao Google Gemini o que precisa, de forma natural, e este irá tratar das coisas de uma só vez.
Entre em direto, obtenha respostas
O Google Gemini Live está ativo e o Talk Live está selecionado. Em seguida, uma imagem é enviada como anexo para o Gemini Live. O Gemini Live analisa a imagem e pode conversar sobre o conteúdo com linguagem natural.
Tenha uma conversa fluida com o Gemini Live para debater ideias ou para se preparar para apresentações anexando imagens e obtendo respostas em tempo real que se adaptam ao seu estilo de conversa.
Resumos personalizados para o seu dia
Now Brief envia briefings personalizados ao longo do dia. Os destaques da manhã incluem atualizações meteorológicas e da Pontuação de Energia, os destaques do meio-dia incluem dicas de condução e atualizações de cupões a expirar e os destaques da noite incluem uma compilação do seu dia com fotografias da galeria e destaques da atividade diária.
Obtenha briefings personalizados ao longo do dia a partir do novo Now Brief. Comece a sua manhã com um briefing de todo o dia, como verificar a sua Pontuação de Energia mais recente e lembretes da sua agenda. Depois, à noite, recapitule os eventos do dia com informações sobre a atividade diária.
Duas formas de encontrar. Circular ou ouvir.
O Circle to Search with Google permite-lhe pesquisar qualquer coisa no seu ecrã e conseguir informações rapidamente com as Visões Gerais de IA. Basta fazer um círculo num objeto - incluindo imagens, vídeos ou texto - com o dedo ou a S Pen e obterá resultados imediatamente. Até pode procurar uma música para ouvir no momento sem mudar de aplicação.
Um estúdio de som ao seu alcance
As imagens dos objetos são vistas com ondas sonoras ao longo do meio. No Apagador de Áudio, o ruído indesejado selecionado pode ser reduzido de 0 para -100. A -100, o Mute é realçado.
Filtre o ruído de fundo indesejado dos seus vídeos e torne-os dignos de partilha com o Apagador de Áudio. A Galaxy AI afina o seu áudio ajustando diferentes tipos de som, incluindo vozes, música, vento e muito mais.
Filtros só para si
Dê vida às suas fotografias com os seus próprios filtros personalizados. A Galaxy AI analisar a sua fotografia favorita e cria um filtro que se ajuste. Utilize-o instantaneamente ou personalize-o mais para se adequar ao seu estado de espírito, ajustando a saturação, o brilho e muito mais.
O futuro da saúde, agora personalizado
Mantenha-se a par dos seus objetivos de saúde monitorizando a sua Pontuação de Energia. Sincronize com o Galaxy Watch ou Ring e receba informações personalizadas e coaching, como uma análise do seu sono, atividade e frequência cardíaca.,
O Motor de Dados Pessoais combina e processa os seus dados principais e fornece sugestões personalizadas. Encripta estes dados e guarda-os no seu dispositivo com o Knox Vault, tornando-os inacessíveis a qualquer outra pessoa.
Tenha controlo sobre a sua Galaxy AI. Pode decidir onde processá-la, no dispositivo ou na nuvem.
Melhorámos ainda mais a segurança em todos os dispositivos Galaxy ligados com a tecnologia Knox Matrix Trust Chain. Agora, pode monitorizar a segurança de outros dispositivos diretamente a partir do seu smartphone Galaxy.
O nosso ProVisual Engine de próxima geração é agora reforçado pelo nosso poderoso processador, permitindo-lhe captar, visualizar e editar para a nossa melhor experiência de câmara e edição até à data.
Um grande plano do interior da lente da câmara do Galaxy S25 Ultra roda e depois é visto de lado num ângulo. Os reflexos e a luz virtual rodam acima da objetiva antes de desaparecerem no seu interior.
Câmara frontal
12 MP
Câmara de selfie
Câmara traseira
50 MP
Ultra Grande-angular
200 MP
Grande-angular
Zoom de qualidade ótica 2x
50 MP
Teleobjetiva
Zoom ótico de 5x e Zoom ótico de qualidade de 10x
10 MP
Teleobjetiva
Zoom ótico 3x
Comparar câmaras
Galaxy S25 Ultra
50
Vídeo de Nightography incomparável. Menos ruído, mais nitidez
São realizadas filmagens de uma mulher e do seu cão no exterior à noite. O cão corre em direção à mulher e as filmagens são nítidas graças à câmara do Galaxy S25 Ultra.
Captado pelo Galaxy S25 Ultra#withGalaxy
Agora pode fotografar em HDR de 10 bits melhorado para uma experiência de videografia mais impressionante. O nosso AP avançado também proporciona uma remoção de ruído mais precisa, o que significa que já não terá de se preocupar com filmes noturnos granulados.,
Retratos épicos, sempre
O nosso Object-aware Engine deteta a luz no ambiente e reconhece com precisão os objetos. Mostre os tons e texturas naturais da sua pele exatamente como os seus olhos os veem.
Detalhes mais nítidos, da Grande-angular à Teleobjetiva ou mesmo Ultra Grande-angular
Captado pelo Galaxy S25 Ultra#withGalaxy
Concentre-se no extraordinário do comum e capte fotografias macro com detalhes precisos com a nossa nova câmara Ultra Grande-angular de 50 MP.
Captado pelo Galaxy S25 Ultra#withGalaxy
As capturas com a Ultra Grande-Angular até à nossa Teleobjetiva são nítidas e vibrantes em qualquer ângulo. O nosso ProVisual Engine com IA melhora a cor e os detalhes para uma nitidez de nível superior.
Space Zoom. Veja o que não foi visto
Veja mais longe do que alguma vez pensou ser possível, passando de 1x para 100x com o nosso Space Zoom melhorado por IA.,
O objeto é visto a atravessar uma ponte com um zoom de 0,6x. Em seguida, zoom de 1x, zoom de 2x, zoom de 3x, zoom de 5x, zoom de 10x, zoom de 30x, zoom de 50x, zoom de 70x, zoom de 100x e, em seguida, zoom de 10x. Quer sejam ampliados ou reduzidos, os detalhes permanecem nítidos.
Captado pelo Galaxy S25 Ultra#withGalaxy
Fotografia de nível profissional para editar
Domine todas as fotografias com o Expert RAW
Fotografe como um fotógrafo profissional com o Expert RAW. Depois de tirar as suas fotografias, os ficheiros RAW são guardados na sua galeria, ficando prontos para uma grande variedade de edições.,
Captado pelo Galaxy S25 Ultra#withGalaxy
Crie obras-primas cinematográficas com Log Video
Capte mais detalhes e sombras sem a necessidade de equipamento profissional, bastando para isso gravar em Log Video. Em seguida, utilize ferramentas especializadas para fazer edições detalhadas, como a classificação de cores, sem perder qualidade.
O ecrã principal do Galaxy S25 Ultra mostra dois objetos a caminhar ao longo de um lago enquanto estão a ser filmados no modo Log Video. Os filmes no modo de disparo são apresentados com baixo contraste e, quando é aplicada uma gradação de cores profissional, é vista uma variedade de cores e contraste mais dinâmica.
Captado pelo Galaxy S25 Ultra#withGalaxy
O processador mais poderoso feito à medida para Galaxy
O processador de 3 nm é visto a aparecer antes de se transformar numa cena do jogo Night Crows. Com tecnologia Snapdragon 8 Elite para Galaxy.
Apresentamos o nosso processador mais poderoso, feito à medida para Galaxy. Com ray tracing melhorado em tempo real e a otimização de Vulkan, mergulhe na ação e experimente uma jogabilidade ultra suave graças ao Snapdragon® 8 Elite Mobile Platform para Galaxy.,,
CPU
37
%
processamento mais rápido
GPU
30
%
desempenho gráfico melhorado
NPU
40
%
melhor desempenho da IA
Snapdragon® 8 Elite para Galaxy
Melhore até à perfeição, veja a diferença
Uma comparação de antes e depois do ecrã do dispositivo Galaxy representa os efeitos do ProScaler. O ProScaler oferece gráficos mais detalhados.
O ProScaler melhora a resolução utilizando o processamento avançado de algoritmos de IA para proporcionar uma experiência de visualização em alta definição sem ter de ajustar as definições de visualização.,
Duração da bateria inigualável
A nossa tecnologia mDNIe pioneira foi incorporada no nosso AP personalizado e, com a otimização do software, o tempo de utilização da bateria é melhorado para que possa desfrutar de horas de visualização de vídeos.
Veja vídeos até
31
horas
Comparar bateria
Galaxy S25 Ultra
31,
,
Armazenamento de até 1 TB
Armazene tudo com 12 GB de memória e até 256 GB, 512 GB ou 1 TB de armazenamento.
Nova One UI 7, construída para IA
Now Bar
Obtenha acesso direto aos seus alertas do Now Brief, música, temporizador e muito mais da nova Now Bar sem ter de desbloquear o seu telefone.
A Now Bar está ativa na parte inferior do ecrã principal de um smartphone Galaxy. Um alerta do Now Brief desliza para cima e para trás de uma pilha de outras notificações da Now Bar de aplicações ativas. Em seguida, aparece a música, o exercício e o temporizador, e depois regressa ao Now Brief.
Widget
O novo ecrã inicial é controlado por si, com layouts altamente personalizáveis e widgets redesenhados.
O ecrã inicial do Galaxy S25 Ultra é visto com três widgets. Quando é arrastado do tamanho maior, o widget de meteorologia transforma-se num tamanho menor. A atividade diária pode ser arrastada através do ecrã. O widget meteorológico pode ser arrastado para um tamanho ainda menor. O widget Gallery é arrastado para uma posição diferente no ecrã.
Notificação
Veja o que está a acontecer neste momento. As notificações em direto permitem-lhe monitorizar atividades em curso, tais como temporizadores e gravações de voz na Now Bar, barra de estado ou mesmo no topo do seu painel de notificações regular.
As notificações são deslizadas para baixo no ecrã principal do dispositivo Galaxy para mostrar notificações em direto de aplicações ativas na parte superior.
O que vai, volta. Focamo-nos na eficiência energética e circularidade de recursos em todos os ciclos de vida dos produtos. Tudo ajuda e estamos empenhados em fazer mais.
Mantenha-o protegido, com o seu estilo
Concebidos para se adaptarem ao seu estilo, em qualquer ocasião. Obtenha acessórios funcionais com grande personalidade.
O Galaxy S25 Ultra vem em Azul Prateado Titânio, Cinzento Titânio, Preto Titânio e Branco Prateado Titânio. Preto Noturno Titânio, Verde Jade Titânio e Rosa Dourado Titânio estão disponíveis exclusivamente em Samsung.com.
O Galaxy S25 Ultra tem um design mais arredondado, para uma identidade unificada em toda a S Series. O seu corpo mais estreito, fortificado numa estrutura de titânio, proporciona uma aderência melhorada para uma experiência de visualização mais confortável.,
O Galaxy S25 Ultra tem um ecrã de 6,9” e uma moldura reduzida. A qualidade da imagem também melhorou significativamente graças ao nosso AP atualizado, à Galaxy AI melhorada e a uma câmara mais poderosa.,
O Galaxy S25 Ultra usa IA para que as suas aplicações funcionem em conjunto com um único pedido. Também inclui funcionalidades de IA adicionais, como Now Brief, Gemini Live e Apagador de Áudio. Graças à One UI 7 atualizada, estas funcionalidades funcionam perfeitamente no Galaxy S25 Ultra.,,,,
Graças ao nosso AP melhorado, a Nightography melhorou no Galaxy S25 Ultra, permitindo-lhe captar vídeos ainda mais nítidos à noite. Também pode tirar retratos realistas graças à capacidade do Object-aware Engine para detetar e se adaptar aos ambientes de iluminação. O inovador sistema de câmara também inclui uma nova câmara Ultra Grande-angular de 50 MP para que possa captar fotografias de alta resolução em todos os intervalos, incluindo macro.,
O Galaxy S25 Ultra é reforçado com uma estrutura de titânio forte, vidro Corning® Gorilla® Armor 2 e uma classificação IP68 para proteção contra riscos, pó e água das atividades do seu dia-a-dia.,,
Os Galaxy S25 Series apresentam o primeiro processador de 3 nm personalizado para smartphones Galaxy. O Snapdragon® 8 Elite Mobile Platform para Galaxy com ray tracing melhorado e otimização Vulkan, para uma experiência de jogo melhorada. E com uma Vapor Chamber maior e um novo material de interface térmica (TIM), terá uma experiência mais suave e nítida para que possa mergulhar totalmente no jogo durante mais tempo. 22,23,24
A Galaxy AI processa dados personalizados de forma segura no seu dispositivo através do Motor de Dados Pessoais. Os dados são então encriptados para restringir o acesso aleatório por outras aplicações. Em Controlos, também pode escolher como a Galaxy AI processa os seus dados, como no seu dispositivo ou na nuvem, eliminar dados personalizados ou optar por não personalizar.
Gemini é uma marca comercial da Google LLC. Resultados para fins ilustrativos. Requer ligação à Internet e início de sessão na Google Account. A disponibilidade do serviço pode variar consoante o país, o idioma ou o modelo do dispositivo. Funciona em aplicações compatíveis. As funcionalidades podem variar dependendo da subscrição e os resultados podem ser diferentes. Poderá ser necessário configurar determinadas funções ou aplicações. A precisão dos resultados não é garantida.
Os resultados podem variar dependendo das condições de disparo, incluindo vários motivos, estar fora de foco ou motivos em movimento.
Em comparação com modelos anteriores.
Com base nas condições de testes laboratoriais internos da Samsung com a versão de pré-lançamento de um determinado modelo ligado ao auricular via Bluetooth sob as predefinições através de LTE. Estimado em relação à capacidade da bateria e à corrente medida sobre o consumo de energia da bateria durante a reprodução de vídeo (resolução de ficheiro de vídeo 720p, guardado no dispositivo). O tempo real de reprodução de vídeo pode variar consoante a ligação à rede, as definições, o formato do ficheiro de vídeo, o brilho do ecrã, o estado da bateria e muitos outros fatores.
O titânio só é aplicado na estrutura do dispositivo. A estrutura não inclui o volume e as teclas laterais.
A disponibilidade de cores pode variar dependendo do país ou operadora.
Disponível exclusivamente em Samsung.com.
O Corning® Gorilla® Armor 2 aplica-se na parte frontal do dispositivo.
Com base nas condições de teste para submersão em até 1,5 metros de água doce durante até 30 minutos. Sem entrada de pó; proteção completa contra contacto (à prova de pó). A resistência ao pó e à água do dispositivo não é permanente e pode diminuir ao longo do tempo devido ao desgaste normal.
Gemini é uma marca registada da Google LLC. Resultados para fins ilustrativos. A funcionalidade Gemini Live requer ligação à Internet e início de sessão na Google Account. A disponibilidade do serviço pode variar consoante o país, o idioma ou o modelo do dispositivo. As funcionalidades podem variar dependendo da subscrição e os resultados podem ser diferentes. Compatível com determinadas funcionalidades e determinadas contas. Disponível apenas para utilizadores com idade igual ou superior a 18 anos. A precisão dos resultados não é garantida.
A funcionalidade Now Brief requer início de sessão na Samsung Account. A disponibilidade do serviço pode variar consoante o país, o idioma, o modelo do dispositivo e as aplicações. Algumas funcionalidades podem requerer ligação à rede. Os Modos e Rotinas têm de estar ativados para utilizar o Motor de Dados Pessoais para sugestões de Rotinas baseadas no contexto. O utilizador tem de consentir em aceder a permissões, tais como fotografias, vídeos, ficheiros de áudio e eventos de calendário. Pode não apresentar momentos, dependendo da política de tempo de exposição. A descrição das fotografias fornecidas por momentos pode não estar alinhada com a intenção do utilizador. A notificação de calendário de eventos está disponível com aplicações de calendário que utilizem bases de dados de calendário Android se o Calendário Samsung estiver instalado. Notificações para cupões apenas disponíveis para cupões adicionados à Samsung Wallet com data de validade. Para verificar a Pontuação de Energua, os dados de saúde monitorizados do Samsung Galaxy Watch ou Samsung Galaxy Ring devem ser sincronizados com a aplicação Samsung Health. O resultado é apenas para sua referência pessoal e não se destina a fins médicos.
Circundar para Pesquisar é uma marca comercial da Google LLC. Sequências encurtadas e simuladas. Resultados apenas para fins ilustrativos. A disponibilidade do serviço pode variar segundo o país, idioma ou modelo do dispositivo. Requer ligação à Internet. Os utilizadores podem ter de atualizar as aplicações Android ou Google para uma versão mais recente. Os resultados podem variar dependendo das correspondências visuais e áudio. A precisão dos resultados não é garantida. Funciona em aplicações e superfícies compatíveis e apenas com música ambiente. Não identificará música proveniente dos auscultadores ou se o volume do telefone estiver desligado.
Os resultados podem variar por vídeo, dependendo de como os sons estão presentes no vídeo. É necessário iniciar sessão na Samsung Account. Determinados tipos de som podem ser detetados, tais como vozes, música, vento, natureza, multidão e ruído. A deteção de som real pode variar dependendo da fonte de áudio e do estado do vídeo. A precisão dos resultados não é garantida.
A Pontuação de Energia está disponível em telefones Android (Android 11 ou superior) e requer a aplicação Samsung Health (v6.27 ou superior). É necessário iniciar sessão na Samsung Account. A disponibilidade do serviço pode variar por país, região e idioma. Para verificar a Pontuação de Energia, os dados de saúde monitorizados do Samsung Galaxy Watch (a série Galaxy Watch4 e modelos mais OS 5.0 ou superiores) ou Samsung Galaxy Ring devem ser sincronizados com a aplicação Samsung Health. Necessita de pelo menos os dados de atividade e de sono do dia anterior, e dados de frequência cardíaca durante o sono. Não deve ser usado na deteção, diagnóstico ou tratamento de qualquer condição médica. O resultado é apenas para sua referência pessoal. Consulte um profissional médico para aconselhamento.
Dispositivos Galaxy Watch e Galaxy Ring vendidos separadamente.
O Knox Matrix está disponível em smartphones e tablets Galaxy com a One UI 7.0 ou superior. A disponibilidade pode variar consoante o país ou a região.
O zoom de qualidade ótica é ativado pelo sensor de pixels adaptativo. As distâncias de 3x e 5x são zoom ótico. As distâncias de 2x e 10x são zoom de qualidade ótica.
O Space Zoom 100x inclui zoom de qualidade ótica 10x e zoom digital 100x com tecnologia de Super Resolução. Distâncias de zoom para além de zoom 10x podem apresentar alguma deterioração da imagem.
O AI Zoom é aplicado a distâncias entre os comprimentos do zoom digital. A precisão dos resultados não é garantida.
O Expert RAW tem de ser descarregado separadamente da Galaxy Store, gratuitamente, antes da utilização. Disponível em dispositivos das séries S25, S24 e S23, e dispositivos das séries S22, S21 Ultra, S20 Ultra, Note20 Ultra, Z Fold6, Z Flip6, Z Fold5, Z Fold4, Z Fold3 e Z Fold2. Os resultados podem variar consoante o método de edição e/ou as condições fotográficas, incluindo vários motivos, estar desfocado ou em movimento.
Os dispositivos Galaxy S25 Series e superiores têm disponível Log Video. Os resultados podem variar dependendo do método de edição e/ou das condições fotográficas. As filmagens originais Log Video podem aparecer planos e cinzentos. A classificação de cores é necessária utilizando determinadas ferramentas de edição.
Quando comparado com o Galaxy S24 Ultra.
Melhorias de desempenho da AP demonstradas em comparação com o Galaxy S24 Ultra. O desempenho real dependerá do ambiente do utilizador, das condições e do software e aplicações pré-instalados.
Os produtos da marca Snapdragon são produtos da Qualcomm Technologies, Inc. e/ou das suas subsidiárias.
A funcionalidade ProScaler está disponível nos modelos Galaxy S25+ e Ultra. A qualidade da imagem pode ser melhorada até QHD+, dependendo da definição de resolução de ecrã do dispositivo.
As opções de armazenamento e a disponibilidade podem variar consoante a operadora, o país ou a região. A disponibilidade de armazenamento real pode variar consoante o software pré-instalado.
Alguns widgets funcionais podem requerer ligação à rede e/ou início de sessão na Samsung Account. A disponibilidade das funções nas aplicações pode variar consoante o país.
As transferências com fios de dispositivos Android™ requerem que o dispositivo recetor tenha Android™ 4.3 ou posterior e que o dispositivo emissor tenha Android™ 4.3 ou posterior. As transferências podem ser concluídas sem um cabo através de uma ligação sem fios. Para ligações sem fios, o dispositivo recetor tem de ter Android™ 4.0 ou posterior e o dispositivo emissor tem de ter Android™ 4.0 ou posterior. Abra o Smart Switch Mobile em “Definições” no dispositivo Galaxy recetor ou transfira a aplicação Smart Switch Mobile da Galaxy Store. Os dados, conteúdos e aplicações disponíveis para transferência podem variar consoante o método de transmissão.
As transferências com fios do iOS requerem que o dispositivo recetor tenha Android™ 4.3 ou posterior e que o dispositivo emissor tenha iOS 5 ou posterior. As transferências podem ser concluídas sem um cabo através de uma ligação sem fios ou iCloud. Para ligações sem fios, o dispositivo recetor tem de ter Android™ 4.0 ou posterior e o dispositivo emissor tem de ter iOS 12 ou posterior. As transferências iCloud requerem que o dispositivo recetor tenha Android™ 4.0 ou posterior e que o dispositivo emissor tenha iOS 5 ou posterior. Abra o Smart Switch Mobile em “Definições” no dispositivo Galaxy recetor ou descarregue a aplicação Smart Switch Mobile da Galaxy Store. Para transferências sem fios, descarregue o Smart Switch para iOS a partir da App Store no seu iPhone ou iPad. Os dados, conteúdos e aplicações disponíveis para transferência podem variar consoante o método de transmissão. Os contactos, galeria, vídeos, calendários e lembretes podem ser transferidos sem fios a partir de um dispositivo iOS.
Recomenda-se a utilização de uma ligação com fios ao transferir diversos conjuntos de dados de uma só vez.
Medido diagonalmente como um retângulo completo. A área visível real é menor devido aos cantos arredondados e/ou ao orifício da câmara. Medido na diagonal, o tamanho do ecrã do Galaxy S25 é 6,2” no retângulo completo e 6,0” com os cantos arredondados; o tamanho do ecrã do Galaxy S25+ é 6,7” no retângulo completo e 6,5” com os cantos arredondados; o tamanho do ecrã do Galaxy S25 Ultra é 6,9” no retângulo completo e 6,8” com os cantos arredondados; a área visível real é menor devido aos cantos arredondados e/ou ao orifício da câmara.
Valor típico testado sob condições laboratoriais de terceiros. O valor típico é o valor médio estimado considerando o desvio na capacidade da bateria entre as amostras de bateria testadas sob a norma IEC 61960. A capacidade nominal é 3885 mAh para o Galaxy S25, 4755 mAh para o Galaxy S25+ e 4855 mAh para o Galaxy S25 Ultra.
O peso pode variar consoante o país ou a região.
Aplicam-se Termos e Condições. A cobertura Samsung Care+, o tipo de serviço e os detalhes da promoção podem variar de acordo com o país/região e pode aplicar-se a franquia (taxa de serviço). Para ser elegível para o benefício da promoção Samsung Care+, pode ser necessário registar-se. Para obter informações detalhadas sobre o Samsung Care+, visite https://www.samsung.com/samsung-care-plus/.
A duração real da bateria varia de acordo com o ambiente de rede, as funcionalidades e as aplicações usadas, a frequência das chamadas e das mensagens, o número de carregamentos, e muitos outros fatores.
`;
target.insertAdjacentHTML('beforeend', viewrHTML);
res();
});
};
const bindEvents = function () {
eventHandler.load();
eventHandler.viewerEvents();
eventHandler.click();
eventHandler.mousedown();
eventHandler.mouseup();
if (!isLow) {
eventList.setScene();
}
};
const eventHandler = {
load: function () {
window.addEventListener('DOMContentLoaded', eventList.load, {
once: true
});
},
viewerEvents: function () {
window.addEventListener('viewerLoadEnd', eventList.viewerLoadEnd);
window.addEventListener('introPoseEnd', eventList.introPoseEnd);
},
click: function () {
els.penBtn && els.penBtn.addEventListener('click', eventList.clickPen);
els.resetBtn && els.resetBtn.addEventListener('click', eventList.clickReset);
els.presetOpen && els.presetOpen.addEventListener('click', eventList.openPresetPopup);
for (let i = 0; i < els.angleCta.length; i++) {
els.angleCta[i].addEventListener('click', eventList.setAngle);
}
els.contents.addEventListener('click', function (e) {
if (e.target.classList.contains('js-reset-btn') || e.target.classList.contains('js-fold-btn') || e.target.classList.contains('js-preset-open') || e.target.closest('.js-preset-layer')) return;
eventList.closePresetPopup();
});
},
mousedown: function () {
els.presetOpen.addEventListener('mousedown', eventList.presetOpenDown);
els.presetOpen.addEventListener('touchstart', eventList.presetOpenDown);
},
mouseup: function () {
els.presetOpen.addEventListener('mouseup', eventList.presetOpenUp);
els.presetOpen.addEventListener('touchend', eventList.presetOpenUp);
},
doubleClick: function () {
if (!pdViewer || !pdViewer.viewer.domElement) return;
pdViewer.viewer.domElement.addEventListener('dblclick', eventList.doubleClick);
},
presetOpen: function () {
window.addEventListener('focusin', eventList.focusInPreset);
},
presetClose: function () {
window.removeEventListener('focusin', eventList.focusInPreset);
}
};
const eventList = {
load: function () {
if (!!!isLow) {
accessibility.pen.ariaLabel();
eventList.activePen();
}
},
viewerLoadEnd: function () {
pdViewer.hideLoader();
eventList.setViewerAltText();
eventList.runIntroPose();
},
introPoseEnd: function () {
isIntroEnd = true;
},
setScene: function () {
els.sceneObj = SCROLLER({
trackElement: els.section,
useFixed: false
});
},
runIntroPose: function () {
if (!isLow && els.viewerParent) {
pdViewer.runIntroPoseAll();
}
},
doubleClick: function () {
if (!pdViewer.viewer.isInit || !isIntroEnd) return;
if (pdViewer.getStatusToggleState() !== els.viewerParent.isActivePen) {
els.viewerParent.isActivePen = pdViewer.getStatusToggleState();
eventList.activePen();
}
},
clickPen: function () {
if (!pdViewer.viewer.isInit || !isIntroEnd) return;
if (!pdViewer.getStatusToggleState() || !els.viewerParent.isActivePen) {
pdViewer.statusToggleActive();
els.viewerParent.isActivePen = true;
pdViewer.setStatusToggle(true);
} else {
pdViewer.statusToggleInactive();
els.viewerParent.isActivePen = false;
pdViewer.setStatusToggle(false);
}
accessibility.pen.ariaLabel();
eventList.activePen();
accessibility.pen.tagging();
},
clickReset: function () {
if (!isIntroEnd) return;
pdViewer.reset();
},
presetOpenDown: function () {
isPresetOpenDown = true;
},
presetOpenUp: function () {
isPresetOpenDown = false;
},
focusInPreset: function () {
if (isPresetOpenDown) return;
const isAngleCtaFocus = Array.from(els.angleCta).find((el) => el === document.activeElement);
if (els.presetClose !== document.activeElement && !isAngleCtaFocus) {
eventList.closePresetPopup();
}
},
openPresetPopup: function () {
if (!els.presetLayer.classList.contains('is-active')) {
els.presetOpen.classList.add('is-open');
els.presetLayer.classList.add('is-active');
els.presetOpen.setAttribute('aria-expanded', true);
els.presetClose.focus();
eventHandler.presetOpen();
} else {
eventList.closePresetPopup();
}
els.presetClose && els.presetClose.addEventListener('click', eventList.closePresetPopup);
},
closePresetPopup: function (e) {
if (els.presetLayer.classList.contains('is-active')) {
els.presetOpen.classList.remove('is-open');
els.presetLayer.classList.remove('is-active');
els.presetOpen.setAttribute('aria-expanded', false);
if (e && e.target.classList.contains('js-preset-close')) {
els.presetOpen.focus();
}
eventHandler.presetClose();
}
},
activePen: function () {
if (!isIntroEnd) return;
if (!els.viewerParent.isActivePen) {
if (els.penBtn.classList.contains('is-active-pen')) els.penBtn.classList.remove('is-active-pen');
els.penBtn.classList.add('is-inactive-pen');
} else {
if (els.penBtn.classList.contains('is-inactive-pen')) els.penBtn.classList.remove('is-inactive-pen');
els.penBtn.classList.add('is-active-pen');
}
},
setAngle: function () {
if (!isIntroEnd) return;
let target = this,
targetAngle = target.getAttribute('data-js-angle');
pdViewer.setModelDirection(targetAngle);
accessibility.selected(target);
},
setViewerAltText: function () {
let altText = '';
if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) {
const activeModel = els.viewerSection.getAttribute('data-product-name');
altText = activeModel === 'galaxy-s25-ultra' ? LOCAL_VARI.viewer.altText : '';
}
pdViewer.setCanvasAltText(altText);
}
};
const accessibility = {
pen: {
ariaLabel: function () {
if (!els.viewerParent.isActivePen) {
els.penBtn.setAttribute('aria-label', `${els.penBtn.getAttribute('data-pen-on')}`);
} else {
els.penBtn.setAttribute('aria-label', `${els.penBtn.getAttribute('data-pen-off')}`);
}
},
tagging: function () {
let dataOmni = els.penBtn.getAttribute('data-omni'),
gaLa = els.penBtn.getAttribute('ga-la');
if (!els.viewerParent.isActivePen) {
els.penBtn.setAttribute('data-omni', dataOmni.replace('pen-off', 'pen-on'));
els.penBtn.setAttribute('ga-la', gaLa.replace('pen-off', 'pen-on'));
} else {
els.penBtn.setAttribute('data-omni', dataOmni.replace('pen-on', 'pen-off'));
els.penBtn.setAttribute('ga-la', gaLa.replace('pen-on', 'pen-off'));
}
},
},
selected: function (target) {
for (let i = 0; i < els.angleCta.length; i++) {
els.angleCta[i].removeAttribute('title');
if (els.angleCta[i].classList.contains('is-selected')) {
els.angleCta[i].classList.remove('is-selected');
}
}
if (!target.classList.contains('is-selected')) {
target.classList.add('is-selected');
}
if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) {
target.setAttribute('title', LOCAL_VARI.selected);
} else {
target.setAttribute('title', 'Selected');
}
}
};
return {
init: init
}
})();
})();
(function () {
window.flagship.features.colors = (function () {
const init = function () {
let colorchips = document.querySelectorAll('.js-colorchip');
for (let i = 0; i < colorchips.length; i++) {
colorchips[i].type = colorchips[i].parentElement.classList.contains('js-popup-colorchip') ? 'popup' : 'colors';
colorchips[i].isStatic = colorchips[i].parentElement.getAttribute('data-static');
flagship.features.colorchip(colorchips[i]);
}
}
return {
init: init
}
})();
window.flagship.features.colorchip = function (colorchipWrap) {
const utils = window.flagship.common.utils,
resize = window.flagship.common.resize;
let els = {},
activeClass = 'is-active',
middleClass = 'is-middle',
endClass = 'is-end',
currentDevice = resize.checkResolution(),
prevDevice = null,
currentSlidesPerView = currentDevice.indexOf('mobile') > -1 ? 5 : 7,
isIntroEnd = utils.isLowNetwork ? true : false;
const init = function () {
els.section = document.querySelector('.js-colors');
els.popup = document.querySelector('.js-viewer');
if (colorchipWrap.type == 'popup') {
colorchipWrap.contentWrap = els.popup;
} else {
colorchipWrap.contentWrap = els.section;
}
setElements();
setProperty();
bindEvents();
};
const setElements = function () {
// panel
els.panelWrap = els.section.querySelector('.js-panel-wrap');
els.panelItems = els.panelWrap.querySelectorAll('.js-panel-item');
// colorchip
els.swiperContainer = colorchipWrap.querySelector('.js-colorchip-container');
els.colorchipButtons = colorchipWrap.querySelectorAll('.js-colorchip-button');
els.swiperArrowWrap = colorchipWrap.querySelector('.js-arrow-wrap');
els.swiperNextArrow = colorchipWrap.querySelector('.js-colorchip-next');
els.swiperPrevArrow = colorchipWrap.querySelector('.js-colorchip-prev');
els.colorchipNames = colorchipWrap.querySelectorAll('.js-colorchip-name');
// viewer
els.viewerSection = els.section.querySelector('.js-colors-viewer');
els.viewerWrap = els.viewerSection.querySelector('.features-colors__viewer360-content');
};
const setProperty = function () {
for (let i = 0; i < els.colorchipButtons.length; i++) {
els.colorchipButtons[i].index = i;
}
};
const bindEvents = function () {
eventList.checkColorchipSwiper();
if (colorchipWrap.type != 'popup') eventList.setColors(0);
eventHandler.click();
eventHandler.keydown();
resize.add(eventList.resize);
eventHandler.scroll();
eventHandler.viewerEvents();
};
const eventHandler = {
click: function () {
for (let i = 0; i < els.colorchipButtons.length; i++) {
els.colorchipButtons[i].addEventListener('click', eventList.clickColorchip);
}
els.swiperNextArrow.addEventListener('click', accessibility.clickArrow);
els.swiperPrevArrow.addEventListener('click', accessibility.clickArrow);
},
keydown: function () {
els.swiperNextArrow.addEventListener('keydown', accessibility.clickArrow);
els.swiperPrevArrow.addEventListener('keydown', accessibility.clickArrow);
},
scroll: function () {
window.addEventListener('scroll', eventList.scroll);
},
viewerEvents: function () {
window.addEventListener('introPoseEnd', eventList.introPoseEnd);
}
};
const eventList = {
scroll: function () {
let winOffsetBottom = window.pageYOffset + window.innerHeight,
kv = document.querySelector('.features-kv'),
kvHeight = kv.getBoundingClientRect().height + utils.getNavHeight();
if (winOffsetBottom >= kvHeight) {
// bg load
colorchipWrap.bgImgs = colorchipWrap.querySelectorAll('.js-bg-img');
if (!!colorchipWrap.bgImgs) bgLoader.setResponsiveMedia(colorchipWrap.bgImgs);
window.removeEventListener('scroll', eventList.scroll);
}
},
checkColorchipSwiper: function () {
let colorchipSwiperLength = currentDevice.indexOf('mobile') > -1 ? 6 : 8;
if (els.colorchipButtons.length >= colorchipSwiperLength) {
if (els.swiperArrowWrap.style.display == 'none') {
els.swiperArrowWrap.style.display = '';
}
swiperEvents.set();
} else {
if (els.swiperArrowWrap.style.display != 'none') {
els.swiperArrowWrap.style.display = 'none';
}
if (els.colorchipSwiper != null) {
swiperEvents.destroy();
}
}
},
setColors: function (activeIndex) {
eventList.setColorchip(activeIndex);
eventList.setPanel(activeIndex);
eventList.setColorName(activeIndex);
// viewer
if (PDVIEWER.getViewer()) {
eventList.setViewerColor(activeIndex)
}
},
resize: function (currRes) {
currentDevice = currRes;
if (currentDevice !== prevDevice) {
currentSlidesPerView = currentDevice.indexOf('mobile') > -1 ? 5 : 7;
prevDevice = currentDevice;
eventList.checkColorchipSwiper();
}
},
clickColorchip: async function () {
if (!isIntroEnd) return;
if (!utils.isLowNetwork() && PDVIEWER.getViewer()) {
if (PDVIEWER.getViewer().viewer.isChanging) return;
if (PDVIEWER.getViewer().viewer.viewerModel.isMixerRun) return;
}
const targetColor = this;
eventList.setColors(targetColor.index);
},
setViewerColor: async function (activeIndex) {
const modelName = els.viewerSection.getAttribute('data-product-name');
const colorName = els.colorchipButtons[activeIndex].getAttribute('data-colors');
await PDVIEWER.getViewer().changeColor(modelName, colorName);
},
setColorchip: function (activeIndex) {
let targetcolorchipButton = els.colorchipButtons[activeIndex];
for (let i = 0; i < els.colorchipButtons.length; i++) {
els.colorchipButtons[i].classList.remove(activeClass);
els.colorchipButtons[i].removeAttribute('title');
}
if (!targetcolorchipButton.classList.contains(activeClass)) {
targetcolorchipButton.classList.add(activeClass);
accessibility.selected(targetcolorchipButton);
}
},
setPanel: function (activeIndex) {
if (!colorchipWrap.isStatic) return;
for (let i = 0; i < els.panelItems.length; i++) {
if (els.panelItems[i].classList.contains(activeClass)) {
els.panelItems[i].classList.remove(activeClass);
els.panelItems[i].setAttribute('aria-hidden', true);
}
}
if (!els.panelItems[activeIndex].classList.contains(activeClass)) {
els.panelItems[activeIndex].classList.add(activeClass);
els.panelItems[activeIndex].setAttribute('aria-hidden', false);
}
},
setColorName: function (activeIndex) {
for (let i = 0; i < els.colorchipNames.length; i++) {
if (i !== activeIndex) {
utils.onAccessibility(els.colorchipNames[i]);
}
if (els.colorchipNames[i].classList.contains(activeClass)) {
els.colorchipNames[i].classList.remove(activeClass);
}
}
if (!els.colorchipNames[activeIndex].classList.contains(activeClass)) {
els.colorchipNames[activeIndex].classList.add(activeClass);
utils.offAccessibility(els.colorchipNames[activeIndex]);
}
},
introPoseEnd: function () {
isIntroEnd = true;
}
};
const swiperEvents = {
set: function () {
if (els.colorchipSwiper == null) {
els.colorchipSwiper = new Swiper(els.swiperContainer, {
init: false,
navigation: {
nextEl: els.swiperNextArrow,
prevEl: els.swiperPrevArrow,
},
slidesPerView: currentSlidesPerView,
speed: 300,
});
els.colorchipSwiper.on('init', swiperEvents.init);
els.colorchipSwiper.on('slideChange', swiperEvents.slideChange);
els.colorchipSwiper.init();
}
},
init: function () {
let notification = this.el.querySelector('.swiper-notification');
if (!!notification) this.el.removeChild(notification);
els.swiperPrevArrow.removeAttribute('aria-label');
els.swiperPrevArrow.removeAttribute('role');
els.swiperNextArrow.removeAttribute('aria-label');
els.swiperNextArrow.removeAttribute('role');
accessibility.colorchip(els.colorchipSwiper);
accessibility.colorchipArrow(els.colorchipSwiper);
},
slideChange: function () {
accessibility.colorchip(els.colorchipSwiper);
accessibility.colorchipArrow(els.colorchipSwiper);
},
destroy: function () {
els.colorchipSwiper.destroy(true);
els.colorchipSwiper = null;
},
};
const accessibility = {
clickArrow: function (e) {
let arrowTimeout = null,
arrowStyleTimeout = null;
if ((e.type == 'keydown' && e.keyCode == 13) || e.type == 'click') {
e.preventDefault();
if (els.colorchipSwiper.isBeginning && !els.colorchipSwiper.isEnd) {
els.swiperPrevArrow.style.setProperty('display', 'block');
els.swiperContainer.parentElement.classList.remove(middleClass);
els.swiperContainer.parentElement.classList.remove(endClass);
clearTimeout(arrowTimeout);
arrowTimeout = setTimeout(function () {
els.swiperNextArrow.focus();
}, 300);
clearTimeout(arrowStyleTimeout);
arrowStyleTimeout = setTimeout(function () {
els.swiperPrevArrow.style.display = '';
}, 400);
} else if (!els.colorchipSwiper.isBeginning && els.colorchipSwiper.isEnd) {
els.swiperNextArrow.style.setProperty('display', 'block');
els.swiperContainer.parentElement.classList.remove(middleClass);
els.swiperContainer.parentElement.classList.add(endClass);
clearTimeout(arrowTimeout);
arrowTimeout = setTimeout(function () {
els.swiperPrevArrow.focus();
}, 300);
clearTimeout(arrowStyleTimeout);
arrowStyleTimeout = setTimeout(function () {
els.swiperNextArrow.style.display = '';
}, 400);
}
if (!els.colorchipSwiper.isBeginning && !els.colorchipSwiper.isEnd) {
els.swiperContainer.parentElement.classList.remove(endClass);
els.swiperContainer.parentElement.classList.add(middleClass);
}
}
},
colorchip: function (swiperObj) {
let isNotActivedColorchips = null;
for (let i = 0; i < swiperObj.slides.length; i++) {
if (currentDevice.indexOf('mobile') > -1) {
isNotActivedColorchips = (i != swiperObj.activeIndex) && (i > swiperObj.activeIndex + 4) || (swiperObj.activeIndex > i);
} else {
isNotActivedColorchips = (i != swiperObj.activeIndex) && (i > swiperObj.activeIndex + 6) || (swiperObj.activeIndex > i);
}
if (isNotActivedColorchips) {
utils.onAccessibility(swiperObj.slides[i]);
setTimeout(function () {
utils.onAccessibility(swiperObj.slides[i]);
}, 300);
} else {
utils.offAccessibility(swiperObj.slides[i]);
setTimeout(function () {
utils.offAccessibility(swiperObj.slides[i]);
}, 300);
}
}
},
colorchipArrow: function (swiperObj) {
if (swiperObj.isBeginning && !swiperObj.isEnd) {
utils.onAccessibility(els.swiperPrevArrow);
utils.offAccessibility(els.swiperNextArrow);
} else if (!swiperObj.isBeginning && !swiperObj.isEnd) {
utils.offAccessibility(els.swiperPrevArrow);
utils.offAccessibility(els.swiperNextArrow);
} else {
utils.onAccessibility(els.swiperNextArrow);
utils.offAccessibility(els.swiperPrevArrow);
}
},
selected: function (target) {
if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) {
target.setAttribute('title', LOCAL_VARI.selected);
} else {
target.setAttribute('title', 'Selected');
}
}
};
return init(colorchipWrap);
};
})();
(function () {
window.flagship.features.compares = (function () {
const init = function () {
const compares = document.querySelectorAll('.js-compare');
for (let i = 0; i < compares.length; i++) {
compares[i].type = compares[i].getAttribute('data-compare-type') || null;
flagship.features.compare(compares[i]);
}
}
return {
init: init
}
})();
window.flagship.features.compare = function (compareWrap) {
const resize = window.flagship.common.resize,
compareOption = window.flagship.features.compareOption;
let els = {},
prevDevice = null,
currDevice = resize.checkResolution(),
oldValue = null,
isMousedown = false,
currentModelData = 'S25U';
const compareData = {
'SM-S918': {
modelName: 'galaxy-s23-ultra',
modelText: 'Galaxy S23 Ultra',
modelCode: 'S23U',
weight: {
A: 234,
B: 233,
},
thickness: 8.9,
mp: 12,
hrs: {
A: 26,
B: 26
}
},
'SM-S908': {
modelName: 'galaxy-s22-ultra',
modelText: 'Galaxy S22 Ultra',
modelCode: 'S22U',
weight: {
A: 229,
B: 228,
},
thickness: 8.9,
mp: 12,
hrs: {
A: 20,
B: 22
}
},
'SM-G998': {
modelName: 'galaxy-s21-ultra-5g',
modelText: 'Galaxy S21 Ultra 5G',
modelCode: 'S21U',
weight: {
A: 229,
B: 227,
},
thickness: 8.9,
mp: 12,
hrs: {
A: 22,
B: 22
}
}
}
const init = function () {
els.section = compareWrap;
if (!!els.section) {
setElements();
setProperty();
bindEvents();
eventList.setCompareVari();
eventList.getDeviceInfo().then((modelCode) => {
if (!modelCode || !Object.keys(compareData).find((sku) => sku === modelCode)) {
modelCode = 'SM-G998';
}
eventList.selectItem(modelCode);
eventList.setDefault(modelCode);
});
}
};
const setElements = function () {
els.dropdown = els.section.querySelector('.js-dropdown');
if (els.section.type === 'camera') {
els.compareMp = els.section.querySelector('.js-mp-value');
els.cameraUnits = els.section.querySelectorAll('.js-camera-unit');
els.ultraWideTexts = els.section.querySelectorAll('.js-copy-ultrawide');
} else if (els.section.type === 'design') {
els.compareThickness = els.section.querySelector('.js-thickness-value');
els.compareWeight = els.section.querySelector('.js-weight-value');
els.thicknessUnits = els.section.querySelectorAll('.js-thickness-unit');
els.weightUnits = els.section.querySelectorAll('.js-weight-unit');
els.thicknessTexts = els.section.querySelectorAll('.js-copy-thickness');
els.weightTexts = els.section.querySelectorAll('.js-copy-weight');
} else if (els.section.type === 'battery') {
els.compareHrs = els.section.querySelector('.js-hrs-value');
els.batteryUnits = els.section.querySelectorAll('.js-battery-unit');
els.playbackTexts = els.section.querySelectorAll('.js-copy-playback');
}
};
const setProperty = function () {
els.dropdown.selectBox = els.dropdown.querySelector('.js-select-box');
els.dropdown.button = els.dropdown.querySelector('.js-select-button');
els.dropdown.list = els.dropdown.querySelector('.js-select-list');
els.dropdown.listItem = els.dropdown.list.querySelectorAll('.js-select-item');
if (els.section.type === 'camera') {
for (let i = 0; i < els.ultraWideTexts.length; i++) {
els.ultraWideTexts[i].key = 'ultraWide';
els.ultraWideTexts[i].defaultText = 'Ultra Wide Camera';
}
for (let i = 0; i < els.cameraUnits.length; i++) {
els.cameraUnits[i].key = 'mp';
els.cameraUnits[i].defaultText = 'MP';
}
} else if (els.section.type === 'design') {
for (let i = 0; i < els.thicknessTexts.length; i++) {
els.thicknessTexts[i].key = 'thickness';
els.thicknessTexts[i].defaultText = 'Thickness';
}
for (let i = 0; i < els.thicknessUnits.length; i++) {
els.thicknessUnits[i].key = 'mm';
els.thicknessUnits[i].defaultText = 'mm';
}
for (let i = 0; i < els.weightTexts.length; i++) {
els.weightTexts[i].key = 'weight';
els.weightTexts[i].defaultText = 'Weight';
}
for (let i = 0; i < els.weightUnits.length; i++) {
els.weightUnits[i].key = 'g';
els.weightUnits[i].defaultText = 'g';
}
} else if (els.section.type == 'battery') {
for (let i = 0; i < els.playbackTexts.length; i++) {
els.playbackTexts[i].key = 'playback';
els.playbackTexts[i].defaultText = 'video Playback';
}
for (let i = 0; i < els.batteryUnits.length; i++) {
els.batteryUnits[i].key = 'hrs';
els.batteryUnits[i].defaultText = 'hrs';
}
}
};
const bindEvents = function () {
resize.add(eventList.resize);
eventHandler.click();
eventHandler.mousedown();
eventHandler.mouseup();
eventHandler.change();
eventHandler.resize();
eventHandler.offFocusSelect()
};
const eventHandler = {
click: function () {
els.section.addEventListener('click', function (event) {
const isButton = event.target.classList.contains('js-select-button');
const isOption = event.target.classList.contains('js-select-item');
if (isButton) {
eventHandler.dropdownClickCheck(event);
eventList.dropdowntoggle(event);
accessibility.changeAriaHidden();
} else if (isOption) {
eventList.clickCompareModel(event.target);
eventList.clickOption(event.target);
eventList.dropdownClose();
accessibility.dropdownFocus();
}
});
els.dropdown.selectBox.addEventListener("click", eventList.clickSelect)
},
change: function () {
els.dropdown.selectBox.addEventListener('change', function (event) {
eventList.clickOption(event.target);
eventList.changeSelectBox(event.target);
});
},
resize: function () {
window.addEventListener('resize', function () {
accessibility.changeAriaHidden();
});
},
mousedown: function () {
els.dropdown.button.addEventListener('mousedown', function () {
isMousedown = true;
});
},
mouseup: function () {
els.dropdown.button.addEventListener('mouseup', function () {
isMousedown = false;
});
},
dropdownClickCheck: function () {
document.addEventListener('click', eventList.checkDropdownClick);
},
offDropdownClickCheck: function () {
document.removeEventListener('click', eventList.checkDropdownClick);
},
onFocusInDropdown: function () {
eventHandler.offFocusInDropdown();
document.addEventListener('focusin', eventList.focusInDropdown);
},
offFocusInDropdown: function () {
document.removeEventListener('focusin', eventList.focusInDropdown);
},
offFocusSelect: function () {
els.dropdown.selectBox.addEventListener('blur', eventList.offFocusSelect)
}
}
const eventList = {
isDropdownSelect: function () {
return els.dropdown.selectBox.clientHeight > 0;
},
dropdowntoggle: function (event) {
let isExpanded = event.target.getAttribute('aria-expanded') === 'true';
event.target.setAttribute('aria-expanded', !isExpanded);
if (!isExpanded) {
event.target.classList.add('is-active');
eventHandler.onFocusInDropdown();
setTagging.close(event.target);
} else {
event.target.classList.remove('is-active');
setTagging.open(event.target);
}
},
checkDropdownClick: function (event) {
const isButton = event.target.classList.contains('js-select-button');
const isOption = event.target.classList.contains('js-select-item');
if (!isButton && !isOption) {
eventList.dropdownClose();
}
},
dropdownClose: function () {
els.dropdown.button.setAttribute('aria-expanded', 'false');
els.dropdown.button.classList.remove('is-active');
if (!(els.dropdown.button.getAttribute('aria-expanded') === 'true')) {
setTagging.open(els.dropdown.button);
}
eventHandler.mouseup();
eventHandler.offDropdownClickCheck();
eventHandler.offFocusInDropdown();
accessibility.changeAriaHidden();
},
focusInDropdown: function (event) {
const isInList = event.target.closest('.js-select-list');
const isButton = event.target.classList.contains('js-select-button');
if (!isInList && !(isButton && isMousedown)) {
eventList.dropdownClose();
}
},
clickOption: function (target) {
const targetParent = target.closest('.js-dropdown');
targetParent.selectBoxButton = targetParent.querySelector('.js-select-button');
if (eventList.isDropdownSelect()) {
const selectIndex = targetParent.selectBox.selectedIndex,
optionList = targetParent.selectBox.options;
Array.from(optionList).forEach(option => option.removeAttribute('selected'));
optionList[selectIndex].setAttribute('selected', true)
targetParent.button.textContent = optionList[selectIndex].textContent;
} else {
const selectItemDataValue = target.getAttribute('data-value');
Array.from(targetParent.selectBox.children).forEach((optionEl) => {
const value = optionEl.getAttribute('value');
if (value !== selectItemDataValue) {
optionEl.removeAttribute('selected');
} else {
optionEl.setAttribute('selected', 'true');
}
});
targetParent.selectBox.value = selectItemDataValue;
targetParent.button.textContent = target.textContent;
}
},
setDefault: function (modelValue) {
const {
modelText
} = compareData[modelValue];
els.dropdown.button.innerText = modelText;
accessibility.changeAriaHidden();
},
getModelData: function (value) {
const {
modelCode
} = compareData[value];
return modelCode;
},
matchItems: function (modelValue) {
const compareModelData = eventList.getModelData(modelValue);
const modelMatchData = compareModelData + 'to' + currentModelData;
eventList.changeDescription(modelMatchData, modelValue);
},
changeDescription: function (modelMatchData, modelValue) {
const textLists = els.section.querySelectorAll('.js-change-description');
if (textLists) {
textLists.forEach((list) => {
const matchDataItems = list.dataset.case.split(' ');
const isMatched = matchDataItems.some(item => item === modelMatchData);
!isMatched ? accessibility.ariaHiddenTrue(list) : accessibility.ariaHiddenFalse(list);
if (isMatched && !oldValue) {
list.classList.add('is-init');
} else if (oldValue) {
if (oldValue == modelValue) return;
list.classList.remove('is-active');
list.classList.remove('is-show');
list.classList.remove('is-init');
if (isMatched) {
accessibility.ariaHiddenFalse(list);
list.classList.add('is-show');
setTimeout(function () {
list.classList.add('is-active');
})
}
}
})
}
},
clickCompareModel: function (optionEl) {
const modelValue = optionEl.getAttribute('data-value') || '';
eventList.selectItem(modelValue);
},
changeSelectBox: function (selectEl) {
const selectedEl = Array.from(selectEl.childNodes).find((el) => el.selected);
const modelValue = selectedEl.value;
eventList.selectItem(modelValue);
},
resize: function (currRes) {
currDevice = currRes;
if (currDevice != prevDevice) {
eventList.responsive();
prevDevice = currDevice;
}
eventList.dropdownClose();
els.dropdown.selectBox.classList.remove("is-active");
},
responsive: function () {},
getDeviceInfo: function () {
return new Promise((resolve, reject) => {
if (navigator.userAgentData) {
navigator.userAgentData.getHighEntropyValues(['model']).then((uaData) => {
const modelCode = uaData.model ? uaData.model.slice(0, 7) : null;
resolve(modelCode);
}).catch((err) => reject(err));
} else {
const compareModelList = Object.keys(compareData);
const sku = compareModelList.find((sku) => navigator.userAgent.includes(sku));
resolve(sku);
}
});
},
setCompareVari: function () {
let targetTexts = [];
if (els.section.type === 'design') {
targetTexts = targetTexts.concat(Array.from(els.thicknessUnits))
.concat(Array.from(els.weightUnits))
.concat(Array.from(els.thicknessTexts))
.concat(Array.from(els.weightTexts));
} else if (els.section.type === 'camera') {
targetTexts = Array.from(els.cameraUnits)
.concat(Array.from(els.ultraWideTexts));
} else if (els.section.type === 'battery') {
targetTexts = Array.from(els.batteryUnits)
.concat(Array.from(els.playbackTexts));
}
targetTexts.forEach((el) => {
const {
key,
defaultText
} = el;
if (typeof COMPARE_VARI != 'undefined' && !!COMPARE_VARI) {
el.innerText = COMPARE_VARI[key] || defaultText;
} else {
el.innerText = defaultText;
}
});
},
setCompareValueText: function (modelValue) {
const {
thickness,
weight,
mp,
hrs
} = compareData[modelValue];
if (els.section.type === 'design') {
const weightType = weight[compareOption.type] ? weight[compareOption.type] : weight['B'];
els.compareThickness.innerText = thickness;
els.compareWeight.innerText = weightType;
} else if (els.section.type === 'camera') {
els.compareMp.innerText = mp;
} else if (els.section.type === 'battery') {
const hrsType = hrs[compareOption.type] ? hrs[compareOption.type] : hrs['B'];
els.compareHrs.innerText = hrsType;
}
},
selectItem: function (modelValue) {
eventList.setCompareValueText(modelValue);
accessibility.changeSelected(modelValue);
eventList.matchItems(modelValue);
if (oldValue && oldValue !== modelValue) {
const textAreaList = els.section.querySelectorAll('.js-text-change');
textAreaList.forEach((textEl) => textEl.classList.remove('is-active'));
setTimeout(() => textAreaList.forEach((textEl) => textEl.classList.add('is-active')), 0);
}
oldValue = modelValue;
},
clickSelect: function () {
els.dropdown.selectBox.classList.toggle("is-active");
},
offFocusSelect: function () {
if (els.dropdown.selectBox.classList.contains("is-active")) {
els.dropdown.selectBox.classList.remove("is-active");
}
}
};
const accessibility = {
changeSelected: function (modelCode) {
const targetOption = Array.from(els.dropdown.selectBox.options).find((optionEl) => optionEl.getAttribute('value') === modelCode);
const targetDropdownList = els.dropdown.list;
const targetDropdownItem = targetDropdownList.querySelectorAll('.js-select-item');
const target = Array.from(targetDropdownItem).find((el) => el.getAttribute('data-value') === modelCode);
targetOption.setAttribute('selected', true);
for (let i = 0; i < els.dropdown.selectBox.options.length; i++) {
const optionValue = els.dropdown.selectBox.options[i].getAttribute('value');
if (optionValue !== modelCode) {
els.dropdown.selectBox.options[i].removeAttribute('selected');
} else {
els.dropdown.selectBox.options[i].setAttribute('selected', true)
}
}
for (let i = 0; i < targetDropdownItem.length; i++) {
if (targetDropdownItem[i] !== target) {
targetDropdownItem[i].removeAttribute('title');
} else {
accessibility.selected(target);
}
}
},
changeAriaHidden: function () {
eventList.isDropdownSelect();
if (eventList.isDropdownSelect()) {
accessibility.ariaHiddenTrue(els.dropdown.list);
accessibility.ariaHiddenTrue(els.dropdown.button);
if (els.dropdown.selectBox.hasAttribute('aria-hidden')) {
accessibility.ariaHiddenFalse(els.dropdown.selectBox);
}
} else {
const isOpened = els.dropdown.button.getAttribute('aria-expanded') === 'true';
setTimeout(() => {
// Console warning on aria-hidden on focus element
accessibility.ariaHiddenTrue(els.dropdown.selectBox);
accessibility.ariaHiddenFalse(els.dropdown.button);
if (isOpened) {
accessibility.ariaHiddenFalse(els.dropdown.list);
} else {
accessibility.ariaHiddenTrue(els.dropdown.list);
}
});
}
},
ariaHiddenTrue: function (element) {
element.setAttribute('aria-hidden', true);
element.setAttribute('tabindex', '-1');
},
ariaHiddenFalse: function (element) {
element.removeAttribute('aria-hidden');
element.removeAttribute('tabindex');
},
dropdownFocus: function () {
els.dropdown.button.focus();
},
selected: function (target) {
if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) {
target.setAttribute('title', LOCAL_VARI.selected);
} else {
target.setAttribute('title', 'Selected');
}
}
}
const setTagging = {
open: function (target) {
if (target.hasAttribute('data-omni')) {
let dataOmni = target.getAttribute('data-omni').toLowerCase();
target.setAttribute('data-omni', dataOmni.replace('close', 'open'));
}
if (target.hasAttribute('ga-la')) {
let gaLa = target.getAttribute('ga-la').toLowerCase();
target.setAttribute('ga-la', gaLa.replace('close', 'open'));
}
},
close: function (target) {
if (target.hasAttribute('data-omni')) {
let dataOmni = target.getAttribute('data-omni').toLowerCase();
target.setAttribute('data-omni', dataOmni.replace('open', 'close'));
}
if (target.hasAttribute('ga-la')) {
let gaLa = target.getAttribute('ga-la').toLowerCase();
target.setAttribute('ga-la', gaLa.replace('open', 'close'));
}
}
};
return init(compareWrap);
};
})();
(function () {
window.flagship = window.flagship || {};
window.flagship.features = window.flagship.features || {};
window.flagship.features.display = (function () {
const utils = window.flagship.common.utils;
const resize = window.flagship.common.resize;
let els = {};
let objs = {};
let status = {};
let currDevice = resize.checkResolution();
let prevDevice = null;
const init = function () {
els.section = document.querySelector('.features-display');
if (!!els.section) {
setElements();
setStatus();
bindEvents();
}
};
const setElements = function () {
els.resizeTimeout = null;
els.displayBarWrap = els.section.querySelector('.features-display__bar');
els.displayBar = els.displayBarWrap.querySelector('.features-display__bar-line');
els.displayImage = els.section.querySelector('.features-display__image');
els.displayCoverImage = els.section.querySelector('.features-display__cover');
els.isGrab = false;
els.isAction = false;
els.displayCoverLeftWrap = els.section.querySelector('.features-display__tap--left');
els.displayCoverLeftBtn = els.section.querySelector('.features-display__tap--left button');
els.displayCoverRightBtn = els.section.querySelector('.features-display__tap--right button');
els.controller = els.section.querySelector('.features-display__button');
els.imgWrap = els.section.querySelector('.features-display__image-inner');
els.tabWrap = els.section.querySelector('.features-display__tap-wrap');
maxPercent = currDevice === 'mobileS' ? 0.797 : currDevice === 'mobile' ? 0.835 : 0.984;
minPercent = currDevice === 'mobileS' ? 0.201 : currDevice === 'mobile' ? 0.155 : 0.015;
};
const setStatus = function () {
status.isTabMove = false;
};
const bindEvents = function () {
window.addEventListener('DOMContentLoaded', onLoadHandler, {
once: true
});
window.addEventListener('scroll', onScrollHandler);
els.section.addEventListener('click', grabEventHandler.onMoveEvent);
els.section.addEventListener('mousedown', grabEventHandler.onStart);
els.section.addEventListener('mousemove', grabEventHandler.onMove);
els.section.addEventListener('mouseup', grabEventHandler.onEnd);
els.section.addEventListener('mouseleave', grabEventHandler.onEnd);
els.section.addEventListener('touchstart', grabEventHandler.onStart);
els.section.addEventListener('touchmove', grabEventHandler.onMove);
els.section.addEventListener('touchend', grabEventHandler.onEnd);
els.section.addEventListener('touchcancel', grabEventHandler.onEnd);
els.section.addEventListener('touchmove', grabEventHandler.moveDisabled);
els.section.addEventListener('mousemove', grabEventHandler.moveDisabled);
els.section.addEventListener('click', grabEventHandler.moveDisabled);
resize.add(onResizeHandler);
};
const setAnimations = function () {
let minValue = currDevice.indexOf('mobile') > -1 ? 27.5 : 25;
let maxValue = currDevice.indexOf('mobile') > -1 ? 72.5 : 75;
TweenMax.set(els.controller, {
left: `${minValue}%`,
ease: Power2.easeOut
});
TweenMax.set(els.displayBar, {
left: `${minValue}%`,
ease: Power2.easeOut
});
TweenMax.set(els.displayCoverImage, {
width: `${minValue}%`,
ease: Power2.easeOut
});
objs.barAnim = new TimelineLite();
objs.barAnim
.to(els.displayBar, 1, {
left: `${maxValue}%`,
ease: Power2.easeOut
})
.to(els.displayBar, 1, {
left: 50 + '%',
ease: Power2.easeOut
});
objs.buttonAnim = new TimelineLite();
objs.buttonAnim
.to(els.controller, 1, {
left: `${maxValue}%`,
ease: Power2.easeOut
})
.to(els.controller, 1, {
left: 50 + '%',
ease: Power2.easeOut
});
objs.imgAnim = new TimelineLite();
objs.imgAnim
.to(els.displayCoverImage, 1, {
width: `${maxValue}%`,
ease: Power2.easeOut
})
.to(els.displayCoverImage, 1, {
width: 50 + '%',
ease: Power2.easeOut
});
TweenMax.set(els.displayCoverLeftWrap, {
width: `${minValue}%`,
ease: Power2.easeOut
});
objs.imgAnim = new TimelineLite();
objs.imgAnim
.to(els.displayCoverLeftWrap, 1, {
width: `${maxValue}%`,
ease: Power2.easeOut
})
.to(els.displayCoverLeftWrap, 1, {
width: 50 + '%',
ease: Power2.easeOut
});
};
const onLoadHandler = function () {
onScrollHandler();
};
const onResizeHandler = function (currRes) {
currDevice = currRes;
clearTimeout(els.resizeTimeout);
els.resizeTimeout = setTimeout(function () {
onScrollHandler();
}, 150);
if (currDevice != prevDevice) {
onResponsiveHandler();
prevDevice = currDevice;
}
};
const onResponsiveHandler = function () {
maxPercent = currDevice === 'mobileS' ? 0.797 : currDevice === 'mobile' ? 0.835 : 0.984;
minPercent = currDevice === 'mobileS' ? 0.201 : currDevice === 'mobile' ? 0.155 : 0.015;
TweenMax.set(els.displayBar, {
left: 50 + '%'
});
TweenMax.set(els.controller, {
left: 50 + '%'
});
TweenMax.set(els.displayCoverImage, {
width: 50 + '%'
});
TweenMax.set(els.displayCoverLeftWrap, {
width: 50 + '%'
});
};
const onScrollHandler = function () {
let winOffsetTop = window.pageYOffset + utils.getNavHeight();
let winOffsetBottom = window.pageYOffset + window.innerHeight;
let targetRect = els.displayImage.getBoundingClientRect();
let targetOffsetTop = window.pageYOffset + targetRect.top;
let targetOffsetBottom = window.pageYOffset + targetRect.bottom;
if ((winOffsetBottom - (window.innerHeight * 0.25) > targetOffsetTop &&
winOffsetTop + (window.innerHeight * 0.25) < targetOffsetBottom) && !els.isAction) {
setAnimations();
els.isAction = true;
}
};
const grabEventHandler = {
onStart: function (e) {
e.target.matches('.features-display__button') && (els.isGrab = true);
},
onEnd: function () {
els.isGrab = false;
},
onMove: function (e) {
if (els.isGrab) {
e && e.preventDefault();
let wrapRect = els.displayBarWrap.getBoundingClientRect();
let wrapMaxWidth = wrapRect.width * maxPercent;
let wrapMinWidth = wrapRect.width * minPercent;
let xPosition = !e.touches ? e.pageX : e.touches[0].pageX;
let barPosition = xPosition - wrapRect.left;
if (barPosition > wrapMaxWidth) barPosition = wrapMaxWidth;
else if (barPosition < wrapMinWidth) barPosition = wrapMinWidth;
let barPercent = ((barPosition / wrapRect.width) * 100);
els.displayBar.style.left = barPercent + '%';
els.controller.style.left = barPercent + '%';
els.displayCoverImage.style.width = barPercent + '%';
grabEventHandler.setArrowSize(barPercent);
}
},
onMoveEvent: function (e) {
let wrapRect = els.displayBarWrap.getBoundingClientRect();
let wrapMaxWidth = wrapRect.width * maxPercent;
let wrapMinWidth = wrapRect.width * minPercent;
let barRect = els.displayBar.getBoundingClientRect();
let barPosition = barRect.left - wrapRect.left;
let moveValue = Math.ceil(wrapMaxWidth / ((currDevice.indexOf('desktop') > -1) ? 8 : 5.5));
let isMove = e.target.classList.contains('features-display__tap-button') || e.target.classList.contains('features-display__button');
if (isMove) {
status.isTabMove = true;
if (e.type == 'click' && e.target.classList.contains('features-display__tap-button')) {
let leftBtn = 'features-display__tap--left';
let rightBtn = 'features-display__tap--right';
if (e.target.parentElement.classList.contains(leftBtn)) {
barPosition -= moveValue;
} else if (e.target.parentElement.classList.contains(rightBtn)) {
barPosition += moveValue;
}
}
if (e.target.classList.contains('features-display__button') && (e.keyCode == 39 || e.keyCode == 37)) {
e && e.preventDefault();
if (e.keyCode == 39) barPosition += moveValue;
else if (e.keyCode == 37) barPosition -= moveValue;
}
if (barPosition < wrapMinWidth) barPosition = wrapMinWidth;
else if (barPosition > wrapMaxWidth) barPosition = wrapMaxWidth;
let barPercent = ((barPosition / wrapRect.width) * 100);
TweenMax.to(els.displayBar, 0.3, {
left: barPercent + '%',
ease: Power2.easeOut
});
TweenMax.to(els.controller, 0.3, {
left: barPercent + '%',
ease: Power2.easeOut
});
TweenMax.to(els.displayCoverImage, 0.3, {
width: barPercent + '%',
ease: Power2.easeOut
});
grabEventHandler.setArrowSize(barPercent);
}
},
moveDisabled: function () {
const controllerObserver = new MutationObserver(() => {
setTimeout(() => {
const leftValue = els.controller.style.left;
if (leftValue >= Math.trunc(maxPercent * 100) + "%") {
els.displayCoverRightBtn.disabled = true;
if(els.displayCoverRightBtn.disabled == true) {
utils.onAccessibility(els.displayCoverRightBtn);
els.displayCoverLeftBtn.focus();
}
} else if (leftValue == minPercent * 100 + "%") {
els.displayCoverLeftBtn.disabled = true;
if(els.displayCoverLeftBtn.disabled == true) {
utils.onAccessibility(els.displayCoverLeftBtn);
els.displayCoverRightBtn.focus();
}
} else {
els.displayCoverRightBtn.removeAttribute("disabled");
els.displayCoverLeftBtn.removeAttribute("disabled");
utils.offAccessibility(els.displayCoverRightBtn);
utils.offAccessibility(els.displayCoverLeftBtn);
}
}, 0);
});
controllerObserver.observe(els.controller, {
attributes: true,
attributeFilter: ['style']
});
},
setArrowSize: function (barPercent) {
let imgWidth = els.imgWrap.getBoundingClientRect().width;
let tabWidth = els.tabWrap.getBoundingClientRect().width;
let imgValue = imgWidth * (barPercent * (1 / 100));
let tabValue = (imgWidth - tabWidth) / 2;
let moveTabBtnValue = Math.floor(imgValue - tabValue);
if (status.isTabMove) {
TweenMax.to(els.displayCoverLeftWrap, 0.3, {
width: moveTabBtnValue + 'px',
ease: Power2.easeOut
});
status.isTabMove = false;
} else {
els.displayCoverLeftWrap.style.width = moveTabBtnValue + 'px';
}
}
};
return {
init: init
}
})();
})();
;
(function () {
window.flagship.features.faq = (function () {
const resize = window.flagship.common.resize,
utils = window.flagship.common.utils;
let els = {},
prevDevice = null,
currDevice = resize.checkResolution();
const init = function () {
els.section = document.querySelector('.js-faq');
if (!!els.section) {
setElements();
bindEvents();
}
};
const setElements = function () {
els.faqList = els.section.querySelector('.js-faq-list');
};
const bindEvents = function () {
resize.add(eventList.resize);
eventList.setAccordion();
};
const eventList = {
resize: function (currRes) {
currDevice = currRes;
if (currDevice != prevDevice) {
eventList.responsive();
prevDevice = currDevice;
}
},
responsive: function () {
let isOpenedItems = els.faqList.querySelectorAll('.js-faq-item.is-open');
if (isOpenedItems.length > 0) {
for (let i = 0; i < isOpenedItems.length; i++) {
let isOpenedItemContent = isOpenedItems[i].querySelector('.js-faq-answer'),
clientHeight = isOpenedItemContent.children[0].clientHeight;
isOpenedItemContent.style.height = `${clientHeight}px`;
}
}
},
setAccordion: function () {
els.accordion = new window.flagship.common.accordion({
wrap: els.faqList,
classList: {
item: 'js-faq-item',
button: 'js-faq-open',
contents: 'js-faq-answer',
activeClass: 'is-open'
},
open: {
start: function (target) {
let targetInnerCta = target.querySelector('.js-featue-cta');
if (targetInnerCta) targetInnerCta.addEventListener('click', accessibility.moveFocus);
}
}
});
els.accordion.init();
},
};
const accessibility = {
moveFocus: function (e) {
if (this.getAttribute('href').indexOf('#') > -1) {
e.preventDefault();
let sectionId = this.getAttribute('href'),
section = document.querySelector(`${sectionId}`),
sectionTop = section.getBoundingClientRect().top,
movePosition = (sectionTop + window.pageYOffset) - utils.getNavHeight(),
clickable = section.querySelectorAll('a, button'),
title = section.querySelector('h2') || section.querySelector('h3');
if (!!title) {
let _focusOut = function () {
title.removeAttribute('tabindex');
title.removeEventListener('focusout', _focusOut);
};
title.addEventListener('focusout', _focusOut);
title.setAttribute('tabindex', 0);
title.focus();
} else {
clickable[0].focus();
}
window.scrollTo(0, movePosition);
}
}
};
return {
init: init
}
})();
})();
(function () {
window.flagship = window.flagship || {};
window.flagship.features = window.flagship.features || {};
window.flagship.features.highResolution = (function () {
const utils = window.flagship.common.utils,
resize = window.flagship.common.resize;
let els = {};
const init = function () {
els.section = document.querySelector('.js-high-resolution');
els.cropWrap = document.querySelectorAll('.js-crop-wrap');
if (!!els.section) {
setElements();
setProperty();
bindEvents();
}
};
const setElements = function () {
els.cropButtons = els.section.querySelectorAll('.js-crop-button');
els.cropImages = els.section.querySelectorAll('.js-img-crop');
els.swiperContainers = els.section.querySelectorAll('.swiper-container');
};
const bindEvents = function () {
eventList.setSwiper();
eventList.setScene();
eventHandler.click();
eventHandler.scroll();
accessibility.set();
};
const setProperty = function () {
const _buttonProperty = function (section) {
let buttonProperty = {
swiperContainer: section.querySelector('.swiper-container'),
cropButtons: section.querySelectorAll('.js-crop-button'),
cropImages: section.querySelectorAll('.js-img-crop')
}
for (let i = 0; i < buttonProperty.cropButtons.length; i++) {
buttonProperty.cropButtons[i].property = buttonProperty;
}
};
const _swiperProperty = function (section) {
let swiperProperty = {
swiperContainer: section.querySelector('.swiper-container'),
cropButtons: section.querySelectorAll('.js-crop-button'),
}
swiperProperty.swiperContainer.property = swiperProperty;
}
for (let i = 0; i < els.cropWrap.length; i++) {
_buttonProperty(els.cropWrap[i]);
_swiperProperty(els.cropWrap[i]);
}
};
const eventHandler = {
click: function () {
els.cropButtons.forEach(function (button) {
button.addEventListener('click', eventList.clickcropButton);
})
},
scroll: function () {
window.addEventListener('scroll', eventList.autoSlide);
}
};
const eventList = {
autoSlide: function () {
els.scene.trackAnimation(function () {
let progress = this.progress
let startProgress = resize.checkResolution() == 'desktop' ? 28 : 32;
if (progress > startProgress && progress < 50) {
setTimeout(function () {
els.swiperContainers[0].swiper.slideTo(1, 800);
}, 300)
window.removeEventListener('scroll', eventList.autoSlide);
}
});
},
setScene: function () {
els.scene = SCROLLER({
trackElement: els.section,
useFixed: false
});
},
setSwiper: function () {
for (let i = 0; i < els.swiperContainers.length; i++) {
els.swiperContainers[i] = new Swiper(els.swiperContainers[i], {
speed: 300,
on: {
slideChange: function () {
let self = this;
let swiperContainer = self.el;
let targetButton = swiperContainer.property.cropButtons[self.activeIndex]
eventList.addActiveClass(targetButton);
accessibility.change(targetButton);
}
}
})
}
},
addActiveClass: function (targetButton) {
let cropButtons = targetButton.property.cropButtons;
for (let i = 0; i < cropButtons.length; i++) {
if (cropButtons[i].classList.contains('is-active')) {
cropButtons[i].classList.remove('is-active');
}
}
targetButton.classList.add('is-active');
},
slideMoveto: function (targetButton) {
let targetButtonIndex = targetButton.getAttribute('data-index');
targetButton.property.swiperContainer.swiper.slideTo(targetButtonIndex);
},
clickcropButton: function () {
let targetButton = this;
eventList.slideMoveto(targetButton);
}
};
const accessibility = {
set: function () {
els.cropImages.forEach(function (item) {
if (item.classList.contains('swiper-slide-active')) {
utils.offAccessibility(item);
} else {
utils.onAccessibility(item)
}
})
els.cropButtons.forEach(function (button) {
if (button.classList.contains('is-active')) {
if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) {
button.setAttribute('title', LOCAL_VARI.selected)
} else {
button.setAttribute('title', 'selected')
}
}
})
},
change: function (targetButton) {
let targetButtonIndex = targetButton.getAttribute('data-index');
targetButton.property.cropImages.forEach(function (item) {
if (item.classList.contains('swiper-slide-active')) {
utils.onAccessibility(item);
}
utils.offAccessibility(targetButton.property.cropImages[targetButtonIndex]);
})
if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) {
for (let i = 0; i < targetButton.property.cropButtons.length; i++) {
if (targetButton.property.cropButtons[i].getAttribute('title') == LOCAL_VARI.selected)
targetButton.property.cropButtons[i].removeAttribute('title')
}
targetButton.setAttribute('title', LOCAL_VARI.selected);
} else {
for (let i = 0; i < targetButton.property.cropButtons.length; i++) {
if (targetButton.property.cropButtons[i].getAttribute('title') == 'selected')
targetButton.property.cropButtons[i].removeAttribute('title')
}
targetButton.setAttribute('title', 'selected');
}
}
};
return {
init: init,
};
})();
})();
(function () {
window.flagship = window.flagship || {};
window.flagship.features = window.flagship.features || {};
window.flagship.features.highlightsZone = (function () {
const utils = window.flagship.common.utils;
const resize = window.flagship.common.resize;
const Swiper = window.flagship.Swiper;
let els = {};
let prevDevice;
let swiperObj = {};
let pointerOffset = {};
let currDevice = resize.checkResolution();
let ctaPlayStatus = true;
let scrollProgress = null;
let lowNetwork = document.documentElement.classList.contains('low_network');
const init = function () {
els.section = document.querySelector('.features-highlights');
if (!!els.section) {
setElements();
setProperty();
bindEvents();
}
};
const setElements = function () {
els.mainContainer = els.section.querySelector('.js-highlights-main-container');
els.mainSwiperSlides = els.mainContainer.querySelectorAll('.swiper-slide');
els.mediaWrap = els.mainContainer.querySelectorAll('.features-highlights__content');
els.indication = els.section.querySelector('.common-carousel__pagination');
els.prevArrow = els.mainContainer.parentElement.querySelector('.swiper-button-prev');
els.nextArrow = els.mainContainer.parentElement.querySelector('.swiper-button-next');
els.featureTagging = els.mainContainer.getAttribute('data-tagging-feature');
els.scrollbar = els.section.querySelector('.js-highlights-scrollbar');
};
const setProperty = function () {
els.mainContainer.autoPlay = true;
for (let i = 0; i < els.mediaWrap.length; i++) {
els.mediaWrap[i].isVideo = els.mediaWrap[i].classList.contains('is-video');
els.mediaWrap[i].isImage = els.mediaWrap[i].classList.contains('is-image');
if (els.mediaWrap[i].isVideo) {
els.mediaWrap[i].videoWrap = els.mediaWrap[i].querySelector('.js-video-wrap');
els.mediaWrap[i].video = els.mediaWrap[i].querySelector('.common-video__video');
els.mediaWrap[i].coverImageHighband = els.mediaWrap[i].querySelector('.common-video__cover-image--highband');
els.mediaWrap[i].coverImageLowband = els.mediaWrap[i].querySelector('.common-video__cover-image--lowband');
els.mediaWrap[i].controller = els.mediaWrap[i].querySelector('.js-video-control');
els.mediaWrap[i].controller.video = els.mediaWrap[i].video;
els.mediaWrap[i].progressBar = els.mediaWrap[i].querySelector('.common-video__control-progress-bar');
els.mediaWrap[i].startPoint = els.mediaWrap[i].getAttribute('data-start-point');
els.mediaWrap[i].reversePoint = els.mediaWrap[i].getAttribute('data-reverse-point');
els.mediaWrap[i].moStartPoint = els.mediaWrap[i].getAttribute('data-mo-start-point');
els.mediaWrap[i].moReversePoint = els.mediaWrap[i].getAttribute('data-mo-reverse-point');
} else if (els.mediaWrap[i].isImage) {
els.mediaWrap[i].img = els.mediaWrap[i].querySelector('.js-image-wrap > img');
}
}
};
const bindEvents = function () {
eventList.load();
eventHandler.click();
eventHandler.scroll();
eventHandler.flickSwiper();
resize.add(eventList.resize);
};
const eventHandler = {
flickSwiper: function () {
els.mainContainer.addEventListener('touchstart', function (e) {
pointerOffset.start = null;
pointerOffset.current = null;
pointerOffset.start = e.touches[0].clientX;
els.mainContainer.addEventListener('touchmove', eventList.getPointerMoveSize);
});
els.mainContainer.addEventListener('touchend', function () {
if (pointerOffset.start == null) return;
els.mainContainer.autoPlay = false;
els.mainContainer.removeEventListener('touchmove', eventList.getPointerMoveSize);
});
els.mainContainer.addEventListener('mousedown', function (e) {
pointerOffset.start = null;
pointerOffset.current = null;
pointerOffset.start = e.offsetX;
els.mainContainer.addEventListener('mousemove', eventList.getPointerMoveSize);
});
els.mainContainer.addEventListener('mouseup', function () {
els.mainContainer.autoPlay = false;
els.mainContainer.removeEventListener('mousemove', eventList.getPointerMoveSize);
});
els.mainContainer.addEventListener('mouseleave', function () {
if (pointerOffset.start == null) return;
pointerOffset.start = null;
pointerOffset.current = null;
els.mainContainer.removeEventListener('mousemove', eventList.getPointerMoveSize);
});
els.scrollbar.addEventListener('mousedown', function () {
els.mainContainer.autoPlay = false;
});
els.scrollbar.addEventListener('mouseleave', function () {
els.mainContainer.autoPlay = false;
});
},
click: function () {
for (let i = 0; i < els.mediaWrap.length; i++) {
if (els.mediaWrap[i].isVideo) {
els.mediaWrap[i].controller.addEventListener('click', eventList.clickVideoCta);
els.mediaWrap[i].controller.addEventListener('click', eventList.stopAutoPlay);
}
}
if (els.prevArrow && els.nextArrow) {
els.nextArrow.addEventListener('click', function (e) {
eventList.stopAutoPlay(e);
eventList.swiperArrow(e);
});
els.prevArrow.addEventListener('click', function (e) {
eventList.stopAutoPlay(e);
eventList.swiperArrow(e);
});
}
els.scrollbar.addEventListener('click', function (e) {
eventList.stopAutoPlay(e);
});
},
scroll: function () {
window.addEventListener('scroll', eventList.scroll);
}
}
const eventList = {
load: function () {
swiperEvents.set();
swiperObj.main.init();
eventList.setVideo();
eventList.setScene();
eventList.scroll();
},
resize: function () {
currDevice = resize.checkResolution();
if (prevDevice != currDevice) {
eventList.responsive();
prevDevice = currDevice;
}
},
responsive: function () {
swiperObj.main.slideTo(0, false);
},
setVideo: function () {
for (let i = 0; i < els.mediaWrap.length; i++) {
if (els.mediaWrap[i].isVideo) {
utils.videoHandler({
playType: 'scrollPlay',
startPoint: (currDevice.indexOf('mobile') > -1) ? els.mediaWrap[i].moStartPoint : els.mediaWrap[i].startPoint,
reversePoint: (currDevice.indexOf('mobile') > -1) ? els.mediaWrap[i].moReversePoint : els.mediaWrap[i].reversePoint,
wrap: els.mediaWrap[i].videoWrap,
video: els.mediaWrap[i].video,
controller: els.mediaWrap[i].controller,
playCallback: function () {
setTagging.pause(this.controller);
this.video.timeupdateEvent = function () {
if (this.currentTime > 0) {
if (!this.videoHandler.wrap.classList.contains('is-started', 'is-playing')) {
this.videoHandler.wrap.classList.add('is-started', 'is-playing');
}
eventList.setProgerssDuration(i);
this.removeEventListener('timeupdate', this.timeupdateEvent);
}
}
this.video.addEventListener('timeupdate', this.video.timeupdateEvent);
this.video.removeEventListener('canplay', eventList.playVideoOnce);
},
pauseCallback: function () {
setTagging.play(this.controller);
},
endCallback: function () {
eventList.autoSlideNext(1000);
}
});
}
}
},
autoSlideNext: function (time) {
if (els.mainContainer.autoPlay) {
if (scrollProgress > 40 && scrollProgress < 55) {
clearTimeout(swiperObj.main.videoTiming);
swiperObj.main.videoTiming = setTimeout(() => {
swiperObj.main.slideNext();
}, time);
} else {
clearTimeout(swiperObj.main.videoTiming);
}
}
},
playVideoOnce: function () {
this.play();
},
playVideo: function (video) {
for (let i = 0; i < els.mediaWrap.length; i++) {
if (els.mediaWrap[i].isVideo && video.readyState >= 1) {
video.play();
} else {
video.addEventListener('canplay', eventList.playVideoOnce, {
once: true
});
}
}
},
clickVideoCta: function (e) {
if (e.target == e.currentTarget) {
if (e.currentTarget.video.paused) {
eventList.playVideo(e.currentTarget.video);
ctaPlayStatus = true;
} else {
e.currentTarget.video.pause();
ctaPlayStatus = false;
}
}
},
stopAutoPlay: function (e) {
if (e.target.classList.contains('js-video-control') ||
e.target.classList.contains('swiper-button-next') ||
e.target.classList.contains('swiper-button-prev') ||
e.target.classList.contains('common-carousel__pagination-button') ||
e.target.classList.contains('js-highlights-scrollbar')
) {
els.mainContainer.autoPlay = false;
}
},
swiperArrowVisibility: function () {
let mainSlidesLength = els.mainSwiperSlides.length - 1;
let mainSwiper = swiperObj.main;
let prevArrow = mainSwiper.previousIndex > mainSwiper.realIndex;
let nextArrow = mainSwiper.previousIndex < mainSwiper.realIndex;
if (els.prevArrow && els.nextArrow) {
if (prevArrow) {
if (mainSwiper.realIndex == (mainSlidesLength - 1)) {
if (els.nextArrow.style.display == 'none') els.nextArrow.style.display = '';
} else if (mainSwiper.realIndex == 0) {
els.prevArrow.style.display = 'none';
}
}
if (nextArrow) {
if (mainSwiper.realIndex == 1) {
if (els.prevArrow.style.display == 'none') els.prevArrow.style.display = '';
} else if (mainSwiper.realIndex == mainSlidesLength) {
els.nextArrow.style.display = 'none';
}
}
}
},
swiperArrow: function (e) {
let mainSwiper = swiperObj.main;
let mainSlidesLength = els.mainSwiperSlides.length - 1;
let prevArrow = e.target.classList.contains('swiper-button-prev');
let nextArrow = e.target.classList.contains('swiper-button-next');
if (prevArrow) {
clearTimeout(swiperObj.main.videoTiming);
mainSwiper.slidePrev();
if (mainSwiper.realIndex == 0) {
setTimeout(() => {
els.nextArrow.blur();
els.nextArrow.focus();
}, 300);
}
}
if (nextArrow) {
clearTimeout(swiperObj.main.videoTiming);
mainSwiper.slideNext();
if (mainSwiper.realIndex == mainSlidesLength) {
setTimeout(() => {
els.prevArrow.blur();
els.prevArrow.focus();
}, 300);
}
}
},
scroll: function () {
let isIndex = swiperObj.main.realIndex;
els.section.scene.trackAnimation(function () {
scrollProgress = this.progress;
if (els.mediaWrap[isIndex].isVideo) {
let isMainVideoHandler = els.mediaWrap[isIndex].video.videoHandler;
if (!lowNetwork && ctaPlayStatus) isMainVideoHandler.scrollActive(scrollProgress);
} else if (els.mediaWrap[isIndex].isImage) {
eventList.slideVideoPlay();
}
})
},
slideVideoPlay: function () {
let isIndex = swiperObj.main.realIndex;
if (els.mediaWrap[isIndex].isVideo) {
let isMainVideoHandler = els.mediaWrap[isIndex].video.videoHandler;
isMainVideoHandler.eventList.reset.call(isMainVideoHandler);
els.mediaWrap[isIndex].videoWrap.classList.remove('is-started');
setTimeout(function () {
if (ctaPlayStatus) {
eventList.playVideo(els.mediaWrap[isIndex].video);
setTimeout(function () {
if (els.mainContainer.autoPlay) isMainVideoHandler.controller.blur();
if (els.mainContainer.autoPlay) isMainVideoHandler.controller.focus();
if (isIndex == (swiperObj.main.slides.length)) {
els.mainContainer.autoPlay = false;
}
}, 900);
}
}, 50);
} else if (els.mediaWrap[isIndex].isImage && ctaPlayStatus) {
eventList.autoSlideNext(3000);
}
},
setProgerssDuration: function (index) {
let isDuration = els.mediaWrap[index].video.duration;
if (!!!els.mediaWrap[index].durationSet) {
els.mediaWrap[index].progressBar.style.animationDuration = `${isDuration}s`;
els.mediaWrap[index].durationSet = true;
}
},
setMedia: function (index) {
let videoLength = els.mainSwiperSlides.length - 1;
let isIndex = index + 1;
let loadIndex = isIndex < videoLength ? isIndex : videoLength;
let mainVideoloadComplateLength = els.mainContainer.querySelectorAll('.is-video-load-complete').length - 1;
for (let i = 0; i <= loadIndex; i++) {
if (els.mediaWrap[i].isVideo) {
if (mainVideoloadComplateLength != videoLength && !els.mediaWrap[i].video.classList.contains('is-video-load-complete')) {
if (!els.mediaWrap[i].video.classList.contains('is-mp4video-load-complete')) {
if (!!els.mediaWrap[i].video) videoLoader.setResponsiveMedia([els.mediaWrap[i].video]);
if (!lowNetwork) {
if (!!els.mediaWrap[i].coverImageHighband) imageLoader.setResponsiveMedia([els.mediaWrap[i].coverImageHighband]);
} else {
if (!!els.mediaWrap[i].coverImageLowband) imageLoader.setResponsiveMedia([els.mediaWrap[i].coverImageLowband]);
}
}
}
}
}
},
pauseVideo: function (swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
if (els.mediaWrap[i].isVideo) {
let slideVideo = swiper.slides[i].querySelector('video');
if (!slideVideo.paused) {
slideVideo.pause();
}
}
}
},
getCarouselSizeInfo: function (swiper) {
let slideLength = swiper.slides.length;
let slideWidth = swiper.slides[0].clientWidth;
let slideMargin = parseInt(window.getComputedStyle(swiper.slides[0]).margin.split(' ')[1]);
let slideSize = slideWidth + slideMargin;
let maxMoveSize = ((slideSize * slideLength) - slideMargin) - swiper.wrapperEl.clientWidth;
let viewWidth = swiper.wrapperEl.clientWidth;
let viewLength = parseInt((viewWidth + slideMargin) / slideSize);
let lastBeforeSize = slideLength == 2 ? 0 : Math.abs((maxMoveSize - slideSize)) + Math.abs((viewWidth - slideWidth));
let isMoveSize = Math.abs(parseInt(window.getComputedStyle(swiper.wrapperEl).transform.split(',')[4]));
return {
slideWidth: slideWidth,
slideMargin: slideMargin,
slideSize: slideSize,
maxMoveSize: maxMoveSize,
viewWidth: viewWidth,
viewLength: viewLength,
lastBeforeSize: lastBeforeSize,
isMoveSize: isMoveSize
}
},
setScene: function () {
els.section.scene = SCROLLER({
trackElement: els.section,
useFixed: false
});
},
getPointerMoveSize: function (e) {
if (!!e.touches) {
pointerOffset.current = e.touches[0].clientX;
} else {
pointerOffset.current = e.offsetX;
}
}
}
const swiperEvents = {
set: function () {
if (swiperObj.main == null) {
swiperObj.main = new Swiper(els.mainContainer, {
init: false,
speed: 600,
slidesPerView: 'auto',
scrollbar: {
el: els.scrollbar,
},
pagination: {
el: els.indication,
clickable: true,
renderBullet: function (index, className) {
const slide = this.slides[index];
const slideTitle = slide.getAttribute('data-slide-title') || '';
const tagging = {
omniType: "microsite_gallery",
actionType: "gallery",
contentType: "feature gallery",
taggingValue: els.featureTagging + ":sldr-dots:" + `${index + 1}`
}
this.slideTitle = slideTitle;
return `
`;
}
},
a11y: false,
});
swiperObj.main.on('init', swiperEvents.init);
swiperObj.main.on('slideChange', swiperEvents.slideChange);
swiperObj.main.on('transitionEnd', swiperEvents.transitionEnd);
swiperObj.main.on('paginationUpdate', swiperEvents.paginationUpdate);
}
if (els.prevArrow) {
els.prevArrow.style.display = 'none';
}
},
init: function () {
if (els.prevArrow && els.nextArrow) {
let isNextArrow = this.el.parentElement.querySelector('.swiper-button-next');
let isPrevArrow = this.el.parentElement.querySelector('.swiper-button-prev');
isNextArrow.removeAttribute('aria-label');
isNextArrow.removeAttribute('role');
isPrevArrow.removeAttribute('aria-label');
isPrevArrow.removeAttribute('role');
}
accessibility.slide(this);
},
paginationUpdate: function () {
const bullets = this.pagination.bullets;
const slides = this.slides;
for (let i = 0; i < bullets.length; i++) {
const slideTitle = i < slides.length ? this.slides[i].getAttribute('data-slide-title') : "";
const bullet = bullets[i];
const button = bullet.querySelector('button');
const isActive = bullet.classList.contains('swiper-pagination-bullet-active');
const selected = isActive ? ` ${LOCAL_VARI.selected}` : '';
button.setAttribute('aria-label', `${LOCAL_VARI.slide}${i + 1}${selected}: ${slideTitle}`);
}
},
slideChange: function () {
accessibility.slide(this);
eventList.pauseVideo(this);
if (this.realIndex > 0) eventList.setMedia(this.realIndex);
if (!lowNetwork) eventList.slideVideoPlay();
eventList.swiperArrowVisibility();
},
transitionEnd: function () {
setTimeout(() => {
let carouselInfo = eventList.getCarouselSizeInfo(this);
let lastIndex = this.slides.length - 1;
let lastSlide = this.slides[lastIndex];
let lastBeforeSlide = this.slides[lastIndex - 1];
let secondSlide = this.slides[lastIndex - 2];
let lastSlideIsVideo = lastSlide.querySelector('.features-highlights__content.is-video');
let lastBeforeSlideIsVideo = lastBeforeSlide.querySelector('.features-highlights__content.is-video');
let isIndex = swiperObj.main.previousIndex;
let isMoveSize = currDevice != 'mobile' ? carouselInfo.isMoveSize : carouselInfo.isMoveSize + Math.abs(carouselInfo.slideMargin);
if (els.mediaWrap[isIndex].isVideo) els.mediaWrap[isIndex].video.pause();
if (carouselInfo.lastBeforeSize + (carouselInfo.slideWidth / 2) < isMoveSize && carouselInfo.maxMoveSize - (carouselInfo.slideWidth / 2) <= isMoveSize) {
if (currDevice.indexOf('mobile') > -1) {
eventList.pauseVideo(this);
if (!lowNetwork && ctaPlayStatus && lastSlideIsVideo) {
lastSlide.querySelector('video').play();
}
lastSlide.classList.add('swiper-slide-active');
lastBeforeSlide.classList.add('swiper-slide-prev');
lastSlide.classList.remove('swiper-slide-next');
lastBeforeSlide.classList.remove('swiper-slide-active');
secondSlide.classList.remove('swiper-slide-prev');
if (els.nextArrow) {
if (els.nextArrow.style.display != 'none') {
els.nextArrow.style.display = 'none';
setTimeout(() => {
els.prevArrow.blur();
els.prevArrow.focus();
}, 300);
}
}
utils.offAccessibility(this.slides[lastIndex]);
utils.onAccessibility(this.slides[lastIndex - 1]);
}
} else if (carouselInfo.lastBeforeSize <= carouselInfo.isMoveSize) {
if (currDevice.indexOf('mobile') > -1) {
eventList.pauseVideo(this);
if (!lowNetwork && ctaPlayStatus && lastBeforeSlideIsVideo) {
lastBeforeSlide.querySelector('video').play();
}
lastSlide.classList.add('swiper-slide-next');
lastBeforeSlide.classList.add('swiper-slide-active');
secondSlide.classList.add('swiper-slide-prev');
lastSlide.classList.remove('swiper-slide-active');
lastBeforeSlide.classList.remove('swiper-slide-prev');
if (els.nextArrow) {
if (els.nextArrow.style.display == 'none') els.nextArrow.style.display = '';
}
utils.onAccessibility(this.slides[lastIndex]);
utils.offAccessibility(this.slides[lastIndex - 1]);
}
}
}, 0);
},
destroy: function (swiper) {
if (swiper != null) {
swiper.navigation.destroy(true);
swiper.destroy(true);
swiper = null;
}
}
};
const setTagging = {
play: function (targetController) {
if (targetController.hasAttribute('data-omni')) {
let dataOmni = targetController.getAttribute('data-omni').toLowerCase();
targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play'));
}
if (targetController.hasAttribute('ga-la')) {
let gaLa = targetController.getAttribute('ga-la').toLowerCase();
targetController.setAttribute('ga-la', gaLa.replace('pause', 'play'));
}
},
pause: function (targetController) {
if (targetController.hasAttribute('data-omni')) {
let dataOmni = targetController.getAttribute('data-omni').toLowerCase();
targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause'));
}
if (targetController.hasAttribute('ga-la')) {
let gaLa = targetController.getAttribute('ga-la').toLowerCase();
targetController.setAttribute('ga-la', gaLa.replace('play', 'pause'));
}
}
};
const accessibility = {
slide: function (swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
if (i != swiper.activeIndex) {
utils.onAccessibility(swiper.slides[i]);
} else {
utils.offAccessibility(swiper.slides[i]);
}
}
}
};
return {
init: init,
};
})();
})();
;
(function () {
window.flagship.features.kv = (function () {
let els = {}
const init = function () {
els.section = document.querySelector('.js-kv');
els.hasOffer = document.querySelector('.feature-kv__anchor');
if (!!els.section && !!els.hasOffer) {
setElements();
bindEvents();
}
};
const setElements = function () {
els.kvDropdown = els.section.querySelector('.js-kv-dropdown');
els.kvDropdownItem = els.section.querySelector('.features-kv__description');
els.kvDropdownSpan = els.section.querySelector('.js-button-text');
els.kvDropdownDataOmni = els.kvDropdown.getAttribute('data-omni');
els.kvDropdownGaLa = els.kvDropdown.getAttribute('ga-la');
};
const bindEvents = function () {
eventHandler.click();
eventList.defaultText();
};
const eventHandler = {
click: function () {
els.kvDropdown.addEventListener('click', eventList.click);
}
}
const eventList = {
defaultText: function () {
const openText = els.kvDropdownSpan.getAttribute('data-open-text');
els.kvDropdownSpan.textContent = openText;
},
click: function () {
const openText = els.kvDropdownSpan.getAttribute('data-open-text');
const closeText = els.kvDropdownSpan.getAttribute('data-close-text');
if (els.kvDropdownItem.classList.contains('is-open')) {
els.kvDropdownItem.classList.remove('is-open');
els.kvDropdown.classList.remove('is-active');
els.kvDropdown.setAttribute('ga-la', els.kvDropdownDataOmni.replace('close', 'open'));
els.kvDropdown.setAttribute('data-omni', els.kvDropdownGaLa.replace('close', 'open'));
els.kvDropdownSpan.textContent = openText;
} else {
els.kvDropdownItem.classList.add('is-open');
els.kvDropdown.classList.add('is-active');
els.kvDropdown.setAttribute('ga-la', els.kvDropdownDataOmni.replace('open', 'close'));
els.kvDropdown.setAttribute('data-omni', els.kvDropdownGaLa.replace('open', 'close'));
els.kvDropdownSpan.textContent = closeText;
}
}
};
return {
init: init
}
})();
})();
(function () {
window.flagship.features.portrait = (function () {
const utils = window.flagship.common.utils,
resize = window.flagship.common.resize;
let els = {};
let currDevice = resize.checkResolution();
const init = function () {
els.section = document.querySelector('.js-portrait');
if (!!els.section) {
setElements();
bindEvents();
}
};
const setElements = function () {
els.portrait = els.section.querySelector('.js-image');
els.portraitImage = els.portrait.querySelector('img');
};
const bindEvents = function () {
eventList.setScene();
eventHandler.scroll();
resize.add(eventList.resize);
};
const eventHandler = {
scroll: function () {
window.addEventListener('scroll', eventList.scroll);
}
};
const eventList = {
resize: function (currRes) {
currDevice = currRes;
},
scroll: function () {
if (els.section.scene != null) {
els.section.scene.trackAnimation(function () {
let progress = this.progress;
if (progress < 0) {
els.section.classList.remove('is-active');
}
if (progress >= 20) {
els.section.classList.add('is-active');
}
})
}
},
setScene: function () {
if (els.section.scene == null) {
els.section.scene = SCROLLER({
trackElement: els.section,
useFixed: false,
useStrictMode: false
})
}
}
};
return {
init: init
}
})();
})();
(function () {
window.flagship.features.proVisual = (function () {
const utils = window.flagship.common.utils,
resize = flagship.common.resize;
let els = {};
let prevDevice = null;
let currDevice = resize.checkResolution();
const init = function () {
els.section = document.querySelector('.features-provisual-engine');
if (!!els.section) {
setElements();
bindEvents();
}
};
const setElements = function () {
els.cameraVideo = els.section.querySelector('.features-provisual-engine__video video');
els.cameraDevice = els.section.querySelector('.js-provisual-engine-device');
els.cameraSpec = document.querySelectorAll('.features-provisual-engine__spec-item');
els.rearSpecListHeight = els.section.querySelector('.features-provisual-engine__spec-rear>.features-provisual-engine__spec-item:last-child');
els.frontSpecListHeight = els.section.querySelector('.features-provisual-engine__spec-front>.features-provisual-engine__spec-item:last-child');
};
const bindEvents = function () {
resize.add(eventList.resize);
eventList.setDeviceScene();
eventList.setTextScene();
eventHandler.scroll();
};
const eventHandler = {
scroll: function () {
window.addEventListener('scroll', function () {
eventList.deviceMotion();
eventList.textMotion();
})
}
};
const eventList = {
resize: function (currRes) {
currDevice = currRes;
if (currDevice != prevDevice) {
prevDevice = currDevice;
eventList.textMotion();
}
},
setDeviceScene: function () {
els.cameraDevice.scene = SCROLLER({
trackElement: els.cameraDevice,
resize: utils.detector.isTouchDevice ? false : true,
useFixed: false
});
},
setTextScene: function () {
for (let i = 0; i < els.cameraSpec.length; i++) {
els.cameraSpec[i].scene = SCROLLER({
trackElement: els.cameraSpec[i],
useFixed: false
});
}
},
deviceMotion: function () {
els.cameraDevice.scene.trackAnimation(function () {
let deviceStartPoint = currDevice.indexOf('mobile') > -1 ? 20 : 15;
if (this.progress == 0) {
if (els.cameraDevice.classList.contains('is-active')) {
els.cameraDevice.classList.remove('is-active');
}
}
if (this.progress >= deviceStartPoint) {
if (!els.cameraDevice.classList.contains('is-active')) {
els.cameraDevice.classList.add('is-active');
}
}
});
},
textMotion: function () {
let firstTextNum = currDevice.indexOf('mobile') > -1 ? 0 : 1;
for (let i = firstTextNum; i < els.cameraSpec.length; i++) {
els.cameraSpec[i].scene.trackAnimation(function () {
if (10 <= this.progress && this.progress <= 100) {
if (!els.cameraSpec[i].classList.contains('is-active')) {
els.cameraSpec[i].classList.add('is-active');
}
}
if (this.progress == 0) {
if (els.cameraSpec[i].classList.contains('is-active')) {
els.cameraSpec[i].classList.remove('is-active');
}
if (!(currDevice.indexOf('mobile') > -1) && els.cameraSpec[0].classList.contains('is-active')) {
els.cameraSpec[0].classList.remove('is-active');
}
}
});
}
}
};
return {
init: init
}
})();
})();
(function () {
window.flagship.features.howtoPopup = (function () {
const utils = window.flagship.common.utils;
const Swiper = window.flagship.Swiper;
resize = window.flagship.common.resize;
let els = {};
let currDevice = resize.checkResolution();
prevDevice = null,
currOpener = null;
const init = function () {
els.layerPopup = document.querySelector('.js-howto-popup');
if (!!els.layerPopup) {
setElements();
setAttribute();
bindEvents();
eventList.setPopup();
}
};
const setElements = function () {
els.contents = document.querySelector('#contents');
els.openCtas = document.querySelectorAll('.js-howto-popup-opener');
els.openCta = document.querySelectorAll("[data-howto-slide]:not(.js-howto-popup [data-howto-slide])");
// popup content
els.closeCta = document.querySelectorAll('.js-howto-popup-close-cta');
els.ytIframe = els.layerPopup.querySelector('iframe');
els.ytDesc = els.layerPopup.querySelector('.js-howto-popup-youtube-desc');
els.dimmed = els.layerPopup.querySelector('.js-howto-popup-dimmed');
// swiper
els.swiperContainer = els.layerPopup.querySelector('.swiper-container');
els.featureTagging = els.swiperContainer.getAttribute('data-tagging-feature');
els.buttonWrap = els.swiperContainer.querySelectorAll('.swiper-slide');
els.thumbList = els.swiperContainer.querySelectorAll("[data-howto-slide]");
els.arrowWrap = els.swiperContainer.querySelector('.js-howto-popup-arrow-wrap');
els.indication = els.swiperContainer.querySelector('.common-carousel__pagination');
els.scrollbar = els.swiperContainer.querySelector('.js-howto-popup-scrollbar');
};
const setAttribute = function () {
els.openCta.forEach((cta)=> {
const howtoAtrr = cta.getAttribute("data-howto-slide");
els.thumbList.forEach((thumb)=>{
if(thumb.getAttribute("data-howto-slide") === howtoAtrr) {
thumb.openerCta = cta;
thumb.button = thumb.querySelector('button');
thumb.button.openerCta = thumb.openerCta;
cta.thumb = thumb;
}
});
});
};
const bindEvents = function () {
eventHandler.buttonsClick();
resize.add(eventList.resize);
};
const eventHandler = {
buttonsClick: function () {
for (let i = 0; i < els.buttonWrap.length; i++) {
els.buttonWrap[i].button.addEventListener('click', function () {
eventList.setYoutube(els.buttonWrap[i]);
});
}
}
};
const eventList = {
setPopup: function () {
for (let i = 0; i < els.thumbList.length; i++) {
utils.layerPopup({
layerPopup: els.layerPopup,
layerPopupClass: '.js-howto-popup',
openerEvent: {
element: els.openCtas[i],
},
closeCtas: els.closeCta,
dimmed: els.dimmed,
moveTarget: document.documentElement,
contents: els.contents,
show: {
start: function (target) {
let allVideos = document.querySelectorAll('video');
for (let i = 0; i < allVideos.length; i++) {
if (!allVideos[i].paused) allVideos[i].pause();
}
els.layerPopup.removeAttribute('aria-hidden');
els.layerPopup.removeAttribute('tabindex');
els.layerPopup.classList.add('is-init');
currOpener = target.openerCta;
eventList.itemImageLoader();
swiperEventList.activeCheck();
},
end: function (target) {
els.layerPopup.classList.add('is-open');
eventList.setYoutube(target);
}
},
hide: {
start: function () {
els.layerPopup.classList.remove('is-open');
},
end: function (target) {
if (utils.detector.isIosDevice) target.openerCta.style.display = '';
setTimeout(function () {
els.layerPopup.classList.remove('is-init');
eventList.removeYoutube();
accessibility.removeTitle();
swiperEventList.destroy();
els.layerPopup.children[0].scrollTop = 0;
}, 300);
}
}
});
}
},
setYoutube: function (target) {
let opener = target.openerCta,
ytSrc = 'htt' + 'ps://www.youtube.com/embed/' + opener.getAttribute('data-youtube-id') + '?wmode=opaque&rel=0&enablejsapi=1&version=3&autoplay=1',
ytTitle = opener.getAttribute('data-youtube-title'),
ytBlind = opener.querySelector('.blind').innerHTML;
els.ytIframe.setAttribute('src', ytSrc);
els.ytIframe.setAttribute('title', ytTitle);
els.ytDesc.innerHTML = ytBlind;
let oldActive = els.swiperContainer.querySelector('.swiper-slide.is-active');
if (!!oldActive) {
oldActive.classList.remove('is-active');
oldActive.button.removeAttribute('title');
}
opener.thumb.classList.add('is-active');
accessibility.setTitle(opener.thumb);
},
removeYoutube: function () {
els.ytIframe.removeAttribute('src');
els.ytDesc.innerHTML = '';
},
resize: function (currRes) {
currDevice = currRes;
if (prevDevice != currDevice) {
if (els.layerPopup.classList.contains('is-open')) {
swiperEventList.activeCheck();
}
prevDevice = currDevice;
}
},
itemImageLoader: function () {
for (let i = 0; i < els.buttonWrap.length; i++) {
if (!els.buttonWrap[i].querySelector('img').classList.contains('is-img-load-complete')) {
imageLoader.setResponsiveMedia([els.buttonWrap[i].querySelector('img')]);
}
}
}
};
const swiperEventList = {
set: function () {
if (els.swiperContainer.swiper == null) {
els.swiperContainer.swiper = new Swiper(els.swiperContainer, {
init: false,
slidesPerView: 'auto',
scrollbar: {
el: els.scrollbar,
draggable: true
},
pagination: {
el: els.indication,
clickable: true,
renderBullet: function (index, className) {
const slide = this.slides[index];
const slideTitle = slide.getAttribute('data-slide-title') || '';
const tagging = {
omniType: "microsite_gallery",
actionType: "gallery",
contentType: "feature gallery",
taggingValue: els.featureTagging + ":sldr-dots:" + `${index + 1}`
}
this.slideTitle = slideTitle;
return `
`;
}
},
a11y: false,
});
els.swiperContainer.swiper.on('init', swiperEventList.init);
els.swiperContainer.swiper.on('slideChange', swiperEventList.slideChange);
els.swiperContainer.swiper.on('paginationUpdate', swiperEventList.paginationUpdate);
els.swiperContainer.swiper.init();
}
},
destroy: function () {
if (els.swiperContainer.swiper != null) {
els.swiperContainer.swiper.scrollbar.dragEl.style = '';
els.swiperContainer.swiper.scrollbar.destroy(true);
els.swiperContainer.swiper.navigation.destroy(true);
els.swiperContainer.swiper.destroy(true);
els.swiperContainer.swiper = null;
}
},
init: function () {
let self = this,
notification = self.el.querySelector('.swiper-notification');
if (!!notification) self.el.removeChild(notification);
setTimeout(function () {
accessibility.slide();
}, 500);
},
paginationUpdate: function () {
const bullets = this.pagination.bullets;
const slides = this.slides;
let arrSlidesTitle = [];
for (let i = 0; i < slides.length; i++) {
arrSlidesTitle.push(slides[i].dataset.slideTitle)
}
for (let i = 0; i < bullets.length; i++) {
const bullet = bullets[i];
const button = bullet.querySelector('button');
const isActive = bullet.classList.contains('swiper-pagination-bullet-active');
const selected = isActive ? ` ${LOCAL_VARI.selected}` : '';
if (currDevice.indexOf('mobile') > -1) {
button.setAttribute('aria-label', `${LOCAL_VARI.slide}${i + 1}${selected}: ${arrSlidesTitle[i]}, ${arrSlidesTitle[i+1]}`);
} else {
button.setAttribute('aria-label', `${LOCAL_VARI.slide}${i + 1}${selected}: ${arrSlidesTitle[i]}, ${arrSlidesTitle[i+1]}, ${arrSlidesTitle[i+2]}, ${arrSlidesTitle[i+3]}`);
}
}
},
slideChange: function () {
accessibility.slide();
},
activeCheck: function () {
let isSlide = ((currDevice.indexOf('mobile') > -1) && (els.buttonWrap.length >= 3)) ||
((currDevice.indexOf('desktop') > -1 || currDevice == 'tablet') && (els.buttonWrap.length >= 5));
if (isSlide) {
els.scrollbar.style.display = 'block';
swiperEventList.set();
let buttonIndex;
for(let i=0; i < els.buttonWrap.length; i++) {
if (els.buttonWrap[i] === currOpener.thumb) {
buttonIndex = i;
}
}
const changeSlide = buttonIndex - 1;
if (currOpener != null) {
els.swiperContainer.swiper.slideTo(changeSlide, 0);
}
} else {
els.scrollbar.style.display = 'none';
swiperEventList.destroy();
}
}
};
const accessibility = {
setTitle: function (target) {
if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) {
target.button.setAttribute('title', LOCAL_VARI.selected);
} else {
target.button.setAttribute('title', 'Selected');
}
},
removeTitle: function () {
for(let i = 0; i < els.buttonWrap.length; i++) {
if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) {
els.buttonWrap[i].button.removeAttribute('title', LOCAL_VARI.selected);
} else {
els.buttonWrap[i].button.removeAttribute('title', 'Selected')
}
};
},
slide: function () {
let slidePerviewValue = currDevice.indexOf('mobile') > -1 ? 2 : 4;
let getPerviewIndex = function () {
return slidePerviewValue - 1;
}
for (let i = 0; i < els.swiperContainer.swiper.slides.length; i++) {
if (i >= els.swiperContainer.swiper.activeIndex && i <= (els.swiperContainer.swiper.activeIndex + getPerviewIndex())) {
utils.offAccessibility(els.swiperContainer.swiper.slides[i]);
} else {
utils.onAccessibility(els.swiperContainer.swiper.slides[i]);
}
}
}
};
return {
init: init,
}
})();
})();
flagship.features.initialize = (function () {
window.flagship.common.resize.bindEvent();
const init = function () {
flagship.features.highlightsZone.init();
flagship.features.carousel.init();
flagship.features.clickToVideo.init();
flagship.features.howtoPopup.init();
flagship.features.headline.init();
flagship.features.scrollVideo.init();
flagship.features.aiOverview.init();
flagship.features.faq.init();
flagship.features.colorsViewer.init();
flagship.features.colors.init();
flagship.features.arBanner.init();
flagship.features.accordion.init();
flagship.features.proVisual.init();
flagship.features.highResolution.init();
flagship.features.display.init();
flagship.features.portrait.init();
flagship.features.kv.init();
flagship.features.compares.init();
};
return {
init: init
}
})();
flagship.features.initialize.init();
});
Registo de Produtos
Registo rápido e fácil de produtos.. Dicas e serviços personalizados.
N.º série / IMEI
Introduza o seu número de série/IMEI
Ler QR
Scan the QR code on your products for easy registration.
* Esta funcionalidade só é suportada em aparelhos Samsung Eletrodomésticos e monitores B2C não inteligentes.
Introduza o seu número de série/IMEI
Registo rápido e fácil de produtos.
Insira o n.º de 11 ou 15 dígitos.
O produto já está registado. Veja se tem o n.º de série ou IMEI certo.
Tipo
Subtipo
Categoria
Back view
The serial number and model name are printed on the label located on the lower left side of the device’s exterior, near the front. They are also on a second label, inside the refrigerator compartment on a side wall above the top shelf.
Back view
The serial number and model name are printed on the label located on the lower left side of the device’s exterior, near the front. They are also on a second label, inside the refrigerator compartment on a side wall above the top shelf.
O registo de produto está quase completo!!
Tem um n.º de série ou IMEI válido. Agora escolha o modelo do seu produto.