{"version":3,"file":"pageReleaseDetail.js","mappings":"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","sources":["webpack://ig-ui/webpack/universalModuleDefinition","webpack://ig-ui/webpack/bootstrap","webpack://ig-ui/webpack/runtime/make namespace object","webpack://ig-ui/./src/js/modules/grid-gallery.ts","webpack://ig-ui/./src/js/pages/pageReleaseDetail.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ig-ui\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ig-ui\"] = factory();\n\telse\n\t\troot[\"ig-ui\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","\nexport class GridGallery {\n #selector = '';\n #currentIndex = 0;\n #animationDuration = 500;\n #galleryItemEls: HTMLElement[] = [];\n #galleryEl: HTMLElement;\n\n constructor(selector = '.grid-gallery') {\n this.#selector = selector;\n this.#galleryEl = document.querySelector(this.#selector);\n\n if (!this.#galleryEl) {\n throw new Error(`Cannot find element: '${this.#selector}'`);\n }\n\n this.#galleryItemEls = Array.from(this.#galleryEl.querySelectorAll('.gallery-item'));\n\n\n this.initViewer = this.initViewer.bind(this);\n this.openContent = this.openContent.bind(this);\n this.handleGalleryItemClick = this.handleGalleryItemClick.bind(this);\n this.handleCloseButtonClick = this.handleCloseButtonClick.bind(this);\n this.handleNextButtonClick = this.handleNextButtonClick.bind(this);\n this.handleBackButtonClick = this.handleBackButtonClick.bind(this);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n }\n\n /**\n * Start Grid Gallery viewer\n */\n initViewer() {\n this.#galleryItemEls.forEach((item, index) => {\n item.setAttribute('data-index', index.toString());\n item.addEventListener('click', this.handleGalleryItemClick, false);\n });\n }\n\n\n /**\n * Show the content\n */\n openContent(step = 0) {\n const viewer = document.querySelector('.grid-gallery-viewer');\n let newIndex = this.#currentIndex + step;\n\n\n // view next\n if (step > 0) {\n if (newIndex > this.#galleryItemEls.length - 1) {\n newIndex = 0;\n }\n\n // animation: hide old content\n viewer.classList.add('closeViewer_Next');\n }\n // view back\n else if (step < 0) {\n if (newIndex < 0) {\n newIndex = this.#galleryItemEls.length - 1;\n }\n\n // animation: hide old content\n viewer.classList.add('closeViewer_Back');\n }\n // no change, refresh\n else {\n // animation: hide old content\n viewer.classList.add('closeViewer');\n }\n\n // update new index\n this.#currentIndex = newIndex;\n\n // new content\n const clonedEl = this.#galleryItemEls[this.#currentIndex].cloneNode(true) as HTMLElement;\n const content = clonedEl.innerHTML;\n\n setTimeout(() => {\n viewer.classList.remove('closeViewer', 'closeViewer_Next', 'closeViewer_Back');\n\n // view next\n if (step > 0) {\n // animation: hide old content\n viewer.classList.add('openViewer_Next');\n }\n // view back\n else if (step < 0) {\n // animation: hide old content\n viewer.classList.add('openViewer_Back');\n }\n // no change, refresh\n else {\n // animation: hide old content\n viewer.classList.add('openViewer');\n }\n\n // load content to the viewer\n const viewerBody = viewer.querySelector('.viewer-body');\n viewerBody.innerHTML = content;\n\n // prevent viewer closed when clicking the content\n const bodyContentEl = viewerBody.querySelector(':first-child');\n bodyContentEl.addEventListener('click', (e) => {\n e.stopImmediatePropagation();\n }, false);\n\n setTimeout(() => {\n viewer.classList.remove('openViewer', 'openViewer_Next', 'openViewer_Back');\n }, this.#animationDuration);\n\n }, this.#animationDuration);\n }\n\n\n /**\n * Event: gallery item click\n * @param {Event} e \n */\n handleGalleryItemClick(e: Event) {\n // console.log(e.currentTarget)\n this.#currentIndex = parseInt((e.currentTarget as HTMLElement).getAttribute('data-index'));\n // console.log(this.currentIndex)\n\n // back button\n const navBack = document.createElement('span');\n navBack.classList.add('viewer-nav-back');\n navBack.title = 'Previous';\n navBack.addEventListener('click', this.handleBackButtonClick, false);\n\n // next button\n const navNext = document.createElement('span');\n navNext.classList.add('viewer-nav-next');\n navNext.title = 'Next';\n navNext.addEventListener('click', this.handleNextButtonClick, false);\n\n // close button\n const btnclose = document.createElement('span');\n btnclose.classList.add('viewer-close');\n btnclose.title = 'Close';\n btnclose.addEventListener('click', this.handleCloseButtonClick, false);\n\n // viewer body\n const viewerBody = document.createElement('div');\n viewerBody.classList.add('viewer-body');\n viewerBody.addEventListener('click', this.handleCloseButtonClick, false);\n\n // gallery viewer\n const viewer = document.createElement('div');\n viewer.classList.add('grid-gallery-viewer');\n viewer.append(navBack);\n viewer.append(viewerBody);\n viewer.append(navNext);\n viewer.append(btnclose);\n\n\n document.body.classList.add('grid-gallery-viewer-open');\n document.body.append(viewer);\n document.addEventListener('keyup', this.handleKeyUp, false);\n\n // open content\n this.openContent();\n }\n\n\n /**\n * Event: Close button click\n */\n handleCloseButtonClick() {\n document.body.classList.remove('grid-gallery-viewer-open');\n document.removeEventListener('keyup', this.handleKeyUp, false);\n\n const viewer = document.querySelector('.grid-gallery-viewer');\n if (viewer) {\n viewer.classList.add('closing');\n\n setTimeout(() => {\n viewer.remove();\n }, this.#animationDuration);\n }\n }\n\n\n /**\n * Event: Next button click\n */\n handleNextButtonClick() {\n // open content\n this.openContent(1);\n }\n\n\n /**\n * Event: Back button click\n */\n handleBackButtonClick() {\n // open content\n this.openContent(-1);\n }\n\n\n /**\n * Event key up\n * @param {Event} e \n */\n handleKeyUp(e: KeyboardEvent) {\n if (!e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey) {\n\n // NEXT key\n if (e.key === 'ArrowRight') {\n this.openContent(1);\n }\n // BACK key\n else if (e.key === 'ArrowLeft') {\n this.openContent(-1);\n }\n // ESC key\n else if (e.key === 'Escape') {\n this.handleCloseButtonClick();\n }\n }\n }\n}\n\n\nexport default { GridGallery };\n","import { GridGallery } from '../modules/grid-gallery';\n\n// load screenshot gallery\nconst gallery = new GridGallery('.grid-gallery');\ngallery.initViewer();\n\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","Symbol","toStringTag","Object","defineProperty","value","GridGallery","constructor","selector","document","querySelector","Error","Array","from","querySelectorAll","initViewer","bind","openContent","handleGalleryItemClick","handleCloseButtonClick","handleNextButtonClick","handleBackButtonClick","handleKeyUp","forEach","item","index","setAttribute","toString","addEventListener","step","viewer","newIndex","length","classList","add","content","cloneNode","innerHTML","setTimeout","remove","viewerBody","e","stopImmediatePropagation","parseInt","currentTarget","getAttribute","navBack","createElement","title","navNext","btnclose","append","body","removeEventListener","ctrlKey","shiftKey","altKey","metaKey","key"],"sourceRoot":""}