{"version":3,"file":"includedfeaturesjs.js","sources":["../../../ClientApp/src/js/components/InclusionDetailsLoadFull.ts","../../../ClientApp/src/js/page/includedfeatures.ts"],"sourcesContent":["const InclusionDetailsLoadFull = (\r\n contentId: string,\r\n showLoadBtn: boolean = false,\r\n afterLoadCallBack?: () => void\r\n) => {\r\n const contentContainer = document.getElementById(contentId);\r\n\r\n if (!contentContainer) {\r\n return;\r\n }\r\n\r\n const inclusionTiles = contentContainer.querySelectorAll(\r\n '.inclusion-detail-tile',\r\n );\r\n const loadMoreBtn = contentContainer.querySelector(\r\n '.js-inclusions-load-more',\r\n );\r\n const viewAllBtn = contentContainer.querySelector(\r\n '.js-inclusions-view-all',\r\n );\r\n\r\n let visibleCount: number = window.innerWidth >= 768 ? 6 : 3;\r\n let currentVisibleCount: number = 0;\r\n\r\n const showItems = (count: number): void => {\r\n for (\r\n let i = currentVisibleCount;\r\n i < currentVisibleCount + count && i < inclusionTiles.length;\r\n i++\r\n ) {\r\n inclusionTiles[i].classList.add('active'); // Add the 'active' class to show the item\r\n }\r\n currentVisibleCount += count;\r\n };\r\n\r\n const loadMoreItems = () => {\r\n const hiddenItems = Array.from(inclusionTiles).filter(\r\n item => !item.classList.contains('active'),\r\n );\r\n\r\n // Show the next batch of hidden items\r\n const itemsToShow = hiddenItems.slice(0, visibleCount);\r\n itemsToShow.forEach(item => {\r\n item.classList.add('active'); // Add the 'active' class\r\n });\r\n\r\n // Hide the \"Load More\" button if no more hidden items\r\n if (hiddenItems.length <= visibleCount) {\r\n if (loadMoreBtn) {\r\n loadMoreBtn.style.display = 'none';\r\n }\r\n if (viewAllBtn) {\r\n viewAllBtn.style.display = 'none';\r\n }\r\n }\r\n\r\n //primarily used for sticky nav to refresh calculations\r\n if (afterLoadCallBack) {\r\n afterLoadCallBack();\r\n }\r\n };\r\n\r\n const viewAllItems = (): void => {\r\n // Show all remaining items\r\n inclusionTiles.forEach(item => {\r\n item.classList.add('active'); // Add the 'active' class to show all items\r\n });\r\n\r\n // Hide buttons\r\n if (loadMoreBtn) {\r\n loadMoreBtn.style.display = 'none';\r\n }\r\n\r\n if (viewAllBtn) {\r\n viewAllBtn.style.display = 'none';\r\n }\r\n\r\n //primarily used for sticky nav to refresh calculations\r\n if (afterLoadCallBack) {\r\n afterLoadCallBack();\r\n }\r\n };\r\n\r\n const init = () => {\r\n if (loadMoreBtn) {\r\n loadMoreBtn.addEventListener('click', loadMoreItems);\r\n }\r\n\r\n if (viewAllBtn) {\r\n viewAllBtn.addEventListener('click', viewAllItems);\r\n }\r\n };\r\n\r\n const updateVisibleCount = () => {\r\n visibleCount = window.innerWidth >= 768 ? 6 : 3;\r\n\r\n // Reset current visible count\r\n currentVisibleCount = 0;\r\n\r\n // Remove the 'active' class from all items initially\r\n inclusionTiles.forEach(item => {\r\n item.classList.remove('active');\r\n });\r\n\r\n showItems(visibleCount); // Show the new number of items\r\n };\r\n\r\n // Debounced resize function\r\n let resizeTimeout: number;\r\n const onResize = () => {\r\n clearTimeout(resizeTimeout);\r\n resizeTimeout = window.setTimeout(updateVisibleCount, 100);\r\n };\r\n\r\n window.addEventListener('resize', onResize);\r\n\r\n // Show the initial number of items\r\n showItems(visibleCount);\r\n\r\n // Show the Load More button if needed\r\n if (showLoadBtn) {\r\n if (loadMoreBtn) {\r\n loadMoreBtn.style.display = 'inline-block';\r\n }\r\n\r\n if (viewAllBtn) {\r\n viewAllBtn.style.display = 'inline-block';\r\n }\r\n }\r\n\r\n init(); // Initialize the event listeners\r\n};\r\n\r\nexport default InclusionDetailsLoadFull;\r\n","import InclusionDetailsLoadFull from '../components/InclusionDetailsLoadFull';\r\nimport Modal from '../components/Modal';\r\nimport Panels from '../components/Panels';\r\nimport StickyNav from '../components/StickyNav';\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n //sticky nav init\r\n const stickyNav = StickyNav();\r\n stickyNav.init();\r\n\r\n Panels('js-bath-panels');\r\n InclusionDetailsLoadFull('js-kitchen-inclusions', true, () => { stickyNav.refresh() });\r\n InclusionDetailsLoadFull('js-primary-bath-inclusions', true, () => { stickyNav.refresh() });\r\n InclusionDetailsLoadFull('js-powder-room-inclusions', true, () => { stickyNav.refresh() });\r\n InclusionDetailsLoadFull('js-secondary-bath-inclusions', true, () => { stickyNav.refresh() });\r\n InclusionDetailsLoadFull('js-wholehome-inclusions', true, () => { stickyNav.refresh() });\r\n InclusionDetailsLoadFull('js-exterior-inclusions', true, () => { stickyNav.refresh() });\r\n InclusionDetailsLoadFull('js-energy-inclusions');\r\n\r\n const downloadModal = Modal('js-download-modal');\r\n const downloadModalBtns = document.querySelectorAll('.js-btn-downloads');\r\n downloadModalBtns.forEach(downloadModalBtn => {\r\n downloadModalBtn.addEventListener('click', event => {\r\n event.preventDefault();\r\n downloadModal.open();\r\n });\r\n });\r\n});\r\n"],"names":["InclusionDetailsLoadFull","contentId","showLoadBtn","afterLoadCallBack","contentContainer","inclusionTiles","loadMoreBtn","viewAllBtn","visibleCount","currentVisibleCount","showItems","count","i","loadMoreItems","hiddenItems","item","viewAllItems","init","updateVisibleCount","resizeTimeout","onResize","stickyNav","StickyNav","Panels","downloadModal","Modal","downloadModalBtn","event"],"mappings":"qPAAA,MAAMA,EAA2B,CAC7BC,EACAC,EAAuB,GACvBC,IACC,CACK,MAAAC,EAAmB,SAAS,eAAeH,CAAS,EAE1D,GAAI,CAACG,EACD,OAGJ,MAAMC,EAAiBD,EAAiB,iBACpC,wBAAA,EAEEE,EAAcF,EAAiB,cACjC,0BAAA,EAEEG,EAAaH,EAAiB,cAChC,yBAAA,EAGJ,IAAII,EAAuB,OAAO,YAAc,IAAM,EAAI,EACtDC,EAA8B,EAE5B,MAAAC,EAAaC,GAAwB,CAE/B,QAAAC,EAAIH,EACRG,EAAIH,EAAsBE,GAASC,EAAIP,EAAe,OACtDO,IAEAP,EAAeO,CAAC,EAAE,UAAU,IAAI,QAAQ,EAErBH,GAAAE,CAAA,EAGrBE,EAAgB,IAAM,CACxB,MAAMC,EAAc,MAAM,KAAKT,CAAc,EAAE,OACnCU,GAAA,CAACA,EAAK,UAAU,SAAS,QAAQ,CAAA,EAIzBD,EAAY,MAAM,EAAGN,CAAY,EACzC,QAAgBO,GAAA,CACnBA,EAAA,UAAU,IAAI,QAAQ,CAAA,CAC9B,EAGGD,EAAY,QAAUN,IAClBF,IACAA,EAAY,MAAM,QAAU,QAE5BC,IACAA,EAAW,MAAM,QAAU,SAK/BJ,GACkBA,GACtB,EAGEa,EAAe,IAAY,CAE7BX,EAAe,QAAgBU,GAAA,CACtBA,EAAA,UAAU,IAAI,QAAQ,CAAA,CAC9B,EAGGT,IACAA,EAAY,MAAM,QAAU,QAG5BC,IACAA,EAAW,MAAM,QAAU,QAI3BJ,GACkBA,GACtB,EAGEc,EAAO,IAAM,CACXX,GACYA,EAAA,iBAAiB,QAASO,CAAa,EAGnDN,GACWA,EAAA,iBAAiB,QAASS,CAAY,CACrD,EAGEE,EAAqB,IAAM,CACdV,EAAA,OAAO,YAAc,IAAM,EAAI,EAGxBC,EAAA,EAGtBJ,EAAe,QAAgBU,GAAA,CACtBA,EAAA,UAAU,OAAO,QAAQ,CAAA,CACjC,EAEDL,EAAUF,CAAY,CAAA,EAItB,IAAAW,EACJ,MAAMC,EAAW,IAAM,CACnB,aAAaD,CAAa,EACVA,EAAA,OAAO,WAAWD,EAAoB,GAAG,CAAA,EAGtD,OAAA,iBAAiB,SAAUE,CAAQ,EAG1CV,EAAUF,CAAY,EAGlBN,IACII,IACAA,EAAY,MAAM,QAAU,gBAG5BC,IACAA,EAAW,MAAM,QAAU,iBAI9BU,GACT,EC9HA,SAAS,iBAAiB,mBAAoB,IAAM,CAEhD,MAAMI,EAAYC,IAClBD,EAAU,KAAK,EAEfE,EAAO,gBAAgB,EACEvB,EAAA,wBAAyB,GAAM,IAAM,CAAEqB,EAAU,QAAQ,CAAA,CAAG,EAC5DrB,EAAA,6BAA8B,GAAM,IAAM,CAAEqB,EAAU,QAAQ,CAAA,CAAG,EACjErB,EAAA,4BAA6B,GAAM,IAAM,CAAEqB,EAAU,QAAQ,CAAA,CAAG,EAChErB,EAAA,+BAAgC,GAAM,IAAM,CAAEqB,EAAU,QAAQ,CAAA,CAAG,EACnErB,EAAA,0BAA2B,GAAM,IAAM,CAAEqB,EAAU,QAAQ,CAAA,CAAG,EAC9DrB,EAAA,yBAA0B,GAAM,IAAM,CAAEqB,EAAU,QAAQ,CAAA,CAAG,EACtFrB,EAAyB,sBAAsB,EAEzC,MAAAwB,EAAgBC,EAAM,mBAAmB,EACrB,SAAS,iBAAiB,mBAAmB,EACrD,QAA4BC,GAAA,CACzBA,EAAA,iBAAiB,QAAkBC,GAAA,CAChDA,EAAM,eAAe,EACrBH,EAAc,KAAK,CAAA,CACtB,CAAA,CACJ,CACL,CAAC"}