docs: function getTranslateValue(direction, node) {
    const rect = node.getBoundingClientRect();
  
    let transform;
  
    if (node.fakeTransform) {
      transform = node.fakeTransform;
    } else {
      const computedStyle = window.getComputedStyle(node);
      transform =
        computedStyle.getPropertyValue('-webkit-transform') ||
        computedStyle.getPropertyValue('transform');
    }
  
    let offsetX = 0;
    let offsetY = 0;
  
    if (transform && transform !== 'none' && typeof transform === 'string') {
      const transformValues = transform
        .split('(')[1]
        .split(')')[0]
        .split(',');
      offsetX = parseInt(transformValues[4], 10);
      offsetY = parseInt(transformValues[5], 10);
    }
  
    if (direction === 'left') {
      return `translateX(100vw) translateX(-${rect.left - offsetX}px)`;
    }
  
    if (direction === 'right') {
      return `translateX(-${rect.left + rect.width + GUTTER - offsetX}px)`;
    }
  
    if (direction === 'up') {
      return `translateY(100vh) translateY(-${rect.top - offsetY}px)`;
    }
  
    // direction === 'down'
    return `translateY(-${rect.top + rect.height + GUTTER - offsetY}px)`;
  }