{"version":3,"file":"441.94abb2ab45c211b06cb1.js","mappings":"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","sources":["webpack://National Motor Museum Trust/./wwwroot/app/src/modules/lightboxes-galleries/lightboxes.js"],"sourcesContent":["// *****************************************\r\n// ************* Image Gallery *************\r\n// *****************************************\r\n\r\nimport PhotoSwipe from 'photoswipe';\r\nimport 'photoswipe/style.css';\r\n\r\nimport './image-galleries.scss';\r\n\r\nclass ImageGallery {\r\n\r\n constructor(el) {\r\n this.el = el;\r\n this.imageSizesOkay = true;\r\n this.lightbox = null;\r\n // get items\r\n this.items = [];\r\n let findItems = this.el.querySelectorAll('a');\r\n this.loop = findItems.length > 1;\r\n if(findItems != null) {\r\n [...findItems].forEach((itemElement, itemIndex) => {\r\n let dataWidth = itemElement.dataset.pswpWidth,\r\n dataHeight = itemElement.dataset.pswpHeight;\r\n this.items[itemIndex] = {\r\n src: itemElement.getAttribute('href'),\r\n width: parseFloat(dataWidth) > 0 ? parseFloat(dataWidth) : 0,\r\n height: parseFloat(dataHeight) > 0 ? parseFloat(dataHeight) : 0,\r\n alt: itemElement.querySelector('figcaption') != null ? itemElement.querySelector('figcaption').innerText : 'Image'\r\n };\r\n this.items[itemIndex].caption = this.items[itemIndex].alt == 'Image' ? '' : this.items[itemIndex].alt;\r\n this.imageSizesOkay = this.items[itemIndex].width > 0 && this.items[itemIndex].height > 0;\r\n let _this = this;\r\n // behaviour\r\n itemElement.onclick = (e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n if(!_this.imageSizesOkay) {\r\n _this.getImageDimensions(itemIndex);\r\n } else {\r\n this.createLightbox(itemIndex);\r\n }\r\n };\r\n });\r\n }\r\n }\r\n\r\n getImageDimensions(priorityIndex) {\r\n // priority index\r\n if(this.items[priorityIndex].width == 0 || this.items[priorityIndex].height == 0) {\r\n let index = priorityIndex;\r\n this.items[priorityIndex].image = new Image();\r\n this.items[priorityIndex].image.onload = () => {\r\n this.imageLoaded(priorityIndex, true);\r\n }\r\n this.items[priorityIndex].image.src = this.items[priorityIndex].src;\r\n } else {\r\n this.createLightbox(priorityIndex);\r\n }\r\n // other images\r\n for(var x=0; x < this.items.length; x++) {\r\n if( x !== priorityIndex) {\r\n if(this.items[x].width == 0 || this.items[x].height == 0) {\r\n let index = x;\r\n this.items[x].image = new Image();\r\n this.items[x].image.onload = () => {\r\n this.imageLoaded(index, false);\r\n }\r\n this.items[x].image.src = this.items[x].src;\r\n }\r\n }\r\n };\r\n }\r\n\r\n imageLoaded(i, create) {\r\n let w = this.items[i].image.width,\r\n h = this.items[i].image.height;\r\n this.items[i].width = w;\r\n this.items[i].height = h;\r\n if(create) {\r\n this.lightbox= new PhotoSwipe({\r\n dataSource: this.items,\r\n loop: this.loop,\r\n index: i\r\n });\r\n let lb = this.lightbox;\r\n lb.on('uiRegister', function() {\r\n console.log(lb);\r\n lb.ui.registerElement({\r\n name: 'custom-caption',\r\n order: 9,\r\n isButton: false,\r\n appendTo: 'root',\r\n html: 'Caption text',\r\n onInit: (el, lb) => {\r\n lb.on('change', () => {\r\n if(lb.currSlide.data.caption != null && lb.currSlide.data.caption != '') {\r\n el.innerHTML = lb.currSlide.data.caption;\r\n el.classList.remove('hidden');\r\n } else {\r\n el.classList.add('hidden');\r\n }\r\n });\r\n }\r\n });\r\n });\r\n lb.init();\r\n } else {\r\n this.lightbox.options.dataSource[i].width = w;\r\n this.lightbox.options.dataSource[i].height = h;\r\n this.lightbox.refreshSlideContent(i);\r\n }\r\n }\r\n\r\n createLightbox(imageIndex) {\r\n this.lightbox = new PhotoSwipe({\r\n dataSource: this.items,\r\n loop: this.loop,\r\n index: imageIndex\r\n });\r\n let lb = this.lightbox;\r\n lb.on('uiRegister', function() {\r\n console.log(lb);\r\n lb.ui.registerElement({\r\n name: 'custom-caption',\r\n order: 9,\r\n isButton: false,\r\n appendTo: 'root',\r\n html: 'Caption text',\r\n onInit: (el, lb) => {\r\n lb.on('change', () => {\r\n if(lb.currSlide.data.caption != null && lb.currSlide.data.caption != '') {\r\n el.innerHTML = lb.currSlide.data.caption;\r\n el.classList.remove('hidden');\r\n } else {\r\n el.classList.add('hidden');\r\n }\r\n });\r\n }\r\n });\r\n });\r\n lb.init();\r\n }\r\n\r\n}\r\n\r\n// export the default function to create\r\nexport function createFrom(wrappers) {\r\n wrappers.forEach((node) => {\r\n // if node is an element\r\n if (node.nodeType === 1) {\r\n new ImageGallery(node);\r\n }\r\n });\r\n}"],"names":["ImageGallery","constructor","el","this","imageSizesOkay","lightbox","items","findItems","querySelectorAll","loop","length","forEach","itemElement","itemIndex","dataWidth","dataset","pswpWidth","dataHeight","pswpHeight","src","getAttribute","width","parseFloat","height","alt","querySelector","innerText","caption","_this","onclick","e","stopPropagation","preventDefault","createLightbox","getImageDimensions","priorityIndex","image","Image","onload","imageLoaded","x","index","i","create","w","h","PhotoSwipe","dataSource","lb","on","console","log","ui","registerElement","name","order","isButton","appendTo","html","onInit","currSlide","data","innerHTML","classList","remove","add","init","options","refreshSlideContent","imageIndex","createFrom","wrappers","node","nodeType"],"sourceRoot":""}