{"version":3,"file":"app.bundle.js?hash=21db5a15c637ccc07492","mappings":"4rBAAmB,kB,EAAA,SAAAA,K,4FAAAC,CAAA,KAAAD,EAAA,E,EAAA,EAAAE,IAAA,iBAAAC,MAKf,SAAsBC,GACU,YAAxBC,SAASC,WACTF,IAEAC,SAASE,iBAAiB,mBAAoBH,EAEtD,GAEA,CAAAF,IAAA,gBAAAC,MAIA,SAAqBK,EAASJ,GACRC,SAASI,cAAc,eAADC,OAAgBF,EAAO,QAG3DG,KAAKC,eAAeR,EAE5B,IAvBe,M,cAAA,M,sEAuBd,EAvBc,GCGLQ,eAAe,WAGzB,IAAMC,EAAa,gBAEER,SAASS,iBAAiB,kCAEhCC,QAAQ,SAACC,GACpBA,EAAcT,iBAAiB,QAAS,WACpC,IAAMU,EAAaC,OAAOC,SAASC,KAC7BC,EAAiBC,mBAAmBN,EAAcO,QAAQC,SAC1DC,EAAoBH,mBAAmBL,GAGvCS,EAAgB,2CAAHhB,OAA8CW,EAAc,iBAAAX,OAAgBe,GAE/FE,MAAMD,EAAe,CACjBE,OAAQ,QACV,MAAO,SAAAC,GAAK,OAAIC,QAAQD,MAAM,SAAUA,EAAM,GAGhD,IAAIE,EAAoBC,SAASC,eAAeC,QAAQrB,KAAgB,EAEpEkB,EAAoBI,YAEpBJ,IACAE,eAAeG,QAAQvB,EAAYkB,GAGnCM,mBAEAP,QAAQQ,IAAI,2CAAD5B,OAA4CyB,WAAU,2BAEzE,EACJ,GAEAI,YAAY,WACR,IAAMtB,EAAaC,OAAOC,SAASC,KAC7BoB,EAAe,2CAAH9B,OAA8CY,mBAAmBL,IAEnFU,MAAMa,EAAc,CAAEZ,OAAQ,QAAQ,MAAO,SAAAC,GAAK,OAAIC,QAAQD,MAAM,SAAUA,EAAM,EACxF,EAAG,IACP,E","sources":["webpack://huntaprice-buzz/./resources/js/infrastructure/Providers/ReadyProvider.js","webpack://huntaprice-buzz/./resources/js/frontend/app.js"],"sourcesContent":["class ReadyProvider\n{\n    /**\n     * @param {CallableFunction} callback\n     */\n    static executeOnReady(callback) {\n        if (document.readyState !== 'loading') {\n            callback();\n        } else {\n            document.addEventListener('DOMContentLoaded', callback);\n        }\n    }\n\n    /**\n     * @param {String} pageKey\n     * @param {CallableFunction} callback\n     */\n    static executeOnPage(pageKey, callback) {\n        let pageElement = document.querySelector(`[data-page=\"${pageKey}\"]`);\n\n        if (pageElement) {\n            this.executeOnReady(callback);\n        }\n    }\n}\n\nexport {ReadyProvider};\n","import {ReadyProvider} from '../infrastructure/Providers/ReadyProvider';\nimport {appendElement, createElement} from '../infrastructure/helpers';\n\nReadyProvider.executeOnReady(() => {\n\n    // Define a limit for the number of clicks per session\n    const sessionKey = 'utmClickCount'; // Key to store the count in sessionStorage\n\n    let widgetKeywords = document.querySelectorAll('[data-action=\"search-keyword\"]');\n\n    widgetKeywords.forEach((widgetKeyword) => {\n        widgetKeyword.addEventListener('click', () => {\n            const currentUrl = window.location.href; // Get the current page URL\n            const encodedKeyword = encodeURIComponent(widgetKeyword.dataset.keyword); // Encode the keyword\n            const encodedCurrentUrl = encodeURIComponent(currentUrl); // Encode the current URL\n\n            // Construct the heartbeat URL with the encoded values\n            const trackClickURL = `/api/track?action=KEYWORD_CLICK&keyword=${encodedKeyword}&current_url=${encodedCurrentUrl}`;\n\n            fetch(trackClickURL, {\n                method: 'GET',\n            }).catch(error => console.error('Error:', error));\n\n            // Get the current click count from sessionStorage\n            let currentClickCount = parseInt(sessionStorage.getItem(sessionKey)) || 0;\n\n            if (currentClickCount < clickLimit) {\n                // Increment the click count and store it back in sessionStorage\n                currentClickCount++;\n                sessionStorage.setItem(sessionKey, currentClickCount);\n\n                // Call the sendUTMClick function\n                processUTMClick();\n            } else {\n                console.log(`sendUTMClick has already been triggered ${clickLimit} times in this session.`);\n            }\n        });\n    });\n\n    setInterval(function() {\n        const currentUrl = window.location.href;\n        const heartbeatUrl = `/api/track?action=HEARTBEAT&current_url=${encodeURIComponent(currentUrl)}`;\n\n        fetch(heartbeatUrl, { method: 'GET' }).catch(error => console.error('Error:', error));\n    }, 10000);\n});\n\nfunction categoriesListHeightCheck(categoriesListElement) {\n    if (categoriesListElement.offsetHeight > 40) {\n        let listItems = Array.from(categoriesListElement.querySelectorAll(\n            '.cat_link:not(.d-none):not(.active):not([data-action=\"categories-more\"])'\n            )),\n            lastItem = listItems.pop();\n\n        if (lastItem) {\n            lastItem.classList.add('d-none');\n        }\n\n        let showMoreElement = categoriesListElement.querySelector('.cat_link[data-action=\"categories-more\"]');\n\n        if (!showMoreElement) {\n            showMoreElement = createElement('<a href=\"#\" class=\"cat_link\" data-action=\"categories-more\">...</a>');\n            showMoreElement.addEventListener('click', (event) => {\n                event.preventDefault();\n\n                Array.from(categoriesListElement.querySelectorAll('.cat_link'))\n                    .forEach((element) => element.classList.remove('d-none'));\n\n                showMoreElement.remove();\n            });\n\n            appendElement(showMoreElement, categoriesListElement);\n        }\n\n        categoriesListHeightCheck(categoriesListElement);\n    }\n}\n"],"names":["ReadyProvider","_classCallCheck","key","value","callback","document","readyState","addEventListener","pageKey","querySelector","concat","this","executeOnReady","sessionKey","querySelectorAll","forEach","widgetKeyword","currentUrl","window","location","href","encodedKeyword","encodeURIComponent","dataset","keyword","encodedCurrentUrl","trackClickURL","fetch","method","error","console","currentClickCount","parseInt","sessionStorage","getItem","clickLimit","setItem","processUTMClick","log","setInterval","heartbeatUrl"],"sourceRoot":""}