{"version":3,"sources":["webpack:///./resources/assets/js/mobile-menu.js","webpack:///./resources/assets/js/modals.js","webpack:///./resources/assets/js/header.js","webpack:///./resources/assets/js/accordion.js","webpack:///./resources/assets/js/show-file-name.js","webpack:///./resources/assets/js/loading-indicator.js","webpack:///./resources/assets/js/form-errors.js","webpack:///./resources/assets/js/contact-form.js","webpack:///./resources/assets/js/job-form.js","webpack:///./resources/assets/js/sliders.js"],"names":["navToggles","document","querySelectorAll","nav","querySelector","forEach","el","addEventListener","classList","toggle","modalToggles","id","dataset","modal","getElementById","header","window","scrollY","add","remove","acc","getElementsByClassName","i","length","this","panel","nextElementSibling","style","maxHeight","scrollHeight","fileInputs","fileName","value","parent","parentElement","removeFile","label","innerHTML","replace","once","toggleLoadingIndicator","wrapper","displayErrors","errors","Object","keys","key","index","inputField","errorContainer","focus","contactForm","axios","require","e","preventDefault","post","getAttribute","subject","name","email","phone","company","message","then","response","location","href","error","data","jobForm","FormData","append","cv","files","ml","headers","teamCarousels","careersCarousel","workCarousel","teamSliders","teamCarousel","glide","Glide","type","startAt","perView","gap","rewind","navigation","breakpoints","576","992","1200","mount","Controls","Breakpoints","Swipe","glideArrows","768","leftArrows","rightArrows","leftArrow","go","rightArrow"],"mappings":"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","file":"/assets/js/app.js","sourcesContent":["const navToggles = document.querySelectorAll('.nav-toggle');\r\nconst nav = document.querySelector('.main-nav');\r\n\r\n[...navToggles].forEach(el => {\r\n el.addEventListener('click', () => {\r\n document.querySelector('body').classList.toggle('overflow-y-hidden');\r\n nav.classList.toggle('active');\r\n });\r\n});\r\n","const modalToggles = document.querySelectorAll('.modal-toggle');\r\n\r\n[...modalToggles].forEach(el => {\r\n el.addEventListener('click', () => {\r\n const id = el.dataset.modal;\r\n const modal = document.getElementById(id);\r\n\r\n document.querySelector('body').classList.toggle('overflow-y-hidden');\r\n modal.classList.toggle('active');\r\n });\r\n});\r\n","(() => {\r\n const header = document.querySelector('.fixed-header');\r\n\r\n window.addEventListener('scroll', () => {\r\n if (window.scrollY > 100) {\r\n header.classList.add('bg-header');\r\n } else {\r\n header.classList.remove('bg-header');\r\n }\r\n });\r\n})();\r\n","const acc = document.getElementsByClassName('accordion-header');\r\n\r\nfor (let i = 0; i < acc.length; i++) {\r\n acc[i].addEventListener('click', function() {\r\n this.classList.toggle('active');\r\n\r\n let panel = this.nextElementSibling;\r\n if (panel.style.maxHeight) {\r\n panel.style.maxHeight = null;\r\n } else {\r\n panel.style.maxHeight = panel.scrollHeight + 'px';\r\n }\r\n });\r\n}\r\n","(() => {\r\n const fileInputs = document.querySelectorAll('.file-input');\r\n\r\n if (fileInputs.length < 1) {\r\n return;\r\n }\r\n\r\n [...fileInputs].forEach(el => {\r\n el.addEventListener('change', () => {\r\n let fileName = el.value;\r\n let parent = el.parentElement;\r\n let removeFile = parent.nextElementSibling;\r\n let label = parent.querySelector('.file-input-name');\r\n\r\n parent.classList.toggle('file-input-attached');\r\n removeFile.classList.toggle('hidden');\r\n label.innerHTML = fileName.replace('C:\\\\fakepath\\\\', ' ');\r\n\r\n removeFile.addEventListener('click', () => {\r\n el.value = null;\r\n label.innerHTML = label.dataset.label;\r\n parent.classList.toggle('file-input-attached');\r\n removeFile.classList.toggle('hidden');\r\n }, { once: true });\r\n });\r\n });\r\n})();\r\n","function toggleLoadingIndicator(wrapper)\r\n{\r\n wrapper.querySelector('.btn-text').classList.toggle('hidden');\r\n wrapper.querySelector('.btn-loading').classList.toggle('hidden');\r\n}\r\n\r\nexport {\r\n toggleLoadingIndicator\r\n}\r\n","function displayErrors(wrapper, errors) {\r\n Object.keys(errors).forEach((key, index) => {\r\n let inputField = wrapper.querySelector(`[name=${key}]`);\r\n let errorContainer = inputField.nextElementSibling;\r\n errorContainer.classList.remove('hidden');\r\n errorContainer.querySelector('.invalid-feedback').innerHTML = errors[key][0];\r\n\r\n errorContainer.addEventListener('click', () => {\r\n errorContainer.classList.add('hidden');\r\n inputField.focus();\r\n }, { once: true });\r\n });\r\n}\r\n\r\nexport {\r\n displayErrors\r\n}\r\n","import { toggleLoadingIndicator } from './loading-indicator';\r\nimport { displayErrors } from './form-errors';\r\n\r\nconst axios = require('axios');\r\n\r\n(function() {\r\n const contactForm = document.querySelector('[data-contact-form]');\r\n if (!contactForm) {\r\n return;\r\n }\r\n\r\n contactForm.addEventListener('submit', e => {\r\n e.preventDefault();\r\n\r\n toggleLoadingIndicator(contactForm);\r\n\r\n axios.post(contactForm.getAttribute('action'), {\r\n subject: contactForm.querySelector('[name=subject]').value,\r\n name: contactForm.querySelector('[name=name]').value,\r\n email: contactForm.querySelector('[name=email]').value,\r\n phone: contactForm.querySelector('[name=phone]').value,\r\n company: contactForm.querySelector('[name=company]').value,\r\n message: contactForm.querySelector('[name=message]').value,\r\n })\r\n .then(response => {\r\n toggleLoadingIndicator(contactForm);\r\n window.location.href = '/thankyou';\r\n })\r\n .catch(error => {\r\n toggleLoadingIndicator(contactForm);\r\n displayErrors(contactForm, error.response.data);\r\n });\r\n });\r\n})();\r\n","import { toggleLoadingIndicator } from './loading-indicator';\r\nimport { displayErrors } from './form-errors';\r\n\r\nconst axios = require('axios');\r\n\r\n(function() {\r\n const jobForm = document.querySelector('[data-job-form]');\r\n if (!jobForm) {\r\n return;\r\n }\r\n\r\n jobForm.addEventListener('submit', e => {\r\n e.preventDefault();\r\n\r\n toggleLoadingIndicator(jobForm);\r\n\r\n let data = new FormData();\r\n data.append('subject', jobForm.querySelector('[name=subject]').value);\r\n data.append('role', jobForm.querySelector('[name=role]').value);\r\n data.append('first_name', jobForm.querySelector('[name=first_name]').value);\r\n data.append('last_name', jobForm.querySelector('[name=last_name]').value);\r\n data.append('email', jobForm.querySelector('[name=email]').value);\r\n data.append('phone', jobForm.querySelector('[name=phone]').value)\r\n\r\n let cv = jobForm.querySelector('[name=cv]').files;\r\n if (cv.length > 0) {\r\n data.append('cv', cv[0]);\r\n }\r\n\r\n let ml = jobForm.querySelector('[name=motivational_letter]').files;\r\n if (ml.length > 0) {\r\n data.append('motivational_letter', ml[0]);\r\n }\r\n\r\n const settings = { headers: { 'content-type': 'multipart/form-data' } };\r\n\r\n axios.post(jobForm.getAttribute('action'), data, settings)\r\n .then(response => {\r\n toggleLoadingIndicator(jobForm);\r\n window.location.href = '/thankyou';\r\n })\r\n .catch(error => {\r\n toggleLoadingIndicator(jobForm);\r\n displayErrors(jobForm, error.response.data);\r\n });\r\n });\r\n})();\r\n","import Glide, { Controls, Breakpoints, Swipe } from '@glidejs/glide/dist/glide.modular.esm'\r\n\r\nconst teamCarousels = document.querySelectorAll('.team-carousel');\r\nconst careersCarousel = document.querySelector('.careers-carousel');\r\nconst workCarousel = document.querySelector('.work-carousel');\r\n\r\nif (teamCarousels) {\r\n let teamSliders = [];\r\n\r\n [...teamCarousels].forEach((teamCarousel, i) => {\r\n const glide = teamCarousel.querySelector('.glide');\r\n\r\n teamSliders[i] = new Glide(glide, {\r\n type: 'carousel',\r\n startAt: 0,\r\n perView: 3,\r\n gap: 0,\r\n rewind: true,\r\n navigation: true,\r\n breakpoints: {\r\n 576: {\r\n perView: 1\r\n },\r\n 992: {\r\n perView: 2\r\n },\r\n 1200: {\r\n perView: 3\r\n }\r\n }\r\n }).mount({Controls, Breakpoints, Swipe});\r\n\r\n glideArrows(teamSliders[i]);\r\n });\r\n}\r\n\r\nif (careersCarousel) {\r\n const glide = careersCarousel.querySelector('.glide');\r\n\r\n const careersSlider = new Glide(glide, {\r\n type: 'carousel',\r\n startAt: 0,\r\n perView: 2,\r\n gap: 0,\r\n rewind: true,\r\n breakpoints: {\r\n 768: {\r\n perView: 1\r\n },\r\n }\r\n }).mount({Controls, Breakpoints, Swipe});\r\n\r\n glideArrows(careersSlider);\r\n}\r\n\r\nif (workCarousel) {\r\n const glide = workCarousel.querySelector('.glide');\r\n\r\n const workSlider = new Glide(glide, {\r\n type: 'carousel',\r\n startAt: 0,\r\n perView: 1,\r\n gap: 0,\r\n rewind: true,\r\n navigation: true\r\n }).mount({Controls, Swipe});\r\n}\r\n\r\nfunction glideArrows(glide) {\r\n const leftArrows = document.querySelectorAll('.carousel-left-arrow');\r\n const rightArrows = document.querySelectorAll('.carousel-right-arrow');\r\n\r\n [...leftArrows].forEach(leftArrow => {\r\n leftArrow.addEventListener('click', function () {\r\n glide.go('<');\r\n });\r\n });\r\n\r\n [...rightArrows].forEach(rightArrow => {\r\n rightArrow.addEventListener('click', function () {\r\n glide.go('>');\r\n });\r\n });\r\n}\r\n"],"sourceRoot":""}