{"version":3,"file":"js/category.js","mappings":"mBAAA,MAAMA,EAqBJC,MAAAA,GACMC,KAAKC,YAILD,KAAKE,OACPF,KAAKG,QAIPH,KAAKI,OACP,CAKAA,IAAAA,GACEJ,KAAKC,WAAY,EACjBD,KAAKK,aAAaC,UAAUC,IAAI,WAChCP,KAAKQ,SAASF,UAAUC,IAAI,WAC5BE,YAAW,KACTT,KAAKE,QAAS,EACdF,KAAKC,WAAY,CAAK,GACrB,IACL,CAKAE,KAAAA,GACEH,KAAKC,WAAY,EACjBD,KAAKK,aAAaC,UAAUI,OAAO,WACnCV,KAAKQ,SAASF,UAAUI,OAAO,WAC/BD,YAAW,KACTT,KAAKE,QAAS,EACdF,KAAKC,WAAY,CAAK,GACrB,IACL,CAKAU,IAAAA,GACEX,KAAKK,aAAaO,iBAAiB,QAASZ,KAAKD,OACnD,CA3DAc,WAAAA,CAAYC,GACVd,KAAKe,UAAYD,EACjBd,KAAKK,aAAeL,KAAKe,UAAUC,cAAc,4BACjDhB,KAAKQ,SAAWR,KAAKe,UAAUC,cAAc,8BAC7ChB,KAAKE,QAAS,EACdF,KAAKC,WAAY,EAEjBD,KAAKD,OAASC,KAAKD,OAAOkB,KAAKjB,MAE/BA,KAAKW,MACP,EAoDF,MAOA,EAP2B,CACzBA,IAAAA,GACoBO,SAASC,iBAAiB,oBAClCC,SAAQN,GAAM,IAAIhB,EAAegB,IAC7C,GCtEF,MAAMO,EAUJC,uBAAAA,CAAwBC,GACtB,MAAMC,EAAMN,SAASO,cAAc,OAGnC,OAFAD,EAAIE,UAAYH,EAAWI,OAEpBH,EAAII,UACb,CAdAf,WAAAA,CAAYC,GACVd,KAAKe,UAAYD,EACjBd,KAAK6B,aAAe7B,KAAKsB,wBAAwBtB,KAAKe,UAAUe,QAAQC,SCLlD,EACxBC,EACAC,EACAC,EAAU,CAAEC,WAAY,OAAQC,UAAW,KAC3CC,EAAQ,KAER,IAAKL,IAAYC,EAAU,OAAO,EAElC,MAAMK,EAAiB,IAAIC,sBAAqBC,IAC9CA,EAAQpB,SAAQqB,IACd,GAAIA,EAAMC,eAAgB,CACxB,MAAM,OAAEC,GAAWF,EACnB,GAAIJ,EAAQ,EAKV,YAJA5B,YAAW,KACTwB,EAASU,GACTL,EAAeM,UAAUD,EAAO,GAC/BN,GAGLJ,EAASU,GACTL,EAAeM,UAAUD,EAC3B,IACA,GACDT,GAEHI,EAAeO,QAAQb,EAET,EDpBZc,CAAW9C,KAAKe,WAAW,KACzBf,KAAKe,UAAUgC,YAAY/C,KAAK6B,aAAa,GAEjD,EAUF,MAOA,EAP0B,CACxBlB,IAAAA,GACoBO,SAASC,iBAAiB,mBAClCC,SAAQN,GAAM,IAAIO,EAAcP,IAC5C,GEnBa,IAAkBmB,ICGxB,KACPe,EAAerC,OACfsC,EAActC,MAAM,EDJQ,YAAxBO,SAASgC,WACXjB,IAEAf,SAASN,iBAAiB,oBAAoB,KAC5CqB,GAAU,G","sources":["webpack://golf-wp/./wp-content/themes/golf/src/js/components/mobile-dropdown.js","webpack://golf-wp/./wp-content/themes/golf/src/js/components/youtube-facade.js","webpack://golf-wp/./wp-content/themes/golf/src/js/utils/inViewPort.js","webpack://golf-wp/./wp-content/themes/golf/src/js/utils/DOMReady.js","webpack://golf-wp/./wp-content/themes/golf/src/js/templates/category.js"],"sourcesContent":["class MobileDropdown {\n /**\n * Constructor\n *\n * @param {Element} el Element with the class `.mobile-dropdown`\n */\n constructor(el) {\n this.container = el\n this.toggleButton = this.container.querySelector('.mobile-dropdown__toggle')\n this.collapse = this.container.querySelector('.mobile-dropdown__collapse')\n this.isOpen = false\n this.isWorking = false\n\n this.toggle = this.toggle.bind(this)\n\n this.init()\n }\n\n /**\n * Toggle open state\n */\n toggle() {\n if (this.isWorking) {\n return\n }\n\n if (this.isOpen) {\n this.close()\n return\n }\n\n this.open()\n }\n\n /**\n * Open the target element\n */\n open() {\n this.isWorking = true\n this.toggleButton.classList.add('visible')\n this.collapse.classList.add('visible')\n setTimeout(() => {\n this.isOpen = true\n this.isWorking = false\n }, 400)\n }\n\n /**\n * Close the target element\n */\n close() {\n this.isWorking = true\n this.toggleButton.classList.remove('visible')\n this.collapse.classList.remove('visible')\n setTimeout(() => {\n this.isOpen = false\n this.isWorking = false\n }, 400)\n }\n\n /**\n * Initializes the Collapse button\n */\n init() {\n this.toggleButton.addEventListener('click', this.toggle)\n }\n}\n\nconst mobileDropdownInit = {\n init() {\n const wrapperEl = document.querySelectorAll('.mobile-dropdown')\n wrapperEl.forEach(el => new MobileDropdown(el))\n },\n}\n\nexport default mobileDropdownInit\n","import { inViewPort } from '../utils/inViewPort'\n\nclass YouTubeFacade {\n constructor(el) {\n this.container = el\n this.newContainer = this.retrieveElementFromHTML(this.container.dataset.content)\n\n inViewPort(this.container, () => {\n this.container.replaceWith(this.newContainer)\n })\n }\n\n retrieveElementFromHTML(htmlString) {\n const div = document.createElement('div')\n div.innerHTML = htmlString.trim()\n\n return div.firstChild\n }\n}\n\nconst youTubeFacadeInit = {\n init() {\n const wrapperEl = document.querySelectorAll('.youtube-facade')\n wrapperEl.forEach(el => new YouTubeFacade(el))\n },\n}\n\nexport default youTubeFacadeInit\n","export const inViewPort = (\n element,\n callback,\n options = { rootMargin: '50px', threshold: 0.25 },\n delay = 0,\n) => {\n if (!element || !callback) return false\n\n const inViewObserver = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n const { target } = entry\n if (delay > 0) {\n setTimeout(() => {\n callback(target)\n inViewObserver.unobserve(target)\n }, delay)\n return\n }\n callback(target)\n inViewObserver.unobserve(target)\n }\n })\n }, options)\n\n inViewObserver.observe(element)\n\n return element\n}\n\nexport const hasScrolledPast = element => {\n if (!element) {\n return false\n }\n const rect = element.getBoundingClientRect()\n return rect.bottom < 0 // Returns true if the element is above the viewport\n}\n\nexport const isInViewport = element => {\n const rect = element.getBoundingClientRect()\n const windowHeight =\n 'innerHeight' in window ? window.innerHeight : document.documentElement.offsetHeight\n\n const top = rect.top + windowHeight >= windowHeight\n const bottom = rect.bottom <= windowHeight\n\n return top && bottom\n}\n","/**\n * Triggers a callback function once the DOM is ready\n *\n * @param {function} callback The function to trigger\n */\nexport default function DOMReady(callback) {\n if (document.readyState !== 'loading') {\n callback()\n } else {\n document.addEventListener('DOMContentLoaded', () => {\n callback()\n })\n }\n}\n","import DOMReady from '../utils/DOMReady'\n\nimport mobileDropdown from '../components/mobile-dropdown'\nimport youTubeFacade from '../components/youtube-facade'\n\n// eslint-disable-next-line no-unused-vars\nimport css from '../../css/templates/category.scss'\n\nDOMReady(() => {\n mobileDropdown.init()\n youTubeFacade.init()\n})\n"],"names":["MobileDropdown","toggle","this","isWorking","isOpen","close","open","toggleButton","classList","add","collapse","setTimeout","remove","init","addEventListener","constructor","el","container","querySelector","bind","document","querySelectorAll","forEach","YouTubeFacade","retrieveElementFromHTML","htmlString","div","createElement","innerHTML","trim","firstChild","newContainer","dataset","content","element","callback","options","rootMargin","threshold","delay","inViewObserver","IntersectionObserver","entries","entry","isIntersecting","target","unobserve","observe","inViewPort","replaceWith","mobileDropdown","youTubeFacade","readyState"],"sourceRoot":""}