{"version":3,"file":"ngx-sdcore-scrollbar.mjs","sources":["../../../projects/ngx-sdcore/scrollbar/src/utils/ng-attr.directive.ts","../../../projects/ngx-sdcore/scrollbar/src/scrollbar/common.ts","../../../projects/ngx-sdcore/scrollbar/src/scroll-viewport.ts","../../../projects/ngx-sdcore/scrollbar/src/ng-scrollbar-base.ts","../../../projects/ngx-sdcore/scrollbar/src/scrollbar/track/track.ts","../../../projects/ngx-sdcore/scrollbar/src/scrollbar/track/track.directive.ts","../../../projects/ngx-sdcore/scrollbar/src/scrollbar/thumb/thumb.ts","../../../projects/ngx-sdcore/scrollbar/src/scrollbar/thumb/thumb.directive.ts","../../../projects/ngx-sdcore/scrollbar/src/scrollbar/scrollbar.ts","../../../projects/ngx-sdcore/scrollbar/src/scrollbar/scrollbar.component.ts","../../../projects/ngx-sdcore/scrollbar/src/ng-scrollbar.model.ts","../../../projects/ngx-sdcore/scrollbar/src/utils/scrollbar-manager.ts","../../../projects/ngx-sdcore/scrollbar/src/hide-native-scrollbar/native-scrollbar-size-factory.ts","../../../projects/ngx-sdcore/scrollbar/src/hide-native-scrollbar/hide-native-scrollbar.ts","../../../projects/ngx-sdcore/scrollbar/src/resize-sensor/resize-sensor.directive.ts","../../../projects/ngx-sdcore/scrollbar/src/smooth-scroll/bezier-easing.ts","../../../projects/ngx-sdcore/scrollbar/src/smooth-scroll/smooth-scroll.model.ts","../../../projects/ngx-sdcore/scrollbar/src/smooth-scroll/smooth-scroll-manager.ts","../../../projects/ngx-sdcore/scrollbar/src/smooth-scroll/smooth-scroll.ts","../../../projects/ngx-sdcore/scrollbar/src/ng-scrollbar.ts","../../../projects/ngx-sdcore/scrollbar/src/ng-scrollbar.html","../../../projects/ngx-sdcore/scrollbar/src/ng-scrollbar.module.ts","../../../projects/ngx-sdcore/scrollbar/src/reached-event/ng-scrollbar-reached.ts","../../../projects/ngx-sdcore/scrollbar/src/reached-event/ng-scrollbar-reached.module.ts","../../../projects/ngx-sdcore/scrollbar/public-api.ts","../../../projects/ngx-sdcore/scrollbar/ngx-sdcore-scrollbar.ts"],"sourcesContent":["import { Directive, ElementRef, Input } from '@angular/core';\r\nimport { NgScrollbarState } from '../ng-scrollbar.model';\r\n\r\n@Directive({\r\n  selector: '[ngAttr]',\r\n  standalone: true\r\n})\r\nexport class NgAttr {\r\n\r\n  constructor(private el: ElementRef) {\r\n  }\r\n\r\n  @Input() set ngAttr(attrs: NgScrollbarState) {\r\n    for (const [key, value] of Object.entries(attrs)) {\r\n      (this.el.nativeElement as HTMLElement).setAttribute(key, value);\r\n    }\r\n  }\r\n}\r\n","import { MonoTypeOperatorFunction, tap } from 'rxjs';\r\n\r\nexport function preventSelection(doc: Document): MonoTypeOperatorFunction<any> {\r\n  return tap(() => {\r\n    doc.onselectstart = () => false;\r\n  });\r\n}\r\n\r\nexport function enableSelection(doc: Document): MonoTypeOperatorFunction<any> {\r\n  return tap(() => {\r\n    doc.onselectstart = null;\r\n  });\r\n}\r\n\r\nexport function stopPropagation(): MonoTypeOperatorFunction<any> {\r\n  return tap((e: MouseEvent) => e.stopPropagation());\r\n}\r\n\r\n/**\r\n * Check if pointer is within scrollbar bounds\r\n */\r\nexport function isWithinBounds(e: MouseEvent, rect: DOMRect): boolean {\r\n  return (\r\n    e.clientX >= rect.left &&\r\n    e.clientX <= rect.left + rect.width &&\r\n    e.clientY >= rect.top &&\r\n    e.clientY <= rect.top + rect.height\r\n  );\r\n}\r\n","import { Directive, ElementRef } from '@angular/core';\r\nimport { Observable, Subscriber, fromEvent, merge, map, switchMap, takeUntil, tap } from 'rxjs';\r\nimport { stopPropagation } from './scrollbar/common';\r\n\r\n@Directive({\r\n  selector: '[scrollViewport]',\r\n  standalone: true\r\n})\r\nexport class ScrollViewport {\r\n  // Viewport element\r\n  readonly nativeElement: HTMLElement;\r\n  // Content wrapper element\r\n  contentWrapperElement!: HTMLElement;\r\n\r\n  // Stream that emits when pointer event when the viewport is hovered and emits false value when isn't hovered\r\n  hovered!: Observable<MouseEvent | false>;\r\n  // Stream that emits when viewport is clicked\r\n  clicked!: Observable<MouseEvent | false>;\r\n\r\n  // Get viewport size, clientHeight or clientWidth\r\n  get clientHeight(): number {\r\n    return this.nativeElement.clientHeight;\r\n  }\r\n\r\n  get clientWidth(): number {\r\n    return this.nativeElement.clientWidth;\r\n  }\r\n\r\n  get scrollHeight(): number {\r\n    return this.nativeElement.scrollHeight;\r\n  }\r\n\r\n  get scrollWidth(): number {\r\n    return this.nativeElement.scrollWidth;\r\n  }\r\n\r\n  // Get viewport scroll offset, scrollTop or scrollLeft\r\n  get scrollTop(): number {\r\n    return this.nativeElement.scrollTop;\r\n  }\r\n\r\n  get scrollLeft(): number {\r\n    return this.nativeElement.scrollLeft;\r\n  }\r\n\r\n  // Get the available scrollable size\r\n  get scrollMaxX(): number {\r\n    return this.scrollWidth - this.clientWidth;\r\n  }\r\n\r\n  get scrollMaxY(): number {\r\n    return this.scrollHeight - this.clientHeight;\r\n  }\r\n\r\n  get contentHeight(): number {\r\n    return this.contentWrapperElement?.clientHeight || 0;\r\n  }\r\n\r\n  get contentWidth(): number {\r\n    return this.contentWrapperElement?.clientWidth || 0;\r\n  }\r\n\r\n  constructor(public viewPort: ElementRef) {\r\n    this.nativeElement = viewPort.nativeElement;\r\n  }\r\n\r\n  /**\r\n   * Activate viewport pointer events such as 'hovered' and 'clicked' events\r\n   */\r\n  activatePointerEvents(propagate: boolean, destroyed: Observable<void>): void {\r\n    this.hovered = new Observable((subscriber: Subscriber<MouseEvent | false>) => {\r\n      // Stream that emits when pointer is moved over the viewport (used to set the hovered state)\r\n      const mouseMoveStream = fromEvent<MouseEvent>(this.nativeElement, 'mousemove', { passive: true });\r\n      const mouseMove = propagate ? mouseMoveStream : mouseMoveStream.pipe(stopPropagation());\r\n      // Stream that emits when pointer leaves the viewport (used to remove the hovered state)\r\n      const mouseLeave = fromEvent<false>(this.nativeElement, 'mouseleave', { passive: true }).pipe(map(() => false));\r\n      merge(mouseMove, mouseLeave).pipe(\r\n        tap((e: MouseEvent | false) => subscriber.next(e)),\r\n        takeUntil(destroyed)\r\n      ).subscribe();\r\n    });\r\n\r\n    this.clicked = new Observable((subscriber: Subscriber<MouseEvent | false>) => {\r\n      const mouseDown = fromEvent<MouseEvent>(this.nativeElement, 'mousedown', { passive: true }).pipe(\r\n        tap((e: MouseEvent) => subscriber.next(e))\r\n      );\r\n      const mouseUp = fromEvent<false>(this.nativeElement, 'mouseup', { passive: true }).pipe(\r\n        tap(() => subscriber.next(false))\r\n      );\r\n      mouseDown.pipe(\r\n        switchMap(() => mouseUp),\r\n        takeUntil(destroyed)\r\n      ).subscribe();\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Set this directive as a non-functional wrapper, called when a custom viewport is used\r\n   */\r\n  setAsWrapper(): void {\r\n    // In this case the default viewport and the default content wrapper will act as a mask\r\n    this.nativeElement.className = 'ng-native-scrollbar-hider ng-scroll-layer';\r\n    if (this.nativeElement.firstElementChild) {\r\n      this.nativeElement.firstElementChild.className = 'ng-scroll-layer';\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Set this directive as  the viewport, called when no custom viewport is used\r\n   */\r\n  setAsViewport(customClassName: string): void {\r\n    this.nativeElement.className += `ng-native-scrollbar-hider ng-scroll-viewport ${ customClassName }`;\r\n    // Check if the custom viewport has only one child and set it as the content wrapper\r\n    if (this.nativeElement.firstElementChild) {\r\n      this.contentWrapperElement = this.nativeElement.firstElementChild as HTMLElement;\r\n      this.contentWrapperElement.classList.add('ng-scroll-content');\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Scroll viewport vertically\r\n   */\r\n  scrollYTo(value: number): void {\r\n    this.nativeElement.scrollTop = value;\r\n  }\r\n\r\n  /**\r\n   * Scroll viewport horizontally\r\n   */\r\n  scrollXTo(value: number): void {\r\n    this.nativeElement.scrollLeft = value;\r\n  }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ScrollViewport } from './scroll-viewport';\r\nimport { ScrollbarManager } from './utils/scrollbar-manager';\r\nimport { ScrollbarPointerEventsMethod } from './ng-scrollbar.model';\r\nimport { SmoothScrollToOptions } from './smooth-scroll';\r\n\r\n@Directive()\r\nexport abstract class NgScrollbarBase {\r\n  abstract manager: ScrollbarManager;\r\n\r\n  abstract viewport: ScrollViewport;\r\n  abstract trackClass: string;\r\n  abstract thumbClass: string;\r\n  abstract minThumbSize: number;\r\n  abstract viewportPropagateMouseMove: boolean;\r\n  abstract trackClickScrollDuration: number;\r\n  abstract pointerEventsMethod: ScrollbarPointerEventsMethod;\r\n  abstract pointerEventsDisabled: boolean;\r\n\r\n  abstract updated: Observable<void>;\r\n  abstract scrolled: Observable<Event>;\r\n\r\n  abstract setHovered(hovered: ScrollbarHovered);\r\n\r\n  abstract setDragging(hovered: ScrollbarDragging);\r\n\r\n  abstract setClicked(scrollbarClicked: boolean);\r\n\r\n  abstract scrollTo(options: SmoothScrollToOptions): Promise<void>;\r\n}\r\n\r\nexport interface ScrollbarDragging {\r\n  verticalDragging?: boolean;\r\n  horizontalDragging?: boolean;\r\n}\r\n\r\nexport interface ScrollbarHovered {\r\n  verticalHovered?: boolean;\r\n  horizontalHovered?: boolean;\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\r\nimport { Observable, EMPTY, fromEvent, merge, of, map, switchMap, tap } from 'rxjs';\r\nimport { preventSelection, enableSelection, stopPropagation } from '../common';\r\nimport { NgScrollbarBase } from '../../ng-scrollbar-base';\r\n\r\n// @dynamic\r\n@Directive()\r\nexport abstract class TrackAdapter {\r\n\r\n  // Stream that emits when the track element is clicked\r\n  get clicked(): Observable<MouseEvent> {\r\n    const mouseDown = fromEvent<MouseEvent>(this.trackElement, 'mousedown', { passive: true }).pipe(\r\n      stopPropagation(),\r\n      preventSelection(this.document)\r\n    );\r\n    const mouseup = fromEvent<MouseEvent>(this.document, 'mouseup', { passive: true }).pipe(\r\n      stopPropagation(),\r\n      enableSelection(this.document),\r\n      switchMap(() => EMPTY)\r\n    );\r\n    return merge(mouseDown, mouseup);\r\n  }\r\n\r\n  // Returns either 'pageX' or 'pageY' according to scrollbar axis\r\n  abstract get pageProperty(): string;\r\n\r\n  // Returns the track size, clientHeight or clientWidth\r\n  abstract get size(): number;\r\n\r\n  // Returns the start offset either 'clientRect.top' or 'clientRect.left'\r\n  abstract get offset(): number;\r\n\r\n  // Get track client rect\r\n  get clientRect(): DOMRect {\r\n    return this.trackElement.getBoundingClientRect();\r\n  }\r\n\r\n  protected constructor(protected cmp: NgScrollbarBase,\r\n                        protected trackElement: HTMLElement,\r\n                        protected document: Document) {\r\n  }\r\n\r\n  /**\r\n   * Stream that emits when scrollbar track is clicked\r\n   */\r\n  onTrackClicked(e: MouseEvent, thumbSize: number, scrollSize: number): Observable<number> {\r\n    return of(e).pipe(\r\n      map((e: MouseEvent) => e[this.pageProperty]),\r\n      // Calculate scrollTo position\r\n      map((pageOffset: number) => {\r\n        const clickOffset = pageOffset - this.offset;\r\n        const offset = clickOffset - (thumbSize / 2);\r\n        const ratio = offset / this.size;\r\n        return ratio * scrollSize;\r\n      }),\r\n      // Smooth scroll to position\r\n      tap((value: number) => {\r\n        this.cmp.scrollTo({\r\n          ...this.mapToScrollToOption(value),\r\n          duration: coerceNumberProperty(this.cmp.trackClickScrollDuration)\r\n        });\r\n      })\r\n    );\r\n  }\r\n\r\n  protected abstract mapToScrollToOption(value: number): ScrollToOptions;\r\n}\r\n","import { Directive, ElementRef, Inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { TrackAdapter } from './track';\r\nimport { NgScrollbarBase } from '../../ng-scrollbar-base';\r\n\r\n@Directive({\r\n  selector: '[scrollbarTrackX]',\r\n  standalone: true\r\n})\r\nexport class TrackXDirective extends TrackAdapter {\r\n\r\n  get pageProperty(): string {\r\n    return 'pageX';\r\n  }\r\n\r\n  get offset(): number {\r\n    return this.clientRect.left;\r\n  }\r\n\r\n  get size(): number {\r\n    return this.trackElement.clientWidth;\r\n  }\r\n\r\n  constructor(protected override cmp: NgScrollbarBase, trackElement: ElementRef, @Inject(DOCUMENT) protected override document: Document) {\r\n    super(cmp, trackElement.nativeElement, document);\r\n  }\r\n\r\n  protected mapToScrollToOption(value: number): ScrollToOptions {\r\n    return { left: value };\r\n  }\r\n}\r\n\r\n@Directive({\r\n  selector: '[scrollbarTrackY]',\r\n  standalone: true\r\n})\r\nexport class TrackYDirective extends TrackAdapter {\r\n\r\n  get pageProperty(): string {\r\n    return 'pageY';\r\n  }\r\n\r\n  get offset(): number {\r\n    return this.clientRect.top;\r\n  }\r\n\r\n  get size(): number {\r\n    return this.trackElement.clientHeight;\r\n  }\r\n\r\n  constructor(protected override cmp: NgScrollbarBase, trackElement: ElementRef, @Inject(DOCUMENT) protected override document: Document) {\r\n    super(cmp, trackElement.nativeElement, document);\r\n  }\r\n\r\n  protected mapToScrollToOption(value: number): ScrollToOptions {\r\n    return { top: value };\r\n  }\r\n}\r\n","import { Output, Directive } from '@angular/core';\r\nimport { Observable, Subject, animationFrameScheduler, of, fromEvent, distinctUntilChanged, map, mergeMap, takeUntil, tap } from 'rxjs';\r\nimport { enableSelection, preventSelection, stopPropagation } from '../common';\r\nimport { TrackAdapter } from '../track/track';\r\nimport { NgScrollbarBase } from '../../ng-scrollbar-base';\r\n\r\n// @dynamic\r\n@Directive()\r\nexport abstract class ThumbAdapter {\r\n\r\n  // Stream that emits dragging state\r\n  private _dragging = new Subject<boolean>();\r\n  @Output() dragging = this._dragging.pipe(distinctUntilChanged());\r\n\r\n  // Returns either 'pageX' or 'pageY' according to scrollbar axis\r\n  protected abstract get pageProperty(): string;\r\n\r\n  // Returns either 'clientHeight' or 'clientWidth' according to scrollbar axis\r\n  protected abstract get clientProperty(): string;\r\n\r\n  abstract get dragStartOffset(): number;\r\n\r\n  // Returns thumb size, clientHeight or clientWidth\r\n  abstract get size(): number;\r\n\r\n  protected abstract get viewportScrollSize(): number;\r\n\r\n  protected abstract get viewportScrollOffset(): number;\r\n\r\n  abstract get viewportScrollMax(): number;\r\n\r\n  get trackMax(): number {\r\n    return this.track!.size - this.size;\r\n  }\r\n\r\n  // Get thumb client rect\r\n  get clientRect(): DOMRect {\r\n    return this.thumbElement.getBoundingClientRect();\r\n  }\r\n\r\n  // Stream that emits when scrollbar thumb is clicked\r\n  get clicked(): Observable<MouseEvent> {\r\n    return fromEvent<MouseEvent>(this.thumbElement, 'mousedown', { passive: true }).pipe(stopPropagation());\r\n  }\r\n\r\n  protected constructor(protected cmp: NgScrollbarBase,\r\n                        protected track: TrackAdapter,\r\n                        protected thumbElement: HTMLElement,\r\n                        protected document: Document) {\r\n  }\r\n\r\n  // Calculate and update thumb position and size\r\n  update() {\r\n    const size = calculateThumbSize(this.track!.size, this.viewportScrollSize, this.cmp.minThumbSize!);\r\n    const position = calculateThumbPosition(this.viewportScrollOffset, this.viewportScrollMax, this.trackMax);\r\n    animationFrameScheduler.schedule(() => this.updateStyles(this.handleDirection(position, this.trackMax), size));\r\n  }\r\n\r\n  /**\r\n   * Stream that emits the 'scrollTo' position when a scrollbar thumb element is dragged\r\n   * This function is called by thumb drag event using viewport or scrollbar pointer events\r\n   */\r\n  dragged(event: MouseEvent): Observable<number> {\r\n    let trackMaxStart: number;\r\n    let scrollMaxStart: number;\r\n\r\n    const dragStart: Observable<MouseEvent> = of<MouseEvent>(event).pipe(\r\n      preventSelection(this.document),\r\n      tap(() => {\r\n        // Capture scrollMax and trackMax once\r\n        trackMaxStart = this.trackMax;\r\n        scrollMaxStart = this.viewportScrollMax;\r\n        this.setDragging(true);\r\n      }),\r\n    );\r\n\r\n    const dragging: Observable<MouseEvent> = fromEvent<MouseEvent>(this.document, 'mousemove', { capture: true, passive: true }).pipe(stopPropagation());\r\n\r\n    const dragEnd: Observable<MouseEvent> = fromEvent<MouseEvent>(this.document, 'mouseup', { capture: true }).pipe(\r\n      stopPropagation(),\r\n      enableSelection(this.document),\r\n      tap(() => this.setDragging(false))\r\n    );\r\n\r\n    return dragStart.pipe(\r\n      map((e: MouseEvent) => e[this.pageProperty]),\r\n      map((pageOffset: number) => pageOffset - this.dragStartOffset),\r\n      mergeMap((mouseDownOffset: number) => dragging.pipe(\r\n        map((e: MouseEvent) => e[this.clientProperty]),\r\n        // Calculate how far the pointer is from the top/left of the scrollbar (minus the dragOffset).\r\n        map((mouseOffset: number) => mouseOffset - this.track!.offset),\r\n        map((offset: number) => scrollMaxStart * (offset - mouseDownOffset) / trackMaxStart),\r\n        map((position: number) => this.handleDrag(position, scrollMaxStart)),\r\n        tap((position: number) => this.scrollTo(position)),\r\n        takeUntil(dragEnd)\r\n      ))\r\n    );\r\n  }\r\n\r\n  // Set dragging state\r\n  protected abstract setDragging(value: boolean): void;\r\n\r\n  // Scroll viewport instantly\r\n  protected abstract scrollTo(position: number): void;\r\n\r\n  // Update thumb element size and position\r\n  protected abstract updateStyles(position: number, size: number): void;\r\n\r\n  // Handle dragging position (Support LTR and RTL directions for the horizontal scrollbar)\r\n  protected abstract handleDrag(position: number, scrollMax?: number): number;\r\n\r\n  // Handle scrolling position (Support LTR and RTL directions for the horizontal scrollbar)\r\n  protected abstract handleDirection(position: number, scrollMax?: number): number;\r\n}\r\n\r\n/**\r\n * Calculate scrollbar thumb size\r\n */\r\nfunction calculateThumbSize(trackSize: number, contentSize: number, minThumbSize: number): number {\r\n  const scrollbarRatio = trackSize / contentSize;\r\n  const thumbSize = scrollbarRatio * trackSize;\r\n  return Math.max(~~thumbSize, minThumbSize);\r\n}\r\n\r\n/**\r\n * Calculate scrollbar thumb position\r\n */\r\nfunction calculateThumbPosition(scrollPosition: number, scrollMax: number, trackMax: number): number {\r\n  return scrollPosition * trackMax / scrollMax;\r\n}\r\n","import { Directive, Inject, ElementRef } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { RtlScrollAxisType } from '@angular/cdk/platform';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { ThumbAdapter } from './thumb';\r\nimport { TrackXDirective, TrackYDirective } from '../track/track.directive';\r\nimport { NgScrollbarBase } from '../../ng-scrollbar-base';\r\n\r\n@Directive({\r\n  selector: '[scrollbarThumbX]',\r\n  standalone: true\r\n})\r\nexport class ThumbXDirective extends ThumbAdapter {\r\n\r\n  protected get clientProperty(): string {\r\n    return 'clientX';\r\n  }\r\n\r\n  protected get pageProperty(): string {\r\n    return 'pageX';\r\n  }\r\n\r\n  protected get viewportScrollSize(): number {\r\n    return this.cmp.viewport!.scrollWidth;\r\n  }\r\n\r\n  protected get viewportScrollOffset(): number {\r\n    return this.cmp.viewport!.scrollLeft;\r\n  }\r\n\r\n  get viewportScrollMax(): number {\r\n    return this.cmp.viewport!.scrollMaxX;\r\n  }\r\n\r\n  get dragStartOffset(): number {\r\n    return this.clientRect.left + this.document.defaultView!.pageXOffset || 0;\r\n  }\r\n\r\n  get size(): number {\r\n    return this.thumbElement.clientWidth;\r\n  }\r\n\r\n  constructor(protected override cmp: NgScrollbarBase,\r\n              protected override track: TrackXDirective,\r\n              protected element: ElementRef,\r\n              @Inject(DOCUMENT) protected override document: Document,\r\n              protected dir: Directionality) {\r\n    super(cmp, track, element.nativeElement, document);\r\n  }\r\n\r\n  protected updateStyles(position: number, size: number) {\r\n    this.thumbElement.style.width = `${ size }px`;\r\n    this.thumbElement.style.transform = `translate3d(${ position }px, 0, 0)`;\r\n  }\r\n\r\n  protected handleDrag(position: number, scrollMax: number): number {\r\n    if (this.dir.value === 'rtl') {\r\n      if (this.cmp.manager.rtlScrollAxisType === RtlScrollAxisType.NEGATED) {\r\n        return position - scrollMax;\r\n      }\r\n      if (this.cmp.manager.rtlScrollAxisType === RtlScrollAxisType.INVERTED) {\r\n        return scrollMax - position;\r\n      }\r\n      // Keeping this as a memo\r\n      // if (this.rtlScrollAxisType === RtlScrollAxisType.NORMAL) {\r\n      //   return position;\r\n      // }\r\n    }\r\n    return position;\r\n  }\r\n\r\n  protected handleDirection(position: number, trackMax: number): number {\r\n    if (this.dir.value === 'rtl') {\r\n      if (this.cmp.manager.rtlScrollAxisType === RtlScrollAxisType.INVERTED) {\r\n        return -position;\r\n      }\r\n      if (this.cmp.manager.rtlScrollAxisType === RtlScrollAxisType.NORMAL) {\r\n        return position - trackMax;\r\n      }\r\n      // Keeping this as a memo\r\n      // if (this.rtlScrollAxisType === RtlScrollAxisType.NEGATED) {\r\n      //   return position;\r\n      // }\r\n    }\r\n    return position;\r\n  }\r\n\r\n  protected setDragging(value: boolean): void {\r\n    this.cmp.setDragging({ horizontalDragging: value });\r\n  }\r\n\r\n  protected scrollTo(position: number): void {\r\n    this.cmp.viewport!.scrollXTo(position);\r\n  }\r\n}\r\n\r\n@Directive({\r\n  selector: '[scrollbarThumbY]',\r\n  standalone: true\r\n})\r\nexport class ThumbYDirective extends ThumbAdapter {\r\n\r\n  protected get pageProperty(): string {\r\n    return 'pageY';\r\n  }\r\n\r\n  protected get viewportScrollSize(): number {\r\n    return this.cmp.viewport!.scrollHeight;\r\n  }\r\n\r\n  protected get viewportScrollOffset(): number {\r\n    return this.cmp.viewport!.scrollTop;\r\n  }\r\n\r\n  get viewportScrollMax(): number {\r\n    return this.cmp.viewport!.scrollMaxY;\r\n  }\r\n\r\n  protected get clientProperty(): string {\r\n    return 'clientY';\r\n  }\r\n\r\n  get dragStartOffset(): number {\r\n    return this.clientRect.top + this.document.defaultView!.pageYOffset || 0;\r\n  }\r\n\r\n  get size(): number {\r\n    return this.thumbElement.clientHeight;\r\n  }\r\n\r\n  constructor(protected override cmp: NgScrollbarBase,\r\n              protected override track: TrackYDirective,\r\n              protected element: ElementRef,\r\n              @Inject(DOCUMENT) protected override document: Document) {\r\n    super(cmp, track, element.nativeElement, document);\r\n  }\r\n\r\n\r\n  protected updateStyles(position: number, size: number): void {\r\n    this.thumbElement.style.height = `${ size }px`;\r\n    this.thumbElement.style.transform = `translate3d(0px, ${ position }px, 0)`;\r\n  }\r\n\r\n  protected handleDrag(position: number): number {\r\n    return position;\r\n  }\r\n\r\n  protected handleDirection(position: number): number {\r\n    return position;\r\n  }\r\n\r\n  protected setDragging(value: boolean): void {\r\n    this.cmp.setDragging({ verticalDragging: value });\r\n  }\r\n\r\n  protected scrollTo(position: number): void {\r\n    this.cmp.viewport!.scrollYTo(position);\r\n  }\r\n}\r\n","import { OnDestroy, OnInit, NgZone, Directive } from '@angular/core';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { Observable, Subject, fromEvent, merge, distinctUntilChanged, map, switchMap, takeUntil, tap } from 'rxjs';\r\nimport { NgScrollbarBase } from '../ng-scrollbar-base';\r\nimport { ThumbAdapter } from './thumb/thumb';\r\nimport { TrackAdapter } from './track/track';\r\nimport { isWithinBounds, stopPropagation } from './common';\r\n\r\n// @dynamic\r\n@Directive()\r\nexport abstract class Scrollbar implements OnInit, OnDestroy {\r\n\r\n  // Thumb directive reference\r\n  readonly thumb: ThumbAdapter | undefined;\r\n  // Track directive reference\r\n  readonly track: TrackAdapter | undefined;\r\n  // Stream that emits to unsubscribe from all streams\r\n  protected readonly destroyed = new Subject<void>();\r\n\r\n  /**\r\n   * Viewport pointer events\r\n   * The following streams are only activated when (pointerEventsMethod === 'viewport')\r\n   */\r\n  protected viewportTrackClicked!: Subject<MouseEvent>;\r\n  protected viewportThumbClicked!: Subject<MouseEvent>;\r\n\r\n  protected abstract get viewportScrollSize(): number;\r\n\r\n  protected constructor(protected el: HTMLElement,\r\n                        public cmp: NgScrollbarBase,\r\n                        protected platform: Platform,\r\n                        protected document: Document,\r\n                        protected zone: NgZone) {\r\n  }\r\n\r\n  /**\r\n   * Activate scrollbar pointer events\r\n   */\r\n  private activatePointerEvents(): Observable<unknown> {\r\n    // Stream that emits when scrollbar thumb is dragged\r\n    let thumbDragEvent: Observable<MouseEvent>;\r\n    // Stream that emits when scrollbar track is clicked\r\n    let trackClickEvent: Observable<MouseEvent>;\r\n    // Stream that emits when scrollbar track is hovered\r\n    let trackHoveredEvent: Observable<boolean>;\r\n\r\n    // Set the method used for the pointer events option\r\n    if (this.cmp.pointerEventsMethod === 'viewport') {\r\n      // Pointer events using the viewport\r\n      this.viewportTrackClicked = new Subject<MouseEvent>();\r\n      this.viewportThumbClicked = new Subject<MouseEvent>();\r\n\r\n      // Activate the pointer events of the viewport directive\r\n      this.cmp.viewport!.activatePointerEvents(this.cmp.viewportPropagateMouseMove, this.destroyed);\r\n\r\n      // Set streams\r\n      thumbDragEvent = this.viewportThumbClicked;\r\n      trackClickEvent = this.viewportTrackClicked;\r\n      trackHoveredEvent = this.cmp.viewport!.hovered.pipe(\r\n        // Check if track is hovered\r\n        map((e: MouseEvent | false) => e ? isWithinBounds(e, this.el.getBoundingClientRect()) : false),\r\n        distinctUntilChanged(),\r\n        // Enable / disable text selection\r\n        tap((hovered: boolean) => this.document.onselectstart = hovered ? () => false : null)\r\n      );\r\n\r\n      this.cmp.viewport!.clicked.pipe(\r\n        tap((e: MouseEvent | false) => {\r\n          if (e) {\r\n            if (isWithinBounds(e, this.thumb!.clientRect)) {\r\n              this.viewportThumbClicked.next(e);\r\n            } else if (isWithinBounds(e, this.track!.clientRect)) {\r\n              this.cmp.setClicked(true);\r\n              this.viewportTrackClicked.next(e);\r\n            }\r\n          } else {\r\n            this.cmp.setClicked(false);\r\n          }\r\n        }),\r\n        takeUntil(this.destroyed)\r\n      ).subscribe();\r\n    } else {\r\n      // Pointer events method is using 'scrollbar'\r\n      thumbDragEvent = this.thumb!.clicked;\r\n      trackClickEvent = this.track!.clicked;\r\n      trackHoveredEvent = this.hovered;\r\n    }\r\n\r\n    return merge(\r\n      // Activate scrollbar hovered event\r\n      trackHoveredEvent.pipe(tap((e: boolean) => this.setHovered(e))),\r\n      // Activate scrollbar thumb drag event\r\n      thumbDragEvent.pipe(switchMap((e: MouseEvent) => this.thumb!.dragged(e))),\r\n      // Activate scrollbar track click event\r\n      trackClickEvent.pipe(switchMap((e: MouseEvent) => this.track!.onTrackClicked(e, this.thumb!.size, this.viewportScrollSize)))\r\n    );\r\n  }\r\n\r\n  // Stream that emits when the track element is hovered\r\n  protected get hovered(): Observable<boolean> {\r\n    const mouseEnter = fromEvent<MouseEvent>(this.el, 'mouseenter', { passive: true }).pipe(\r\n      stopPropagation(),\r\n      map(() => true)\r\n    );\r\n    const mouseLeave = fromEvent<MouseEvent>(this.el, 'mouseleave', { passive: true }).pipe(\r\n      stopPropagation(),\r\n      map(() => false)\r\n    );\r\n    return merge(mouseEnter, mouseLeave);\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.zone.runOutsideAngular(() => {\r\n      // Activate pointer events on Desktop only\r\n      if (!(this.platform.IOS || this.platform.ANDROID) && !this.cmp.pointerEventsDisabled) {\r\n        this.activatePointerEvents().pipe(takeUntil(this.destroyed)).subscribe();\r\n      }\r\n\r\n      // Update scrollbar thumb when viewport is scrolled and when scrollbar component is updated\r\n      merge(this.cmp.scrolled, this.cmp.updated).pipe(\r\n        tap(() => this.thumb?.update()),\r\n        takeUntil(this.destroyed)\r\n      ).subscribe();\r\n    });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.destroyed.next();\r\n    this.destroyed.complete();\r\n\r\n    // Clean up viewport streams if used\r\n    if (this.viewportThumbClicked && this.viewportTrackClicked) {\r\n      this.viewportTrackClicked.complete();\r\n      this.viewportThumbClicked.complete();\r\n    }\r\n  }\r\n\r\n  protected abstract setHovered(value: boolean): void;\r\n}\r\n","import { Component, Inject, NgZone, ChangeDetectionStrategy, ElementRef, ViewChild } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { TrackXDirective, TrackYDirective } from './track/track.directive';\r\nimport { ThumbXDirective, ThumbYDirective } from './thumb/thumb.directive';\r\nimport { NgScrollbarBase } from '../ng-scrollbar-base';\r\nimport { Scrollbar } from './scrollbar';\r\n\r\n@Component({\r\n  selector: 'scrollbar-y',\r\n  host: { '[class.scrollbar-control]': 'true' },\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  styleUrls: ['./vertical.scss'],\r\n  template: `\r\n    <div scrollbarTrackY class=\"ng-scrollbar-track {{cmp.trackClass}}\">\r\n      <div scrollbarThumbY class=\"ng-scrollbar-thumb {{cmp.thumbClass}}\"></div>\r\n    </div>\r\n  `,\r\n  standalone: true,\r\n  imports: [TrackYDirective, ThumbYDirective]\r\n})\r\nexport class ScrollbarY extends Scrollbar {\r\n\r\n  @ViewChild(TrackYDirective, { static: true }) override readonly track: TrackYDirective | undefined;\r\n  @ViewChild(ThumbYDirective, { static: true }) override readonly thumb: ThumbYDirective | undefined;\r\n\r\n  protected get viewportScrollSize(): number {\r\n    return this.cmp.viewport!.scrollHeight;\r\n  }\r\n\r\n  constructor(el: ElementRef,\r\n    public override cmp: NgScrollbarBase,\r\n    protected override platform: Platform,\r\n    @Inject(DOCUMENT) protected override document: Document,\r\n    protected override zone: NgZone) {\r\n    super(el.nativeElement, cmp, platform, document, zone);\r\n  }\r\n\r\n  protected setHovered(value: boolean): void {\r\n    this.cmp.setHovered({ verticalHovered: value });\r\n  }\r\n}\r\n\r\n@Component({\r\n  selector: 'scrollbar-x',\r\n  host: { '[class.scrollbar-control]': 'true' },\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  styleUrls: ['./horizontal.scss'],\r\n  template: `\r\n    <div scrollbarTrackX class=\"ng-scrollbar-track {{cmp.trackClass}}\">\r\n      <div scrollbarThumbX class=\"ng-scrollbar-thumb {{cmp.thumbClass}}\"></div>\r\n    </div>\r\n  `,\r\n  standalone: true,\r\n  imports: [TrackXDirective, ThumbXDirective]\r\n})\r\nexport class ScrollbarX extends Scrollbar {\r\n\r\n  @ViewChild(TrackXDirective, { static: true }) override readonly track: TrackXDirective | undefined;\r\n  @ViewChild(ThumbXDirective, { static: true }) override readonly thumb: ThumbXDirective | undefined;\r\n\r\n  protected get viewportScrollSize(): number {\r\n    return this.cmp.viewport!.scrollWidth;\r\n  }\r\n\r\n  constructor(el: ElementRef,\r\n    public override cmp: NgScrollbarBase,\r\n    protected override platform: Platform,\r\n    @Inject(DOCUMENT) protected override document: Document,\r\n    protected override zone: NgZone) {\r\n    super(el.nativeElement, cmp, platform, document, zone);\r\n  }\r\n\r\n  protected setHovered(value: boolean): void {\r\n    this.cmp.setHovered({ horizontalHovered: value });\r\n  }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport type ScrollbarAppearance = 'standard' | 'compact';\r\nexport type ScrollbarTrack = 'vertical' | 'horizontal' | 'all';\r\nexport type ScrollbarVisibility = 'hover' | 'always' | 'native';\r\nexport type ScrollbarPosition = 'native' | 'invertY' | 'invertX' | 'invertAll';\r\nexport type ScrollbarPointerEventsMethod = 'viewport' | 'scrollbar';\r\n\r\nexport const NG_SCROLLBAR_OPTIONS = new InjectionToken<NgScrollbarOptions>('NG_SCROLLBAR_OPTIONS');\r\n\r\nexport type NgScrollbarOptions = Partial<IScrollbarOptions>;\r\n\r\n/**\r\n * The following interface is meant to be used internally to ensure that the properties are not undefined (for strict mode)\r\n */\r\nexport interface IScrollbarOptions {\r\n  /**\r\n   * Sets the scroll axis of the viewport, there are 3 options:\r\n   *\r\n   * - `vertical` Use both vertical and horizontal scrollbar-control\r\n   * - `horizontal` Use both vertical and horizontal scrollbar-control\r\n   * - `all` Use both vertical and horizontal scrollbar-control\r\n   */\r\n  track: ScrollbarTrack;\r\n  /**\r\n   * When to show the scrollbar, and there are 3 options:\r\n   *\r\n   * - `native` (default) Scrollbar will be visible when viewport is scrollable like with native scrollbar-control\r\n   * - `hover` Scrollbars are hidden by default, only visible on scrolling or hovering\r\n   * - `always` Scrollbars are always shown even if the viewport is not scrollable\r\n   */\r\n  visibility: ScrollbarVisibility;\r\n  /**\r\n   *  Sets the appearance of the scrollbar, there are 2 options:\r\n   *\r\n   * - `standard` (default) scrollbar space will be reserved just like with native scrollbar-control.\r\n   * - `compact` scrollbar doesn't reserve any space, they are placed over the viewport.\r\n   */\r\n  appearance: ScrollbarAppearance;\r\n  /**\r\n   * Sets the position of each scrollbar, there are 4 options:\r\n   *\r\n   * - `native` (Default) Use the default position like in native scrollbar-control.\r\n   * - `invertY` Inverts vertical scrollbar position\r\n   * - `invertX` Inverts Horizontal scrollbar position\r\n   * - `invertAll` Inverts both scrollbar-control positions\r\n   */\r\n  position: ScrollbarPosition;\r\n  /**\r\n   * Sets the pointer events method\r\n   * Use viewport pointer events  to handle dragging and track click (This makes scrolling work when mouse is over the scrollbar)\r\n   * Use scrollbar pointer events to handle dragging and track click\r\n   */\r\n  pointerEventsMethod: ScrollbarPointerEventsMethod;\r\n  /** A class forwarded to scrollable viewport element */\r\n  viewClass: string;\r\n  /** A class forwarded to the scrollbar track element */\r\n  trackClass: string;\r\n  /** A class forwarded to the scrollbar thumb element */\r\n  thumbClass: string;\r\n  /** The minimum scrollbar thumb size in px */\r\n  minThumbSize: number;\r\n  /** The duration which the scrolling takes to reach its target when scrollbar rail is clicked */\r\n  trackClickScrollDuration: number;\r\n  /** A flag used to enable/disable the scrollbar pointer events */\r\n  pointerEventsDisabled: boolean;\r\n  /** Debounce interval for detecting changes via window.resize event */\r\n  windowResizeDebounce: number;\r\n  /** Debounce interval for detecting changes via ResizeObserver */\r\n  sensorDebounce: number;\r\n  /** Whether ResizeObserver is disabled */\r\n  sensorDisabled: boolean;\r\n  /** Disable auto-height */\r\n  autoHeightDisabled: boolean;\r\n  /** Disable auto-width */\r\n  autoWidthDisabled: boolean;\r\n  /** Scroll Audit Time */\r\n  scrollAuditTime: number;\r\n  /** Enable viewport mousemove event propagation (only when pointerEventsMethod=\"viewport\") */\r\n  viewportPropagateMouseMove: boolean;\r\n}\r\n\r\n/**\r\n * Set of attributes added on the scrollbar wrapper\r\n */\r\nexport interface NgScrollbarState {\r\n  position?: ScrollbarPosition;\r\n  track?: ScrollbarTrack;\r\n  appearance?: ScrollbarAppearance;\r\n  visibility?: ScrollbarVisibility;\r\n  deactivated?: boolean;\r\n  pointerEventsMethod?: ScrollbarPointerEventsMethod;\r\n  dir?: 'rtl' | 'ltr';\r\n  verticalUsed?: boolean;\r\n  horizontalUsed?: boolean;\r\n  isVerticallyScrollable?: boolean;\r\n  isHorizontallyScrollable?: boolean;\r\n  verticalHovered?: boolean;\r\n  horizontalHovered?: boolean;\r\n  verticalDragging?: boolean;\r\n  horizontalDragging?: boolean;\r\n  // Flag used to prevent text selection on content\r\n  scrollbarClicked?: boolean;\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport { getRtlScrollAxisType, RtlScrollAxisType } from '@angular/cdk/platform';\r\nimport { IScrollbarOptions, NG_SCROLLBAR_OPTIONS, NgScrollbarOptions } from '../ng-scrollbar.model';\r\n\r\nconst defaultOptions: IScrollbarOptions = {\r\n  viewClass: '',\r\n  trackClass: '',\r\n  thumbClass: '',\r\n  track: 'vertical',\r\n  appearance: 'compact',\r\n  visibility: 'native',\r\n  position: 'native',\r\n  pointerEventsMethod: 'viewport',\r\n  trackClickScrollDuration: 300,\r\n  minThumbSize: 20,\r\n  windowResizeDebounce: 0,\r\n  sensorDebounce: 0,\r\n  scrollAuditTime: 0,\r\n  viewportPropagateMouseMove: true,\r\n  autoHeightDisabled: true,\r\n  autoWidthDisabled: true,\r\n  sensorDisabled: false,\r\n  pointerEventsDisabled: false\r\n};\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ScrollbarManager {\r\n  readonly globalOptions: IScrollbarOptions;\r\n\r\n  readonly rtlScrollAxisType: RtlScrollAxisType;\r\n\r\n  constructor(@Optional() @Inject(NG_SCROLLBAR_OPTIONS) options: NgScrollbarOptions) {\r\n    this.globalOptions = options ? { ...defaultOptions, ...options } : defaultOptions;\r\n\r\n    this.rtlScrollAxisType = getRtlScrollAxisType();\r\n  }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { BehaviorSubject, Observable, fromEvent, debounceTime, tap, distinctUntilChanged, map } from 'rxjs';\r\nimport { ScrollbarManager } from '../utils/scrollbar-manager';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NativeScrollbarSizeFactory {\r\n  private readonly _scrollbarSize = new BehaviorSubject<number>(this.getNativeScrollbarSize());\r\n  scrollbarSize: Observable<number> = this._scrollbarSize.asObservable();\r\n\r\n  constructor(@Inject(DOCUMENT) private document: Document,\r\n              private manager: ScrollbarManager,\r\n              private platform: Platform) {\r\n    // Calculate native scrollbar size on window resize event, because the size changes if use zoomed in/out\r\n    if (platform.isBrowser) {\r\n      fromEvent(this.document.defaultView, 'resize', { passive: true }).pipe(\r\n        debounceTime(this.manager.globalOptions.windowResizeDebounce),\r\n        map(() => this.getNativeScrollbarSize()),\r\n        distinctUntilChanged(),\r\n        tap((size: number) => this._scrollbarSize.next(size))\r\n      ).subscribe();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Get native scrollbar size\r\n   */\r\n  private getNativeScrollbarSize(): number {\r\n    // Avoid executing browser code in server side rendering\r\n    if (!this.platform.isBrowser) {\r\n      return 0;\r\n    }\r\n    // Hide iOS browsers native scrollbar\r\n    if (this.platform.IOS) {\r\n      return 6;\r\n    }\r\n    const box = this.document.createElement('div');\r\n    box.className = 'ng-scrollbar-measure';\r\n    box.style.left = '0px';\r\n    box.style.overflow = 'scroll';\r\n    box.style.position = 'fixed';\r\n    box.style.top = '-9999px';\r\n    this.document.body.appendChild(box);\r\n    const size = box.getBoundingClientRect().right;\r\n    this.document.body.removeChild(box);\r\n    return size;\r\n  }\r\n}\r\n","import { Directive, ElementRef, Renderer2, RendererStyleFlags2, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { NativeScrollbarSizeFactory } from './native-scrollbar-size-factory';\r\n\r\n@Directive({\r\n  selector: '[hideNativeScrollbar]',\r\n  standalone: true\r\n})\r\nexport class HideNativeScrollbar implements OnDestroy {\r\n\r\n  private readonly _subscriber: Subscription = Subscription.EMPTY;\r\n\r\n  constructor(el: ElementRef,\r\n              private renderer: Renderer2,\r\n              private hideNativeScrollbar: NativeScrollbarSizeFactory) {\r\n    this._subscriber = hideNativeScrollbar.scrollbarSize.subscribe((size: number) => {\r\n      this.renderer.setStyle(el.nativeElement, '--native-scrollbar-size', `-${ size }px`, RendererStyleFlags2.DashCase);\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._subscriber.unsubscribe();\r\n  }\r\n}\r\n","import { Directive, Input, Output, EventEmitter, AfterContentInit, OnDestroy, NgZone } from '@angular/core';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\r\nimport { Observable, Subscription, Observer, debounceTime } from 'rxjs';\r\nimport { NgScrollbarBase } from '../ng-scrollbar-base';\r\n\r\n/*\r\n * Source code: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/resize-observer-browser\r\n * The package was not included from npm because its usage is /// <reference types=\"resize-observer-browser\"/>\r\n * And that usage was causing an interface conflicts with some libraries\r\n */\r\ninterface ResizeObserverOptions {\r\n  /**\r\n   * Sets which box model the observer will observe changes to. Possible values\r\n   * are `content-box` (the default), and `border-box`.\r\n   */\r\n  box?: 'content-box' | 'border-box';\r\n}\r\n\r\ninterface ResizeObserverSize {\r\n  readonly inlineSize: number;\r\n  readonly blockSize: number;\r\n}\r\n\r\ndeclare class ResizeObserver {\r\n  constructor(callback: ResizeObserverCallback);\r\n  disconnect(): void;\r\n  observe(target: Element, options?: ResizeObserverOptions): void;\r\n  unobserve(target: Element): void;\r\n}\r\n\r\ntype ResizeObserverCallback = (entries: ReadonlyArray<ResizeObserverEntry>, observer: ResizeObserver) => void;\r\n\r\ninterface ResizeObserverEntry {\r\n  readonly target: Element;\r\n  readonly contentRect: DOMRectReadOnly;\r\n  readonly borderBoxSize?: ReadonlyArray<ResizeObserverSize>;\r\n  readonly contentBoxSize?: ReadonlyArray<ResizeObserverSize>;\r\n  readonly devicePixelContentBoxSize?: ReadonlyArray<ResizeObserverSize>;\r\n}\r\n\r\n@Directive({\r\n    selector: '[resizeSensor]',\r\n    standalone: true\r\n})\r\nexport class ResizeSensor implements AfterContentInit, OnDestroy {\r\n\r\n  /** Debounce interval for emitting the changes. */\r\n  @Input('sensorDebounce')\r\n  get debounce(): number | undefined {\r\n    return this._debounce;\r\n  }\r\n\r\n  set debounce(value: number | undefined) {\r\n    this._debounce = coerceNumberProperty(value);\r\n    this._subscribe();\r\n  }\r\n\r\n  private _debounce: number | undefined;\r\n\r\n  /** Whether ResizeObserver is disabled. */\r\n  @Input('sensorDisabled')\r\n  get disabled() {\r\n    return this._disabled;\r\n  }\r\n\r\n  set disabled(value: any) {\r\n    this._disabled = coerceBooleanProperty(value);\r\n    this._disabled ? this._unsubscribe() : this._subscribe();\r\n  }\r\n\r\n  private _disabled: boolean = false;\r\n\r\n  private _currentSubscription: Subscription | null = null;\r\n  private _resizeObserver!: ResizeObserver;\r\n\r\n  @Output('resizeSensor') event = new EventEmitter<ReadonlyArray<ResizeObserverEntry>>();\r\n\r\n  constructor(private zone: NgZone,\r\n              private platform: Platform,\r\n              private scrollbar: NgScrollbarBase) {\r\n    if (!scrollbar) {\r\n      throw new Error('[NgScrollbar Resize Sensor Directive]: Host element must be an NgScrollbar component.');\r\n    }\r\n  }\r\n\r\n  ngAfterContentInit() {\r\n    if (!this._currentSubscription && !this._disabled) {\r\n      this._subscribe();\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._unsubscribe();\r\n  }\r\n\r\n  private _subscribe() {\r\n    this._unsubscribe();\r\n\r\n    if (this.platform.isBrowser) {\r\n\r\n      const stream = new Observable((observer: Observer<ReadonlyArray<ResizeObserverEntry>>) => {\r\n        this._resizeObserver = new ResizeObserver((e: ReadonlyArray<ResizeObserverEntry>) => observer.next(e));\r\n        this._resizeObserver.observe(this.scrollbar.viewport.nativeElement);\r\n        if (this.scrollbar.viewport.contentWrapperElement) {\r\n          this._resizeObserver.observe(this.scrollbar.viewport.contentWrapperElement);\r\n        }\r\n      });\r\n\r\n      this.zone.runOutsideAngular(() => {\r\n        this._currentSubscription = (this._debounce ? stream.pipe(debounceTime(this._debounce)) : stream).subscribe(this.event);\r\n      });\r\n    }\r\n  }\r\n\r\n  private _unsubscribe() {\r\n    this._resizeObserver?.disconnect();\r\n    this._currentSubscription?.unsubscribe();\r\n  }\r\n}\r\n","/**\r\n * https://github.com/gre/bezier-easing\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n */\r\n\r\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\r\nconst NEWTON_ITERATIONS = 4;\r\nconst NEWTON_MIN_SLOPE = 0.001;\r\nconst SUBDIVISION_PRECISION = 0.0000001;\r\nconst SUBDIVISION_MAX_ITERATIONS = 10;\r\n\r\nconst kSplineTableSize = 11;\r\nconst kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\r\n\r\nconst float32ArraySupported = typeof Float32Array === 'function';\r\n\r\nfunction A(aA1, aA2) {\r\n  return 1.0 - 3.0 * aA2 + 3.0 * aA1;\r\n}\r\n\r\nfunction B(aA1, aA2) {\r\n  return 3.0 * aA2 - 6.0 * aA1;\r\n}\r\n\r\nfunction C(aA1) {\r\n  return 3.0 * aA1;\r\n}\r\n\r\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\r\nfunction calcBezier(aT, aA1, aA2) {\r\n  return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\r\n}\r\n\r\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\r\nfunction getSlope(aT, aA1, aA2) {\r\n  return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\r\n}\r\n\r\nfunction binarySubdivide(aX, aA, aB, mX1, mX2) {\r\n  let currentX, currentT, i = 0;\r\n  do {\r\n    currentT = aA + (aB - aA) / 2.0;\r\n    currentX = calcBezier(currentT, mX1, mX2) - aX;\r\n    if (currentX > 0.0) {\r\n      aB = currentT;\r\n    } else {\r\n      aA = currentT;\r\n    }\r\n  } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\r\n  return currentT;\r\n}\r\n\r\nfunction newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\r\n  for (let i = 0; i < NEWTON_ITERATIONS; ++i) {\r\n    let currentSlope = getSlope(aGuessT, mX1, mX2);\r\n    if (currentSlope === 0.0) {\r\n      return aGuessT;\r\n    }\r\n    let currentX = calcBezier(aGuessT, mX1, mX2) - aX;\r\n    aGuessT -= currentX / currentSlope;\r\n  }\r\n  return aGuessT;\r\n}\r\n\r\nfunction LinearEasing(x) {\r\n  return x;\r\n}\r\n\r\nexport default function bezier(mX1, mY1, mX2, mY2) {\r\n  if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\r\n    throw new Error('bezier x values must be in [0, 1] range');\r\n  }\r\n\r\n  if (mX1 === mY1 && mX2 === mY2) {\r\n    return LinearEasing;\r\n  }\r\n\r\n  // Precompute samples table\r\n  let sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\r\n  for (let i = 0; i < kSplineTableSize; ++i) {\r\n    sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\r\n  }\r\n\r\n  function getTForX(aX) {\r\n    let intervalStart = 0.0;\r\n    let currentSample = 1;\r\n    let lastSample = kSplineTableSize - 1;\r\n\r\n    for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\r\n      intervalStart += kSampleStepSize;\r\n    }\r\n    --currentSample;\r\n\r\n    // Interpolate to provide an initial guess for t\r\n    let dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\r\n    let guessForT = intervalStart + dist * kSampleStepSize;\r\n\r\n    let initialSlope = getSlope(guessForT, mX1, mX2);\r\n    if (initialSlope >= NEWTON_MIN_SLOPE) {\r\n      return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\r\n    } else if (initialSlope === 0.0) {\r\n      return guessForT;\r\n    } else {\r\n      return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\r\n    }\r\n  }\r\n\r\n  return function BezierEasing(x) {\r\n    // Because JavaScript number are imprecise, we should guarantee the extremes are right.\r\n    if (x === 0) {\r\n      return 0;\r\n    }\r\n    if (x === 1) {\r\n      return 1;\r\n    }\r\n    return calcBezier(getTForX(x), mY1, mY2);\r\n  };\r\n};\r\n","import { ElementRef, InjectionToken } from '@angular/core';\r\nimport { _Left, _Top, _XAxis, _YAxis } from '@angular/cdk/scrolling';\r\n\r\nexport const SMOOTH_SCROLL_OPTIONS = new InjectionToken<SmoothScrollOptions>('SMOOTH_SCROLL_OPTIONS');\r\n\r\nexport type SmoothScrollElement = HTMLElement | ElementRef<HTMLElement> | string;\r\n\r\nexport type SmoothScrollToOptions = _XAxis & _YAxis & SmoothScrollOptions;\r\n\r\nexport type SmoothScrollToElementOptions = _Top & _Left & SmoothScrollOptions;\r\n\r\nexport interface SmoothScrollOptions {\r\n  duration?: number;\r\n  easing?: BezierEasingOptions;\r\n}\r\n\r\nexport interface SmoothScrollStep {\r\n  scrollable: HTMLElement;\r\n  startTime: number;\r\n  startX: number;\r\n  startY: number;\r\n  x: number;\r\n  y: number;\r\n  duration: number;\r\n  easing: (k: number) => number;\r\n  currentX?: number;\r\n  currentY?: number;\r\n}\r\n\r\nexport interface BezierEasingOptions {\r\n  x1: number;\r\n  y1: number;\r\n  x2: number;\r\n  y2: number;\r\n}\r\n","import { ElementRef, Inject, Injectable, PLATFORM_ID, Optional } from '@angular/core';\r\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\r\nimport { coerceElement } from '@angular/cdk/coercion';\r\nimport { getRtlScrollAxisType, RtlScrollAxisType } from '@angular/cdk/platform';\r\nimport { _Bottom, _Left, _Right, _Top, _Without } from '@angular/cdk/scrolling';\r\nimport { Observable, Subject, Subscriber, animationFrameScheduler, fromEvent, merge, of, expand, finalize, take, takeUntil, takeWhile } from 'rxjs';\r\nimport BezierEasing from './bezier-easing';\r\nimport {\r\n  SMOOTH_SCROLL_OPTIONS,\r\n  SmoothScrollElement,\r\n  SmoothScrollStep,\r\n  SmoothScrollToElementOptions,\r\n  SmoothScrollToOptions\r\n} from './smooth-scroll.model';\r\n\r\n// @dynamic\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class SmoothScrollManager {\r\n\r\n  // Default options\r\n  private readonly _defaultOptions: SmoothScrollToOptions;\r\n\r\n  // Keeps track of the ongoing SmoothScroll functions so they can be handled in case of duplication.\r\n  // Each scrolled element gets a destroyer stream which gets deleted immediately after it completes.\r\n  // Purpose: If user called a scroll function again on the same element before the scrolls completes,\r\n  // it cancels the ongoing scroll and starts a new one\r\n  private _onGoingScrolls = new Map<HTMLElement, Subject<void>>();\r\n\r\n  private get _w(): Window {\r\n    return this._document.defaultView;\r\n  }\r\n\r\n  /**\r\n   * Timing method\r\n   */\r\n  private get _now() {\r\n    return this._w.performance && this._w.performance.now\r\n      ? this._w.performance.now.bind(this._w.performance)\r\n      : Date.now;\r\n  }\r\n\r\n  constructor(@Inject(DOCUMENT) private _document: Document,\r\n              @Inject(PLATFORM_ID) private _platform: object,\r\n              @Optional() @Inject(SMOOTH_SCROLL_OPTIONS) customDefaultOptions: SmoothScrollToOptions) {\r\n    this._defaultOptions = {\r\n      duration: 468,\r\n      easing: {\r\n        x1: 0.42,\r\n        y1: 0,\r\n        x2: 0.58,\r\n        y2: 1\r\n      },\r\n      ...customDefaultOptions,\r\n    };\r\n  }\r\n\r\n  /**\r\n   * changes scroll position inside an element\r\n   */\r\n  private _scrollElement(el: HTMLElement, x: number, y: number): void {\r\n    el.scrollLeft = x;\r\n    el.scrollTop = y;\r\n  }\r\n\r\n  /**\r\n   * Handles a given parameter of type HTMLElement, ElementRef or selector\r\n   */\r\n  private _getElement(el: HTMLElement | ElementRef | string, parent?: HTMLElement): HTMLElement {\r\n    if (typeof el === 'string') {\r\n      return (parent || this._document).querySelector(el);\r\n    }\r\n    return coerceElement<HTMLElement>(el);\r\n  }\r\n\r\n  /**\r\n   * Initializes a destroyer stream, re-initializes it if the element is already being scrolled\r\n   */\r\n  private _initSmoothScroll(el: HTMLElement): Subject<void> {\r\n    if (this._onGoingScrolls.has(el)) {\r\n      this._onGoingScrolls.get(el)!.next();\r\n    }\r\n    return this._onGoingScrolls.set(el, new Subject<void>())!.get(el)!;\r\n  }\r\n\r\n  /**\r\n   * Checks if smooth scroll has reached, cleans up the smooth scroll stream and resolves its promise\r\n   */\r\n  private _isFinished(context: SmoothScrollStep, destroyed: Subject<void>, resolve: () => void): boolean {\r\n    if (context.currentX !== context.x || context.currentY !== context.y) {\r\n      return true;\r\n    }\r\n    destroyed.next();\r\n    resolve();\r\n    return false;\r\n  }\r\n\r\n  /**\r\n   * Terminates an ongoing smooth scroll\r\n   */\r\n  private _interrupted(el: HTMLElement, destroyed: Subject<void>): Observable<Event | void> {\r\n    return merge(\r\n      fromEvent(el, 'wheel', { passive: true, capture: true }),\r\n      fromEvent(el, 'touchmove', { passive: true, capture: true }),\r\n      destroyed\r\n    ).pipe(take(1));\r\n  }\r\n\r\n  /**\r\n   * Deletes the destroyer function, runs if the smooth scroll has finished or interrupted\r\n   */\r\n  private _destroy(el: HTMLElement, destroyed: Subject<void>): void {\r\n    destroyed.complete();\r\n    this._onGoingScrolls.delete(el);\r\n  }\r\n\r\n  /**\r\n   * A function called recursively that, given a context, steps through scrolling\r\n   */\r\n  private _step(context: SmoothScrollStep): Observable<SmoothScrollStep> {\r\n    return new Observable((subscriber: Subscriber<SmoothScrollStep>) => {\r\n      let elapsed = (this._now() - context.startTime) / context.duration;\r\n\r\n      // avoid elapsed times higher than one\r\n      elapsed = elapsed > 1 ? 1 : elapsed;\r\n\r\n      // apply easing to elapsed time\r\n      const value = context.easing(elapsed);\r\n\r\n      context.currentX = context.startX + (context.x - context.startX) * value;\r\n      context.currentY = context.startY + (context.y - context.startY) * value;\r\n\r\n      this._scrollElement(context.scrollable, context.currentX, context.currentY);\r\n      // Proceed to the step\r\n      animationFrameScheduler.schedule(() => subscriber.next(context));\r\n    });\r\n  }\r\n\r\n  private _applyScrollToOptions(el: HTMLElement, options: SmoothScrollToOptions): Promise<void> {\r\n    if (!options.duration!) {\r\n      this._scrollElement(el, options!.left!, options!.top!);\r\n      return Promise.resolve();\r\n    }\r\n\r\n    // Initialize a destroyer stream, reinitialize it if the element is already being scrolled\r\n    const destroyed: Subject<void> = this._initSmoothScroll(el);\r\n\r\n    const context: SmoothScrollStep = {\r\n      scrollable: el,\r\n      startTime: this._now(),\r\n      startX: el.scrollLeft,\r\n      startY: el.scrollTop,\r\n      x: options.left == null ? el.scrollLeft : ~~options.left,\r\n      y: options.top == null ? el.scrollTop : ~~options.top,\r\n      duration: options.duration!,\r\n      easing: BezierEasing(options.easing!.x1!, options.easing!.y1!, options.easing!.x2!, options.easing!.y2!)\r\n    };\r\n\r\n    return new Promise(resolve => {\r\n      // Scroll each step recursively\r\n      of(null).pipe(\r\n        expand(() => this._step(context).pipe(\r\n          takeWhile((currContext: SmoothScrollStep) => this._isFinished(currContext, destroyed, resolve))\r\n        )),\r\n        takeUntil(this._interrupted(el, destroyed)),\r\n        finalize(() => this._destroy(el, destroyed))\r\n      ).subscribe();\r\n    });\r\n  }\r\n\r\n\r\n  /**\r\n   * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo\r\n   * method, since browsers are not consistent about what scrollLeft means in RTL. For this method\r\n   * left and right always refer to the left and right side of the scrolling container irrespective\r\n   * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\r\n   * in an RTL context.\r\n   * @param scrollable element\r\n   * @param customOptions specified the offsets to scroll to.\r\n   */\r\n  scrollTo(scrollable: SmoothScrollElement, customOptions: SmoothScrollToOptions): Promise<void> {\r\n    if (isPlatformBrowser(this._platform)) {\r\n      const el = this._getElement(scrollable);\r\n      const isRtl = getComputedStyle(el).direction === 'rtl';\r\n      const rtlScrollAxisType = getRtlScrollAxisType();\r\n\r\n      const options: SmoothScrollToOptions = {\r\n        ...(this._defaultOptions as _Without<_Bottom & _Top>),\r\n        ...customOptions,\r\n        ...({\r\n          // Rewrite start & end offsets as right or left offsets.\r\n          left: customOptions.left == null ? (isRtl ? customOptions.end : customOptions.start) : customOptions.left,\r\n          right: customOptions.right == null ? (isRtl ? customOptions.start : customOptions.end) : customOptions.right\r\n        } as _Without<_Bottom & _Top>)\r\n      };\r\n\r\n      // Rewrite the bottom offset as a top offset.\r\n      if (options.bottom != null) {\r\n        (options as _Without<_Bottom> & _Top).top = el.scrollHeight - el.clientHeight - options.bottom;\r\n      }\r\n\r\n      // Rewrite the right offset as a left offset.\r\n      if (isRtl && rtlScrollAxisType !== RtlScrollAxisType.NORMAL) {\r\n        if (options.left != null) {\r\n          (options as _Without<_Left> & _Right).right = el.scrollWidth - el.clientWidth - options.left;\r\n        }\r\n\r\n        if (rtlScrollAxisType === RtlScrollAxisType.INVERTED) {\r\n          options.left = options.right;\r\n        } else if (rtlScrollAxisType === RtlScrollAxisType.NEGATED) {\r\n          options.left = options.right ? -options.right : options.right;\r\n        }\r\n      } else {\r\n        if (options.right != null) {\r\n          (options as _Without<_Right> & _Left).left = el.scrollWidth - el.clientWidth - options.right;\r\n        }\r\n      }\r\n      return this._applyScrollToOptions(el, options);\r\n    }\r\n    return Promise.resolve();\r\n  }\r\n\r\n  /**\r\n   * Scroll to element by reference or selector\r\n   */\r\n  scrollToElement(scrollable: SmoothScrollElement, target: SmoothScrollElement, customOptions: SmoothScrollToElementOptions = {}): Promise<void> {\r\n    const scrollableEl = this._getElement(scrollable);\r\n    const targetEl = this._getElement(target, scrollableEl);\r\n    const options: SmoothScrollToOptions = {\r\n      ...customOptions,\r\n      ...{\r\n        left: targetEl.offsetLeft + (customOptions.left || 0),\r\n        top: targetEl.offsetTop + (customOptions.top || 0)\r\n      }\r\n    };\r\n    return targetEl ? this.scrollTo(scrollableEl, options) : Promise.resolve();\r\n  }\r\n}\r\n","import { Directive, ElementRef } from '@angular/core';\r\nimport { SmoothScrollManager } from './smooth-scroll-manager';\r\nimport { SmoothScrollElement, SmoothScrollToElementOptions, SmoothScrollToOptions } from './smooth-scroll.model';\r\n\r\n@Directive({\r\n  selector: '[smoothScroll], [smooth-scroll]',\r\n  exportAs: 'smoothScroll',\r\n  standalone: true\r\n})\r\nexport class SmoothScroll {\r\n\r\n  constructor(private element: ElementRef, private smoothScroll: SmoothScrollManager) {\r\n  }\r\n\r\n  scrollTo(options: SmoothScrollToOptions): Promise<void> | undefined {\r\n    return this.smoothScroll.scrollTo(this.element, options);\r\n  }\r\n\r\n  scrollToElement(target: SmoothScrollElement, options: SmoothScrollToElementOptions): Promise<void> | undefined {\r\n    return this.smoothScroll.scrollToElement(this.element, target, options);\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  Input,\r\n  Output,\r\n  EventEmitter,\r\n  ViewChild,\r\n  ContentChild,\r\n  OnInit,\r\n  AfterViewInit,\r\n  OnChanges,\r\n  OnDestroy,\r\n  SimpleChanges,\r\n  NgZone,\r\n  ElementRef,\r\n  ChangeDetectorRef,\r\n  ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { NgIf } from '@angular/common';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { Observable, Subject, fromEvent, auditTime, filter, map, pairwise, takeUntil, tap } from 'rxjs';\r\nimport { NgAttr } from './utils/ng-attr.directive';\r\nimport { ScrollViewport } from './scroll-viewport';\r\nimport { ScrollbarX, ScrollbarY } from './scrollbar/scrollbar.component';\r\nimport { HideNativeScrollbar } from './hide-native-scrollbar/hide-native-scrollbar';\r\nimport { ResizeSensor } from './resize-sensor/resize-sensor.directive';\r\nimport { ScrollbarManager } from './utils/scrollbar-manager';\r\nimport { NgScrollbarBase, ScrollbarDragging, ScrollbarHovered } from './ng-scrollbar-base';\r\nimport {\r\n  ScrollbarAppearance,\r\n  ScrollbarTrack,\r\n  ScrollbarPosition,\r\n  ScrollbarVisibility,\r\n  NgScrollbarState,\r\n  ScrollbarPointerEventsMethod\r\n} from './ng-scrollbar.model';\r\nimport { SmoothScrollElement, SmoothScrollManager, SmoothScrollToElementOptions, SmoothScrollToOptions } from './smooth-scroll';\r\n\r\n@Component({\r\n  selector: 'ng-scrollbar',\r\n  exportAs: 'ngScrollbar',\r\n  templateUrl: 'ng-scrollbar.html',\r\n  styleUrls: ['ng-scrollbar.scss', 'scrollbar/shared.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: { '[class.ng-scrollbar]': 'true' },\r\n  providers: [{ provide: NgScrollbarBase, useExisting: NgScrollbar }],\r\n  standalone: true,\r\n  imports: [NgIf, NgAttr, ResizeSensor, ScrollViewport, HideNativeScrollbar, ScrollbarX, ScrollbarY]\r\n})\r\nexport class NgScrollbar implements OnInit, OnChanges, AfterViewInit, OnDestroy {\r\n\r\n  private _disabled: boolean = false;\r\n  private _sensorDisabled: boolean = this.manager.globalOptions.sensorDisabled;\r\n  private _pointerEventsDisabled: boolean = this.manager.globalOptions.pointerEventsDisabled;\r\n  private _autoHeightDisabled: boolean = this.manager.globalOptions.autoHeightDisabled;\r\n  private _autoWidthDisabled: boolean = this.manager.globalOptions.autoWidthDisabled;\r\n  private _viewportPropagateMouseMove: boolean = this.manager.globalOptions.viewportPropagateMouseMove;\r\n\r\n  /** Disable custom scrollbar and switch back to native scrollbar */\r\n  @Input()\r\n  get disabled(): boolean {\r\n    return this._disabled;\r\n  }\r\n\r\n  set disabled(disabled: boolean | string) {\r\n    this._disabled = coerceBooleanProperty(disabled);\r\n  }\r\n\r\n  /** Whether ResizeObserver is disabled */\r\n  @Input()\r\n  get sensorDisabled(): boolean {\r\n    return this._sensorDisabled;\r\n  }\r\n\r\n  set sensorDisabled(disabled: boolean | string) {\r\n    this._sensorDisabled = coerceBooleanProperty(disabled);\r\n  }\r\n\r\n  /** A flag used to enable/disable the scrollbar thumb dragged event */\r\n  @Input()\r\n  get pointerEventsDisabled(): boolean {\r\n    return this._pointerEventsDisabled;\r\n  }\r\n\r\n  set pointerEventsDisabled(disabled: boolean | string) {\r\n    this._pointerEventsDisabled = coerceBooleanProperty(disabled);\r\n  }\r\n\r\n  /** Enable viewport mousemove event propagation (only when pointerEventsMethod=\"viewport\") */\r\n  @Input()\r\n  get viewportPropagateMouseMove(): boolean {\r\n    return this._viewportPropagateMouseMove;\r\n  }\r\n\r\n  set viewportPropagateMouseMove(disabled: boolean | string) {\r\n    this._viewportPropagateMouseMove = coerceBooleanProperty(disabled);\r\n  }\r\n\r\n  /** Disable auto-height */\r\n  @Input()\r\n  get autoHeightDisabled(): boolean {\r\n    return this._autoHeightDisabled;\r\n  }\r\n\r\n  set autoHeightDisabled(disabled: boolean | string) {\r\n    this._autoHeightDisabled = coerceBooleanProperty(disabled);\r\n  }\r\n\r\n  /** Disable auto-width */\r\n  @Input()\r\n  get autoWidthDisabled(): boolean {\r\n    return this._autoWidthDisabled;\r\n  }\r\n\r\n  set autoWidthDisabled(disabled: boolean | string) {\r\n    this._autoWidthDisabled = coerceBooleanProperty(disabled);\r\n  }\r\n\r\n  /** A class forwarded to scrollable viewport element */\r\n  @Input() viewClass: string = this.manager.globalOptions.viewClass;\r\n  /** A class forwarded to the scrollbar track element */\r\n  @Input() trackClass: string = this.manager.globalOptions.trackClass;\r\n  /** A class forwarded to the scrollbar thumb element */\r\n  @Input() thumbClass: string = this.manager.globalOptions.thumbClass;\r\n  /** Minimum scrollbar thumb size */\r\n  @Input() minThumbSize: number = this.manager.globalOptions.minThumbSize;\r\n  /** The duration which the scrolling takes to reach its target when scrollbar rail is clicked */\r\n  @Input() trackClickScrollDuration: number = this.manager.globalOptions.trackClickScrollDuration;\r\n  /**\r\n   * Sets the pointer events method\r\n   * Use viewport pointer events  to handle dragging and track click (This makes scrolling work when mouse is over the scrollbar)\r\n   * Use scrollbar pointer events to handle dragging and track click\r\n   */\r\n  @Input() pointerEventsMethod: ScrollbarPointerEventsMethod = this.manager.globalOptions.pointerEventsMethod;\r\n  /**\r\n   * Sets the supported scroll track of the viewport, there are 3 options:\r\n   *\r\n   * - `vertical` Use both vertical and horizontal scrollbar\r\n   * - `horizontal` Use both vertical and horizontal scrollbar\r\n   * - `all` Use both vertical and horizontal scrollbar\r\n   */\r\n  @Input() track: ScrollbarTrack = this.manager.globalOptions.track;\r\n  /**\r\n   * When to show the scrollbar, and there are 3 options:\r\n   *\r\n   * - `native` (default) Scrollbar will be visible when viewport is scrollable like with native scrollbar\r\n   * - `hover` Scrollbars are hidden by default, only visible on scrolling or hovering\r\n   * - `always` Scrollbars are always shown even if the viewport is not scrollable\r\n   */\r\n  @Input() visibility: ScrollbarVisibility = this.manager.globalOptions.visibility;\r\n  /**\r\n   *  Sets the appearance of the scrollbar, there are 2 options:\r\n   *\r\n   * - `standard` (default) scrollbar space will be reserved just like with native scrollbar.\r\n   * - `compact` scrollbar doesn't reserve any space, they are placed over the viewport.\r\n   */\r\n  @Input() appearance: ScrollbarAppearance = this.manager.globalOptions.appearance;\r\n  /**\r\n   * Sets the position of each scrollbar, there are 4 options:\r\n   *\r\n   * - `native` (Default) Use the default position like in native scrollbar.\r\n   * - `invertY` Inverts vertical scrollbar position\r\n   * - `invertX` Inverts Horizontal scrollbar position\r\n   * - `invertAll` Inverts both scrollbar positions\r\n   */\r\n  @Input() position: ScrollbarPosition = this.manager.globalOptions.position;\r\n  /** Debounce interval for detecting changes via ResizeObserver */\r\n  @Input() sensorDebounce: number = this.manager.globalOptions.sensorDebounce;\r\n  /** Scroll Audit Time */\r\n  @Input() scrollAuditTime: number = this.manager.globalOptions.scrollAuditTime;\r\n\r\n  /** Steam that emits when scrollbar is updated */\r\n  @Output() updated = new EventEmitter<void>();\r\n\r\n  /** Vertical scrollbar ElementRef used for include its thickness in auto-width mode */\r\n  @ViewChild('scrollbarY', { read: ElementRef }) private scrollbarY!: ElementRef;\r\n  /** Horizontal scrollbar ElementRef used for include its thickness in auto-height mode */\r\n  @ViewChild('scrollbarX', { read: ElementRef }) private scrollbarX!: ElementRef;\r\n\r\n  /** Default viewport reference */\r\n  @ViewChild(ScrollViewport, { static: true }) private defaultViewPort!: ScrollViewport;\r\n  /** Custom viewport reference */\r\n  @ContentChild(ScrollViewport, { static: true }) private customViewPort!: ScrollViewport;\r\n  /** Viewport Element */\r\n  viewport!: ScrollViewport;\r\n  /** Set of attributes added on the scrollbar wrapper */\r\n  state: NgScrollbarState = {};\r\n  /** Stream that destroys components' observables */\r\n  private readonly destroyed = new Subject<void>();\r\n\r\n  /** Stream that emits on scroll event */\r\n  scrolled!: Observable<Event>;\r\n  /** Steam that emits scroll event for vertical scrollbar */\r\n  verticalScrolled!: Observable<Event>;\r\n  /** Steam that emits scroll event for horizontal scrollbar */\r\n  horizontalScrolled!: Observable<Event>;\r\n\r\n  get nativeElement(): HTMLElement {\r\n    return this.el.nativeElement;\r\n  }\r\n\r\n  constructor(\r\n    private el: ElementRef,\r\n    private zone: NgZone,\r\n    private changeDetectorRef: ChangeDetectorRef,\r\n    private dir: Directionality,\r\n    private smoothScroll: SmoothScrollManager,\r\n    public manager: ScrollbarManager) {\r\n  }\r\n\r\n  /**\r\n   * Update local state with each change detection\r\n   */\r\n  private updateState(): void {\r\n    let verticalUsed: boolean = false;\r\n    let horizontalUsed: boolean = false;\r\n    let isVerticallyScrollable: boolean = false;\r\n    let isHorizontallyScrollable: boolean = false;\r\n\r\n    // Check if vertical scrollbar should be displayed\r\n    if (this.track === 'all' || this.track === 'vertical') {\r\n      isVerticallyScrollable = this.viewport!.scrollHeight > this.viewport!.clientHeight;\r\n      verticalUsed = this.visibility === 'always' || isVerticallyScrollable;\r\n    }\r\n    // Check if horizontal scrollbar should be displayed\r\n    if (this.track === 'all' || this.track === 'horizontal') {\r\n      isHorizontallyScrollable = this.viewport!.scrollWidth > this.viewport!.clientWidth;\r\n      horizontalUsed = this.visibility === 'always' || isHorizontallyScrollable;\r\n    }\r\n\r\n    // Update inner wrapper attributes\r\n    this.setState({\r\n      position: this.position,\r\n      track: this.track,\r\n      appearance: this.appearance,\r\n      visibility: this.visibility,\r\n      deactivated: this.disabled,\r\n      dir: this.dir.value,\r\n      pointerEventsMethod: this.pointerEventsMethod,\r\n      verticalUsed,\r\n      horizontalUsed,\r\n      isVerticallyScrollable,\r\n      isHorizontallyScrollable\r\n    });\r\n  }\r\n\r\n  private setState(state: NgScrollbarState): void {\r\n    this.state = { ...this.state, ...state };\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n\r\n  private getScrolledByDirection(property: 'scrollLeft' | 'scrollTop'): Observable<Event> {\r\n    let event: Event;\r\n    return this.scrolled!.pipe(\r\n      tap((e: Event) => event = e),\r\n      map((e: Event) => e.target[property]),\r\n      pairwise(),\r\n      filter(([prev, curr]: [Event, Event]) => prev !== curr),\r\n      map(() => event)\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Set hovered state if a scrollbar is being hovered\r\n   */\r\n  setHovered(hovered: ScrollbarHovered): void {\r\n    this.zone.run(() => this.setState({ ...hovered }));\r\n  }\r\n\r\n  /**\r\n   * Set dragging state if a scrollbar is being dragged\r\n   */\r\n  setDragging(dragging: ScrollbarDragging): void {\r\n    this.zone.run(() => this.setState({ ...dragging }));\r\n  }\r\n\r\n  /**\r\n   * Set clicked state if a scrollbar track is being clicked\r\n   */\r\n  setClicked(scrollbarClicked: boolean): void {\r\n    this.zone.run(() => this.setState({ scrollbarClicked }));\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    // Set the viewport based on user choice\r\n    this.zone.runOutsideAngular(() => {\r\n      if (this.customViewPort) {\r\n        this.viewport = this.customViewPort;\r\n        this.defaultViewPort!.setAsWrapper();\r\n      } else {\r\n        this.viewport = this.defaultViewPort;\r\n      }\r\n      // Activate the selected viewport\r\n      this.viewport!.setAsViewport(this.viewClass!);\r\n\r\n      let scrollStream = fromEvent<Event>(this.viewport!.nativeElement, 'scroll', { passive: true });\r\n      // Throttle scroll event if 'scrollAuditTime' is set\r\n      scrollStream = this.scrollAuditTime ? scrollStream.pipe(auditTime(this.scrollAuditTime)) : scrollStream;\r\n      // Initialize scroll streams\r\n      this.scrolled = scrollStream.pipe(takeUntil(this.destroyed));\r\n      this.verticalScrolled = this.getScrolledByDirection('scrollTop');\r\n      this.horizontalScrolled = this.getScrolledByDirection('scrollLeft');\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // Update only when the viewport is initialized\r\n    if (this.viewport) {\r\n      this.update();\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    // Initial update\r\n    this.update();\r\n\r\n    // Update on dir changes\r\n    this.dir.change.pipe(\r\n      tap(() => this.update()),\r\n      takeUntil(this.destroyed)\r\n    ).subscribe();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroyed.next();\r\n    this.destroyed.complete();\r\n  }\r\n\r\n  /**\r\n   * Update local state and the internal scrollbar controls\r\n   */\r\n  update(): void {\r\n    if (!this.autoHeightDisabled) {\r\n      this.updateHeight();\r\n    }\r\n\r\n    if (!this.autoWidthDisabled) {\r\n      this.updateWidth();\r\n    }\r\n    // Re-evaluate the state after setting height or width\r\n    this.updateState();\r\n    this.updated.next();\r\n  }\r\n\r\n  /**\r\n   * Smooth scroll functions\r\n   */\r\n  scrollTo(options: SmoothScrollToOptions): Promise<void> {\r\n    return this.smoothScroll.scrollTo(this.viewport!.nativeElement, options);\r\n  }\r\n\r\n  /**\r\n   * Scroll to element by reference or selector\r\n   */\r\n  scrollToElement(target: SmoothScrollElement, options?: SmoothScrollToElementOptions): Promise<void> {\r\n    return this.smoothScroll.scrollToElement(this.viewport!.nativeElement, target, options);\r\n  }\r\n\r\n  private updateHeight(): void {\r\n    // Auto-height: Set component height to content height\r\n    if (this.appearance === 'standard' && this.scrollbarX) {\r\n      // if scrollbar-x is displayed in standard mode\r\n      this.nativeElement.style.height = `${ this.viewport!.contentHeight + this.scrollbarX.nativeElement.clientHeight }px`;\r\n    } else {\r\n      this.nativeElement.style.height = `${ this.viewport!.contentHeight }px`;\r\n    }\r\n  }\r\n\r\n  private updateWidth(): void {\r\n    // Auto-width: Set component minWidth to content width\r\n    if (this.appearance === 'standard' && this.scrollbarY) {\r\n      // if scrollbar-y is displayed in standard mode\r\n      this.nativeElement.style.width = `${ this.viewport!.contentWidth + this.scrollbarY.nativeElement.clientWidth }px`;\r\n    } else {\r\n      this.nativeElement.style.width = `${ this.viewport!.contentWidth }px`;\r\n    }\r\n  }\r\n}\r\n","<div class=\"ng-scrollbar-wrapper\" [ngAttr]=\"state\">\r\n  <div class=\"ng-scroll-viewport-wrapper\"\r\n       (resizeSensor)=\"update()\"\r\n       [sensorDebounce]=\"sensorDebounce\"\r\n       [sensorDisabled]=\"sensorDisabled\">\r\n    <div scrollViewport\r\n         hideNativeScrollbar>\r\n      <div>\r\n        <ng-content></ng-content>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <ng-container *ngIf=\"!disabled\">\r\n    <scrollbar-x #scrollbarX\r\n                 *ngIf=\"state.horizontalUsed\"\r\n                 [attr.scrollable]=\"state.isHorizontallyScrollable\"\r\n                 [attr.fit]=\"state.verticalUsed\">\r\n    </scrollbar-x>\r\n    <scrollbar-y #scrollbarY\r\n                 *ngIf=\"state.verticalUsed\"\r\n                 [attr.scrollable]=\"state.isVerticallyScrollable\"\r\n                 [attr.fit]=\"state.horizontalUsed\">\r\n    </scrollbar-y>\r\n  </ng-container>\r\n</div>\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { NgScrollbar } from './ng-scrollbar';\r\nimport { ScrollViewport } from './scroll-viewport';\r\n\r\n@NgModule({\r\n  imports: [\r\n    NgScrollbar,\r\n    ScrollViewport\r\n  ],\r\n  exports: [\r\n    NgScrollbar,\r\n    ScrollViewport\r\n  ]\r\n})\r\nexport class NgScrollbarModule {\r\n}\r\n","import { Directive, Optional, Input, Output, OnInit, OnDestroy, NgZone } from '@angular/core';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { RtlScrollAxisType } from '@angular/cdk/platform';\r\nimport { Observable, Subject, Subscription, Subscriber, filter, map, tap, distinctUntilChanged } from 'rxjs';\r\nimport { NgScrollbar } from '../ng-scrollbar';\r\n\r\n// Fix target type on ElementEvent\r\ntype ElementEvent = Event & { target: Element };\r\n\r\nclass ReachedFunctions {\r\n  static reachedTop(offset: number, e: ElementEvent): boolean {\r\n    return ReachedFunctions.reached(-e.target.scrollTop, 0, offset);\r\n  }\r\n\r\n  static reachedBottom(offset: number, e: ElementEvent): boolean {\r\n    return ReachedFunctions.reached(e.target.scrollTop + e.target.clientHeight, e.target.scrollHeight, offset);\r\n  }\r\n\r\n  static reachedStart(offset: number, e: ElementEvent, direction: 'ltr' | 'rtl', rtlScrollAxisType: RtlScrollAxisType): boolean {\r\n    if (direction === 'rtl') {\r\n      if (rtlScrollAxisType === RtlScrollAxisType.NEGATED) {\r\n        return ReachedFunctions.reached(e.target.scrollLeft, 0, offset);\r\n      }\r\n      if (rtlScrollAxisType === RtlScrollAxisType.INVERTED) {\r\n        return ReachedFunctions.reached(-e.target.scrollLeft, 0, offset);\r\n      }\r\n      return ReachedFunctions.reached(e.target.scrollLeft + e.target.clientWidth, e.target.scrollWidth, offset);\r\n    }\r\n    return ReachedFunctions.reached(-e.target.scrollLeft, 0, offset);\r\n  }\r\n\r\n  static reachedEnd(offset: number, e: ElementEvent, direction: 'ltr' | 'rtl', rtlScrollAxisType: RtlScrollAxisType): boolean {\r\n    if (direction === 'rtl') {\r\n      if (rtlScrollAxisType === RtlScrollAxisType.NEGATED) {\r\n        return ReachedFunctions.reached(-(e.target.scrollLeft - e.target.clientWidth), e.target.scrollWidth, offset);\r\n      }\r\n      if (rtlScrollAxisType === RtlScrollAxisType.INVERTED) {\r\n        return ReachedFunctions.reached(-(e.target.scrollLeft + e.target.clientWidth), e.target.scrollWidth, offset);\r\n      }\r\n      return ReachedFunctions.reached(-e.target.scrollLeft, 0, offset);\r\n    }\r\n    return ReachedFunctions.reached(e.target.scrollLeft + e.target.clientWidth, e.target.scrollWidth, offset);\r\n  }\r\n\r\n  static reached(currPosition: number, targetPosition: number, offset: number): boolean {\r\n    return currPosition >= targetPosition - offset;\r\n  }\r\n}\r\n\r\n@Directive()\r\nabstract class ScrollReached implements OnDestroy {\r\n\r\n  /** offset: Reached offset value in px */\r\n  @Input('reachedOffset') offset: number = 0;\r\n\r\n  /**\r\n   * Stream that emits scroll event when `NgScrollbar.scrolled` is initialized.\r\n   *\r\n   * **NOTE:** This subject is used to hold the place of `NgScrollbar.scrolled` when it's not initialized yet\r\n   */\r\n  protected scrollEvent = new Subject<ElementEvent>();\r\n\r\n  /** subscription: Scrolled event subscription, used to unsubscribe from the event on destroy */\r\n  protected subscription = Subscription.EMPTY;\r\n\r\n  /** A stream used to assign the reached output */\r\n  protected reachedEvent = new Observable((subscriber: Subscriber<ElementEvent>) =>\r\n    this.scrollReached().subscribe(_ =>\r\n      Promise.resolve().then(() => this.zone.run(() => subscriber.next(_)))));\r\n\r\n  protected constructor(@Optional() protected scrollbar: NgScrollbar, protected zone: NgZone) {\r\n    if (!scrollbar) {\r\n      console.warn('[NgScrollbarReached Directive]: Host element must be an NgScrollbar component.');\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.subscription.unsubscribe();\r\n  }\r\n\r\n  protected scrollReached(): Observable<ElementEvent> {\r\n    // current event\r\n    let currEvent: ElementEvent;\r\n\r\n    return this.scrollEvent.pipe(\r\n      tap((e: ElementEvent) => currEvent = e),\r\n      // Check if scroll has reached\r\n      map((e: ElementEvent) => this.reached(this.offset, e)),\r\n      // Distinct until reached value has changed\r\n      distinctUntilChanged(),\r\n      // Emit only if reached is true\r\n      filter((reached: boolean) => reached),\r\n      // Return scroll event\r\n      map(() => currEvent)\r\n    );\r\n  }\r\n\r\n  protected abstract reached(offset: number, e?: ElementEvent): boolean;\r\n}\r\n\r\n@Directive()\r\nabstract class VerticalScrollReached extends ScrollReached implements OnInit {\r\n  protected constructor(@Optional() protected override scrollbar: NgScrollbar, protected override zone: NgZone) {\r\n    super(scrollbar, zone);\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.zone.runOutsideAngular(() => {\r\n      // Fix the viewport size in case the rendered size is not rounded\r\n      const fixedSize: number = Math.round(this.scrollbar.viewport.nativeElement.getBoundingClientRect().height);\r\n      this.scrollbar.viewport.nativeElement.style.height = `${fixedSize}px`;\r\n\r\n      this.subscription = this.scrollbar.verticalScrolled!.subscribe(this.scrollEvent);\r\n    });\r\n  }\r\n}\r\n\r\n@Directive()\r\nabstract class HorizontalScrollReached extends ScrollReached implements OnInit {\r\n  protected constructor(@Optional() protected override scrollbar: NgScrollbar, protected override zone: NgZone) {\r\n    super(scrollbar, zone);\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.zone.runOutsideAngular(() => {\r\n      // Fix the viewport size in case the rendered size is not rounded\r\n      const fixedSize: number = Math.round(this.scrollbar.viewport.nativeElement.getBoundingClientRect().width);\r\n      this.scrollbar.viewport.nativeElement.style.width = `${fixedSize}px`;\r\n\r\n      this.subscription = this.scrollbar.horizontalScrolled!.subscribe(this.scrollEvent);\r\n    });\r\n  }\r\n}\r\n\r\n@Directive({\r\n  selector: '[reachedTop], [reached-top]',\r\n  standalone: true,\r\n})\r\nexport class NgScrollbarReachedTop extends VerticalScrollReached implements OnInit {\r\n\r\n  /** Stream that emits when scroll has reached the top */\r\n  @Output() reachedTop: Observable<ElementEvent> = this.reachedEvent;\r\n\r\n  constructor(@Optional() protected override scrollbar: NgScrollbar, protected override zone: NgZone) {\r\n    super(scrollbar, zone);\r\n  }\r\n\r\n  override ngOnInit() {\r\n    super.ngOnInit();\r\n  }\r\n\r\n  /**\r\n   * Check if scroll has reached the top (vertically)\r\n   * @param offset Scroll offset\r\n   * @param e Scroll event\r\n   */\r\n  protected reached(offset: number, e: ElementEvent): boolean {\r\n    return ReachedFunctions.reachedTop(offset, e);\r\n  }\r\n}\r\n\r\n@Directive({\r\n  selector: '[reachedBottom], [reached-bottom]',\r\n  standalone: true,\r\n})\r\nexport class NgScrollbarReachedBottom extends VerticalScrollReached implements OnInit {\r\n\r\n  /** Stream that emits when scroll has reached the bottom */\r\n  @Output() reachedBottom: Observable<ElementEvent> = this.reachedEvent;\r\n\r\n  constructor(@Optional() protected override scrollbar: NgScrollbar, protected override zone: NgZone) {\r\n    super(scrollbar, zone);\r\n  }\r\n\r\n  override ngOnInit() {\r\n    super.ngOnInit();\r\n  }\r\n\r\n  /**\r\n   * Check if scroll has reached the bottom (vertically)\r\n   * @param offset Scroll offset\r\n   * @param e Scroll event\r\n   */\r\n  protected reached(offset: number, e: ElementEvent): boolean {\r\n    return ReachedFunctions.reachedBottom(offset, e);\r\n  }\r\n}\r\n\r\n@Directive({\r\n  selector: '[reachedStart], [reached-start]',\r\n  standalone: true,\r\n})\r\nexport class NgScrollbarReachedStart extends HorizontalScrollReached implements OnInit {\r\n\r\n  /** Stream that emits when scroll has reached the start */\r\n  @Output() reachedStart: Observable<ElementEvent> = this.reachedEvent;\r\n\r\n  constructor(@Optional() protected override scrollbar: NgScrollbar, protected override zone: NgZone, private dir: Directionality) {\r\n    super(scrollbar, zone);\r\n  }\r\n\r\n  override ngOnInit() {\r\n    super.ngOnInit();\r\n  }\r\n\r\n  /**\r\n   * Check if scroll has reached the start (horizontally)\r\n   * @param offset Scroll offset\r\n   * @param e Scroll event\r\n   */\r\n  protected reached(offset: number, e: ElementEvent): boolean {\r\n    return ReachedFunctions.reachedStart(offset, e, this.dir.value, this.scrollbar.manager.rtlScrollAxisType);\r\n  }\r\n}\r\n\r\n@Directive({\r\n  selector: '[reachedEnd], [reached-end]',\r\n  standalone: true,\r\n})\r\nexport class NgScrollbarReachedEnd extends HorizontalScrollReached implements OnInit {\r\n\r\n  /** Stream that emits when scroll has reached the end */\r\n  @Output() reachedEnd: Observable<ElementEvent> = this.reachedEvent;\r\n\r\n  constructor(@Optional() protected override scrollbar: NgScrollbar, protected override zone: NgZone, private dir: Directionality) {\r\n    super(scrollbar, zone);\r\n  }\r\n\r\n  override ngOnInit() {\r\n    super.ngOnInit();\r\n  }\r\n\r\n  /**\r\n   * Check if scroll has reached the end (horizontally)\r\n   * @param offset Scroll offset\r\n   * @param e Scroll event\r\n   */\r\n  protected reached(offset: number, e: ElementEvent): boolean {\r\n    return ReachedFunctions.reachedEnd(offset, e, this.dir.value, this.scrollbar.manager.rtlScrollAxisType);\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport {\r\n  NgScrollbarReachedTop,\r\n  NgScrollbarReachedBottom,\r\n  NgScrollbarReachedStart,\r\n  NgScrollbarReachedEnd\r\n} from './ng-scrollbar-reached';\r\n\r\n@NgModule({\r\n  imports: [\r\n    NgScrollbarReachedTop,\r\n    NgScrollbarReachedBottom,\r\n    NgScrollbarReachedStart,\r\n    NgScrollbarReachedEnd\r\n  ],\r\n  exports: [\r\n    NgScrollbarReachedTop,\r\n    NgScrollbarReachedBottom,\r\n    NgScrollbarReachedStart,\r\n    NgScrollbarReachedEnd\r\n  ]\r\n})\r\nexport class NgScrollbarReachedModule {\r\n}\r\n","/*\r\n * Public API Surface of ngx-scrollbar\r\n */\r\n\r\nexport * from './src/ng-scrollbar.module';\r\nexport * from './src/ng-scrollbar.model';\r\nexport * from './src/ng-scrollbar';\r\nexport * from './src/scroll-viewport';\r\nexport * from './src/utils/scrollbar-manager';\r\nexport * from './src/smooth-scroll';\r\nexport * from './src/reached-event';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgScrollbarBase","i2.TrackAdapter","i3","i2","i1.ScrollbarManager","i1.NativeScrollbarSizeFactory","i1","i2.NgScrollbarBase","BezierEasing","i1.SmoothScrollManager","i2.SmoothScrollManager","i3.ScrollbarManager","i1.NgScrollbar"],"mappings":"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"}