{"version":3,"file":"galleryjs.js","sources":["../../../ClientApp/src/js/components/GalleryFilter.ts","../../../ClientApp/src/js/page/gallery.ts"],"sourcesContent":["import { gsap } from 'gsap';\r\n\r\nexport interface IGalleryFilterValues {\r\n planValue: string;\r\n livingSpaceValue: string;\r\n intColorValue: string;\r\n extColorValue: string;\r\n}\r\n\r\nexport const galleryFilters: IGalleryFilterValues = {\r\n planValue: 'all',\r\n livingSpaceValue: 'all',\r\n intColorValue: 'all',\r\n extColorValue: 'all',\r\n};\r\n\r\nexport function updateFilters(filterType: string) {\r\n // Scroll to the top of the asset content container using GSAP\r\n const assetContent = document.getElementById(`js-${filterType}-content`); \r\n if (assetContent) {\r\n const rect = assetContent.getBoundingClientRect();\r\n const offsetY = window.scrollY + rect.top - window.innerHeight * 0.3; // 30% of the viewport height\r\n gsap.to(window, {\r\n duration: 0.5,\r\n scrollTo: { y: offsetY, autoKill: false }, // Smoothly scroll to the calculated position\r\n ease: 'power2.out',\r\n });\r\n } else {\r\n return;\r\n }\r\n\r\n const figures = assetContent.querySelectorAll('figure');\r\n\r\n figures.forEach(figure => {\r\n const tags = figure.getAttribute('data-tags')?.split(' ');\r\n\r\n const matches =\r\n (galleryFilters.planValue === 'all' ||\r\n tags?.includes(`${galleryFilters.planValue}`)) &&\r\n (galleryFilters.livingSpaceValue === 'all' ||\r\n tags?.includes(`${galleryFilters.livingSpaceValue}`)) &&\r\n (galleryFilters.intColorValue === 'all' ||\r\n tags?.includes(`${galleryFilters.intColorValue}`)) &&\r\n (galleryFilters.extColorValue === 'all' ||\r\n tags?.includes(`${galleryFilters.extColorValue}`));\r\n\r\n // Show or hide the figure based on the match\r\n figure.style.display = matches ? 'block' : 'none';\r\n });\r\n}\r\n\r\nexport function resetAllFilters(filterType: string) {\r\n // Reset the filter values to 'all'\r\n galleryFilters.planValue = 'all';\r\n galleryFilters.livingSpaceValue = 'all';\r\n galleryFilters.intColorValue = 'all';\r\n galleryFilters.extColorValue = 'all';\r\n\r\n // Update button states: remove 'active' from all buttons, and add 'active' to \"All\" buttons\r\n const panelContainer = document.getElementById(`js-${filterType}-filter`);\r\n\r\n if (panelContainer) {\r\n const allFilterButtons = panelContainer.querySelectorAll('.js-btn-filter');\r\n allFilterButtons.forEach(button => {\r\n button.classList.remove('active');\r\n button.removeAttribute('disabled');\r\n });\r\n\r\n // Find the \"All\" buttons and set them as active\r\n const allButtons = panelContainer.querySelectorAll(\r\n '.js-btn-filter[data-filter=\"all\"]',\r\n );\r\n allButtons.forEach(button => button.classList.add('active'));\r\n\r\n }\r\n\r\n // Update the filters for the specified panel\r\n updateFilters(filterType);\r\n}\r\n","import StickyNav from '../components/StickyNav';\r\nimport LightBox from '../components/LightBox';\r\nimport Accordion from '../components/Accordion';\r\nimport {\r\n galleryFilters,\r\n resetAllFilters,\r\n updateFilters,\r\n} from '../components/GalleryFilter';\r\nimport GalleryVideoPlayers from '../components/GalleryVideoPlayers';\r\n\r\nconst photosIntColorPanel = document.getElementById('js-photo-interior-panel') as HTMLElement;\r\nconst photosExtColorPanel = document.getElementById('js-photo-exterior-panel') as HTMLElement;\r\nconst photosLivingSpacePanel = document.getElementById('js-livingspace-interior-panel') as HTMLElement;\r\n\r\nconst intColorButtons = photosIntColorPanel.querySelectorAll(\r\n '.js-btn-filter[data-filtertype=\"intcolor\"]',\r\n);\r\n\r\nconst extColorButtons = photosExtColorPanel.querySelectorAll(\r\n '.js-btn-filter[data-filtertype=\"extcolor\"]',\r\n);\r\n\r\nconst livingSpaceButtons = photosLivingSpacePanel.querySelectorAll(\r\n '.js-btn-filter[data-filtertype=\"livingspace\"]',\r\n);\r\n\r\nconst toggleColorPanels = (\r\n panelTypeToHide: 'interior' | 'exterior' | 'all',\r\n) => {\r\n \r\n switch (panelTypeToHide) {\r\n case 'interior':\r\n photosExtColorPanel.classList.remove('inactive'); // Enable exterior panel\r\n photosIntColorPanel.classList.add('inactive'); // Add inactive class\r\n photosLivingSpacePanel.classList.add('inactive'); // Add inactive class\r\n resetDependentButtons('interior');\r\n break;\r\n case 'exterior':\r\n photosExtColorPanel.classList.add('inactive'); // Add inactive class\r\n photosIntColorPanel.classList.remove('inactive'); // Enable interior panel\r\n photosLivingSpacePanel.classList.remove('inactive'); // Add inactive class\r\n resetDependentButtons('exterior');\r\n break;\r\n default:\r\n photosExtColorPanel.classList.remove('inactive'); // Add inactive class\r\n photosIntColorPanel.classList.remove('inactive'); // Enable interior panel\r\n photosLivingSpacePanel.classList.remove('inactive'); // Add inactive class\r\n break;\r\n }\r\n};\r\n\r\nconst resetDependentButtons = (panelToReset: 'interior' | 'exterior' | 'all') => {\r\n switch (panelToReset) {\r\n case 'interior':\r\n \r\n if (photosIntColorPanel) {\r\n intColorButtons.forEach(button => {\r\n button.classList.remove('active'); // Remove active class\r\n if (button.dataset.filter === 'all') {\r\n button.classList.add('active');\r\n }\r\n });\r\n }\r\n\r\n if (photosLivingSpacePanel) {\r\n livingSpaceButtons.forEach(button => { \r\n button.classList.remove('active'); // Remove active class\r\n if (button.dataset.filter === 'all') {\r\n button.classList.add('active');\r\n }\r\n });\r\n }\r\n\r\n break;\r\n case 'exterior':\r\n \r\n if (photosExtColorPanel ) {\r\n extColorButtons.forEach(button => {\r\n button.classList.remove('active'); // Remove active class\r\n if (button.dataset.filter === 'all') {\r\n button.classList.add('active');\r\n }\r\n });\r\n }\r\n break; \r\n }\r\n}\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n // Sticky nav initialization \r\n const stickyNav = StickyNav();\r\n stickyNav.init();\r\n\r\n LightBox();\r\n Accordion('js-photos-accordion', true);\r\n \r\n GalleryVideoPlayers.initPlayers();\r\n\r\n // Attach event listeners to filter buttons\r\n document.querySelectorAll('.js-btn-filter').forEach(button => {\r\n button.addEventListener('click', event => {\r\n const target = event.currentTarget as HTMLElement;\r\n const valueType = target.dataset.filtertype; // Get the filter type from the button\r\n const value = target.dataset.filter; // Get the value from the button\r\n\r\n if (!target || !valueType || !value) return; // Exit if invalid\r\n\r\n const parentContainer = target.parentElement;\r\n console.log(parentContainer);\r\n if (!parentContainer) return;\r\n\r\n let assetType = parentContainer.dataset.type || '';\r\n\r\n // Update the corresponding filter value\r\n switch (valueType) {\r\n case 'plan':\r\n galleryFilters.planValue = value;\r\n const seriesId = target.dataset.id;\r\n\r\n // Reset all buttons if \"all\" is clicked\r\n if (value === 'all') {\r\n\r\n if (photosLivingSpacePanel) {\r\n livingSpaceButtons.forEach(button => {\r\n button.removeAttribute('disabled'); // Enable all living space buttons\r\n button.classList.remove('active'); // Remove active class\r\n\r\n if (button.dataset.filter === 'all') {\r\n button.classList.add('active');\r\n }\r\n });\r\n }\r\n\r\n if (photosIntColorPanel) {\r\n intColorButtons.forEach(button => {\r\n button.removeAttribute('disabled'); // Enable all interior color buttons\r\n button.classList.remove('active'); // Remove active class\r\n\r\n if (button.dataset.filter === 'all') {\r\n button.classList.add('active');\r\n }\r\n\r\n });\r\n }\r\n\r\n if (photosExtColorPanel) {\r\n extColorButtons.forEach(button => {\r\n button.removeAttribute('disabled'); // Enable all exterior color buttons\r\n button.classList.remove('active'); // Remove active class\r\n\r\n if (button.dataset.filter === 'all') {\r\n button.classList.add('active');\r\n }\r\n });\r\n }\r\n\r\n toggleColorPanels('all');\r\n\r\n } else if (assetType === 'photo' && value !== 'all') {\r\n // Fetch data from API if plan is selected and value is not \"all\"\r\n fetch(`/api/gallery/series-rooms/${seriesId}`)\r\n .then(response => response.json())\r\n .then((data: string[]) => {\r\n\r\n if (photosLivingSpacePanel) {\r\n livingSpaceButtons.forEach(button => {\r\n const buttonValue = button.getAttribute('data-filter');\r\n // Disable buttons if their value is not in the returned data\r\n if (buttonValue && buttonValue !== 'all') {\r\n if (!data.includes(buttonValue)) {\r\n button.setAttribute('disabled', 'true');\r\n } else {\r\n button.removeAttribute('disabled');\r\n }\r\n } else if (buttonValue === 'all') {\r\n // Ensure the \"All\" button is always enabled\r\n button.removeAttribute('disabled');\r\n }\r\n });\r\n }\r\n\r\n if (photosIntColorPanel) {\r\n intColorButtons.forEach(button => {\r\n const buttonValue = button.getAttribute('data-filter');\r\n // Disable buttons if their value is not in the returned data\r\n if (buttonValue && buttonValue !== 'all') {\r\n if (!data.includes(buttonValue)) {\r\n button.setAttribute('disabled', 'true');\r\n } else {\r\n button.removeAttribute('disabled');\r\n }\r\n } else if (buttonValue === 'all') {\r\n // Ensure the \"All\" button is always enabled\r\n button.removeAttribute('disabled');\r\n }\r\n });\r\n }\r\n\r\n if (photosExtColorPanel) {\r\n extColorButtons.forEach(button => {\r\n const buttonValue = button.getAttribute('data-filter');\r\n // Disable buttons if their value is not in the returned data\r\n if (buttonValue && buttonValue !== 'all') {\r\n if (!data.includes(buttonValue)) {\r\n button.setAttribute('disabled', 'true');\r\n } else {\r\n button.removeAttribute('disabled');\r\n }\r\n } else if (buttonValue === 'all') {\r\n // Ensure the \"All\" button is always enabled\r\n button.removeAttribute('disabled');\r\n }\r\n });\r\n }\r\n\r\n\r\n })\r\n .catch(error => console.error('Error fetching room data:', error));\r\n }\r\n break;\r\n\r\n case 'livingspace':\r\n galleryFilters.livingSpaceValue = value;\r\n galleryFilters.extColorValue = 'all';\r\n if (galleryFilters.intColorValue === 'all' && galleryFilters.livingSpaceValue === 'all') {\r\n toggleColorPanels('all');\r\n } else {\r\n toggleColorPanels('exterior'); // Hide exterior panel if an interior color is selected\r\n }\r\n break;\r\n\r\n case 'intcolor':\r\n galleryFilters.intColorValue = value;\r\n galleryFilters.extColorValue = 'all'; // Reset exterior when interior is selected\r\n\r\n if (galleryFilters.intColorValue === 'all' && galleryFilters.livingSpaceValue === 'all') {\r\n toggleColorPanels('all');\r\n } else {\r\n toggleColorPanels('exterior'); // Hide exterior panel if an interior color is selected\r\n } \r\n break;\r\n\r\n case 'extcolor':\r\n galleryFilters.extColorValue = value;\r\n galleryFilters.intColorValue = 'all'; // Reset interior when exterior is selected\r\n galleryFilters.livingSpaceValue = 'all';\r\n if (value !== 'all') {\r\n toggleColorPanels('interior'); // Hide interior panel if an exterior color is selected\r\n } else {\r\n toggleColorPanels('all');\r\n }\r\n break;\r\n\r\n default:\r\n console.warn(`Unknown filter type: ${valueType}`);\r\n return; // Exit if the filter type is unknown\r\n }\r\n\r\n // Call the update function to refresh the displayed images\r\n updateFilters(assetType);\r\n\r\n // Remove active class from all buttons of the same type and add to the clicked one\r\n parentContainer\r\n .querySelectorAll(`button[data-filtertype=\"${valueType}\"]`)\r\n .forEach(btn => {\r\n btn.classList.remove('active'); // Remove active class from all buttons of the same type\r\n });\r\n target.classList.add('active'); // Add active class to the clicked button\r\n\r\n GalleryVideoPlayers.stopPlaying();\r\n\r\n stickyNav.refresh();\r\n });\r\n });\r\n\r\n // Attach event listeners to reset all buttons\r\n document.querySelectorAll('.js-reset-all').forEach(button => {\r\n button.addEventListener('click', () => {\r\n const filterType = button.dataset.type;\r\n if (!filterType) return;\r\n if (filterType === 'photo') {\r\n toggleColorPanels('all');\r\n }\r\n resetAllFilters(filterType);\r\n });\r\n });\r\n\r\n //button to toggle mobile filter view\r\n document.querySelectorAll('.js-btn-toggle-mobile-filters').forEach(button => {\r\n button.addEventListener('click', () => {\r\n const filterContainer = document.getElementById('js-photo-filter');\r\n\r\n if (filterContainer) {\r\n filterContainer.classList.toggle('active');\r\n document.body.classList.toggle('m-overflow');\r\n }\r\n });\r\n });\r\n});\r\n"],"names":["galleryFilters","updateFilters","filterType","assetContent","rect","offsetY","gsap","figure","tags","_a","matches","resetAllFilters","panelContainer","button","photosIntColorPanel","photosExtColorPanel","photosLivingSpacePanel","intColorButtons","extColorButtons","livingSpaceButtons","toggleColorPanels","panelTypeToHide","resetDependentButtons","panelToReset","stickyNav","StickyNav","LightBox","Accordion","GalleryVideoPlayers","event","target","valueType","value","parentContainer","assetType","seriesId","response","data","buttonValue","error","btn","filterContainer"],"mappings":"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"}