code: function intersectStepAbove([entry]) {
      updateDirection();
      const { isIntersecting, boundingClientRect, target } = entry;
  
      // bottom = bottom edge of element from top of viewport
      // bottomAdjusted = bottom edge of element from trigger
      const { top, bottom } = boundingClientRect;
      const topAdjusted = top - offsetMargin;
      const bottomAdjusted = bottom - offsetMargin;
      const index = getIndex(target);
      const ss = stepStates[index];
  
      // entering above is only when topAdjusted is negative
      // and bottomAdjusted is positive
      if (
        isIntersecting &&
        topAdjusted <= 0 &&
        bottomAdjusted >= 0 &&
        direction === 'down' &&
        ss.state !== 'enter'
      )
        notifyStepEnter(target, direction);
  
      // exiting from above is when topAdjusted is positive and not intersecting
      if (
        !isIntersecting &&
        topAdjusted > 0 &&
        direction === 'up' &&
        ss.state === 'enter'
      )
        notifyStepExit(target, direction);
    }
docs: * OBSERVER - INTERSECT HANDLING ** this is good for entering while scrolling down + leaving while scrolling up