video under add to cart

<!-- 06.26c28v7 Move an Element -->
<script>
window.MoveElementConfig = {
  moves: [
    {
      source: '.ProductItem-additional .video-block',
      target: '.sqs-add-to-cart-button',
      position: 'after' 
    }
  ]
};
</script>

<script>
(function () {
  var cfg = window.MoveElementConfig;
  if (!cfg || !Array.isArray(cfg.moves) || !cfg.moves.length) return;

  var MAX_WAIT = 10000;
  var POLL_INTERVAL = 200;

  var actions = {
    before:  function (t, s) { t.before(s); },
    after:   function (t, s) { t.after(s); },
    prepend: function (t, s) { t.prepend(s); },
    append:  function (t, s) { t.append(s); }
  };

  function isPlaced(position, source, target) {
    switch (position) {
      case 'before':
        return source.parentElement === target.parentElement && source.nextElementSibling === target;
      case 'after':
        return source.parentElement === target.parentElement && source.previousElementSibling === target;
      case 'prepend':
        return source.parentElement === target && target.firstElementChild === source;
      case 'append':
        return source.parentElement === target && target.lastElementChild === source;
    }
    return false;
  }

  function tryMove(move) {
    var act = actions[move.position];
    if (!act) {
      console.warn('[MoveElement] Unknown position:', move.position);
      return true;
    }
    var source = document.querySelector(move.source);
    var target = document.querySelector(move.target);
    if (!source || !target) return false;
    if (source === target || source.contains(target)) return true;
    if (isPlaced(move.position, source, target)) return true;
    act(target, source);
    return true;
  }

  var observer = null;
  var poll = null;
  var deadline = 0;

  function cleanup() {
    if (observer) { observer.disconnect(); observer = null; }
    if (poll) { clearInterval(poll); poll = null; }
  }

  function sweep() {
    var allDone = true;
    cfg.moves.forEach(function (move) {
      if (!tryMove(move)) allDone = false;
    });
    if (allDone || Date.now() > deadline) cleanup();
  }

  function start() {
    cleanup();
    deadline = Date.now() + MAX_WAIT;
    var allDone = true;
    cfg.moves.forEach(function (move) {
      if (!tryMove(move)) allDone = false;
    });
    if (allDone) return;
    observer = new MutationObserver(sweep);
    observer.observe(document.documentElement, { childList: true, subtree: true });
    poll = setInterval(sweep, POLL_INTERVAL);
  }

  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', start);
  } else {
    start();
  }
  window.addEventListener('load', start);
  window.addEventListener('mercury:load', start);
})();
</script>

 

Buy me a coffee