User:Monster Domosed/common.js: Difference between revisions

Jump to navigation Jump to search
No edit summary
No edit summary
Line 20: Line 20:


         return fetch(apiUrl)
         return fetch(apiUrl)
             .then(response => response.json())
             .then(function (response) {
             .then(data => {
                return response.json();
            })
             .then(function (data) {
                 const page = Object.values(data.query.pages)[0];
                 const page = Object.values(data.query.pages)[0];


Line 54: Line 56:
         button.style.width = buttonSize + 'px';
         button.style.width = buttonSize + 'px';
         button.style.height = buttonSize + 'px';
         button.style.height = buttonSize + 'px';
        let isLQ = true;


         button.addEventListener('click', function () {
         button.addEventListener('click', function () {
             const isLQ = viewer.src === lqUrl;
             if (isLQ) {
                viewer.src = hqUrl;
                icon.src = HQ_ICON;
            } else {
                viewer.src = lqUrl;
                icon.src = LQ_ICON;
            }


             viewer.src = isLQ ? hqUrl : lqUrl;
             isLQ = !isLQ;
            icon.src = isLQ ? HQ_ICON : LQ_ICON;
         });
         });


Line 78: Line 87:
             getFileUrl(fileName + '-compressed.glb'),
             getFileUrl(fileName + '-compressed.glb'),
             getFileUrl(fileName + '.glb')
             getFileUrl(fileName + '.glb')
         ]).then(function (urls) {
         ])
        .then(function (urls) {
             const lqUrl = urls[0] || urls[1];
             const lqUrl = urls[0] || urls[1];
             const hqUrl = urls[1];
             const hqUrl = urls[1];
Line 99: Line 109:


             container.appendChild(viewer);
             container.appendChild(viewer);
             preview.replaceWith(container);
             preview.replaceWith(container);


Line 111: Line 122:
         });
         });
     }
     }
   
    function syncWrapperSize(viewer) {
    const wrapper = viewer.closest('.model-placeholder');
    if (!wrapper) {
        return;
    }
    const resizeObserver = new ResizeObserver(function () {
        wrapper.style.width = viewer.offsetWidth + 'px';
        wrapper.style.height = viewer.offsetHeight + 'px';
    });
    resizeObserver.observe(viewer);
}


     function initPreview(preview) {
     function initPreview(preview) {
Line 139: Line 165:
     scan();
     scan();


     new MutationObserver(scan).observe(document.body, {
     const observer = new MutationObserver(function () {
        scan();
    });
 
    observer.observe(document.body, {
         childList: true,
         childList: true,
         subtree: true
         subtree: true
Line 146: Line 176:
})();
})();


function syncWrapperSize(viewer) {
    const wrapper = viewer.closest('.model-placeholder');
    if (!wrapper) {
        return;
    }


    const resizeObserver = new ResizeObserver(function () {
        wrapper.style.width = viewer.offsetWidth + 'px';
        wrapper.style.height = viewer.offsetHeight + 'px';
    });
    resizeObserver.observe(viewer);
}