{"version":3,"file":"js/app.78aa59cd.js","mappings":"uIAGA,MA6BMA,EAAUA,KACQC,SAASC,iBAAiB,qBAElCC,QAAQ,SAASC,GACzBA,EAAOC,iBAAiB,QAAS,WAC7B,MAAMC,EAAeC,KAAKC,aAAa,oBACjCC,EAAaR,SAASS,eAAeJ,GACrCK,EAAUF,EAAWG,WAAaH,EAAWI,YAC7CC,EAAQP,KAAKQ,cAAc,eAE3BC,EAAWf,SAASgB,cAAc,YACxCD,EAASE,MAAMC,SAAW,QAC1BH,EAASE,MAAME,QAAU,EACzBJ,EAASK,MAAQV,EACjBV,SAASqB,KAAKC,YAAYP,GAE1BA,EAASQ,SACTR,EAASS,kBAAkB,EAAG,OAE9BxB,SAASyB,YAAY,QAErBzB,SAASqB,KAAKK,YAAYX,GAE1BF,EAAMD,YAAc,6BAEpBe,WAAW,KACTd,EAAMD,YAAc,cACnB,IACP,EACJ,IAIEgB,EAAWA,KAmCb5B,SAASI,iBAAiB,QAASyB,UAC3BC,EAAMC,OAAOC,QAAQ,oBAZDH,WACxB,MAAM1B,EAAS2B,EAAMC,OACfE,EAAM9B,EAAO+B,QAAQD,IACrBE,EAAaC,SAASjC,EAAO+B,QAAQG,WA1B5BR,OAAOI,EAAKE,KAC3B,MAAMG,EAAiBtC,SAASc,cAAc,eAE9C,IACI,MAAMyB,QAAiBC,MAAM,GAAGP,UAAYE,IAAc,CACtDM,QAAS,CACL,mBAAoB,oBAI5B,IAAKF,EAASG,GACV,MAAM,IAAIC,MAAM,uBAAuBJ,EAASK,UAGpD,MAAMC,QAAaN,EAASO,OAE5B,OADAR,EAAeS,mBAAmB,YAAaF,EAAKG,aAC7C,CACX,CAAE,MAAOC,GAEL,OADAC,QAAQD,MAAM,kCAAmCA,IAC1C,CACX,GAQqBE,CAAWlB,EAAKE,IAEjChC,EAAOiD,UAMDC,CAAoBvB,MAKtCwB,OAAOtD,SAASI,iBAAiB,mBAAoB,WAxGlCmD,MACf,MAAMC,EAAgBxD,SAASc,cAAc,uBACvC2C,EAAoBzD,SAASc,cAAc,2BAC3CO,EAAOrB,SAASc,cAAc,SAEpC0C,EAAcpD,iBAAiB,QAAS,KAChCqD,EAAkBC,UAAUC,SAAS,cACrCH,EAAcE,UAAUN,OAAO,UAC/B/B,EAAKqC,UAAUN,OAAO,aACtBK,EAAkBC,UAAUN,OAAO,eAEnCI,EAAcE,UAAUE,IAAI,UAC5BvC,EAAKqC,UAAUE,IAAI,aACnBH,EAAkBC,UAAUE,IAAI,iBA4F1CL,GAtFsBvD,SAASc,cAAc,cAE/BV,iBAAiB,QAAS,WAClCkD,OAAOO,SAAS,CACZC,IAAK,EACLC,SAAU,UAElB,GAiFFnC,IACA7B,GACF,E","sources":["webpack://python-webpack-boilerplate/./src/application/app.js"],"sourcesContent":["import \"../styles/styles.scss\";\n\n\nconst burgerMenu = () => {\n    const burgerMenuBtn = document.querySelector('.header__burger-btn');\n    const burgerMenuWrapper = document.querySelector('.header__burger-wrapper');\n    const body = document.querySelector('.body');\n\n    burgerMenuBtn.addEventListener('click', () => {\n        if (burgerMenuWrapper.classList.contains('show-menu')) {\n            burgerMenuBtn.classList.remove('active');\n            body.classList.remove('no-scroll');\n            burgerMenuWrapper.classList.remove('show-menu');\n        } else {\n            burgerMenuBtn.classList.add('active');\n            body.classList.add('no-scroll');\n            burgerMenuWrapper.classList.add('show-menu');\n        }\n    });\n};\n\nconst scrollTo = () => {\n    const scrollUpBtn = document.querySelector('.scroll-up');\n\n    scrollUpBtn.addEventListener('click', function() {\n        window.scrollTo({\n            top: 0,\n            behavior: 'smooth'\n        });\n    });\n};\n\nconst copyBtn = () => {\n    const copyButtons = document.querySelectorAll('.block__code-copy');\n\n    copyButtons.forEach(function(button) {\n        button.addEventListener('click', function() {\n            const preElementId = this.getAttribute('data-source-code');\n            const preElement = document.getElementById(preElementId);\n            const preText = preElement.innerText || preElement.textContent;\n            const label = this.querySelector('.copy-label');\n\n            const textarea = document.createElement('textarea');\n            textarea.style.position = 'fixed';\n            textarea.style.opacity = 0;\n            textarea.value = preText;\n            document.body.appendChild(textarea);\n\n            textarea.select();\n            textarea.setSelectionRange(0, 99999);\n\n            document.execCommand('copy');\n\n            document.body.removeChild(textarea);\n\n            label.textContent = 'скопировано в буфер обмена';\n\n            setTimeout(() => {\n              label.textContent = 'копировать';\n            }, 2000);\n        });\n    });\n};\n\n\nconst loadMore = () => {\n    const getContent = async (url, pageNumber) => {\n        const contentWrapper = document.querySelector('.posts-list');\n\n        try {\n            const response = await fetch(`${url}?page=${pageNumber}`, {\n                headers: {\n                    'x-requested-with': 'XMLHttpRequest'\n                }\n            });\n\n            if (!response.ok) {\n                throw new Error(`HTTP error! status: ${response.status}`);\n            }\n\n            const data = await response.json();\n            contentWrapper.insertAdjacentHTML('beforeend', data.posts_html);\n            return true;\n        } catch (error) {\n            console.error('Произошла непредвиденная ошибка', error);\n            return false;\n        }\n    };\n\n    const handleLoadMoreClick = async (event) => {\n        const button = event.target;\n        const url = button.dataset.url;\n        const pageNumber = parseInt(button.dataset.page);\n\n        const loaded = await getContent(url, pageNumber);\n        if (loaded) {\n            button.remove();\n        }\n    };\n\n    document.addEventListener('click', async (event) => {\n        if (event.target.matches('.btn--more')) {\n            await handleLoadMoreClick(event);\n        }\n    });\n};\n\nwindow.document.addEventListener(\"DOMContentLoaded\", function () {\n  burgerMenu();\n  scrollTo();\n  loadMore();\n  copyBtn();\n});\n"],"names":["copyBtn","document","querySelectorAll","forEach","button","addEventListener","preElementId","this","getAttribute","preElement","getElementById","preText","innerText","textContent","label","querySelector","textarea","createElement","style","position","opacity","value","body","appendChild","select","setSelectionRange","execCommand","removeChild","setTimeout","loadMore","async","event","target","matches","url","dataset","pageNumber","parseInt","page","contentWrapper","response","fetch","headers","ok","Error","status","data","json","insertAdjacentHTML","posts_html","error","console","getContent","remove","handleLoadMoreClick","window","burgerMenu","burgerMenuBtn","burgerMenuWrapper","classList","contains","add","scrollTo","top","behavior"],"ignoreList":[],"sourceRoot":""}