{"version":3,"file":"modalVideoModule-BsS-4gmx.js","sources":["../../src/scripts/modules/modalVideoModule.ts"],"sourcesContent":["import VideoModule from './videoModule';\nimport { debounce } from '../helpers';\nimport Player from '@vimeo/player';\n\ntype YouTubePlayer = {\n on: (event: string, callback: () => void) => void;\n playVideo: () => void;\n pauseVideo: () => void;\n mute: () => void;\n};\n\nclass ModalVideoModule extends VideoModule {\n modal?: HTMLDivElement;\n modalOverlay?: HTMLDivElement;\n setupReady: boolean = false;\n overlayListenerAdded: boolean = false;\n modalOpen: boolean = false;\n\n constructor(el: HTMLElement) {\n super(el);\n this.setupModal();\n this.addListeners();\n }\n\n setupDefaults(): void {\n super.setupDefaults();\n\n this.dom.noModalParent = (this.dom.videoPlaceholder as HTMLElement)\n ?.parentElement as HTMLDivElement;\n }\n\n addListeners(): void {\n super.addListeners();\n window.addEventListener('resize', debounce(this.handleResize.bind(this), 250));\n document.addEventListener('keydown', e => {\n this.handleKeyPress(e);\n });\n }\n\n handleKeyPress(e: KeyboardEvent): void {\n if (e.key === 'Escape' && this.modalOpen) {\n this.closeModal();\n }\n }\n\n handleResize() {\n const mediaQuery = window.matchMedia('(min-width: 1200px)');\n\n this.setupModal();\n\n if (this.setupReady && !mediaQuery.matches) {\n if (this.dom.videoPlaceholder && this.dom.noModalParent) {\n // Move the existing videoPlaceholder to the noModalParent\n const videoPlaceholder = this.modal?.querySelector('.video-placeholder') as HTMLElement;\n const noModalParent = this.dom.noModalParent as HTMLElement;\n\n // Check if videoPlaceholder already has a parent and remove it from there\n if (videoPlaceholder.parentElement) {\n videoPlaceholder.parentElement.removeChild(videoPlaceholder);\n }\n\n // Append to the new parent\n noModalParent.appendChild(videoPlaceholder);\n\n this.dom.videoPlaceholder = videoPlaceholder;\n }\n\n this.closeModal();\n this.setupReady = false;\n }\n }\n\n setupModal() {\n const mediaQuery = window.matchMedia('(min-width: 1200px)');\n const videoPlaceholder = this.el.querySelector('.video-placeholder') as HTMLElement;\n\n if (this.setupReady || !mediaQuery.matches) return;\n\n if (!this.modal || !this.modalOverlay) {\n this.modal = document.createElement('div');\n this.modal.className = 'video-modal';\n this.modalOverlay = document.createElement('div');\n this.modalOverlay.className = 'video-modal-overlay';\n\n document.body.appendChild(this.modalOverlay);\n document.body.appendChild(this.modal);\n }\n\n if (videoPlaceholder.parentElement) {\n videoPlaceholder.parentElement.removeChild(videoPlaceholder);\n }\n\n this.modal.appendChild(videoPlaceholder);\n this.dom.videoPlaceholder = videoPlaceholder;\n\n this.setupReady = true;\n\n if (this.isPlaying) this.showModal();\n\n if (this.overlayListenerAdded) return;\n this.modalOverlay.addEventListener('click', () => this.closeModal());\n this.overlayListenerAdded = true;\n }\n\n closeModal() {\n if (this.isPlaying) {\n this.handlePlayButtonClick();\n }\n\n if (this.provider === 'vimeo') {\n (this.player as Player).pause();\n } else if (this.provider === 'youtube') {\n (this.player as YouTubePlayer).pauseVideo();\n } else if (this.dom.localVideo) {\n (this.dom.localVideo as HTMLVideoElement).pause();\n }\n this.isPlaying = false;\n\n if (this.modal) this.modal.style.display = 'none';\n if (this.modalOverlay) this.modalOverlay.style.display = 'none';\n\n if (this.dom.backgroundImage)\n (this.dom.backgroundImage as HTMLImageElement).style.display = 'block';\n if (this.dom.playButton) (this.dom.playButton as HTMLElement).style.display = 'flex';\n\n document.body.classList.remove('no-scroll');\n this.modalOpen = false;\n }\n\n showModal() {\n if (this.modal) this.modal.style.display = 'flex';\n if (this.modalOverlay) this.modalOverlay.style.display = 'block';\n\n document.body.classList.add('no-scroll');\n this.modalOpen = true;\n }\n\n handlePlayButtonClick() {\n if (!this.videoReady) return;\n\n const mediaQuery = window.matchMedia('(min-width: 1200px)');\n\n if (mediaQuery.matches) this.showModal();\n\n if (this.provider === 'youtube') {\n super.handlePlayButtonClick();\n setTimeout(() => {\n (this.player as YouTubePlayer).playVideo();\n }, 500);\n } else {\n super.handlePlayButtonClick();\n }\n }\n}\n\nexport default ModalVideoModule;\n"],"names":["ModalVideoModule","VideoModule","el","__publicField","_a","debounce","mediaQuery","videoPlaceholder","noModalParent"],"mappings":"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"}