Instructions for CSS & Javascript, *IMPORT FULL PAGE

<script>

(function () {
  // Walk up from the clicked element to the box Showit actually positions
  // (the nearest ancestor carrying inline left/top, or a .shwt-element / .shwt-group).
  function resolveTarget(el) {
    let node = el;
    while (node && node !== document.body) {
      const hasInlinePos = node.style && (node.style.left !== '' || node.style.top !== '');
      if (hasInlinePos || node.matches('.shwt-element, .shwt-group')) return node;
      node = node.parentElement;
    }
    return el; // fallback: move the class element itself
  }

  function makeDraggable(handle) {
    const el = resolveTarget(handle); // the box we MOVE
    let dragging = false;
    let startX, startY, originX, originY;

    function currentPos() {
      const left = parseInt(el.style.left, 10);
      const top = parseInt(el.style.top, 10);
      return {
        x: isNaN(left) ? el.offsetLeft : left,
        y: isNaN(top) ? el.offsetTop : top
      };
    }

    handle.addEventListener('pointerdown', function (e) { // listen on what you CLICK
      dragging = true;
      const pos = currentPos();
      originX = pos.x;
      originY = pos.y;
      startX = e.clientX;
      startY = e.clientY;
      handle.setPointerCapture(e.pointerId);
      e.stopPropagation();
      e.preventDefault();
    });

    handle.addEventListener('pointermove', function (e) {
      if (!dragging) return;
      el.style.left = (originX + (e.clientX - startX)) + 'px';
      el.style.top = (originY + (e.clientY - startY)) + 'px';
    });

    function stop(e) {
      dragging = false;
      try { handle.releasePointerCapture(e.pointerId); } catch (err) {}
    }
    handle.addEventListener('pointerup', stop);
    handle.addEventListener('pointercancel', stop);
  }

  window.addEventListener('load', function () {
    document.querySelectorAll('.draggable').forEach(makeDraggable);
  });
})();

</script>

.draggable {
  position: absolute;
  cursor: move;
  user-select: none;
  -webkit-user-select: none;
  touch-action: none;
}

.draggable img {
  -webkit-user-drag: none;
}

In the left sidebar from the Site Tab, click SITE SETTINGS to open up the panel. From the popup, select Integrations. This is where you will see we've built in global settings site wide (this means you can use it on any page). Under the nested Integrations, select Site Customizations.

If you are adding to an existing website, you will need to add the custom code in order for your effects to work. To do this, go to SITE SETTINGS. Click the Integrations tab and select + Add Custom Code. In the center panel, select + ADD CODE TO... and from the dropdown, select Add HTML to the head and paste:
Before closing, in that same panel, select + ADD CODE TO... and from the dropdown, select Add CSS to the head and paste:

...

Paste Into Pre-Existing Site
You can use custom classes to any element as many times as you'd like: 
  • .draggable
Preview instructions on Desktop :)