{"version":3,"file":"omnedia-ngx-scrollbar.mjs","sources":["../../../projects/ngx-scrollbar/src/lib/ngx-scrollbar.component.ts","../../../projects/ngx-scrollbar/src/lib/ngx-scrollbar.component.html","../../../projects/ngx-scrollbar/src/public-api.ts","../../../projects/ngx-scrollbar/src/omnedia-ngx-scrollbar.ts"],"sourcesContent":["import {CommonModule} from '@angular/common';\r\nimport {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  HostListener,\r\n  Input,\r\n  signal,\r\n  ViewChild\r\n} from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'om-scrollbar',\r\n  standalone: true,\r\n  imports: [CommonModule],\r\n  templateUrl: \"./ngx-scrollbar.component.html\",\r\n  styleUrl: \"./ngx-scrollbar.component.scss\",\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class NgxScrollbarComponent implements AfterViewInit {\r\n  @ViewChild('OmScrollbarContainer') sidebarRef!: ElementRef<HTMLElement>;\r\n  @ViewChild('OmScrollbarWrapper') wrapperRef!: ElementRef<HTMLElement>;\r\n  @ViewChild('OmScrollbarContent') contentRef!: ElementRef<HTMLElement>;\r\n  @ViewChild('OmScrollbar') scrollbarRef!: ElementRef<HTMLElement>;\r\n\r\n  @Input('styleClass')\r\n  styleClass?: string;\r\n\r\n  @Input('onlyShowOnHover')\r\n  set onlyShowOnHover(onlyShowOnHover: boolean) {\r\n    this.style['--om-scrollbar-hover-display'] = onlyShowOnHover ? 'none' : 'block';\r\n  }\r\n\r\n  style: any = {};\r\n\r\n  private scrollPercent = 0;\r\n  mouseDown = signal(false);\r\n  private lastY?: number;\r\n\r\n  @HostListener('mousedown', ['$event'])\r\n  onMouseDown(event: MouseEvent) {\r\n    const target = event.target as HTMLElement;\r\n\r\n    if (target.classList.contains('om-scrollbar-bar')) {\r\n      event.preventDefault();\r\n      this.mouseDown.set(true);\r\n    }\r\n  }\r\n\r\n  @HostListener('mouseup')\r\n  onMouseUp() {\r\n    this.lastY = undefined;\r\n    this.mouseDown.set(false);\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    window.addEventListener('mouseup', () => {\r\n      this.lastY = undefined;\r\n      this.mouseDown.set(false);\r\n    });\r\n    window.addEventListener('mousemove', (event) => this.onDrag(event));\r\n\r\n    this.calcScrollbar();\r\n  }\r\n\r\n  calcScrollbar(): void {\r\n    const sideBarHeight = this.sidebarRef.nativeElement.clientHeight;\r\n    const contentHeight = this.contentRef.nativeElement.clientHeight;\r\n    const scrollBarHeight = Math.floor(sideBarHeight / contentHeight * 100);\r\n\r\n    this.style['--om-scrollbar-height'] = `${scrollBarHeight}%`;\r\n  }\r\n\r\n  onScroll(event: Event): void {\r\n    const target = event.target as HTMLElement;\r\n    const contentHeight = this.contentRef.nativeElement.clientHeight;\r\n    const scrollTop = target.scrollTop;\r\n\r\n    this.scrollPercent = Math.floor(scrollTop / contentHeight * 100);\r\n\r\n    this.style['--om-scrollbar-top'] = `${this.scrollPercent}%`;\r\n  }\r\n\r\n  onDrag(event: MouseEvent): void {\r\n    if (!this.mouseDown()) {\r\n      return;\r\n    }\r\n\r\n    event.preventDefault();\r\n\r\n    const offsetY = event.clientY;\r\n\r\n    const scrollPx = offsetY - (this.lastY ?? offsetY);\r\n    this.lastY = offsetY;\r\n\r\n    const contentHeight = this.sidebarRef.nativeElement.clientHeight;\r\n    const scrollPercent = (scrollPx) / (contentHeight);\r\n\r\n    const scrollContentPx = this.contentRef.nativeElement.clientHeight * scrollPercent;\r\n\r\n    this.wrapperRef.nativeElement.scrollBy(0, scrollContentPx);\r\n  }\r\n}\r\n","<div class=\"om-scrollbar\" [ngStyle]=\"style\" #OmScrollbarContainer>\r\n  <div class=\"om-scrollbar-wrapper\" (scroll)=\"onScroll($event)\" #OmScrollbarWrapper>\r\n    <div class=\"om-scrollbar-content\" #OmScrollbarContent>\r\n      <ng-content></ng-content>\r\n    </div>\r\n  </div>\r\n\r\n  <div class=\"om-scrollbar-bar\" [class.om-scrollbar-bar-active]=\"mouseDown()\" [ngClass]=\"styleClass\" #OmScrollbar>\r\n  </div>\r\n</div>\r\n","/*\r\n * Public API Surface of ngx-scrollbar\r\n */\r\n\r\nexport * from './lib/ngx-scrollbar.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}