{"version":3,"file":"vagas.min.js","mappings":"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","sources":["webpack://configuracao/./js/localizacao/global/global.js","webpack://configuracao/./js/utilidades/banner.js","webpack://configuracao/./js/utilidades/geoData.js","webpack://configuracao/./js/utilidades/isNullOrEmpty.js","webpack://configuracao/./js/utilidades/obterDispositivo.js","webpack://configuracao/./js/utilidades/obterQueryString.js","webpack://configuracao/./js/utilidades/trackEventos.js","webpack://configuracao/./js/utilidades/usuarioLogado.js","webpack://configuracao/./js/localizacao/vagas/vagas.js","webpack://configuracao/./js/vagas.js","webpack://configuracao/./node_modules/quicklink/dist/quicklink.mjs"],"sourcesContent":["import i18next from 'i18next';import resource_0 from \"./global.ptbr.json\" assert { type: 'JSON' };import resource_1 from \"./global.es.json\" assert { type: 'JSON' };import resource_2 from \"./global.en.json\" assert { type: 'JSON' };const cultura = CULTURE_EMPREGARE.replace('-', '');export const inicializarInternacionalizacao = () => {if (!i18next.isInitialized) {i18next.init({ lng:cultura, debug:true, defaultNS:'translation', resources: {}, fallbackLng: (code) => [ code.slice(0,2), 'ptbr' ]});}i18next.addResources('ptbr', 'translation', resource_0);i18next.addResources('es', 'translation', resource_1);i18next.addResources('en', 'translation', resource_2);}","export const localBanner = {\r\n    HOME: 1,\r\n    VAGA_BUSCA: 2,\r\n    VAGA_DETALHES: 3,\r\n    PAINEL: 4,\r\n    EMPLOYER_PAGE: 5,\r\n};\r\n\r\nexport const banner = {\r\n    async renderizar(containerId, local, exibirMobile = true) {\r\n        const container = document.getElementById(containerId);\r\n\r\n        if (!container) {\r\n            console.error('[banner]: não foi encontrado nenhuma div com o id especificado para renderizar o banner!');\r\n            return;\r\n        }\r\n\r\n        try {\r\n            const banner = await this._buscarBanner(local);\r\n            console.log('banner', banner)\r\n            if (banner.sucesso && banner) {\r\n                this._renderizarHTML(container, banner, local, exibirMobile);\r\n            } else {\r\n                // this._renderizarBannerPadrao(container);\r\n            }\r\n        } catch (error) {\r\n            console.error('Erro ao carregar banner:', error);\r\n            // this._renderizarBannerPadrao(container);\r\n        }\r\n    },\r\n\r\n    async _buscarBanner(local) {\r\n        try {\r\n            const response = await fetch(`/Home/GetBanner?local=${local}`, {\r\n                method: 'GET',\r\n                headers: {\r\n                    'Content-Type': 'application/json',\r\n                },\r\n            });\r\n\r\n            return await response.json();\r\n        } catch (error) {\r\n            console.error('Erro ao buscar banner:', error);\r\n            return { sucesso: false };\r\n        }\r\n    },\r\n\r\n    _renderizarHTML(container, banner, local, exibirMobile) {\r\n        const redirectUrl = `/Home/RedirectBanner?id=${banner.ID}&local=${local}`;\r\n\r\n        //const botaoFecharHTML = botaoFechar\r\n        //    ? `\r\n        //    <button class=\"btn-close position-absolute top-0 end-0 m-2\" aria-label=\"Fechar\" \r\n        //            style=\"background-color: rgba(0,0,0,0.5); color: white;\">\r\n        //    </button>`\r\n        //    : '';\r\n\r\n        const html = `\r\n        <div class=\"banner-wrapper position-relative\">\r\n            \r\n            <a href=\"${redirectUrl}\" target=\"_blank\" data-banner-id=\"${banner.ID}\" \r\n               class=\"${exibirMobile ? `d-flex` : `d-none d-md-flex`} justify-content-center\">\r\n                <picture class=\"col-12 text-center\">\r\n                    <source media=\"(max-width: 767px)\" \r\n                            srcset=\"https://storage.empregare.com/banners/${banner.ArquivoMobile}\" \r\n                            class=\"img-fluid style=\"border-radius: 3px;\">\r\n                    <img src=\"https://storage.empregare.com/banners/${banner.ArquivoDesktop}\" \r\n                         alt=\"${banner.Titulo}\" \r\n                         class=\"img-fluid\" style=\"border-radius: 3px;\"/>\r\n                </picture>\r\n            </a>\r\n        </div>`;\r\n\r\n        container.innerHTML = html;\r\n\r\n        //const botaoFecharElemento = container.querySelector('.btn-close');\r\n        //if (botaoFecharElemento) {\r\n        //    botaoFecharElemento.addEventListener('click', () => {\r\n        //        this.ocultarBanner(banner.ID);\r\n        //    });\r\n        //}\r\n\r\n        const linkElement = container.querySelector('a');\r\n        if (linkElement) {\r\n            linkElement.style.transition = 'opacity 0.3s ease-in-out';\r\n\r\n            linkElement.addEventListener('mouseover', () => {\r\n                linkElement.style.opacity = '0.8';\r\n            });\r\n\r\n            linkElement.addEventListener('mouseout', () => {\r\n                linkElement.style.opacity = '1';\r\n            });\r\n        }\r\n    },\r\n\r\n    //async ocultarBanner(bannerID) {\r\n    //    try {\r\n    //        const response = await fetch('/Company/Banner/OcultarBanner', {\r\n    //            method: 'POST',\r\n    //            headers: {\r\n    //                'Content-Type': 'application/json',\r\n    //            },\r\n    //            body: JSON.stringify({ bannerID: bannerID }),\r\n    //        });\r\n\r\n    //        const result = await response.json();\r\n\r\n    //        if (result.sucesso) {\r\n    //            const bannerElement = document.querySelector(`[data-banner-id=\"${bannerID}\"]`);\r\n    //            if (bannerElement) {\r\n    //                bannerElement.closest('.banner-wrapper').remove();\r\n    //            }\r\n    //        }\r\n    //    } catch (error) {\r\n    //        console.error('Erro ao ocultar banner:', error);\r\n    //    }\r\n    //},\r\n\r\n    //_renderizarBannerPadrao(container) {\r\n    //    const html = `\r\n    //        <div class=\"banner-container\">\r\n    //            <a href=\"#\" target=\"_blank\">\r\n    //                <img src=\"https://www.empregare.com/assetsV2/common/images/global/logo.png\" \r\n    //                     alt=\"Banner Estático\" />\r\n    //            </a>\r\n    //        </div>\r\n    //    `;\r\n    //\r\n    //    container.innerHTML = html;\r\n    //}\r\n};\r\n\r\n","const _chaveSessionStorageGeoData = 'localizacaoGeoData';\r\n\r\nexport function setGeoData(geoData) {\r\n    if (localStorage.getItem(_chaveSessionStorageGeoData)) {\r\n        return;\r\n    }\r\n\r\n    if (geoData != null && geoData != undefined && geoData.cidade != undefined) {\r\n        //Decodifica string\r\n        let geoDataCidadeDecode = decodeURIComponent(geoData.cidade);\r\n        //Retira caracteres ainda estranhos\r\n        geoDataCidadeDecode = geoDataCidadeDecode.replace(/£/g, '').replace(/Ã/g, 'ã').replace(/Â/g, 'â').replace(/Ê/g, 'ê').replace(/Î/g, 'î').replace(/Ô/g, 'ô').replace(/Û/g, 'û').replace(/Á/g, 'á').replace(/É/g, 'é').replace(/Í/g, 'í').replace(/Ó/g, 'ó').replace(/Ú/g, 'ú');\r\n        geoData.cidade = geoDataCidadeDecode;\r\n        localStorage.setItem(_chaveSessionStorageGeoData, JSON.stringify(geoData));\r\n    }\r\n}\r\n\r\nexport function getGeoData() {\r\n    if (!localStorage.getItem(_chaveSessionStorageGeoData)) {\r\n        return { existe: false };\r\n    }\r\n\r\n    const geoDataParsed = JSON.parse(localStorage.getItem(_chaveSessionStorageGeoData));\r\n    const nomeCidade = `${geoDataParsed.cidade}, ${geoDataParsed.regiaoCodigo}, ${geoDataParsed.pais}`;\r\n\r\n    return { existe: true, data: geoDataParsed, cidadeCompleta: nomeCidade };\r\n}","export function isNullOrEmpty(value) {\r\n    if (typeof value == 'undefined') {\r\n        return true;\r\n    }\r\n    if (value == '' || value == null || value == 'null') {\r\n        return true;\r\n    }\r\n    return false;\r\n}\r\n\r\n","export function obterDispositivo() {\r\n    if (navigator.userAgent.match(/Tablet|iPad/i)) {\r\n        return 'Tablet';\r\n    } else if (navigator.userAgent.match(/Mobile|Windows Phone|Lumia|Android|webOS|iPhone|iPod|Blackberry|PlayBook|BB10|Opera Mini|\\bCrMo\\/|Opera Mobi/i)) {\r\n        return 'Mobile';\r\n    } else {\r\n        return 'Desktop';\r\n    }\r\n}","export function obterQueryString() {\r\n    const params = new Proxy(new URLSearchParams(window.location.search), {\r\n        get: (searchParams, prop) => {\r\n            if (prop == 'getAll') {\r\n                const array = []\r\n\r\n                for (const iterator of searchParams.keys()) {\r\n                    array[iterator] = searchParams.getAll(iterator);\r\n                }\r\n\r\n                return array;\r\n            }\r\n\r\n            return searchParams.get(prop);\r\n        }\r\n    });\r\n\r\n    return params;\r\n}\r\n","import { obterDispositivo } from './obterDispositivo';\r\n/**\r\n * Insere um novo track de evento.\r\n * @param {string} name - Nome do evento.\r\n * @param {object} data - Informa��o do evento.\r\n */\r\nexport function addTrack(name, data = {}) {\r\n    if (!window.mixpanel) {\r\n        return;\r\n    }\r\n    if (data == null || data == undefined) { data = {}; }\r\n\r\n    const hotSiteEmpresaID = document.getElementById(\"hotSiteEmpresaID\");\r\n    const hotSiteUrl = document.getElementById('hotSiteUrl');\r\n    if (hotSiteEmpresaID != undefined && hotSiteUrl != undefined)\r\n    {\r\n        data.empresaID = hotSiteEmpresaID.value;\r\n        data.hotsite = hotSiteUrl.value;\r\n    }\r\n    else {\r\n        data.hotsite = 'empregare';\r\n    }\r\n    data.dispositivo = obterDispositivo();\r\n\r\n    mixpanel.track(name, data);\r\n}","import { setGeoData } from \"./geoData\";\r\n\r\nconst _chaveSessionUsuarioLogado = 'usuarioLogado';\r\n\r\nexport async function carregarUsuarioLogado() {\r\n\r\n    const _mudarLayoutLogado = function (resposta) {\r\n\r\n        const headerLogado = document.getElementById('header-candidato-logado');\r\n        const menuLogadoOculto = document.getElementById('menu-logado-oculto');\r\n        const outrosMenusNaoLogado = document.querySelector('.menu-nao-logado');\r\n\r\n        //mostrar stick footer\r\n        document.getElementById('stick-footer-candidato-logado').classList.remove(\"d-none\");\r\n        const footerEmpregare = document.getElementById('footer-empregare');\r\n        if (document.contains(footerEmpregare)) {\r\n            footerEmpregare.classList.add('mb-5', 'mb-md-0', 'pb-4', 'pb-md-0');\r\n        }\r\n\r\n        if (menuLogadoOculto !== null) {\r\n            //mostrar menu logado\r\n            document.getElementById('menu-logado-oculto').classList.remove(\"d-none\");\r\n        }\r\n\r\n        if (outrosMenusNaoLogado !== null) {\r\n            //esconder outro menu\r\n            document.querySelector('.menu-nao-logado').classList.add('d-none');\r\n        }\r\n\r\n        // Mudancas para caso logar em hotsite\r\n        const hotsite = document.querySelector(\"#layout-hotsite\");\r\n\r\n        if (hotsite) {\r\n            let eventoLoginHostite = new CustomEvent(\"LoginHotsite\");\r\n            dispatchEvent(eventoLoginHostite);\r\n        }\r\n\r\n        const fotoCandidato = headerLogado.querySelectorAll(\".img-perfil\");\r\n        fotoCandidato.forEach((item) => {\r\n            item.src = resposta.foto;\r\n        });\r\n\r\n        const nomeCandidato = headerLogado.querySelectorAll(\".header-nome-candidato\");\r\n        nomeCandidato.forEach((item) => {\r\n            item.innerHTML = resposta.nome;\r\n        });\r\n\r\n        const numeroMensagens = document.querySelectorAll('.menu-mensagens-numero');\r\n        numeroMensagens.forEach((item) => {            \r\n            if (resposta.mensagens > 0) {\r\n                item.innerHTML = resposta.mensagens;\r\n                item.classList.remove('d-none');\r\n            }\r\n            \r\n        });\r\n\r\n        const numeroNotificacoes = document.querySelectorAll('.menu-noficacoes-numero');\r\n        numeroNotificacoes.forEach((item) => {\r\n            if (resposta.notificacoes > 0) {\r\n                item.innerHTML = resposta.notificacoes;\r\n                item.classList.remove('d-none');\r\n            }\r\n        });\r\n    }\r\n\r\n    const _fetchDados = async function () {\r\n        await fetch(`/${CULTURE_EMPREGARE}/Login/GetUsuarioLogado`)\r\n            .then(response => response.json())\r\n            .then(async resposta => {\r\n                sessionStorage.setItem(_chaveSessionUsuarioLogado, JSON.stringify(resposta));\r\n\r\n                setGeoData(resposta.geoData);\r\n\r\n                if (!resposta.logado) {\r\n                    const { googleLogin } = await import('../componentes/googleLogin');\r\n                    await googleLogin.init();\r\n                    document.dispatchEvent(new CustomEvent('solicitarGoogleLoginOneTap'));\r\n                    return;\r\n                }\r\n                _mudarLayoutLogado(resposta);                \r\n            });\r\n    };\r\n\r\n\r\n    const sessionLogado = sessionStorage.getItem(_chaveSessionUsuarioLogado);\r\n\r\n    if (!sessionLogado) {\r\n        await _fetchDados();\r\n        return;\r\n    }\r\n\r\n    const logadoJson = JSON.parse(sessionLogado);\r\n\r\n    if (!logadoJson.logado) {\r\n        const { googleLogin } = await import('../componentes/googleLogin');\r\n        await googleLogin.init();\r\n        document.dispatchEvent(new CustomEvent('solicitarGoogleLoginOneTap'));\r\n        return;\r\n    }\r\n    _mudarLayoutLogado(logadoJson);\r\n    \r\n}\r\n\r\nexport function getUsuarioLogado() {\r\n    const sessionLogado = sessionStorage.getItem(_chaveSessionUsuarioLogado);\r\n\r\n    if (!sessionLogado) {\r\n        return null;\r\n    }\r\n\r\n    return JSON.parse(sessionLogado);\r\n}\r\n\r\nexport function removeCacheUsuarioLogado() {\r\n    if (sessionStorage.getItem(_chaveSessionUsuarioLogado)) {\r\n        sessionStorage.removeItem(_chaveSessionUsuarioLogado);\r\n    }\r\n}","import i18next from 'i18next';import resource_0 from \"./vagas.ptbr.json\" assert { type: 'JSON' };import resource_1 from \"./vagas.es.json\" assert { type: 'JSON' };import resource_2 from \"./vagas.en.json\" assert { type: 'JSON' };import { inicializarInternacionalizacao as inicializarGlobal } from '../global/global';const cultura = CULTURE_EMPREGARE.replace('-', '');export const inicializarInternacionalizacao = () => {inicializarGlobal();if (!i18next.isInitialized) {i18next.init({ lng:cultura, debug:true, defaultNS:'translation', resources: {}, fallbackLng: (code) => [ code.slice(0,2), 'ptbr' ]});}i18next.addResources('ptbr', 'translation', resource_0);i18next.addResources('es', 'translation', resource_1);i18next.addResources('en', 'translation', resource_2);}","import { addTrack } from \"./utilidades/trackEventos\";\r\nimport { obterQueryString } from \"./utilidades/obterQueryString\";\r\nimport { cortarTexto } from \"./utilidades/cortarTexto\";\r\nimport { isNullOrEmpty } from './utilidades/isNullOrEmpty';\r\nimport i18next from \"i18next\";\r\nimport { inicializarInternacionalizacao } from \"./localizacao/vagas/vagas\";\r\nimport { getUsuarioLogado } from \"./utilidades/usuarioLogado\";\r\n\r\nimport { listen as quicklinkListen } from \"quicklink/dist/quicklink.mjs\";\r\nimport { localBanner, banner } from './utilidades/banner'\r\nimport { AlertaVaga } from \"./utilidades/alertaVaga\";\r\n\r\n// i18next.on('initialized', async () => {\r\ninicializarInternacionalizacao();\r\nconst vagas = {\r\n    props: {\r\n        dadosFiltroDataPublicacao: {\r\n            dados: [\r\n                {\r\n                    id: 'QualquerMomento',\r\n                    nome: i18next.t('FiltroPublicacaoQualquerMomento')\r\n                },\r\n                {\r\n                    id: 'Ultimas24horas',\r\n                    nome: i18next.t('FiltroPublicacaoUltimasHoras')\r\n                },\r\n                {\r\n                    id: 'UltimaSemana',\r\n                    nome: i18next.t('FiltroPublicacaoUltimaSemana')\r\n                },\r\n                {\r\n                    id: 'UltimoMes',\r\n                    nome: i18next.t('FiltroPublicacaoUltimoMes')\r\n                },\r\n            ]\r\n        },\r\n        dadosFiltroOrdenacao: {\r\n            dados: [\r\n                {\r\n                    id: 'DataAtualizacao',\r\n                    nome: i18next.t('FiltroOrdenacaoDataAtualizacao')\r\n                },\r\n                {\r\n                    id: 'Relevancia',\r\n                    nome: i18next.t('FiltroOrdenacaoRelevancia'),\r\n                    checked: true\r\n                }\r\n            ]\r\n        },\r\n        observerCarregarMaisVagas: new IntersectionObserver(entries => {\r\n            const botao = entries[0];\r\n\r\n            //Se olhar o botão, clica-o\r\n            if (botao.isIntersecting && botao.target.dataset.status == \"pronto\") {\r\n                botao.target.click();\r\n            }\r\n        },\r\n            {\r\n                threshold: 1\r\n            }),\r\n        paginaAtual: obterQueryString()['pagina'] || 1,\r\n        queryUrlAmigavel: {\r\n            query: document.getElementById('TermoBuscaVaga')?.value,\r\n            localidade: document.getElementById('LocalidadeBuscaVaga')?.value,\r\n        },\r\n        filtrosSelecionados: [],\r\n        containerFiltroNivelExperiencia: document.querySelector('.filtro-nivel-experiencia'),\r\n        containerFiltroNivelExperienciaOffcanvas: document.querySelector('.filtro-nivel-experiencia-offcanvas'),\r\n        containerFiltroCidadesOffcanvas: document.querySelector('.filtro-cidades-offcanvas'),\r\n        containerFiltroEstadosOffcanvas: document.querySelector('.filtro-estados-offcanvas'),\r\n        containerFiltroRegimeContratacao: document.querySelector('.filtro-regime-contratacao'),\r\n        containerFiltroRegimeContratacaoOffcanvas: document.querySelector('.filtro-regime-contratacao-offcanvas'),\r\n        containerFiltroTipoSelecaoOffcanvas: document.querySelector('.filtro-tipo-selecao-offcanvas'),\r\n        containerFiltroTipoSelecao: document.querySelector('.filtro-tipo-selecao'),\r\n        containerFiltroPcdOffcanvas: document.querySelector('.filtro-pcd-offcanvas'),\r\n        containerFiltroPcd: document.querySelector('.filtro-pcd'),\r\n        containerFiltroTipoRecrutamentoOffcanvas: document.querySelector('.filtro-tipo-recrutamento-offcanvas'),\r\n        containerFiltroTipoRecrutamento: document.querySelector('.filtro-tipo-recrutamento'),\r\n        containerFiltroPaisOffcanvas: document.querySelector('.filtro-paises-offcanvas'),\r\n        containerFiltroDataPublicacaoOffcanvas: document.querySelector('.filtro-data-publicacao-offcanvas'),\r\n        containerFiltroDataPublicacao: document.querySelector('.filtro-data-publicacao'),\r\n        containerFiltroOrdenacaoOffcanvas: document.querySelector('.filtro-ordenacao-offcanvas'),\r\n        containerFiltroModalidadeTrabalhoOffcanvas: document.querySelector('.filtro-remoto-offcanvas'),\r\n        containerFiltroModalidadeTrabalho: document.querySelector('.filtro-remoto'),\r\n        containerFiltroEmpresaUnidadeOffcanvas: document.querySelector('.filtro-empresa-unidade-offcanvas'),\r\n        containerFiltroEmpresaUnidade: document.querySelector('.filtro-empresa-unidade'),\r\n        falsoContainerFiltroCamposDinamicos: document.querySelector('#container-falso-filtros-campos-dinamicos'),\r\n        falsoContainerFiltroCamposDinamicosOffcanvas: document.querySelector('#container-falso-filtros-campos-dinamicos-offcanvas'),\r\n        hotsiteEmployerPage: document.getElementById('hotsite-employer-page')\r\n\r\n    },\r\n    removerCardsCarregamento(container) {\r\n        container.querySelectorAll('.card-loading').forEach(el => el.remove());\r\n    },\r\n    templates: {\r\n        textoIndicadorPagina(pagina, totalPaginas) {\r\n            return `<p class=\"my-4 mx-3 mx-md-0\">${i18next.t('TemplateTextoIndicadorPagina', { pagina: pagina, paginasRestantes: totalPaginas - pagina })}</p>`;\r\n        },\r\n        alertaNenhumFiltroEncontrado() {\r\n            return this.alertaBase(i18next.t('TemplateAlertaNenhumFiltroEncontrado'), 'info', 'flex-fill');\r\n        },\r\n        alertaNenhumaVaga() {\r\n            const usuario = getUsuarioLogado();\r\n            return `\r\n            <div role=\"alert\">\r\n                <div class=\"w-100 gap-2 flex-row justify-content-center align-items-center h-100 text-center\">\r\n                    <p class=\"h3\">${i18next.t('TemplateAlertaNenhumaVagaTituloFiltro')}</p>\r\n                    <p class=\"d-block\">${i18next.t('TemplateAlertaNenhumaVagaSubtituloFiltro')}</p>\r\n                </div>\r\n                <div class=\"d-block d-sm-flex justify-content-center gap-2 text-center\">\r\n                    <button type=\"button\" class=\"btn btn-outline-primary btn-eliminar-filtros col-11 col-sm-auto mb-3 mb-sm-0\" id=\"limparFiltros\">${i18next.t('TemplateAlertaNenhumaVagaLimparFiltros')}</button>\r\n                    ${usuario && !usuario.logado ?\r\n                    `<a href=\"/${CULTURE_EMPREGARE}/cadastrar-curriculo\" class=\"btn btn-primary btn-block col-11 col-sm-auto\">${i18next.t('TemplateAlertaNenhumaVagaCadastrarCurriculo')}</a>` : ''}\r\n                </div>\r\n            </div>`;\r\n        },\r\n        alertaBase(texto, tipo = 'warning', classesExtras = '') {\r\n            return `\r\n            <div class=\"alert alert-${tipo} ${classesExtras}\" role=\"alert\">\r\n                <div class=\"d-flex w-100 gap-2 flex-row justify-content-center align-items-center h-100\">\r\n                    <i class=\"bi bi-info-circle-fill\"></i>\r\n                    <span>${texto}</span>\r\n                </div>\r\n            </div>`;\r\n        },\r\n        anuncio() {\r\n            return `\r\n            <div class=\"mb-3 anuncio-container\" style=\"width:100%\">\r\n                <p class=\"w-100 text-uppercase text-center mb-3 text-muted\"><small>${i18next.t('TemplateAnuncio')}</small></p>\r\n                <ins class=\"adsbygoogle\"\r\n                style=\"display:block\"\r\n                data-ad-format=\"fluid\"\r\n                data-ad-layout-key=\"-h7-y+8-4t+hf\"\r\n                data-ad-client=\"ca-pub-6762183698372341\"\r\n                data-ad-slot=\"6223184802\"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\r\n            </div>\r\n        `;\r\n            //    return `\r\n            //    <div class=\"mb-3\" style=\"width:100%\">\r\n            //        <p class=\"w-100 text-uppercase text-center mb-3 text-muted\"><small>${i18next.t('TemplateAnuncio')}</small></p>\r\n            //        <ins class=\"adsbygoogle\"\r\n            //style=\"display:block;width:100%\"\r\n            //data-ad-client=\"ca-pub-6762183698372341\"\r\n            //data-ad-slot=\"7122409250\"\r\n            //data-ad-format=\"auto\"\r\n            //data-full-width-responsive=\"true\"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script>\r\n            //    </div>\r\n            //`;\r\n        },\r\n        skeletonLoadingCardVaga(amount) {\r\n            let html = '';\r\n            for (let i = 0; i < amount; ++i) {\r\n                html += `\r\n                <div class=\"card shadow border-0 mb-3 card-loading\">\r\n                    <div class=\"card-body\">\r\n                        <div class=\"row\">\r\n                            <div class=\"col-2 col-lg-1\">\r\n                                <div class=\"rounded card-loading-image\"></div>\r\n                            </div>\r\n                            <div class=\"col-10 col-lg-11\">\r\n                                <div class=\"d-flex gap-2 justify-content-start justify-content-md-between\">\r\n                                    <div class=\"card-loading-bar\" style=\"width: 50%\"></div>\r\n                                    <div class=\"card-loading-bar\" style=\"width: 50%\"></div>\r\n                                </div>\r\n                                <div class=\"card-loading-bar\"></div>\r\n                                <div class=\"card-loading-bar\" style=\"height: 6em\"></div>\r\n                                <div class=\"d-flex gap-5\">\r\n                                    <div class=\"card-loading-bar\" style=\"width: 5em\"></div>\r\n                                    <div class=\"card-loading-bar\" style=\"width: 5em\"></div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                `;\r\n            }\r\n            return html;\r\n        },\r\n        skeletonLoadingCardVagaEmployerPage(amount) {\r\n            let html = '';\r\n            for (let i = 0; i < amount; ++i) {\r\n                html += `\r\n                <div class=\"card shadow border-0 mb-3 card-loading\">\r\n                    <div class=\"card-body py-3\">\r\n                        <div class=\"row\">\r\n                            <div class=\"col-md-6 col-12\">\r\n                                <div class=\"card-loading-bar\" style=\"width: 80%\"></div>\r\n                            </div>\r\n                            <div class=\"col-md-6 col-12\">\r\n                                <div class=\"card-loading-bar\" style=\"width: 50%\"></div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                `;\r\n            }\r\n            return html;\r\n        },\r\n        skeletonLoadingFiltro(amount) {\r\n            let html = '';\r\n            for (let i = 0; i < amount; ++i) {\r\n                html += `\r\n                    <div class=\"row card-loading\">\r\n                        <div class=\"col-2\">\r\n                            <div class=\"rounded card-loading-image\" style=\"width: 16px; height: 16px;\"></div>\r\n                        </div>\r\n                        <div class=\"col-10\">\r\n                            <div class=\"card-loading-bar\"></div>\r\n                        </div>\r\n                    </div>\r\n                `;\r\n            }\r\n            return html;\r\n        },\r\n        cardVagaEmployerPage(data) {\r\n            return `\r\n            <a prefetch href=\"/${data.url}\" class=\"text-decoration-none\">\r\n                <article class=\"card shadow-sm border-0 mb-2 card-vaga py-1\">\r\n                    <div class=\"card-body\">\r\n                        <div class=\"row gx-0 d-flex justify-content-center\">\r\n                            <div class=\"col-md-6 col-12\">\r\n                                <p class=\"fw-bold titulo-vaga text-truncate mb-0 ms-3\">${data.titulo}</p>\r\n                            </div>\r\n                            <div class=\"col-md-6 col-12\">\r\n                                <p class=\"card-cidades mt-1 mb-0 text-muted ms-3\">\r\n                                    ${data.cidades.join('; ')}\r\n                                </p>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </article>\r\n            </a>\r\n            `;\r\n        },\r\n        cardVaga(data) {\r\n            const pcdIconeHtml = data.pcd ? `<li title=\"${i18next.t('TemplateCardVagaDestinadaPCD')}\" class=\"d-flex align-items-center badge bg-transparent px-0 ms-0 ms-md-4\">\r\n                                                <div class=\"row\">\r\n                                                    <div class=\"col\">\r\n                                                        <i class=\"bi bi-universal-access-circle fs-6 text-secondary\"></i>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </li>` : '';\r\n            const ocultarSeForTotalmenteRemoto = (data.cidades[0] === \"Totalmente Remoto\" || data.trabalhoRemoto === \"NaoInformado\") ? \"d-none\" : \"\";\r\n            const nomeEmpresa = data.empresa == null ? \"\" : data.empresa;\r\n            const salarioEmBranco = (data.salario == null || data.salario.length == 0);\r\n            const salarioHtml = !salarioEmBranco ? `\r\n                <li class=\"badge bg-span-card-vaga rounded-5 px-2\">\r\n\r\n                    <div class=\"row g-0\">\r\n                        <div class=\"col ps-2\">\r\n                            <i class=\"bi bi-cash fs-5\"></i>\r\n                        </div>\r\n                        <div class=\"col gx-3 align-self-center\">\r\n                            <small class=\"fw-normal\">${data.salario}</small>\r\n                        </div>\r\n                    </div>\r\n                </li>\r\n            ` : '';\r\n\r\n            return `\r\n            <a prefetch href=\"/${data.url}\" class=\"text-decoration-none\">\r\n                <article class=\"card shadow-sm border-0 mb-3 card-vaga\">\r\n                    <div class=\"card-body\">\r\n                        <div class=\"row gx-0 d-flex justify-content-center\">\r\n                            <div class=\"col-2 col-lg-1\">\r\n                                <div class=\"img-responsiva rounded logo-aside-tamanho\">\r\n                                    <img loading=lazy class=\"\" src=\"${data.logoThumb}\" alt=\"${nomeEmpresa}\" title=\"${nomeEmpresa}\">\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"col-10 col-lg-11 ajuste-padding-col-vaga-info ps-md-0 ps-lg-3 ps-xl-0\">\r\n                                <div class=\"d-flex justify-content-between card-vaga-empresa-data\" style=\"height: 2.2em\">\r\n                                    <p class=\"text-truncate card-vaga-empresa\">${nomeEmpresa}</p>\r\n                                    <p class=\"text-muted text-right me-2 me-md-0 card-vaga-data text-truncate\"><small class=\"texto-data-card\">${data.data}</small></p>\r\n                                </div>\r\n                                <p class=\"fw-bold fs-4 titulo-vaga text-truncate\">${data.titulo}</p>\r\n                                <p class=\"d-none d-lg-flex\" style=\"margin-top: -0.8em\">\r\n                                    <small class=\"text-muted\">\r\n                                        ${data.chamada}\r\n                                    </small>\r\n                                </p>\r\n                                <p class=\"card-cidades ${ocultarSeForTotalmenteRemoto}\">\r\n                                    <span class=\"badge bg-span-card-vaga rounded-5\">\r\n                                        <i class=\"bi bi-geo-alt fs-6\"></i>\r\n                                    </span>\r\n                                    ${data.cidades.join('; ')}\r\n                                </p>\r\n                                \r\n                                <ul class=\"d-none d-md-flex ps-0\">\r\n                                    \r\n                                        <li class=\"badge bg-span-card-vaga rounded-5 px-2 me-4 ${(data.trabalhoRemoto === \"NaoInformado\" ? 'd-none' : '')}\">\r\n                                            <div class=\"row g-0\">\r\n                                                <div class=\"col ps-2\">\r\n                                                    <i class=\"bi bi-briefcase-fill fs-5\"></i>\r\n                                                </div>\r\n                                                <div class=\"col gx-3 align-self-center\">\r\n                                                    <small class=\"fw-normal\">${data.trabalhoRemotoTexto}</small>\r\n                                                </div>\r\n                                            </div>\r\n                                        </li>                                 \r\n\r\n                                    ${salarioHtml}\r\n\r\n                                    ${pcdIconeHtml}\r\n\r\n                                </ul>\r\n\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </article>\r\n            </a>\r\n            `;\r\n        },\r\n        radioFiltro(indice, inputName, data, paddingLateral = true) {\r\n            const classePaddingLateral = paddingLateral ? 'ps-3' : '';\r\n            const uniqueId = Date.now().toString(36) + Math.random().toString(36).substring(2);\r\n            const inicialmenteChecked = data.checked ? 'checked' : '';\r\n            let html = `\r\n            <div class=\"col gy-2 ${classePaddingLateral}\">\r\n                    <div class=\"form-check\">\r\n                        <input class=\"form-check-input dropdown-check-filtra\" type=\"radio\" name=\"${inputName}\" value=\"${data.id}\" id=\"${inputName}_${indice}_${uniqueId}\" ${inicialmenteChecked}>\r\n                        <label class=\"form-check-label\" for=\"${inputName}_${indice}_${uniqueId}\">\r\n                        ${data.nome}\r\n                        </label>\r\n                    </div>\r\n                </div>\r\n            `;\r\n            return html;\r\n        },\r\n        checkboxFiltro(indice, inputName, data, paddingLateral = true, offcanvas = false) {\r\n            const classePaddingLateral = paddingLateral ? 'ps-3' : '';\r\n            const indicador = offcanvas ? '_offcanvas' : '';\r\n            let html = `\r\n            <div class=\"col gy-2 ${classePaddingLateral}\">\r\n                    <div class=\"form-check\">\r\n                        <input class=\"form-check-input dropdown-check-filtra\" type=\"checkbox\" name=\"${inputName}\" value=\"${data.id}\" id=\"${inputName}_${indice}${indicador}\">\r\n                        <label style=\"overflow-wrap: anywhere;\" class=\"form-check-label\" for=\"${inputName}_${indice}${indicador}\">\r\n                        ${data.nome}\r\n                        </label>\r\n                    </div>\r\n                </div>\r\n            `;\r\n            return html;\r\n        },\r\n        switchFiltro(inputName, offcanvas, textoAuxiliar = '') {\r\n            const indicador = offcanvas ? '_offcanvas' : '';\r\n            const labelAuxiliar = textoAuxiliar.length > 0 ? `<label class=\"form-check-label ms-2 mt-2\" for=\"${inputName}${indicador}\">${textoAuxiliar}</label>` : '';\r\n            return `\r\n            <div class=\"form-switch\">\r\n                <input class=\"form-check-input filtro-switch\" type=\"checkbox\" role=\"switch\" name=\"${inputName}\" id=\"${inputName}${indicador}\" value=\"true\">\r\n                ${labelAuxiliar}\r\n            </div>\r\n            `;\r\n        }\r\n    },\r\n    async atualizarListaFiltrosSelecionados(novosFiltros, pushState = true) {\r\n        for (let i = 0; i < novosFiltros.length; ++i) {\r\n            const filtroAtual = { nome: novosFiltros[i].nome, valor: novosFiltros[i].valor };\r\n\r\n            const filtroNaListaIndex = this.props.filtrosSelecionados.findIndex(x => x.nome == filtroAtual.nome);\r\n            if (filtroNaListaIndex != -1) { //encontrou\r\n                this.props.filtrosSelecionados[filtroNaListaIndex] = filtroAtual;\r\n            } else if (filtroNaListaIndex == -1) { //nao encontrou na lista\r\n                this.props.filtrosSelecionados.push(filtroAtual);\r\n            }\r\n        }\r\n        if (pushState) {\r\n            await this.eventoPushStateFiltros();\r\n            this.atualizarTextoQuantidadeGlobalFiltrosSelecionados();\r\n        }\r\n    },\r\n    atualizarTextoQuantidadeGlobalFiltrosSelecionados() {\r\n        const textoQuantidadeFiltrosSelecionados = document.querySelector('.text-quantidade-filtros-selecionados');\r\n        const urlParametros = obterQueryString().getAll;\r\n\r\n        let verificouQuery = false;\r\n        let verificouLocalidade = false;\r\n        let quantidade = 0;\r\n\r\n        for (const filtro in urlParametros) {\r\n            urlParametros[filtro].forEach(valor => {\r\n                if (valor.trim().length > 0) {\r\n                    if (valor != 0)\r\n                        ++quantidade;\r\n                    if (filtro === 'query') {\r\n                        verificouQuery = true;\r\n                    }\r\n\r\n                    if (filtro === 'localidade') {\r\n                        verificouLocalidade = true;\r\n                    }\r\n                }\r\n            });\r\n        }\r\n\r\n        //Em caso de ter querySEO\r\n        if (!isNullOrEmpty(this.props.queryUrlAmigavel.query) && !verificouQuery) {\r\n            ++quantidade;\r\n        }\r\n\r\n        if (!isNullOrEmpty(this.props.queryUrlAmigavel.localidade) && !verificouLocalidade) {\r\n            ++quantidade;\r\n        }\r\n\r\n        textoQuantidadeFiltrosSelecionados.innerHTML = quantidade;\r\n\r\n    },\r\n    manipularDropdownFiltroSelecionado(nomeInput) {\r\n        const quantidadeFiltroEspecificoSelecionado = this.props.filtrosSelecionados.filter(x => x.nome == nomeInput).length;\r\n        const btnClasseSelecionado = 'btn-secondary';\r\n        const dropdownsToggleFiltroEspecificadoSelecionado = document.querySelectorAll(`.dropdown-${nomeInput}`);\r\n        \r\n        dropdownsToggleFiltroEspecificadoSelecionado.forEach(dropdownToggleFiltroEspecificadoSelecionado => {\r\n            if (dropdownToggleFiltroEspecificadoSelecionado) {\r\n                if (quantidadeFiltroEspecificoSelecionado == 0) {\r\n                    dropdownToggleFiltroEspecificadoSelecionado.classList.remove(btnClasseSelecionado);\r\n                } else {\r\n                    dropdownToggleFiltroEspecificadoSelecionado.classList.add(btnClasseSelecionado);\r\n                }\r\n    \r\n                const elementoFiltroEspecificoQuantidade = dropdownToggleFiltroEspecificadoSelecionado.querySelector(`.quantidade-${nomeInput}-filtro`);\r\n                if (elementoFiltroEspecificoQuantidade != undefined) {\r\n                    elementoFiltroEspecificoQuantidade.innerHTML = quantidadeFiltroEspecificoSelecionado == 0 ? '' : `(${quantidadeFiltroEspecificoSelecionado})`;\r\n                }\r\n            }\r\n        });\r\n    },\r\n    manipularFiltrosSelecionados(elemento) {\r\n        const nomeInput = elemento.getAttribute('name');\r\n        const valorSelecionado = elemento.value;\r\n\r\n        const filtroAtual = { nome: nomeInput, valor: valorSelecionado };\r\n\r\n        let filtroNaListaIndex = this.props.filtrosSelecionados.findIndex(x => x.nome == filtroAtual.nome && x.valor == filtroAtual.valor);\r\n\r\n        //Essa condição serve para o caso dos inputs de cargo e localização\r\n        if (elemento.type == 'text') {\r\n\r\n            filtroNaListaIndex = this.props.filtrosSelecionados.findIndex(x => x.nome == filtroAtual.nome);\r\n\r\n            //Se encontrar o termo, ele remove da lista e readiciona\r\n            if (filtroNaListaIndex != -1) {\r\n                this.props.filtrosSelecionados.splice(filtroNaListaIndex, 1);\r\n            }\r\n\r\n            this.props.filtrosSelecionados.push(filtroAtual);\r\n\r\n            //Em caso de filtragem por cargo/localizacao do offcanvas gera historico\r\n            if (filtroAtual.nome == 'query' || filtroAtual.nome == 'localidade') {\r\n                (async () => {\r\n\r\n                    const { vagasBuscasRecentesCargoAdicionar, vagasBuscasRecentesLocalizacaoAdicionar } = await import('./utilidades/eventoBuscarVagaRedirect');\r\n\r\n                    if (filtroAtual.nome == 'query') {\r\n                        vagasBuscasRecentesCargoAdicionar(filtroAtual.valor);\r\n                    }\r\n                    else if (filtroAtual.nome == 'localidade') {\r\n                        vagasBuscasRecentesLocalizacaoAdicionar(filtroAtual.valor);\r\n                    }\r\n\r\n                })();\r\n            }\r\n\r\n        } else {\r\n            //Serve para casos de checkbox e radio\r\n            if (filtroNaListaIndex != -1 && !elemento.checked) { //encontrou e está desmarcado\r\n                this.props.filtrosSelecionados.splice(filtroNaListaIndex, 1);\r\n            } else if (filtroNaListaIndex == -1 && elemento.checked) { //nao encontrou na lista mas esta marcado\r\n                this.props.filtrosSelecionados.push(filtroAtual);\r\n            }\r\n            else if ((filtroAtual.nome == 'selecaoCega' || filtroAtual.nome == 'pcd') && filtroNaListaIndex == -1 && !elemento.checked) {\r\n                /*\r\n                Caso seja um desses filtros, vai remover em caso de aplicar o filtro com ele desmarcado, nao vai setar false, vai remover da lista\r\n                e não enviar pro backend\r\n                */\r\n               this.props.filtrosSelecionados = this.props.filtrosSelecionados.filter(x => x.nome != filtroAtual.nome);\r\n            }\r\n        }\r\n    },\r\n    async eventoPushStateFiltros() {\r\n        //Transform a lista local de filtros selecionados em uma query string\r\n\r\n        let queryString = ``;\r\n        if (this.props.filtrosSelecionados.length == 0) {\r\n            //Caso nao tenha mais valor na queryAmigavel e o pathname for sem ser o amigável, limpa textos, pois nao tem mais filtro\r\n            if (!isNullOrEmpty(this.props.queryUrlAmigavel.query) && !location.pathname.includes('vagas-')) {\r\n                this.props.queryUrlAmigavel.query = '';\r\n            }\r\n            if (!isNullOrEmpty(this.props.queryUrlAmigavel.localidade) && !location.pathname.includes('vagas-')) {\r\n                this.props.queryUrlAmigavel.localidade = '';\r\n            }\r\n            window.history.pushState({}, '', `${location.pathname}?${queryString}`);\r\n            await this.obterVagas(true, true);\r\n            return;\r\n        }\r\n        for (let i = 0; i < this.props.filtrosSelecionados.length; ++i) {\r\n            queryString += `&${this.props.filtrosSelecionados[i].nome}=${encodeURIComponent(this.props.filtrosSelecionados[i].valor)}`;\r\n        }\r\n        queryString = queryString.substring(1);\r\n\r\n        const urlBase = `/${CULTURE_EMPREGARE}/vagas`;\r\n        let urlComplemento = '';\r\n\r\n        function _verificaLimpaQueryLocalidadeSEO(idElemento, nome) {\r\n            const filtroTermo = vagas.props.filtrosSelecionados.find(x => x.nome == nome);\r\n            //Se tiver um tempo e for diferente do termo SEO, precisa remover o termoSEO\r\n            const queryTermo = nome === \"query\" ? vagas.props.queryUrlAmigavel.query.toLowerCase() : vagas.props.queryUrlAmigavel.localidade.toLowerCase();\r\n            if (filtroTermo != null && filtroTermo.valor.toLowerCase() != queryTermo) {\r\n                document.getElementById(idElemento).value = '';\r\n            }\r\n        }\r\n\r\n        function _parametroQueryStringEstaDiferente(parametro) {\r\n            const filtroTermo = vagas.props.filtrosSelecionados.find(x => x.nome == parametro);\r\n            const queryTermo = parametro === \"query\" ? vagas.props.queryUrlAmigavel.query.toLowerCase() : vagas.props.queryUrlAmigavel.localidade.toLowerCase();\r\n            if (filtroTermo != null && filtroTermo.valor.toLowerCase() != queryTermo) {\r\n                return true;\r\n            }\r\n            return false;\r\n        }\r\n\r\n        function _removerParametroEspecificoQueryString(parametro) {\r\n            const queryStringFiltrada = new URLSearchParams(queryString);\r\n            queryStringFiltrada.delete(parametro);\r\n            queryString = queryStringFiltrada.toString();\r\n        }\r\n\r\n        const queryEstaDiferente = _parametroQueryStringEstaDiferente('query');\r\n        const localidadeEstaDiferente = _parametroQueryStringEstaDiferente('localidade');\r\n        const prefixoQueryURLAmigavel = location.pathname.includes('vagas-de');\r\n        const prefixoLocalidadeURLAmigavel = location.pathname.includes('-em-');\r\n\r\n        if (!isNullOrEmpty(this.props.queryUrlAmigavel.query) && isNullOrEmpty(this.props.queryUrlAmigavel.localidade) && prefixoQueryURLAmigavel) {\r\n            //vagas-de-{query}\r\n            urlComplemento += `-de-${this.props.queryUrlAmigavel.query.replace(' ', '-')}`;\r\n        }\r\n        else if (isNullOrEmpty(this.props.queryUrlAmigavel.query) && !isNullOrEmpty(this.props.queryUrlAmigavel.localidade) && prefixoLocalidadeURLAmigavel) {\r\n            //vagas-em-{localidade}\r\n            urlComplemento += `-em-${this.props.queryUrlAmigavel.localidade.replace(' ', '-')}`;\r\n        }\r\n        else if (isNullOrEmpty(this.props.queryUrlAmigavel.query) && isNullOrEmpty(this.props.queryUrlAmigavel.localidade) && !prefixoQueryURLAmigavel && !prefixoLocalidadeURLAmigavel) {\r\n            //vagas\r\n            urlComplemento = '';\r\n        }\r\n        else {\r\n            if (prefixoQueryURLAmigavel && prefixoLocalidadeURLAmigavel) {\r\n                //vagas-de-{query}-em-{localidade}\r\n                urlComplemento += `-de-${this.props.queryUrlAmigavel.query.replace(' ', '-')}-em-${this.props.queryUrlAmigavel.localidade.replace(' ', '-')}`;\r\n            }\r\n            else {\r\n                const termoQuery = this.props.queryUrlAmigavel.query || this.props.queryUrlAmigavel.localidade;\r\n                urlComplemento += prefixoQueryURLAmigavel ? `-de-${termoQuery.replace(' ', '-')}` : `-em-${termoQuery.replace(' ', '-')}`;\r\n            }\r\n        }\r\n\r\n        if (queryEstaDiferente || localidadeEstaDiferente) {\r\n            urlComplemento = '';\r\n            if (queryEstaDiferente) {\r\n                _verificaLimpaQueryLocalidadeSEO('TermoBuscaVaga', 'query');\r\n            }\r\n            if (localidadeEstaDiferente) {\r\n                _verificaLimpaQueryLocalidadeSEO('LocalidadeBuscaVaga', 'localidade');\r\n            }\r\n        } else {\r\n            if (!queryEstaDiferente && prefixoQueryURLAmigavel) {\r\n                _removerParametroEspecificoQueryString('query');\r\n            }\r\n            if (!localidadeEstaDiferente && prefixoLocalidadeURLAmigavel) {\r\n                _removerParametroEspecificoQueryString('localidade');\r\n            }\r\n        }\r\n\r\n        let urlComCompletemento = urlBase + urlComplemento;\r\n        //Isso evita em caso de 'vagas-em-df' trocar para 'vagas-em-brasília, df' devido a localidade\r\n        if (!location.pathname.includes(urlComCompletemento)) {\r\n            urlComCompletemento = location.pathname;\r\n        }\r\n\r\n        window.history.pushState({}, '', `${urlComCompletemento}?${queryString}`);\r\n        await this.obterVagas(true, true);\r\n    },\r\n    async acaoEliminarFiltroEspecifico(nomeInput) {\r\n        //Toda vez que aplicar/remover filtro, jogar o scroll para cima\r\n        if(!vagas.props.hotsiteEmployerPage)\r\n            window.scrollTo(0, 0);\r\n\r\n        const aplicandoPeloOffcanvas = nomeInput == null;\r\n\r\n        if (nomeInput != null) {\r\n            const filtrosSelecionadosNovo = this.props.filtrosSelecionados.filter(x => x.nome !== nomeInput);\r\n            this.props.filtrosSelecionados = filtrosSelecionadosNovo;\r\n            this.manipularDropdownFiltroSelecionado(nomeInput);\r\n        } else {\r\n            this.props.filtrosSelecionados = [];\r\n            document.querySelectorAll('.dropdown-toggle').forEach(el => {\r\n                el.classList.remove('btn-secondary');\r\n                if (el.querySelector('.quantidade-filtro') != undefined) {\r\n                    el.querySelector('.quantidade-filtro').innerHTML = '';\r\n                }\r\n            });\r\n        }\r\n\r\n        await this.eventoPushStateFiltros();\r\n    },\r\n    async acaoAplicarFiltroEspecifico(nomeInput) {\r\n        //Toda vez que aplicar/remover filtro, jogar o scroll para cima\r\n        if(!vagas.props.hotsiteEmployerPage)\r\n            window.scrollTo(0, 0);\r\n\r\n        const aplicandoPeloOffcanvas = nomeInput == null;\r\n        if (nomeInput != null) {\r\n            document.querySelectorAll('input[name=\"' + nomeInput + '\"]').forEach(el => {\r\n                this.manipularFiltrosSelecionados(el);\r\n                this.manipularDropdownFiltroSelecionado(nomeInput);\r\n            });\r\n        }\r\n        else {\r\n            document.querySelector('.todos-filtros-body').querySelectorAll('input').forEach(el => {\r\n                nomeInput = el.getAttribute('name');\r\n                this.manipularFiltrosSelecionados(el);\r\n                this.manipularDropdownFiltroSelecionado(nomeInput);\r\n            });\r\n        }\r\n\r\n        await this.eventoPushStateFiltros();\r\n    },\r\n    acaoPesquisaLocalContainerFiltro(inputName) {\r\n        document.querySelector('input[name=\"search_' + inputName + '\"]').addEventListener('input', e => {\r\n            document.querySelectorAll('input[name=\"' + inputName + '\"]').forEach(x => {\r\n                if (!x.value.toLowerCase().includes(e.target.value.toLowerCase())) {\r\n                    x.closest('.col').style.display = 'none';\r\n                }\r\n                else {\r\n                    x.closest('.col').style.display = 'flex';\r\n                }\r\n            });\r\n        });\r\n    },\r\n    mudarValorInputsCargoLocalizacao(valorInputCargo, valorInputLocalizacao) {\r\n        \r\n        document.querySelector('#filtro-cargo').value = valorInputCargo;\r\n        document.querySelector('#filtro-localizacao').value = valorInputLocalizacao;\r\n        \r\n        document.querySelectorAll('.busca-vaga').forEach(el => {\r\n            el.querySelector('input[name=\"cargo\"]').value = valorInputCargo;\r\n            el.querySelector('input[name=\"localizacao\"]').value = valorInputLocalizacao;\r\n        });\r\n\r\n        const hotsite = document.querySelector('#layout-hotsite');\r\n\r\n        if (hotsite) {\r\n            const cargoInput = hotsite.querySelector('#cargo');\r\n            const localizacaoInput = hotsite.querySelector('#localizacao-0');\r\n\r\n            if(cargoInput)\r\n                cargoInput.value = valorInputCargo;\r\n            if(localizacaoInput)\r\n                localizacaoInput.value = valorInputLocalizacao;\r\n\r\n        }\r\n    },\r\n    mudarTermoBuscaVagaTexto(query, localidade) {\r\n        if (isNullOrEmpty(query) && isNullOrEmpty(localidade)) {\r\n            const termoBuscaVagaTexto =  document.getElementById('TermoBuscaVagaTexto');\r\n            if(termoBuscaVagaTexto)\r\n                termoBuscaVagaTexto.textContent = i18next.t('MudarTermoBuscaVagaTextoFiltrosVazios');\r\n            return;\r\n        }\r\n        let textoCompleto = '';\r\n        query = query?.replace(/-/g, \" \").replace(/(^\\w{1})|(\\s+\\w{1})/g, function (primeiraLetra) { return primeiraLetra.toUpperCase() });\r\n        localidade = localidade?.replace(/-/g, \" \").replace(/(^\\w{1})|(\\s+\\w{1})/g, function (primeiraLetra) { return primeiraLetra.toUpperCase() });\r\n\r\n        if (isNullOrEmpty(query) && !isNullOrEmpty(localidade)) {\r\n            textoCompleto = i18next.t('MudarTermoBuscaVagaTextoComLocalidade', { localidade: localidade });\r\n\r\n        }\r\n        else if (isNullOrEmpty(localidade) && !isNullOrEmpty(query)) {\r\n            textoCompleto = i18next.t('MudarTermoBuscaVagaTextoComFiltro', { filtro: query });\r\n        }\r\n        else {\r\n            textoCompleto = i18next.t('MudarTermoBuscaVagaTextoComAmbosFiltros', { filtro: query, localidade: localidade });\r\n        }\r\n\r\n        const termoBuscaVagaTexto = document.getElementById('TermoBuscaVagaTexto');\r\n        if (termoBuscaVagaTexto) \r\n            termoBuscaVagaTexto.textContent = textoCompleto;\r\n\r\n        document.title = textoCompleto + ' | EMPREGARE.com';\r\n\r\n    },\r\n    resetarObserverCarregarMaisVagas() {\r\n        this.props.observerCarregarMaisVagas.disconnect();\r\n    },\r\n    montarFiltros(data, mudarTermoBuscaVagaTexto) {\r\n\r\n        if (mudarTermoBuscaVagaTexto) {\r\n\r\n            if (obterQueryString()['query'] != null) {\r\n                const termoBuscaVaga = document.getElementById('TermoBuscaVaga');\r\n\r\n                if(termoBuscaVaga){\r\n                    termoBuscaVaga.value = obterQueryString()['query'];\r\n                    this.props.queryUrlAmigavel.query = termoBuscaVaga.value;\r\n                    this.mudarTermoBuscaVagaTexto(this.props.queryUrlAmigavel.query, this.props.queryUrlAmigavel.localidade);\r\n                }\r\n            }\r\n            if (obterQueryString()['localidade'] != null) {\r\n                const localidadeBuscaVaga = document.getElementById('LocalidadeBuscaVaga');\r\n\r\n                if(localidadeBuscaVaga){\r\n                    localidadeBuscaVaga.value = obterQueryString()['localidade'];\r\n                    this.props.queryUrlAmigavel.localidade =localidadeBuscaVaga.value;\r\n                    this.mudarTermoBuscaVagaTexto(this.props.queryUrlAmigavel.query, this.props.queryUrlAmigavel.localidade);\r\n\r\n                }\r\n            }\r\n        }\r\n\r\n        this.mudarValorInputsCargoLocalizacao(this.props.queryUrlAmigavel.query, this.props.queryUrlAmigavel.localidade); //valorInputLocalizacao\r\n\r\n        function _preencherHTMLFiltroNoContainer(nome, data, container, possuiOffcanvas, containerOffcanvas, paddingLateral = false, tipo = 'checkbox', textoAuxiliarSwitch = '') {\r\n            let conteudo = '', conteudoOffcanvas = '';\r\n\r\n            function _manipulaConteudoPeloTipo(i, filtro, offcanvas) {\r\n                let retorno = '';\r\n                switch (tipo) {\r\n                    case 'checkbox':\r\n                        retorno += vagas.templates.checkboxFiltro(i, nome, filtro, paddingLateral, offcanvas);\r\n                        break;\r\n                    case 'radio':\r\n                        retorno += vagas.templates.radioFiltro(i, nome, filtro, paddingLateral);\r\n                        break;\r\n                    case 'switch':\r\n                        retorno += vagas.templates.switchFiltro(nome, offcanvas, offcanvas ? '' : textoAuxiliarSwitch);\r\n                        break;\r\n                    default:\r\n                        retorno += vagas.templates.checkboxFiltro(i, nome, filtro, paddingLateral, offcanvas);\r\n                        break;\r\n                }\r\n                return retorno;\r\n            }\r\n            if (data != null && data.length > 0) {\r\n                for (let i = 0; i < data.length; ++i) {\r\n                    const filtro = data[i];\r\n                    if (nome === \"estado\" && filtro.id.length == 0) { continue; }\r\n                    if (possuiOffcanvas) {\r\n                        conteudoOffcanvas += _manipulaConteudoPeloTipo(i, filtro, true);\r\n                    }\r\n                    conteudo += _manipulaConteudoPeloTipo(i, filtro, false);\r\n                }\r\n            } else if (data == null && tipo === 'switch') {\r\n                if (possuiOffcanvas) {\r\n                    conteudoOffcanvas += _manipulaConteudoPeloTipo(0, null, true);\r\n                }\r\n                conteudo += _manipulaConteudoPeloTipo(0, null, false);\r\n            } else {\r\n                conteudo = conteudoOffcanvas = vagas.templates.alertaNenhumFiltroEncontrado();\r\n            }\r\n\r\n            if (container != null) {\r\n                container.innerHTML = conteudo;\r\n            }\r\n            if (containerOffcanvas != null && possuiOffcanvas) {\r\n                containerOffcanvas.innerHTML = conteudoOffcanvas;\r\n            }\r\n        }\r\n\r\n        const _criarCamposDinamicos = (campo) => {\r\n            const parentNodeOffcanvas = this.props.falsoContainerFiltroCamposDinamicosOffcanvas.parentNode;\r\n            const parentNode = this.props.falsoContainerFiltroCamposDinamicos.parentNode;\r\n            if (document.getElementById(`campo-dinamico-${campo.id}-filtro`)) {\r\n                _preencherHTMLFiltroNoContainer(`camposDinamicos-${campo.id}`, campo.conteudos, parentNode.querySelector(`#campo-dinamico-${campo.id}-filtro`), true, parentNodeOffcanvas.querySelector(`#campo-dinamico-${campo.id}-filtro-offcanvas`), false, 'checkbox', campo.nome);\r\n                return;\r\n            }\r\n\r\n            let html = \r\n                `<div class=\"px-3 py-3 border border-start-0 border-end-0 border-bottom-0\">\r\n                    <p class=\"fw-bold\">${campo.nome}</p>\r\n                    <div class=\"row row-cols-2 gx-0 container-filtro filtro-campo-dinamico-${campo.id}-offcanvas\" id=\"campo-dinamico-${campo.id}-filtro-offcanvas\"></div>\r\n                </div>`\r\n\r\n            const containerFalsoOffcanvas = document.createElement('div')\r\n            containerFalsoOffcanvas.innerHTML = html;\r\n            parentNodeOffcanvas.insertBefore(containerFalsoOffcanvas, this.props.falsoContainerFiltroCamposDinamicosOffcanvas);\r\n            \r\n            html = \r\n            `\r\n            <div class=\"dropdown dropdown-center me-3 d-none d-xxl-block\">\r\n                <button class=\"btn btn-default dropdown-toggle dropdown-camposDinamicos-${campo.id} border rounded-5 px-3\" type=\"button\" data-bs-auto-close=\"outside\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n                    <span class=\"dropdown-texto-interno\">${campo.nome} <span class=\"quantidade-campo-dinamico-${campo.id}-filtro\"></span></span> <i class=\"bi bi-chevron-down\"></i>\r\n                </button>\r\n                <div class=\"dropdown-menu dropdown-menu-container\">\r\n                    <div class=\"row gx-2 pt-2\">\r\n                        <div class=\"col-10\">\r\n                            <p class=\"ps-3 fw-bold\">${campo.nome}</p>\r\n                        </div>\r\n                        <div class=\"col-2\">\r\n                            <button type=\"button\" class=\"fechar-modal pb-0 btn-fechar-dropdown\"><i class=\"bi bi-x-circle fs-6 text-right\"></i></button>\r\n                        </div>\r\n                    </div>\r\n                    <form action=\"\" method=\"get\">\r\n                        <div class=\"row row-cols-1 gx-0 px-3 dropdown-menu-scroll filtro-campo-dinamico-${campo.id}\" id=\"campo-dinamico-${campo.id}-filtro\"></div>\r\n                        <div class=\"py-3 border-top d-flex align-content-center justify-content-center w-100\">\r\n                            <button class=\"btn btn-link text-decoration-none text-primary bg-transparent me-2 btn-eliminar-campo-dinamico\" data-filtro=\"camposDinamicos-${campo.id}\">${i18next.t('BtnEliminarFiltro')}</button>\r\n                            <button class=\"btn btn-primary btn-aplicar-campo-dinamico\" data-filtro=\"camposDinamicos-${campo.id}\">${i18next.t('BtnAplicarFiltro')}</button>\r\n                        </div>\r\n                    </form>\r\n                </div>\r\n            </div>\r\n            `;\r\n            \r\n            const containerFalso = document.createElement('div')\r\n            containerFalso.innerHTML = html;\r\n            parentNode.insertBefore(containerFalso, this.props.falsoContainerFiltroCamposDinamicos.nextSibling);\r\n\r\n            \r\n            const botaoAplicar = containerFalso.querySelector('.btn-aplicar-campo-dinamico');\r\n            botaoAplicar.onclick = async (e) => {\r\n                await this.eventoClickBotaoFiltros(e, botaoAplicar, false);\r\n            };\r\n\r\n            const botaoEliminar = containerFalso.querySelector('.btn-eliminar-campo-dinamico')\r\n            botaoEliminar.onclick = async (e) => {\r\n                await this.eventoClickBotaoFiltros(e, botaoEliminar, true);\r\n\r\n                document.querySelectorAll(`input[name=\"camposDinamicos-${campo.id}\"]`).forEach(el => {\r\n                    this.manipularFiltrosSelecionados(el);\r\n                });\r\n            };\r\n\r\n            _preencherHTMLFiltroNoContainer(`camposDinamicos-${campo.id}`, campo.conteudos, parentNode.querySelector(`#campo-dinamico-${campo.id}-filtro`), true, parentNodeOffcanvas.querySelector(`#campo-dinamico-${campo.id}-filtro-offcanvas`), false, 'checkbox', campo.nome);\r\n        }\r\n\r\n        _preencherHTMLFiltroNoContainer('modalidade', data.remoto, this.props.containerFiltroModalidadeTrabalho, true, this.props.containerFiltroModalidadeTrabalhoOffcanvas, false, 'checkbox');\r\n        _preencherHTMLFiltroNoContainer('nivel', data.nivel, this.props.containerFiltroNivelExperiencia, true, this.props.containerFiltroNivelExperienciaOffcanvas, false, 'checkbox');\r\n        _preencherHTMLFiltroNoContainer('cidade', data.cidade, null, true, this.props.containerFiltroCidadesOffcanvas, false, 'checkbox');\r\n        _preencherHTMLFiltroNoContainer('empresaUnidade', data.empresaUnidade, this.props.containerFiltroEmpresaUnidade, true, this.props.containerFiltroEmpresaUnidadeOffcanvas, false, 'checkbox');\r\n        _preencherHTMLFiltroNoContainer('estado', data.uf, null, true, this.props.containerFiltroEstadosOffcanvas, false, 'checkbox');\r\n        _preencherHTMLFiltroNoContainer('pais', data.pais, null, true, this.props.containerFiltroPaisOffcanvas, false, 'checkbox');\r\n        _preencherHTMLFiltroNoContainer('regime', data.regime, this.props.containerFiltroRegimeContratacao, true, this.props.containerFiltroRegimeContratacaoOffcanvas, false, 'checkbox');\r\n        _preencherHTMLFiltroNoContainer('tipoRecrutamento', data.tipoRecrutamento, this.props.containerFiltroTipoRecrutamento, true, this.props.containerFiltroTipoRecrutamentoOffcanvas, false, 'checkbox');\r\n        _preencherHTMLFiltroNoContainer('dataPublicacao', this.props.dadosFiltroDataPublicacao.dados, this.props.containerFiltroDataPublicacao, true, this.props.containerFiltroDataPublicacaoOffcanvas, false, 'radio');\r\n        _preencherHTMLFiltroNoContainer('ordenacao', this.props.dadosFiltroOrdenacao.dados, null, true, this.props.containerFiltroOrdenacaoOffcanvas, false, 'radio');\r\n        _preencherHTMLFiltroNoContainer('selecaoCega', null, this.props.containerFiltroTipoSelecao, true, this.props.containerFiltroTipoSelecaoOffcanvas, false, 'switch', i18next.t('LabelFiltroSelecaoCega'));\r\n        _preencherHTMLFiltroNoContainer('pcd', null, this.props.containerFiltroPcd, true, this.props.containerFiltroPcdOffcanvas, false, 'switch', i18next.t('LabelFiltroPCD'));\r\n\r\n        if (data.camposDinamicos) {\r\n            for (const campoDinamico of data.camposDinamicos) {\r\n                _criarCamposDinamicos(campoDinamico);\r\n            }\r\n        }\r\n\r\n        document.querySelectorAll('.filtro-switch').forEach(el => el.addEventListener('change', (e) => {\r\n            e.target.value = e.target.checked;\r\n        }));\r\n    },\r\n    async obterVagas(limparHTML = false, acionadoPeloPopstate = false, carregarListaDeVagas = true) {\r\n\r\n        this.resetarObserverCarregarMaisVagas();\r\n        const itensPagina = vagas.props.hotsiteEmployerPage ? 4 : 10;\r\n\r\n        if(vagas.props.hotsiteEmployerPage)\r\n            carregarListaDeVagas = true;\r\n        \r\n        const filtrosPaginacao = `pagina=${this.props.paginaAtual}&itensPagina=${itensPagina}`;\r\n        let todosFiltros = filtrosPaginacao + this.verificarURLFiltros();\r\n\r\n        const boxQuantidadeTotalVagas = document.querySelectorAll('.box-quantidade-total-vagas');\r\n        const quantidadeTotalVagas = document.querySelectorAll('.quantidade-total-vagas');\r\n\r\n        if (carregarListaDeVagas && limparHTML) {\r\n            boxQuantidadeTotalVagas.forEach(el => {\r\n                el.style.display = 'none';\r\n            });\r\n        }\r\n\r\n        const containerVagas = document.querySelector('.listagem-vagas');\r\n\r\n        if (limparHTML) {\r\n            containerVagas.innerHTML = '';\r\n        }\r\n\r\n        if (carregarListaDeVagas) {\r\n            containerVagas.innerHTML += vagas.props.hotsiteEmployerPage ? this.templates.skeletonLoadingCardVagaEmployerPage(3): this.templates.skeletonLoadingCardVaga(3);\r\n        }\r\n\r\n        const boxCarregarMaisVagas = document.querySelector('.box-carregar-mais-vagas');\r\n        const botaoCarregarMaisVagas = boxCarregarMaisVagas?.querySelector('.btn-carregar-mais-vagas');\r\n\r\n        try {\r\n            let hotSiteEmpresaID = '';\r\n            let hotSiteUrl = '';\r\n\r\n            if (document.getElementById('hotSiteEmpresaID')) {\r\n                hotSiteEmpresaID = document.getElementById('hotSiteEmpresaID').value;\r\n                hotSiteUrl = document.getElementById('hotSiteUrl').value;\r\n            }\r\n            todosFiltros += `&empresa=${hotSiteEmpresaID}&hotSiteUrl=${hotSiteUrl}`;\r\n\r\n            let conteudoVagas = '';\r\n\r\n            const request = await fetch(URL_API + 'vagas/buscar-novo?' + todosFiltros.replace('?', '&'));\r\n            const response = await request.json();\r\n            const retornoDados = response.model;\r\n\r\n            if(boxCarregarMaisVagas)\r\n                botaoCarregarMaisVagas.dataset.status = \"pausado\";\r\n\r\n            \r\n            if (carregarListaDeVagas) {\r\n                if (response.sucesso && retornoDados.dados != undefined && retornoDados.dados.length > 0) {\r\n\r\n                    this.removerCardsCarregamento(containerVagas);\r\n\r\n                    document.getElementById('DivNectar')?.classList.add('d-md-block');\r\n                    document.querySelector('.container-vagas .row').style.marginBottom = '0px';\r\n                    document.querySelector('.container-vagas .row').classList.add('justify-content-center');\r\n\r\n                    const termoBuscaVagaTexto = document.getElementById('TermoBuscaVagaTexto');\r\n                    if (termoBuscaVagaTexto) \r\n                        termoBuscaVagaTexto.style.visibility = 'visible';\r\n                    \r\n                    if (retornoDados.pagina > 1 && !vagas.props.hotsiteEmployerPage) {\r\n                        conteudoVagas += this.templates.textoIndicadorPagina(retornoDados.pagina, retornoDados.totalPaginas);\r\n                    }\r\n\r\n                    boxQuantidadeTotalVagas.forEach(el => {\r\n                        el.style.display = 'block';\r\n                    });\r\n\r\n                    quantidadeTotalVagas.forEach(el => el.innerHTML = i18next.t('ListagemVagasQuantidade', { totalVagas: retornoDados.totalVagas, totalRegistro: retornoDados.totalRegistro }));\r\n\r\n                    const inputShowAds = document.querySelector('#hotSiteShowAds') ? document.querySelector('#hotSiteShowAds').value : null;\r\n\r\n                    for (let i = 0; i < retornoDados.dados.length; ++i) {\r\n                        conteudoVagas += vagas.props.hotsiteEmployerPage ?  this.templates.cardVagaEmployerPage(retornoDados.dados[i]) : this.templates.cardVaga(retornoDados.dados[i]);\r\n                    }\r\n\r\n                    containerVagas.innerHTML += conteudoVagas;\r\n                }\r\n                else {\r\n                    boxQuantidadeTotalVagas.forEach(el => {\r\n                        el.style.display = 'none';\r\n                    });\r\n\r\n                    containerVagas.innerHTML = '';\r\n                    quantidadeTotalVagas.forEach(el => el.innerHTML = i18next.t('ListagemVagasQuantidade', { totalVagas: 0, totalRegistro: 0 }));\r\n                    conteudoVagas = this.templates.alertaNenhumaVaga();\r\n                    document.getElementById('DivNectar') ? document.getElementById('DivNectar')?.classList.remove('d-md-block') : '';\r\n                    document.querySelector('.container-vagas .row').style.marginBottom = '200px';\r\n                    document.querySelector('.container-vagas .row').classList.add('justify-content-center');\r\n\r\n                    const termoBuscaVagaTexto = document.getElementById('TermoBuscaVagaTexto');\r\n                    if (termoBuscaVagaTexto) \r\n                        termoBuscaVagaTexto.style.visibility = 'hidden';\r\n\r\n                    containerVagas.innerHTML += conteudoVagas;\r\n                    document.getElementById('limparFiltros').addEventListener('click', async (e) => {\r\n                        await vagas.eventoClickBotaoFiltros(e, e.target, true);\r\n                    });\r\n                }\r\n            }\r\n\r\n            this.montarFiltros(retornoDados.facets, carregarListaDeVagas);\r\n            \r\n            this.preencherCheckboxRadioFiltrosPelaURL(acionadoPeloPopstate);\r\n            \r\n            this.atualizarTextoQuantidadeGlobalFiltrosSelecionados();\r\n\r\n            if (this.props.paginaAtual >= retornoDados.totalPaginas) {\r\n                boxCarregarMaisVagas.style.display = 'none';\r\n            }\r\n            else {\r\n                boxCarregarMaisVagas.style.display = 'flex';\r\n            }\r\n\r\n            //Esta realmente visivel o botao, troca status para pronto - onde o observer vai agir\r\n            if (boxCarregarMaisVagas.style.display == 'flex') {\r\n                botaoCarregarMaisVagas.dataset.status = \"pronto\";\r\n                this.scrollInfinitoObterMaisVagas();\r\n            }\r\n\r\n            quicklinkListen({\r\n                ignores: [\r\n                    (uri, elem) => !elem.hasAttribute('prefetch') //Os links que possuiram tal atributo irão dar prefetch\r\n                ]\r\n            });\r\n\r\n            if (this.props.paginaAtual === 1) {\r\n                let buscaCompleta = true;\r\n                if (!isNullOrEmpty(this.props.queryUrlAmigavel.query)) {\r\n                    addTrack('Busca Vagas', { cargo: this.props.queryUrlAmigavel.query.toLowerCase() });\r\n\r\n                } else {\r\n                    buscaCompleta = false;\r\n                }\r\n                if (!isNullOrEmpty(this.props.queryUrlAmigavel.localidade)) {\r\n                    addTrack('Busca Vagas', { localidade: this.props.queryUrlAmigavel.localidade.toLowerCase() });\r\n                } else {\r\n                    buscaCompleta = false;\r\n                }\r\n                if (buscaCompleta) {\r\n                    addTrack('Busca Vagas', { cargo: this.props.queryUrlAmigavel.query.toLowerCase(), localidade: this.props.queryUrlAmigavel.localidade.toLowerCase() });\r\n                }\r\n            }\r\n\r\n            // comentado pois alerta de vagas na busca de vagas nao sera implementado nesse estagio\r\n            // descomentar para ativar \r\n            // if (retornoDados.cargoValido) {\r\n            //     const wrapperAlertaVagaLista = document.getElementsByClassName('wrapper-alerta-vaga');\r\n\r\n            //     if (!wrapperAlertaVagaLista)\r\n            //         return;\r\n\r\n            //     for (const wrapperAlertaVaga of wrapperAlertaVagaLista) {                    \r\n            //         wrapperAlertaVaga.classList.remove('d-none');\r\n            //         wrapperAlertaVaga.querySelector('.cargo-alerta-vaga').textContent = this.props.queryUrlAmigavel.query;\r\n                    \r\n            //         const botao = wrapperAlertaVaga.querySelector('.botao-alerta-vaga-busca');\r\n    \r\n            //         if (!botao)\r\n            //             continue;\r\n    \r\n            //         botao.setAttribute('data-cargo', this.props.queryUrlAmigavel.query);\r\n            //         if (this.props.queryUrlAmigavel.localidade != '')\r\n            //             botao.setAttribute('data-localidade', this.props.queryUrlAmigavel.localidade);\r\n    \r\n            //         new AlertaVaga(botao);\r\n            //     }\r\n\r\n            // }\r\n\r\n            return retornoDados;\r\n        }\r\n        catch (e) {\r\n            console.error({ catchObterVagas: e });\r\n            containerVagas.innerHTML = this.templates.alertaNenhumaVaga();\r\n            boxCarregarMaisVagas.style.display = 'none';\r\n            botaoCarregarMaisVagas.dataset.status = \"pausado\";\r\n        }\r\n\r\n    },\r\n    verificarURLFiltros() {\r\n        //Tem parametros de filtro na url\r\n        const urlParametros = obterQueryString().getAll;\r\n        let queryString = '';\r\n\r\n        if (Object.keys(urlParametros).length > 0) {\r\n            //Se não tiver a query string explicita de query, pegar do SEO -> vagas-de-{query}\r\n            if (urlParametros['query'] == undefined || urlParametros['query'] == null || urlParametros['query'].length == 0) {\r\n                queryString += '&query=' + this.props.queryUrlAmigavel.query;\r\n            }\r\n\r\n            if (urlParametros['localidade'] == undefined || urlParametros['localidade'] == null || urlParametros['localidade'].length == 0) {\r\n                queryString += '&localidade=' + this.props.queryUrlAmigavel.localidade;\r\n            }\r\n\r\n            for (let filtroNome in urlParametros) {\r\n                urlParametros[filtroNome].forEach(valor => {\r\n                    queryString += `&${filtroNome}=${valor}`;\r\n                });\r\n            }\r\n        } else {\r\n\r\n            //Se a URL vagas-de-{query}-em-{localidade} tiver os parametros diferente de queryUrlAmigavel, usar da URL\r\n            let pathname = location.pathname.replace('/', '').replace(CULTURE_EMPREGARE, '').replace('/', '');\r\n            let queryURLAmigavel = this.props.queryUrlAmigavel.query;\r\n            let localidadeURLAmigavel = this.props.queryUrlAmigavel.localidade;\r\n\r\n            if (pathname.includes('vagas-de-') && !pathname.includes('-em-')) {\r\n                //vagas-de-auxiliar-administrativo\r\n                pathname = pathname.replace('vagas-de-', '');\r\n\r\n                //No caso de trabalho remoto, usa o prefixo -de-, mas vem query em branco do backend, entao preenche localidade\r\n                //vagas-de-trabalho-remoto\r\n                if (isNullOrEmpty(this.props.queryUrlAmigavel.query)) {\r\n                    localidadeURLAmigavel = pathname.split('-').join(' ');\r\n                } else {\r\n                    queryURLAmigavel = pathname.split('-').join(' ');\r\n                }\r\n\r\n            } else if (pathname.includes('-em-') && !pathname.includes('vagas-de-')) {\r\n                //vagas-em-sao-paulo\r\n                localidadeURLAmigavel = pathname.split('-em-').splice(1).join().split('-'); //ignora algo anterior a -em- e depois da split pelo `-`\r\n                localidadeURLAmigavel = localidadeURLAmigavel.join(' ');\r\n            } else if (pathname.includes('vagas-de-') && pathname.includes('-em-')) {\r\n                //vagas-de-auxiliar-administrativo-em-sao-paulo\r\n                pathname = pathname.replace('vagas-de-', '');\r\n                const pathnameSplit = pathname.split('-em-');\r\n                queryURLAmigavel = pathnameSplit[0].replace(/-/g, ' ');\r\n                localidadeURLAmigavel = pathnameSplit[1].replace(/-/g, ' ');\r\n            } else if (pathname.includes('vagas') && location.search.length == 0) {\r\n                //Verifica se a url está totalmente sem query amigavel e sem query string, resetando variaveis em memoria para o evento popstate\r\n                this.props.queryUrlAmigavel.query = this.props.queryUrlAmigavel.localidade = '';\r\n                this.atualizarListaFiltrosSelecionados([{ nome: 'query', valor: this.props.queryUrlAmigavel.query }], false);\r\n                this.atualizarListaFiltrosSelecionados([{ nome: 'localidade', valor: this.props.queryUrlAmigavel.localidade }], false);\r\n            }\r\n\r\n            if (queryURLAmigavel != this.props.queryUrlAmigavel.query) {\r\n                queryURLAmigavel = this.props.queryUrlAmigavel.query;\r\n            }\r\n\r\n            if (localidadeURLAmigavel != this.props.queryUrlAmigavel.localidade) {\r\n                localidadeURLAmigavel = this.props.queryUrlAmigavel.localidade;\r\n            }\r\n\r\n            queryString += '&query=' + queryURLAmigavel;\r\n            queryString += '&localidade=' + localidadeURLAmigavel;\r\n        }\r\n        return queryString;\r\n    },\r\n    limparFormatacaoDropdownSelecionado(urlParametros) {\r\n        this.props.filtrosSelecionados.forEach(filtro => {\r\n            if (!urlParametros.includes(filtro.nome)) {\r\n                document.querySelectorAll('.dropdown-' + filtro.nome).forEach(el => {\r\n                    el.classList.remove('btn-secondary');\r\n                    if (el.querySelector('.quantidade-' + filtro.nome + '-filtro') != undefined) {\r\n                        el.querySelector('.quantidade-' + filtro.nome + '-filtro').innerHTML = '';\r\n                    }\r\n                });\r\n            }\r\n        });\r\n    },\r\n    preencherCheckboxRadioFiltrosPelaURL(popstate = false) {\r\n        let urlParametros = obterQueryString().getAll;\r\n\r\n        if (popstate) {\r\n            //Caso nao tenha mais o filtro selecionado limpa o dropdown selecionado\r\n            this.limparFormatacaoDropdownSelecionado(urlParametros);\r\n        }\r\n\r\n        for (let filtroNome in urlParametros) {\r\n            urlParametros[filtroNome].forEach(valor => {\r\n                document.querySelectorAll('input[name=\"' + filtroNome + '\"]:not([type=\"text\"])').forEach(el => {\r\n                    if (el.value == valor) {\r\n                        el.checked = true;\r\n                        this.manipularFiltrosSelecionados(el);\r\n                        this.manipularDropdownFiltroSelecionado(filtroNome);\r\n                    }\r\n                });\r\n            });\r\n        }\r\n\r\n    },\r\n    async eventoSubmitFormHeaderBuscarVagas(form) {\r\n        const { eventoBuscarVagaRedirect } = await import('./utilidades/eventoBuscarVagaRedirect');\r\n        form.removeEventListener('submit', eventoBuscarVagaRedirect);\r\n        form.addEventListener('submit', async (e) => {\r\n\r\n            e.preventDefault();\r\n            this.props.paginaAtual = 1;\r\n            window.scrollTo(0, 0);\r\n            const inputCargo = e.target.querySelector('input[name=\"cargo\"]').value;\r\n            const inputLocalizacao = e.target.querySelector('input[name=\"localizacao\"]').value;\r\n            await this.atualizarListaFiltrosSelecionados([\r\n                { nome: 'query', valor: inputCargo },\r\n                { nome: 'localidade', valor: inputLocalizacao }\r\n            ]);\r\n        });\r\n    },\r\n    async eventoClickBotaoFiltros(e, botao, acaoEliminarFiltros) {\r\n        e.preventDefault();\r\n        this.props.paginaAtual = 1;\r\n\r\n        if (acaoEliminarFiltros) {\r\n            await this.acaoEliminarFiltroEspecifico(botao.dataset.filtro);\r\n            this.mudarTermoBuscaVagaTexto(this.props.queryUrlAmigavel.query, this.props.queryUrlAmigavel.localidade);\r\n        }\r\n        else {\r\n            await this.acaoAplicarFiltroEspecifico(botao.dataset.filtro);\r\n        }\r\n\r\n        this.trocarSetaDropdown(e.target);\r\n\r\n        let offcanvasFiltros = bootstrap.Offcanvas.getInstance('.offcanvas-filtro-vagas');\r\n        if (offcanvasFiltros != null) {\r\n            offcanvasFiltros.hide();\r\n        }\r\n    },\r\n    trocarSetaDropdown(elemento) {\r\n        if (elemento.closest('.dropdown') != undefined) {\r\n            elemento.closest('.dropdown').dispatchEvent(new Event('hide.bs.dropdown'));\r\n            elemento.closest('.dropdown-menu').classList.toggle('show');\r\n        }\r\n    },\r\n    scrollInfinitoObterMaisVagas() {\r\n        //Observa o botão de carregar mais vagas\r\n        if(!vagas.props.hotsiteEmployerPage)\r\n            this.props.observerCarregarMaisVagas.observe(document.querySelector('.btn-carregar-mais-vagas'));\r\n    },\r\n    async init() {\r\n        const { autocompleteBuscaRecenteCargo, autocompleteBuscaRecenteLocalizacao } = await import('./utilidades/eventoBuscarVagaRedirect');\r\n\r\n        const temParametrosNaUrl = (location.search.length > 0);\r\n\r\n        banner.renderizar('banner-busca-vagas', localBanner.VAGA_BUSCA, false)\r\n        banner.renderizar('banner-busca-vagas-mobile', localBanner.VAGA_BUSCA)\r\n\r\n        if (!isNullOrEmpty(obterQueryString()['query']) || !isNullOrEmpty(this.props.queryUrlAmigavel.query)) {\r\n            await this.atualizarListaFiltrosSelecionados([{ nome: 'query', valor: (obterQueryString()['query'] || this.props.queryUrlAmigavel.query) }], false);\r\n        }\r\n\r\n        if (!isNullOrEmpty(obterQueryString()['localidade'])) {\r\n            await this.atualizarListaFiltrosSelecionados([{ nome: 'localidade', valor: (obterQueryString()['localidade'] || this.props.queryUrlAmigavel.localidade) }], false);\r\n        }\r\n\r\n        window.addEventListener('adicionarCustomFiltro', (e) => {\r\n            this.atualizarListaFiltrosSelecionados(e.detail, false);\r\n        });\r\n\r\n        window.addEventListener('popstate', async (e) => {\r\n\r\n            await this.obterVagas(true, true);\r\n        });\r\n\r\n        await this.obterVagas(temParametrosNaUrl, false, temParametrosNaUrl);\r\n\r\n        const btnCarregarMaisVagas = document.querySelector('.btn-carregar-mais-vagas');\r\n\r\n        btnCarregarMaisVagas.addEventListener('click', async (e) => {\r\n            //Se o JS estiver habilitado, o comportamento padrão do link não vai funcionar (redirecionar), carregando as vagas por JS\r\n            //Vai ser usado apenas por bots\r\n            e.preventDefault();\r\n            ++this.props.paginaAtual;\r\n            await this.obterVagas(false, false);\r\n        });\r\n\r\n        //Remove evento redirect, pois na vaga só precisa chamar o metodo de listagem sem a necessidade de redirect        \r\n        document.querySelectorAll('.formHeaderBuscarVagas').forEach(el => {\r\n            this.eventoSubmitFormHeaderBuscarVagas(el);\r\n        });\r\n\r\n        document.querySelectorAll('.btn-eliminar-filtros').forEach(el => el.addEventListener('click', async (e) => {\r\n            await this.eventoClickBotaoFiltros(e, el, true);\r\n        }));\r\n\r\n        document.querySelectorAll('.btn-aplicar-filtros').forEach(el => el.addEventListener('click', async (e) => {\r\n            await this.eventoClickBotaoFiltros(e, el, false);\r\n        }));\r\n\r\n        //Botão de fechar o dropdown menu\r\n        document.querySelectorAll('.btn-fechar-dropdown').forEach(el => el.addEventListener('click', (e) => {\r\n            this.trocarSetaDropdown(e.target);\r\n        }));\r\n\r\n        function alertaHotsiteSemVagas() {\r\n            const usuario = getUsuarioLogado();\r\n            const textoNenhumaVaga = document.getElementById('textoNenhumaVaga');\r\n            const btnNenhumaVaga = document.getElementById('btnNenhumaVaga');\r\n\r\n            if (textoNenhumaVaga && btnNenhumaVaga) {\r\n                if (usuario && usuario.logado) {\r\n                    textoNenhumaVaga.innerHTML = `${i18next.t('TemplateAlertaNenhumaVagaLogado')}`;\r\n                    btnNenhumaVaga.innerHTML = `${i18next.t('TemplateAlertaNenhumaVagaRevisarCurriculo')}`;\r\n                    btnNenhumaVaga.href = `/${CULTURE_EMPREGARE}/candidato/curriculo`;\r\n                } else {\r\n                    textoNenhumaVaga.innerHTML = `${i18next.t('TemplateAlertaNenhumaVagaNaoLogado')}`;\r\n                    btnNenhumaVaga.innerHTML = `${i18next.t('TemplateAlertaNenhumaVagaCadastrarCurriculo')}`\r\n                    btnNenhumaVaga.href = `/${CULTURE_EMPREGARE}/cadastrar-curriculo`;\r\n                }\r\n            }\r\n        }\r\n        alertaHotsiteSemVagas();\r\n        window.addEventListener('LoginHotsite', alertaHotsiteSemVagas);\r\n\r\n        //Autocompletes para o offcanvas\r\n        autocompleteBuscaRecenteLocalizacao(null, '#filtro-localizacao');\r\n        autocompleteBuscaRecenteCargo(document.querySelector('.offcanvas-filtro-vagas'), '#filtro-cargo');\r\n\r\n        window.addEventListener('beforeunload', () => {\r\n            window.scrollTo(0, 0);\r\n        });\r\n\r\n        this.scrollInfinitoObterMaisVagas();\r\n    }\r\n};\r\n// await vagas.init();\r\n// })\r\n\r\n\r\n(async () => await vagas.init())();","function e(e){return new Promise(function(n,r,t){(t=new XMLHttpRequest).open(\"GET\",e,t.withCredentials=!0),t.onload=function(){200===t.status?n():r()},t.send()})}var n,r=(n=document.createElement(\"link\")).relList&&n.relList.supports&&n.relList.supports(\"prefetch\")?function(e){return new Promise(function(n,r,t){(t=document.createElement(\"link\")).rel=\"prefetch\",t.href=e,t.onload=n,t.onerror=r,document.head.appendChild(t)})}:e,t=window.requestIdleCallback||function(e){var n=Date.now();return setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-n))}})},1)},o=new Set,i=new Set,c=!1;function a(e){if(e){if(e.saveData)return new Error(\"Save-Data is enabled\");if(/2g/.test(e.effectiveType))return new Error(\"network conditions are poor\")}return!0}function u(e){if(e||(e={}),window.IntersectionObserver){var n=function(e){e=e||1;var n=[],r=0;function t(){r<e&&n.length>0&&(n.shift()(),r++)}return[function(e){n.push(e)>1||t()},function(){r--,t()}]}(e.throttle||1/0),r=n[0],a=n[1],u=e.limit||1/0,l=e.origins||[location.hostname],d=e.ignores||[],h=e.delay||0,p=[],m=e.timeoutFn||t,w=\"function\"==typeof e.hrefFn&&e.hrefFn,g=e.prerender||!1;c=e.prerenderAndPrefetch||!1;var v=new IntersectionObserver(function(n){n.forEach(function(n){if(n.isIntersecting)p.push((n=n.target).href),function(e,n){n?setTimeout(e,n):e()}(function(){-1!==p.indexOf(n.href)&&(v.unobserve(n),(c||g)&&i.size<1?f(w?w(n):n.href).catch(function(n){if(!e.onError)throw n;e.onError(n)}):o.size<u&&!g&&r(function(){s(w?w(n):n.href,e.priority).then(a).catch(function(n){a(),e.onError&&e.onError(n)})}))},h);else{var t=p.indexOf((n=n.target).href);t>-1&&p.splice(t)}})},{threshold:e.threshold||0});return m(function(){(e.el||document).querySelectorAll(\"a\").forEach(function(e){l.length&&!l.includes(e.hostname)||function e(n,r){return Array.isArray(r)?r.some(function(r){return e(n,r)}):(r.test||r).call(r,n.href,n)}(e,d)||v.observe(e)})},{timeout:e.timeout||2e3}),function(){o.clear(),v.disconnect()}}}function s(n,t,u){var s=a(navigator.connection);return s instanceof Error?Promise.reject(new Error(\"Cannot prefetch, \"+s.message)):(i.size>0&&!c&&console.warn(\"[Warning] You are using both prefetching and prerendering on the same document\"),Promise.all([].concat(n).map(function(n){if(!o.has(n))return o.add(n),(t?function(n){return window.fetch?fetch(n,{credentials:\"include\"}):e(n)}:r)(new URL(n,location.href).toString())})))}function f(e,n){var r=a(navigator.connection);if(r instanceof Error)return Promise.reject(new Error(\"Cannot prerender, \"+r.message));if(!HTMLScriptElement.supports(\"speculationrules\"))return s(e),Promise.reject(new Error(\"This browser does not support the speculation rules API. Falling back to prefetch.\"));if(document.querySelector('script[type=\"speculationrules\"]'))return Promise.reject(new Error(\"Speculation Rules is already defined and cannot be altered.\"));for(var t=0,u=[].concat(e);t<u.length;t+=1){var f=u[t];if(window.location.origin!==new URL(f,window.location.href).origin)return Promise.reject(new Error(\"Only same origin URLs are allowed: \"+f));i.add(f)}o.size>0&&!c&&console.warn(\"[Warning] You are using both prefetching and prerendering on the same document\");var l=function(e){var n=document.createElement(\"script\");n.type=\"speculationrules\",n.text='{\"prerender\":[{\"source\": \"list\",\"urls\": [\"'+Array.from(e).join('\",\"')+'\"]}]}';try{document.head.appendChild(n)}catch(e){return e}return!0}(i);return!0===l?Promise.resolve():Promise.reject(l)}export{u as listen,s as prefetch,f as prerender};\n"],"names":["cultura","CULTURE_EMPREGARE","replace","inicializarInternacionalizacao","i18next","isInitialized","lng","debug","defaultNS","resources","fallbackLng","code","slice","addResources","localBanner","HOME","VAGA_BUSCA","VAGA_DETALHES","PAINEL","EMPLOYER_PAGE","banner","renderizar","containerId","local","exibirMobile","container","document","getElementById","this","_buscarBanner","console","log","sucesso","_renderizarHTML","error","response","fetch","method","headers","json","html","ID","ArquivoMobile","ArquivoDesktop","Titulo","innerHTML","linkElement","querySelector","style","transition","addEventListener","opacity","_chaveSessionStorageGeoData","setGeoData","geoData","localStorage","getItem","undefined","cidade","geoDataCidadeDecode","decodeURIComponent","setItem","JSON","stringify","getGeoData","existe","geoDataParsed","parse","data","cidadeCompleta","regiaoCodigo","pais","isNullOrEmpty","value","obterDispositivo","navigator","userAgent","match","obterQueryString","Proxy","URLSearchParams","window","location","search","get","searchParams","prop","array","iterator","keys","getAll","addTrack","name","mixpanel","hotSiteEmpresaID","hotSiteUrl","empresaID","hotsite","dispositivo","track","_chaveSessionUsuarioLogado","async","carregarUsuarioLogado","_mudarLayoutLogado","resposta","headerLogado","menuLogadoOculto","outrosMenusNaoLogado","classList","remove","footerEmpregare","contains","add","eventoLoginHostite","CustomEvent","dispatchEvent","querySelectorAll","forEach","item","src","foto","nome","mensagens","notificacoes","sessionLogado","sessionStorage","then","s","logado","googleLogin","init","_fetchDados","logadoJson","getUsuarioLogado","removeCacheUsuarioLogado","removeItem","vagas","props","dadosFiltroDataPublicacao","dados","id","dadosFiltroOrdenacao","checked","observerCarregarMaisVagas","IntersectionObserver","entries","botao","isIntersecting","target","dataset","status","click","threshold","paginaAtual","queryUrlAmigavel","query","localidade","filtrosSelecionados","containerFiltroNivelExperiencia","containerFiltroNivelExperienciaOffcanvas","containerFiltroCidadesOffcanvas","containerFiltroEstadosOffcanvas","containerFiltroRegimeContratacao","containerFiltroRegimeContratacaoOffcanvas","containerFiltroTipoSelecaoOffcanvas","containerFiltroTipoSelecao","containerFiltroPcdOffcanvas","containerFiltroPcd","containerFiltroTipoRecrutamentoOffcanvas","containerFiltroTipoRecrutamento","containerFiltroPaisOffcanvas","containerFiltroDataPublicacaoOffcanvas","containerFiltroDataPublicacao","containerFiltroOrdenacaoOffcanvas","containerFiltroModalidadeTrabalhoOffcanvas","containerFiltroModalidadeTrabalho","containerFiltroEmpresaUnidadeOffcanvas","containerFiltroEmpresaUnidade","falsoContainerFiltroCamposDinamicos","falsoContainerFiltroCamposDinamicosOffcanvas","hotsiteEmployerPage","removerCardsCarregamento","el","templates","textoIndicadorPagina","pagina","totalPaginas","paginasRestantes","alertaNenhumFiltroEncontrado","alertaBase","alertaNenhumaVaga","usuario","texto","tipo","classesExtras","anuncio","skeletonLoadingCardVaga","amount","i","skeletonLoadingCardVagaEmployerPage","skeletonLoadingFiltro","cardVagaEmployerPage","url","titulo","cidades","join","cardVaga","pcdIconeHtml","pcd","ocultarSeForTotalmenteRemoto","trabalhoRemoto","nomeEmpresa","empresa","salarioHtml","salario","length","logoThumb","chamada","trabalhoRemotoTexto","radioFiltro","indice","inputName","paddingLateral","classePaddingLateral","uniqueId","Date","now","toString","Math","random","substring","inicialmenteChecked","checkboxFiltro","offcanvas","indicador","switchFiltro","textoAuxiliar","atualizarListaFiltrosSelecionados","novosFiltros","pushState","filtroAtual","valor","filtroNaListaIndex","findIndex","x","push","eventoPushStateFiltros","atualizarTextoQuantidadeGlobalFiltrosSelecionados","textoQuantidadeFiltrosSelecionados","urlParametros","verificouQuery","verificouLocalidade","quantidade","filtro","trim","manipularDropdownFiltroSelecionado","nomeInput","quantidadeFiltroEspecificoSelecionado","filter","btnClasseSelecionado","dropdownToggleFiltroEspecificadoSelecionado","elementoFiltroEspecificoQuantidade","manipularFiltrosSelecionados","elemento","getAttribute","type","splice","vagasBuscasRecentesCargoAdicionar","vagasBuscasRecentesLocalizacaoAdicionar","queryString","pathname","includes","history","obterVagas","encodeURIComponent","urlBase","urlComplemento","_verificaLimpaQueryLocalidadeSEO","idElemento","filtroTermo","find","queryTermo","toLowerCase","_parametroQueryStringEstaDiferente","parametro","_removerParametroEspecificoQueryString","queryStringFiltrada","delete","queryEstaDiferente","localidadeEstaDiferente","prefixoQueryURLAmigavel","prefixoLocalidadeURLAmigavel","termoQuery","urlComCompletemento","acaoEliminarFiltroEspecifico","scrollTo","filtrosSelecionadosNovo","acaoAplicarFiltroEspecifico","acaoPesquisaLocalContainerFiltro","e","closest","display","mudarValorInputsCargoLocalizacao","valorInputCargo","valorInputLocalizacao","cargoInput","localizacaoInput","mudarTermoBuscaVagaTexto","termoBuscaVagaTexto","textContent","textoCompleto","primeiraLetra","toUpperCase","title","resetarObserverCarregarMaisVagas","disconnect","montarFiltros","termoBuscaVaga","localidadeBuscaVaga","_preencherHTMLFiltroNoContainer","possuiOffcanvas","containerOffcanvas","textoAuxiliarSwitch","conteudo","conteudoOffcanvas","_manipulaConteudoPeloTipo","retorno","_criarCamposDinamicos","campo","parentNodeOffcanvas","parentNode","conteudos","containerFalsoOffcanvas","createElement","insertBefore","containerFalso","nextSibling","botaoAplicar","onclick","eventoClickBotaoFiltros","botaoEliminar","remoto","nivel","empresaUnidade","uf","regime","tipoRecrutamento","camposDinamicos","campoDinamico","limparHTML","acionadoPeloPopstate","carregarListaDeVagas","itensPagina","todosFiltros","verificarURLFiltros","boxQuantidadeTotalVagas","quantidadeTotalVagas","containerVagas","boxCarregarMaisVagas","botaoCarregarMaisVagas","conteudoVagas","request","URL_API","retornoDados","model","marginBottom","visibility","totalVagas","totalRegistro","facets","preencherCheckboxRadioFiltrosPelaURL","scrollInfinitoObterMaisVagas","quicklink","ignores","uri","elem","hasAttribute","buscaCompleta","cargo","catchObterVagas","Object","filtroNome","queryURLAmigavel","localidadeURLAmigavel","split","pathnameSplit","limparFormatacaoDropdownSelecionado","popstate","eventoSubmitFormHeaderBuscarVagas","form","eventoBuscarVagaRedirect","removeEventListener","preventDefault","inputCargo","inputLocalizacao","acaoEliminarFiltros","trocarSetaDropdown","offcanvasFiltros","bootstrap","Offcanvas","getInstance","hide","Event","toggle","observe","autocompleteBuscaRecenteCargo","autocompleteBuscaRecenteLocalizacao","temParametrosNaUrl","alertaHotsiteSemVagas","textoNenhumaVaga","btnNenhumaVaga","href","detail","Promise","n","r","t","XMLHttpRequest","open","withCredentials","onload","send","relList","supports","rel","onerror","head","appendChild","requestIdleCallback","setTimeout","didTimeout","timeRemaining","max","o","Set","c","a","saveData","Error","test","effectiveType","u","shift","throttle","limit","l","origins","hostname","d","h","delay","p","m","timeoutFn","w","hrefFn","g","prerender","prerenderAndPrefetch","v","indexOf","unobserve","size","f","catch","onError","priority","Array","isArray","some","call","timeout","clear","connection","reject","message","warn","all","concat","map","has","credentials","URL","HTMLScriptElement","origin","text","from","resolve"],"sourceRoot":""}