class ImageHiglighter { imageHighlighter; constructor(id) { this.imageHighlighter = document.getElementById(id); this.imageHighlightCallback = this.imageHighlightCallback.bind(this); var styleElement = document.createElement('link'); styleElement.rel = 'stylesheet'; styleElement.href = 'css/imageHighlighter.css' document.head.appendChild(styleElement); this.imageHighlighter.onclick = () => { this.imageHighlighter.childNodes.forEach((child) => { child.classList.add('remove'); setTimeout(() => { this.imageHighlighter.removeChild(child); }, 100) }) } } imageHighlightCallback(highlightEvent) { var bigImg = document.createElement('img'); bigImg.onclick = (imageClickEvent) => { // This prevents the highlighter's onClick from closing the image when clicking // on the image instead of next to it. imageClickEvent.preventDefault(); imageClickEvent.stopPropagation(); }; bigImg.src = highlightEvent.target.src; this.imageHighlighter.appendChild(bigImg); }; setActions() { // not needed in this case } adapt(div) { const img = div.querySelector('.page-image'); img.addEventListener('click', this.imageHighlightCallback) return div; } } export default ImageHiglighter;