{"version":3,"file":"zoomv.4217.min.js?t=2e3adcb926953fa7f1c1","mappings":"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","sources":["webpack://@hero-digital/zoom/./src/components/foundation/Modal/Modal.js"],"sourcesContent":["class Modal {\r\n constructor(el) {\r\n this.el = el\r\n this.showModal = this.showModal.bind(this)\r\n this.closeModal = this.closeModal.bind(this)\r\n this.outsideClickListener = this.outsideClickListener.bind(this)\r\n this.modalDialog = this.el.querySelector('.fdn-modal-dialog')\r\n\r\n // Select modal close button and trigger\r\n const modalCloseButton = this.el.querySelector(\r\n '.fdn-modal-box__wrapper__close'\r\n )\r\n const modalTrigger = document.querySelector(\r\n `[data-modal-target='${this.el.id}']`\r\n )\r\n\r\n // Add event listener to the modal trigger\r\n if (modalTrigger) {\r\n modalTrigger.addEventListener('click', this.showModal)\r\n if (modalTrigger.tagName.toLowerCase() === 'a') {\r\n modalTrigger.setAttribute('href', 'javascript:void(0)')\r\n }\r\n }\r\n\r\n // Add event listener to the close button\r\n if (modalCloseButton) {\r\n modalCloseButton.addEventListener('click', this.closeModal)\r\n }\r\n\r\n // Close modal on excape key\r\n this.closeModalOnEscape()\r\n\r\n // Store the original iframe source and reset it initially\r\n this.originalSrc = null\r\n const iframe = this.el.querySelector('iframe')\r\n if (iframe) {\r\n this.originalSrc = iframe.src\r\n iframe.src = ''\r\n }\r\n\r\n // Store reference to JW Player element\r\n this.jwVideoPlayer = this.el.querySelector('.jw-video-player')\r\n }\r\n\r\n // Method to close the modal\r\n closeModal(e) {\r\n if (e) e.preventDefault()\r\n\r\n // Reset iframe source to stop video playback\r\n const iframe = this.el.querySelector('iframe')\r\n if (iframe) {\r\n iframe.src = ''\r\n }\r\n\r\n // Remove JW Player if present\r\n if (this.jwVideoPlayer) {\r\n this.jwVideoPlayer.remove()\r\n }\r\n\r\n // Remove modal visibility classes\r\n this.el.classList.remove('show')\r\n document.body.classList.remove('modal-open')\r\n\r\n if (this.el.classList.contains('fdn-video-modal-box')) {\r\n document.body.classList.remove('video-modal-open')\r\n } else if (this.el.classList.contains('fdn-form-modal-box')) {\r\n document.body.classList.add('form-modal-open')\r\n }\r\n const event = new CustomEvent('modalClosed', { detail: { reason: 'escape' } });\r\n document.dispatchEvent(event);\r\n window.removeEventListener('click', this.outsideClickListener)\r\n }\r\n\r\n // Method to show the modal\r\n showModal(e) {\r\n try {\r\n e.preventDefault()\r\n\r\n // Append JW Player element back to the modal\r\n if (this.jwVideoPlayer) {\r\n this.el\r\n .querySelector('.fdn-modal-box__wrapper')\r\n .appendChild(this.jwVideoPlayer)\r\n }\r\n\r\n // Add modal visibility classes\r\n document.body.classList.add('modal-open')\r\n this.el.classList.add('show')\r\n\r\n // Restore iframe source if available\r\n const iframe = this.el.querySelector('iframe')\r\n if (iframe && this.originalSrc) {\r\n iframe.src = this.originalSrc\r\n }\r\n\r\n if (this.el.classList.contains('fdn-video-modal-box')) {\r\n document.body.classList.add('video-modal-open')\r\n } else if (this.el.classList.contains('fdn-form-modal-box')) {\r\n document.body.classList.add('form-modal-open')\r\n }\r\n\r\n window.addEventListener('click', this.outsideClickListener)\r\n\r\n // Auto-play JW video if present\r\n const jwVideoElement = this.el.querySelector('.jw-video')\r\n if (jwVideoElement) {\r\n jwVideoElement.click()\r\n }\r\n // Open modal trigger\r\n const event = new CustomEvent('modalOpen', { detail: { reason: 'modalOpen' } });\r\n document.dispatchEvent(event);\r\n } catch (error) {\r\n this.closeModal(e)\r\n }\r\n return false\r\n }\r\n\r\n // Method to handle clicks outside the modal to close it\r\n outsideClickListener(e) {\r\n if ((\r\n !this.el.contains(e.target) &&\r\n !document\r\n .querySelector(`[data-modal-target='${this.el.id}']`)\r\n .contains(e.target)) || (!document\r\n .querySelector(`[data-modal-target='${this.el.id}']`)\r\n .contains(e.target) && (this.modalDialog && !this.modalDialog.contains(e.target)))\r\n ) {\r\n this.closeModal(e)\r\n }\r\n }\r\n\r\n // Press escape key modal close\r\n closeModalOnEscape() {\r\n document.addEventListener('keydown', (e) => {\r\n if (e.key === 'Escape') {\r\n this.closeModal(e)\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default Modal\r\n"],"names":["Modal","el","_classCallCheck","this","showModal","bind","closeModal","outsideClickListener","modalDialog","querySelector","modalCloseButton","modalTrigger","document","concat","id","addEventListener","tagName","toLowerCase","setAttribute","closeModalOnEscape","originalSrc","iframe","src","jwVideoPlayer","key","value","e","preventDefault","remove","classList","body","contains","add","event","CustomEvent","detail","reason","dispatchEvent","window","removeEventListener","appendChild","jwVideoElement","click","error","target","_this"],"sourceRoot":""}