{"version":3,"file":"scroll-to-element.mjs","sources":["../../../../src/utils/scroll-to-element.ts"],"sourcesContent":["const getTopCoordinate = (element: HTMLElement) => element.offsetTop\nconst getBottomCoordinate = (element: HTMLElement) => element.offsetTop + element.offsetHeight\nconst getCenterCoordinate = (element: HTMLElement) => element.offsetTop + element.offsetHeight / 2\n\nconst getScrollTop = (element: HTMLElement, scrollTarget: HTMLElement, verticalAlignment?: 'start' | 'end' | 'center' | 'any') => {\n  const viewHeight = scrollTarget.offsetHeight\n  const currentPosition = scrollTarget.scrollTop\n  const top = getTopCoordinate(element) - scrollTarget.offsetTop\n  const center = getCenterCoordinate(element) - scrollTarget.offsetTop\n  const bottom = getBottomCoordinate(element) - scrollTarget.offsetTop\n\n  if (verticalAlignment === 'start') {\n    return top\n  }\n\n  if (verticalAlignment === 'end') {\n    return bottom - viewHeight\n  }\n\n  if (verticalAlignment === 'center') {\n    return center - viewHeight / 2\n  }\n\n  if (verticalAlignment === 'any') {\n    if (top - currentPosition < 0) {\n      return top\n    }\n\n    if (bottom - currentPosition > viewHeight) {\n      return bottom - viewHeight\n    }\n  }\n}\n\n/**\n * @param options.scrollTarget - element that will be scrolled\n */\nexport const scrollToElement = (element: HTMLElement, options: {\n  scrollTarget?: HTMLElement,\n  verticalAlignment?: 'start' | 'end' | 'center' | 'any',\n  smooth?: boolean,\n} = {\n  scrollTarget: element.parentElement!,\n  verticalAlignment: 'any',\n  smooth: false,\n}) => {\n  const scrollTarget = options.scrollTarget || element.parentElement!\n\n  const top = getScrollTop(element, scrollTarget, options.verticalAlignment)\n\n  if (top === undefined) { return }\n\n  scrollTarget.scroll({\n    top: top,\n    behavior: options.smooth ? 'smooth' : 'auto',\n  })\n}\n"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,CAAC,YAAyB,QAAQ;AAC3D,MAAM,sBAAsB,CAAC,YAAyB,QAAQ,YAAY,QAAQ;AAClF,MAAM,sBAAsB,CAAC,YAAyB,QAAQ,YAAY,QAAQ,eAAe;AAEjG,MAAM,eAAe,CAAC,SAAsB,cAA2B,sBAA2D;AAChI,QAAM,aAAa,aAAa;AAChC,QAAM,kBAAkB,aAAa;AACrC,QAAM,MAAM,iBAAiB,OAAO,IAAI,aAAa;AACrD,QAAM,SAAS,oBAAoB,OAAO,IAAI,aAAa;AAC3D,QAAM,SAAS,oBAAoB,OAAO,IAAI,aAAa;AAE3D,MAAI,sBAAsB,SAAS;AAC1B,WAAA;AAAA,EACT;AAEA,MAAI,sBAAsB,OAAO;AAC/B,WAAO,SAAS;AAAA,EAClB;AAEA,MAAI,sBAAsB,UAAU;AAClC,WAAO,SAAS,aAAa;AAAA,EAC/B;AAEA,MAAI,sBAAsB,OAAO;AAC3B,QAAA,MAAM,kBAAkB,GAAG;AACtB,aAAA;AAAA,IACT;AAEI,QAAA,SAAS,kBAAkB,YAAY;AACzC,aAAO,SAAS;AAAA,IAClB;AAAA,EACF;AACF;AAKa,MAAA,kBAAkB,CAAC,SAAsB,UAIlD;AAAA,EACF,cAAc,QAAQ;AAAA,EACtB,mBAAmB;AAAA,EACnB,QAAQ;AACV,MAAM;AACE,QAAA,eAAe,QAAQ,gBAAgB,QAAQ;AAErD,QAAM,MAAM,aAAa,SAAS,cAAc,QAAQ,iBAAiB;AAEzE,MAAI,QAAQ,QAAW;AAAE;AAAA,EAAO;AAEhC,eAAa,OAAO;AAAA,IAClB;AAAA,IACA,UAAU,QAAQ,SAAS,WAAW;AAAA,EAAA,CACvC;AACH;"}