directionStateForY function

DragDirectionState directionStateForY({
  1. required double delta,
  2. required Rect currentRect,
  3. required Rect baseRect,
  4. required Rect displayRect,
})

Four-value Y-axis direction state — mirror of directionStateForX.

Implementation

DragDirectionState directionStateForY({
  required double delta,
  required Rect currentRect,
  required Rect baseRect,
  required Rect displayRect,
}) {
  final isBottom = boundForY(delta: delta, currentRect: currentRect, baseRect: baseRect) == .bottom;
  // Mirror of directionStateForX — past-display semantic depends on size.
  final pastDisplay = currentRect.height <= displayRect.height
      ? (isBottom
          ? currentRect.bottom > displayRect.bottom
          : currentRect.top < displayRect.top)
      : (isBottom
          ? currentRect.top > displayRect.top
          : currentRect.bottom < displayRect.bottom);
  final extending = isBottom ? delta > 0 : delta < 0;
  if (extending) return pastDisplay ? .extendingPast : .extending;
  return pastDisplay ? .retractingPast : .retracting;
}