{"version":3,"sources":["webpack:///./static/js/components/toggle-class.js","webpack:///./static/js/components/modal-gallery/constants.js","webpack:///./static/js/components/modal-gallery/Slide.js","webpack:///./static/js/components/modal-gallery/index.js"],"names":["Element","prototype","matches","msMatchesSelector","webkitMatchesSelector","closest","s","el","this","call","parentElement","parentNode","nodeType","ToggleClass","body","document","toggleElements","boundOnClick","onClick","bind","init","querySelectorAll","forEach","addEventListener","removeEventListener","e","src","target","dataset","tElemPos","tSelector","tClass","tTrigger","tToggleText","evt","Event","window","dispatchEvent","activeText","innerText","toggle","tclass","length","childEl","classList","STATE","unmounted","beforeUnmount","beforeMount","mounted","open","beforeOpen","beforeClose","TARGET_CLASSES","container","root","trigger","hidden","videoOverlay","videoButton","caption","close","countCurrent","countTotal","credit","next","previous","slideAsset","slideActive","slideNext","slidePrevious","COMPONENTS","VIDEO_LABELS","Slide","ref","stateManager","StateMachine","wrapper","button","videoPoster","initialize","mount","cloneNode","isVideo","createElement","poster","srcset","sizes","add","getComputedStyle","position","isFromVideoBlock","contains","createVideoOverlayElem","insertBefore","append","play","isMounted","Error","setState","_beforeMount","removeChild","state","_beforeUnmount","setAttribute","element","active","appendChild","preview","currentTime","on","toggleVideoPlay","spaceKey","keyCode","KEY_CODES","SPACE","enterKey","ENTER","preventDefault","textContent","currentTarget","video","querySelector","paused","pause","isStateOneOf","HTMLVideoElement","ModalGallery","_index","_getComponent","rootEl","modalOpener","components","Object","assign","slides","listeners","galleryListeners","mediaQuery","map","tag","join","media","Array","from","index","slide","openBtn","getOrCreateOpenButton","push","multiple","parseInt","_setInnerHTML","numSlides","off","unmount","_removeChildren","Math","min","max","targetClass","options","selector","focusableElements","activeElement","first","last","shiftKey","focus","ARROW_LEFT","ARROW_RIGHT","ESCAPE","TAB","_handleTab","firstChild","lastChild","html","innerHTML","currentSlide","renderTo","_getBoundedIndex","undefined","_onKeyDown","_update","disableBodyScroll","_beforeOpen","enableBodyScroll","_beforeClose","focusableQuery","newIndex"],"mappings":"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","file":"modal-gallery.js","sourcesContent":["/**\n * A general class that allows you to declaratively set a class toggle on a button or other\n * clickable element.\n */\n\n// IE11 .closest polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\n\nif (!Element.prototype.matches) {\n Element.prototype.matches =\n Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n}\n\nif (!Element.prototype.closest) {\n Element.prototype.closest = function(s) {\n let el = this;\n\n do {\n if (Element.prototype.matches.call(el, s)) {\n return el;\n }\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n}\n\nclass ToggleClass {\n constructor() {\n this.body = document.body;\n this.toggleElements = [];\n this.boundOnClick = this.onClick.bind(this);\n this.init();\n }\n\n /**\n * Get all of the elements with the toggle class, and attach their event listeners.\n *\n * @return void\n */\n init() {\n this.toggleElements = document.querySelectorAll('.js-toggle-class');\n this.toggleElements.forEach(el => el.addEventListener('click', this.boundOnClick));\n }\n\n /**\n * Remove event listeners and reset the array of toggleElements.\n *\n * @return void\n */\n deinit() {\n this.toggleElements.forEach(el => el.removeEventListener('click', this.boundOnClick));\n this.toggleElements = [];\n }\n\n /**\n * Handle the click on the toggle trigger element.\n *\n * @param {Object} e Event data.\n *\n * @return void\n */\n onClick(e) {\n const src = e.target.closest('.js-toggle-class');\n const { tElemPos, tSelector, tClass, tTrigger, tToggleText } = src.dataset;\n\n if (tTrigger) {\n const evt = new Event(tTrigger);\n window.dispatchEvent(evt);\n }\n\n if (tToggleText) {\n const activeText = src.innerText;\n src.innerText = tToggleText;\n src.dataset.tToggleText = activeText;\n }\n\n // Since modifying classes on the body is common, check for that selector first.\n if (tSelector === 'body') {\n this.toggle(this.body, tClass);\n return;\n }\n\n // Depending on the position of the element, determine the element that should have its class\n // toggled and toggle it.\n switch (tElemPos) {\n case 'child':\n this.toggle(src.querySelectorAll(tSelector), tClass);\n break;\n case 'parent':\n this.toggle(src.closest(tSelector), tClass);\n break;\n default:\n this.toggle(src, tClass);\n break;\n }\n }\n\n /**\n * Toggle a class on an element or a NodeList of elements.\n *\n * @param {Element|NodeList} el Can be a singular element, or a NodeList of elements.\n * @param {String} tclass The class to apply to the elements.\n *\n * @return void\n */\n toggle(el, tclass) {\n // Since el can be a NodeList, check if it is and, if so, iterate to toggle the class on all\n // elements in the NodeList. Otherwise, el should just be a singular element so we can toggle\n // the class directly on it.\n if (el.length > 1) {\n el.forEach(childEl => childEl.classList.toggle(tclass));\n return;\n }\n\n el.classList.toggle(tclass);\n }\n}\n\nexport default ToggleClass;\n","export const STATE = {\n unmounted: 'unmounted',\n beforeUnmount: 'beforeUnmount',\n beforeMount: 'beforeMount',\n mounted: 'mounted',\n open: 'open',\n beforeOpen: 'beforeOpen',\n beforeClose: 'beforeClose',\n};\n\nexport const TARGET_CLASSES = {\n container: 'js-modal-gallery',\n root: 'js-modal-gallery__root',\n trigger: 'js-modal-gallery__trigger',\n hidden: 'js-modal-gallery__hidden',\n videoOverlay: 'js-modal-gallery__video-overlay',\n videoButton: 'js-modal-gallery__video-button',\n open: 'js-modal-gallery__open',\n caption: 'js-modal-gallery__caption',\n close: 'js-modal-gallery__close',\n countCurrent: 'js-modal-gallery__count--current',\n countTotal: 'js-modal-gallery__count--total',\n credit: 'js-modal-gallery__credit',\n next: 'js-modal-gallery__next',\n previous: 'js-modal-gallery__previous',\n slideAsset: 'js-modal-gallery__asset',\n slideActive: 'js-modal-gallery__slide--active',\n slideNext: 'js-modal-gallery__slide--next',\n slidePrevious: 'js-modal-gallery__slide--previous',\n};\n\nexport const COMPONENTS = {\n caption: null,\n close: [],\n countCurrent: null,\n countTotal: null,\n credit: null,\n next: [],\n open: [],\n previous: [],\n slideActive: null,\n slideNext: null,\n slidePrevious: null,\n};\n","import { StateMachine, on } from '@src/utils';\nimport { KEY_CODES } from '@src/utils/constants';\nimport { TARGET_CLASSES } from './constants';\n\nconst STATE = {\n unmounted: 'unmounted',\n beforeMount: 'beforeMount',\n mounted: 'mounted',\n beforeUnmount: 'beforeUnmount',\n};\n\nconst VIDEO_LABELS = {\n play: 'Play',\n pause: 'Pause',\n ariaPlay: 'Play Video',\n ariaPause: 'Pause Video',\n};\n\nclass Slide {\n /**\n * Creates a new slide for the modal gallery.\n *\n * @param {HTMLImageElement|HTMLVideoElement} ref the original reference to the image or video element\n * on the page\n */\n constructor(ref) {\n this.stateManager = new StateMachine(STATE.unmounted, {\n [STATE.unmounted]: [STATE.beforeMount],\n [STATE.beforeMount]: [STATE.mounted],\n [STATE.mounted]: [STATE.beforeUnmount],\n [STATE.beforeUnmount]: [STATE.unmounted],\n });\n\n this.ref = ref;\n this.wrapper = null;\n this.button = null;\n this.el = null; // the media element (img/video)\n this.videoPoster = null;\n\n this.initialize();\n this.mount();\n }\n\n initialize() {\n // Clone the ref to display it in the slide and give it our custom class\n this.el = this.ref.cloneNode(true);\n this.el.classList = TARGET_CLASSES.slideAsset;\n\n if (this.isVideo) {\n this.videoPoster = document.createElement('img');\n this.videoPoster.src = this.ref.poster;\n } else {\n // For image sizes\n this.el.src = this.ref.dataset.src || this.ref.src;\n this.el.srcset = this.ref.dataset.srcset || this.ref.srcset;\n this.el.sizes = this.ref.dataset.sizes || this.ref.sizes;\n }\n }\n\n /**\n * @type {boolean} whether the slide is currently mounted\n */\n get isMounted() {\n return this.stateManager.isStateOneOf([STATE.beforeMount, STATE.mounted, STATE.beforeUnmount]);\n }\n\n /**\n * @type {HTMLImageElement} the preview to show for inactive slides\n */\n get preview() {\n if (this.isVideo) {\n return this.videoPoster;\n }\n return this.el;\n }\n\n /**\n * @type {boolean} whether the slide is a video\n */\n get isVideo() {\n return this.ref instanceof HTMLVideoElement;\n }\n\n /**\n * @type {string} the slide's media caption\n */\n get caption() {\n return this.ref.dataset.caption || '';\n }\n\n /**\n * @type {string} the slide's media credit\n */\n get credit() {\n return this.ref.dataset.credit || '';\n }\n\n /**\n * Callback before the slide is mounted. Wraps the media reference in a `span` for\n * adding the open button.\n */\n _beforeMount() {\n const wrapper = document.createElement('span');\n wrapper.classList.add(TARGET_CLASSES.trigger);\n\n // If the media item isn't absolutely positioned, add a relative class\n // to position the wrapper element correctly\n if (window.getComputedStyle(this.ref).position !== 'absolute') {\n wrapper.classList.add('relative');\n }\n\n let videoOverlay = null;\n const isFromVideoBlock = this.ref.parentNode.classList.contains('wp-block-video');\n\n if (this.isVideo && isFromVideoBlock) {\n wrapper.classList.add('video');\n videoOverlay = this.createVideoOverlayElem();\n }\n\n // Add the wrapper around the media element\n this.ref.parentNode.insertBefore(wrapper, this.ref);\n\n // Append the media element to the wrapper\n wrapper.append(this.ref);\n\n // Append the video overlay and play the video\n if (videoOverlay) {\n wrapper.append(videoOverlay);\n this.ref.play();\n }\n\n this.wrapper = wrapper;\n }\n\n /**\n * Mounts the slide to the DOM. If the slide is already mounted, an error\n * is thrown.\n */\n mount() {\n if (this.isMounted) {\n throw new Error('Slide is already mounted!');\n }\n\n this.stateManager.setState(STATE.beforeMount);\n this._beforeMount();\n this.stateManager.setState(STATE.mounted);\n }\n\n /**\n * Unwraps the media reference, removes the wrapper, and resets both the wrapper and button.\n */\n _beforeUnmount() {\n this.wrapper.parentNode.insertBefore(this.wrapper, this.ref);\n this.wrapper.parentNode.removeChild(this.wrapper);\n this.button = null;\n this.wrapper = null;\n }\n\n /**\n * Unmounts the slide from the DOM, if the slide was mounted.\n */\n unmount() {\n if (this.stateManager.state === STATE.mounted) {\n this.stateManager.setState(STATE.beforeUnmount);\n this._beforeUnmount();\n this.stateManager.setState(STATE.unmounted);\n }\n }\n\n /**\n * Retrieves the slide's open button or, if it doesn't exist, creates one.\n *\n * @returns {HTMLButtonElement} the open button, or `null` if the slide isn't mounted\n */\n getOrCreateOpenButton() {\n if (this.stateManager.state !== STATE.mounted) {\n return null;\n } else if (!this.button) {\n const button = document.createElement('button');\n\n button.setAttribute('aria-label', 'Open modal gallery');\n button.classList.add(TARGET_CLASSES.open);\n\n this.wrapper.append(button);\n this.button = button;\n }\n return this.button;\n }\n\n /**\n * Renders the slide to the given element.\n *\n * @param {HTMLElement} element the element to render to\n * @param {boolean} [active=false] whether the slide is currently active\n * @returns {HTMLImageElement|HTMLVideoElement} the rendered slide\n */\n renderTo(element, active = false) {\n if (this.stateManager.state !== STATE.mounted || !element) {\n return null;\n }\n\n if (active) {\n element.appendChild(this.el);\n\n // Append the video overlay and play the video from the beginning\n if (this.isVideo) {\n const videoOverlay = this.createVideoOverlayElem();\n element.append(videoOverlay);\n\n this.el.currentTime = 0;\n this.el.play();\n }\n\n return;\n }\n\n return element.appendChild(this.preview);\n }\n\n /**\n * Returns overlay div allow video play/pause functionality\n *\n * @returns {HTMLElement} video overlay div with button\n */\n createVideoOverlayElem() {\n // Add a focusable overlay on top of the video element to allow play/pause functionality\n const videoOverlay = document.createElement('div');\n videoOverlay.classList.add(TARGET_CLASSES.videoOverlay);\n videoOverlay.setAttribute('tabindex', '0');\n videoOverlay.setAttribute('role', 'button');\n videoOverlay.setAttribute('aria-label', VIDEO_LABELS.ariaPause);\n\n // Add event listeners for the video overlay for toggling play/pause\n on(videoOverlay, 'click', this.toggleVideoPlay);\n on(videoOverlay, 'keydown', e => {\n const spaceKey = e.keyCode === KEY_CODES.SPACE;\n const enterKey = e.keyCode === KEY_CODES.ENTER;\n if (spaceKey || enterKey) {\n e.preventDefault(); // prevent page from scrolling down\n this.toggleVideoPlay(e);\n }\n });\n\n // Add a button to visually indicate play/pause state\n const videoButton = document.createElement('button');\n videoButton.classList.add(TARGET_CLASSES.videoButton);\n videoButton.setAttribute('tabindex', '-1');\n videoButton.setAttribute('aria-label', VIDEO_LABELS.ariaPause);\n videoButton.textContent = VIDEO_LABELS.pause;\n\n // Append the button to the video overlay\n videoOverlay.append(videoButton);\n\n return videoOverlay;\n }\n\n /**\n * Toggles video play/pause state\n *\n * @param {MouseEvent|KeyboardEvent} e The event from the click or keydown event listeners\n * @returns void\n */\n toggleVideoPlay(e) {\n const videoOverlay = e.currentTarget;\n // Get the