Jump to content

MediaWiki:Common.js: Difference between revisions

Line 1: Line 1:
(function() {
    function resizeSlideshowContainer(mwSlideshow) {
        const slideshow = mwSlideshow.querySelector('.slideshow');
        if (slideshow) {
            // Get the current computed height of the slideshow (based on content)
            const computedHeight = slideshow.scrollHeight;
            // Apply that height directly to the parent container
            mwSlideshow.style.height = computedHeight + 'px';
            // Optional: If you want to also resize the parent on window resize
            window.addEventListener('resize', () => {
                mwSlideshow.style.height = slideshow.scrollHeight + 'px';
            });
        }
    }
    function cleanAndResizeSlideshows() {
        document.querySelectorAll('.mw-jsslideshow').forEach(mwSlideshow => {
            const slideshow = mwSlideshow.querySelector('.slideshow');
            if (slideshow) {
                // Remove inline styles from slideshow and slides
                slideshow.style.width = '';
                slideshow.style.height = '';
                slideshow.querySelectorAll('div').forEach(slide => {
                    slide.style.width = '';
                    slide.style.height = '';
                });
                // Immediately resize the parent to match slideshow height
                resizeSlideshowContainer(mwSlideshow);
                // Observe changes to keep it dynamic (slides changing, etc.)
                const observer = new MutationObserver(() => {
                    resizeSlideshowContainer(mwSlideshow);
                });
                observer.observe(slideshow, {
                    attributes: true,
                    attributeFilter: ['style'],
                    childList: true,
                    subtree: true
                });
            }
        });
    }
    // Init once DOM is ready
    if (document.readyState === 'complete' || document.readyState === 'interactive') {
        cleanAndResizeSlideshows();
    } else {
        document.addEventListener('DOMContentLoaded', cleanAndResizeSlideshows);
    }
})();
(function() {
(function() {
     function cleanSlideshowStyles(slideshowContainer) {
     function cleanSlideshowStyles(slideshowContainer) {