Mastodon vid

Replace zoomable vid with clone and close modal on click

// ==UserScript==
// @name         Mastodon vid
// @description  Replace zoomable vid with clone and close modal on click
// @match        https://mastodon.social/*
// @run-at       document-idle
// @version 0.0.1.20250524075804
// @namespace https://greasyfork.org/users/1435046
// ==/UserScript==

const observer = new MutationObserver(() => {
  const oldElement = document.querySelector('.gifv video');

  if (oldElement && !oldElement.dataset.replaced) {
    const newElement = oldElement.cloneNode(true); // deep clone
    newElement.dataset.replaced = 'true'; // mark the new one
    oldElement.parentNode.replaceChild(newElement, oldElement);
  }
});

observer.observe(document.body, {
  childList: true,
  subtree: true
});

document.querySelector('.gifv video')
  .addEventListener('click', () => {
    document.querySelector('.media-modal__buttons .icon-button[title="Close"]').click();
  });