public scrollTo()

in src/scroll/native-smooth-scrolling.ts [13:39]


  public scrollTo(
    parent: Readonly<IScrollableContainer>,
    targetElement: HTMLElement,
    rect: ClientRect,
  ): void {
    const reference = parent.element.getBoundingClientRect();
    const horizontal = horizontalDelta(rect, reference);
    const vertical = verticalDelta(rect, reference);

    try {
      if (parent.vertical && vertical) {
        parent.element.scrollTo({ top: parent.element.scrollTop + vertical, behavior: 'smooth' });
      }
      if (parent.horizontal && horizontal) {
        parent.element.scrollTo({
          behavior: 'smooth',
          left: parent.element.scrollLeft + horizontal,
        });
      }
    } catch (e) {
      if (!this.fallback) {
        throw e;
      }

      this.fallback.scrollTo(parent, targetElement, rect);
    }
  }