{"version":3,"file":"kara-ui-alfa-components-scrollbar.mjs","sources":["../../../libs/kara-ui/components/scrollbar/scrollbar.const.ts","../../../libs/kara-ui/components/scrollbar/scrollbart.utils.ts","../../../libs/kara-ui/components/scrollbar/scrollbar.directive.ts","../../../libs/kara-ui/components/scrollbar/scrollbar-wrapper.directive.ts","../../../libs/kara-ui/components/scrollbar/scrollbar.component.ts","../../../libs/kara-ui/components/scrollbar/scrollbar.component.html","../../../libs/kara-ui/components/scrollbar/kara-ui-alfa-components-scrollbar.ts"],"sourcesContent":["import { ElementRef, InjectionToken } from '@angular/core';\n\nexport const K_SCROLL_CONTAINER_REF = new InjectionToken<ElementRef>('Kara UI scroll container for directive');\nexport const K_SCROLL_WRAPPER_REF = new InjectionToken<ElementRef>('Kara UI element ref to scrollbar container');\n","import { Observable, Observer, throttleTime } from 'rxjs';\n\ninterface ResizeConfig {\n  element: HTMLElement;\n  throttleDuration: number;\n  contentWrapper?: HTMLElement;\n}\n\nexport function resizeObserver({ element, contentWrapper, throttleDuration }: ResizeConfig): Observable<void> {\n  let resizeObserver: ResizeObserver;\n\n  const stream: Observable<void> = new Observable((observer: Observer<void>) => {\n    resizeObserver = new ResizeObserver(() => {\n      observer.next();\n    });\n\n    resizeObserver.observe(element);\n\n    if (contentWrapper) {\n      resizeObserver.observe(contentWrapper);\n    }\n\n    return () => {\n      resizeObserver?.disconnect();\n    };\n  });\n\n  return throttleDuration\n    ? stream.pipe(\n        throttleTime(throttleDuration, undefined, {\n          leading: true,\n          trailing: true,\n        }),\n      )\n    : stream;\n}\n","import { DOCUMENT } from '@angular/common';\nimport { DestroyRef, Directive, ElementRef, Inject, Input, NgZone, OnInit, Renderer2 } from '@angular/core';\nimport { fromEvent, merge } from 'rxjs';\nimport { map, switchMap, takeUntil } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { K_SCROLL_CONTAINER_REF, K_SCROLL_WRAPPER_REF } from './scrollbar.const';\nimport { resizeObserver } from './scrollbart.utils';\n\nconst MIN_WIDTH = 24;\n\n@Directive({\n  selector: '[kScrollbar]',\n})\nexport class KScrollbarDirective implements OnInit {\n  @Input() kScrollbar: 'vertical' | 'horizontal' = 'vertical';\n\n  get thimbSize(): number {\n    const { clientHeight, scrollHeight, clientWidth, scrollWidth } = this.scrollContainerRef.nativeElement;\n\n    return this.kScrollbar === 'vertical'\n      ? Math.ceil((clientHeight / scrollHeight) * 100) / 100\n      : Math.ceil((clientWidth / scrollWidth) * 100) / 100;\n  }\n\n  get scrollPosition(): number {\n    const { scrollTop, scrollHeight, clientHeight, scrollLeft, scrollWidth, clientWidth } =\n      this.scrollContainerRef.nativeElement;\n\n    const scrolled =\n      this.kScrollbar === 'vertical'\n        ? scrollTop / (scrollHeight - clientHeight)\n        : scrollLeft / (scrollWidth - clientWidth);\n\n    return scrolled * (1 - this.compensation);\n  }\n\n  get compensation(): number {\n    const { clientHeight, scrollHeight, clientWidth, scrollWidth } = this.scrollContainerRef.nativeElement;\n\n    if (\n      ((clientHeight * clientHeight) / scrollHeight > MIN_WIDTH && this.kScrollbar === 'vertical') ||\n      ((clientWidth * clientWidth) / scrollWidth > MIN_WIDTH && this.kScrollbar === 'horizontal')\n    ) {\n      return this.thimbSize;\n    }\n\n    return this.kScrollbar === 'vertical' ? MIN_WIDTH / clientHeight : MIN_WIDTH / clientWidth;\n  }\n\n  constructor(\n    @Inject(DOCUMENT) private documentRef: Document,\n    @Inject(K_SCROLL_CONTAINER_REF) private scrollContainerRef: ElementRef<HTMLElement>,\n    @Inject(K_SCROLL_WRAPPER_REF) private wrapperRef: ElementRef<HTMLElement>,\n    private thumbRef: ElementRef<HTMLElement>,\n    private render: Renderer2,\n    private zone: NgZone,\n    private destroyRef: DestroyRef,\n  ) {}\n\n  ngOnInit(): void {\n    this.zone.runOutsideAngular(() => {\n      resizeObserver({\n        element: this.scrollContainerRef.nativeElement,\n        throttleDuration: 50,\n      })\n        .pipe(takeUntilDestroyed(this.destroyRef))\n        .subscribe(() => {\n          this.setPosition();\n        });\n    });\n\n    merge(\n      fromEvent<MouseEvent>(this.wrapperRef.nativeElement, 'click').pipe(\n        map((event) => this.getScrolled(event, 0.5, 0.5)),\n      ),\n      fromEvent<MouseEvent>(this.thumbRef.nativeElement, 'mousedown').pipe(\n        switchMap((event) => {\n          event.preventDefault();\n          event.stopPropagation();\n\n          const { top, left, height, width } = this.thumbRef.nativeElement.getBoundingClientRect();\n          const verticalOffset = (event.clientY - top) / height;\n          const horizontalOffset = (event.clientX - left) / width;\n\n          return fromEvent<MouseEvent>(this.documentRef, 'mousemove').pipe(\n            map((event) => this.getScrolled(event, verticalOffset, horizontalOffset)),\n            takeUntil(fromEvent(this.documentRef, 'mouseup')),\n          );\n        }),\n      ),\n    )\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(([scrollTop, scrollLeft]) => {\n        if (this.kScrollbar === `vertical`) {\n          this.render.setProperty(this.scrollContainerRef.nativeElement, 'scrollTop', scrollTop);\n          return;\n        }\n\n        this.render.setProperty(this.scrollContainerRef.nativeElement, 'scrollLeft', scrollLeft);\n      });\n\n    fromEvent(this.scrollContainerRef.nativeElement, 'scroll', { passive: true })\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => {\n        this.setPosition();\n      });\n  }\n\n  private getScrolled(\n    { clientY, clientX }: MouseEvent,\n    offsetVertical: number,\n    offsetHorizontal: number,\n  ): [number, number] {\n    const { offsetHeight, offsetWidth } = this.thumbRef.nativeElement;\n    const { top, left, width, height } = this.wrapperRef.nativeElement.getBoundingClientRect();\n\n    const maxTop = this.scrollContainerRef.nativeElement.scrollHeight - height;\n    const maxLeft = this.scrollContainerRef.nativeElement.scrollWidth - width;\n    const scrolledTop = (clientY - top - offsetHeight * offsetVertical) / (height - offsetHeight);\n    const scrolledLeft = (clientX - left - offsetWidth * offsetHorizontal) / (width - offsetWidth);\n\n    return [maxTop * scrolledTop, maxLeft * scrolledLeft];\n  }\n\n  private setPosition(): void {\n    if (this.kScrollbar === 'vertical') {\n      this.render.setStyle(this.thumbRef.nativeElement, 'height', `${this.thimbSize * 100}%`);\n      this.render.setStyle(this.thumbRef.nativeElement, 'top', `${this.scrollPosition * 100}%`);\n      return;\n    }\n\n    this.render.setStyle(this.thumbRef.nativeElement, 'width', `${this.thimbSize * 100}%`);\n    this.render.setStyle(this.thumbRef.nativeElement, 'left', `${this.scrollPosition * 100}%`);\n  }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { K_SCROLL_WRAPPER_REF } from './scrollbar.const';\n\n@Directive({\n  selector: '[kScrollbarWrapper]',\n  providers: [\n    {\n      provide: K_SCROLL_WRAPPER_REF,\n      useExisting: ElementRef,\n    },\n  ],\n})\nexport class KScrollbarWrapperDirective {}\n","import { DOCUMENT } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  ElementRef,\n  HostBinding,\n  Inject,\n  NgZone,\n  OnInit,\n  ViewChild,\n  booleanAttribute,\n  input,\n  signal,\n} from '@angular/core';\nimport { distinctUntilChanged, map } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { K_SCROLL_CONTAINER_REF } from './scrollbar.const';\nimport { KScrollbarDirective } from './scrollbar.directive';\nimport { KScrollbarWrapperDirective } from './scrollbar-wrapper.directive';\nimport { resizeObserver } from './scrollbart.utils';\n\n@Component({\n  selector: 'k-scrollbar',\n  templateUrl: './scrollbar.component.html',\n  styleUrls: ['./scrollbar.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: K_SCROLL_CONTAINER_REF,\n      useExisting: ElementRef,\n    },\n  ],\n  imports: [KScrollbarWrapperDirective, KScrollbarDirective],\n})\nexport class KScrollbarComponent implements OnInit {\n  readonly supportCustomScroll?: boolean;\n  /** Ширина для скролла всегда зарезервирована */\n  readonly reserveWidth = input(false, { transform: booleanAttribute });\n\n  @ViewChild('content', { static: true }) contentRef!: ElementRef;\n\n  hasVertical = signal(false);\n  hasHorizontal = signal(false);\n\n  constructor(\n    @Inject(DOCUMENT) documentRef: Document,\n    private elementRef: ElementRef<HTMLElement>,\n    private zone: NgZone,\n    private destroyRed: DestroyRef,\n  ) {\n    this.supportCustomScroll = documentRef.defaultView?.CSS?.supports('position', 'sticky');\n  }\n\n  @HostBinding('class.native') get nativeScroll(): boolean {\n    return !this.supportCustomScroll;\n  }\n\n  ngOnInit(): void {\n    this.zone.runOutsideAngular(() => {\n      resizeObserver({\n        element: this.elementRef.nativeElement,\n        contentWrapper: this.contentRef.nativeElement,\n        throttleDuration: 50,\n      })\n        .pipe(\n          map(() => {\n            const { clientHeight, clientWidth, scrollHeight, scrollWidth } = this.elementRef.nativeElement;\n\n            return {\n              hasVertical: Math.ceil((clientHeight / scrollHeight) * 100) < 100,\n              hasHorizontal: Math.ceil((clientWidth / scrollWidth) * 100) < 100,\n            };\n          }),\n          distinctUntilChanged((a, b) => a.hasHorizontal === b.hasHorizontal && a.hasVertical === b.hasVertical),\n          takeUntilDestroyed(this.destroyRed),\n        )\n        .subscribe(({ hasHorizontal, hasVertical }) => {\n          this.hasHorizontal.set(hasHorizontal);\n          this.hasVertical.set(hasVertical);\n\n          this.elementRef.nativeElement.style.setProperty(\n            '--k-scroll-left',\n            hasVertical || this.reserveWidth() ? 'var(--space-4)' : '0px',\n          );\n          this.elementRef.nativeElement.style.setProperty(\n            '--k-scroll-bottom',\n            hasHorizontal ? 'var(--space-4)' : '0px',\n          );\n        });\n    });\n  }\n}\n","@if (supportCustomScroll) {\n  <div class=\"k-scrollbar\">\n    @if (hasVertical()) {\n      <div kScrollbarWrapper class=\"k-bar k-bar_vertical\" [class.k-bar_has-horizontal]=\"hasHorizontal()\">\n        <div kScrollbar=\"vertical\" class=\"k-thumb\"></div>\n      </div>\n    }\n    @if (hasHorizontal()) {\n      <div kScrollbarWrapper class=\"k-bar k-bar_horizontal\" [class.k-bar_has-vertical]=\"hasVertical()\">\n        <div kScrollbar=\"horizontal\" class=\"k-thumb\"></div>\n      </div>\n    }\n  </div>\n}\n<div #content class=\"k-content\">\n  <ng-content></ng-content>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map"],"mappings":"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"}