UNPKG

primeng

Version:

PrimeNG is a premium UI library for Angular featuring a rich set of 90+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBlock,

1 lines 56.6 kB
{"version":3,"file":"primeng-scrollarea.mjs","sources":["../../src/scrollarea/scrollarea-token.ts","../../src/scrollarea/style/scrollareastyle.ts","../../src/scrollarea/scrollarea-content.ts","../../src/scrollarea/scrollarea-corner.ts","../../src/scrollarea/scrollarea-scrollbar.ts","../../src/scrollarea/scrollarea-handle.ts","../../src/scrollarea/scrollarea-viewport.ts","../../src/scrollarea/scrollarea.ts","../../src/scrollarea/primeng-scrollarea.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const SCROLLAREA_INSTANCE = new InjectionToken<any>('SCROLLAREA_INSTANCE');\nexport const SCROLLAREA_VIEWPORT_INSTANCE = new InjectionToken<any>('SCROLLAREA_VIEWPORT_INSTANCE');\nexport const SCROLLAREA_SCROLLBAR_INSTANCE = new InjectionToken<any>('SCROLLAREA_SCROLLBAR_INSTANCE');\n","import { Injectable } from '@angular/core';\nimport { style } from '@primeuix/styles/scrollarea';\nimport { BaseStyle } from 'primeng/base';\n\nconst classes = {\n root: ({ instance }: any) => ['p-scrollarea p-component', { 'p-scrollarea-mask': instance.mask() }],\n viewport: 'p-scrollarea-viewport',\n content: 'p-scrollarea-content',\n scrollbar: 'p-scrollarea-scrollbar',\n handle: 'p-scrollarea-handle',\n corner: 'p-scrollarea-corner'\n};\n\nconst inlineStyles = {\n root: {\n position: 'relative'\n },\n viewport: {\n overflow: 'scroll',\n scrollbarWidth: 'none'\n },\n scrollbar: ({ instance }: any) => {\n const isVertical = instance.orientation() === 'vertical';\n return {\n position: 'absolute',\n touchAction: 'none',\n userSelect: 'none',\n WebkitUserSelect: 'none',\n display: instance.isHidden() ? 'none' : undefined,\n top: isVertical ? 0 : undefined,\n bottom: isVertical ? 'var(--px-corner-height)' : 0,\n insetInlineEnd: isVertical ? 0 : 'var(--px-corner-width)',\n insetInlineStart: !isVertical ? 0 : undefined\n };\n },\n corner: ({ instance }: any) => ({\n position: 'absolute',\n bottom: 0,\n insetInlineEnd: 0,\n display: instance.isHidden() ? 'none' : undefined\n })\n};\n\n@Injectable()\nexport class ScrollAreaStyle extends BaseStyle {\n name = 'scrollarea';\n\n style = style;\n\n classes = classes;\n\n override inlineStyles = inlineStyles;\n}\n\n/**\n *\n * ScrollArea is a cross browser, lightweight and themable alternative to native browser scrollbar.\n *\n * [Live Demo](https://www.primeng.org/scrollarea)\n *\n * @module scrollareastyle\n *\n */\nexport enum ScrollAreaClasses {\n /**\n * Class name of the root element\n */\n root = 'p-scrollarea',\n /**\n * Class name of the viewport element\n */\n viewport = 'p-scrollarea-viewport',\n /**\n * Class name of the content element\n */\n content = 'p-scrollarea-content',\n /**\n * Class name of the scrollbar element\n */\n scrollbar = 'p-scrollarea-scrollbar',\n /**\n * Class name of the handle element\n */\n handle = 'p-scrollarea-handle',\n /**\n * Class name of the corner element\n */\n corner = 'p-scrollarea-corner'\n}\n\nexport interface ScrollAreaStyle extends BaseStyle {}\n","import { ChangeDetectionStrategy, Component, computed, inject, ViewEncapsulation } from '@angular/core';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind, BindModule } from 'primeng/bind';\nimport type { ScrollArea } from './scrollarea';\nimport { SCROLLAREA_INSTANCE } from './scrollarea-token';\nimport { ScrollAreaStyle } from './style/scrollareastyle';\n\n/**\n * ScrollAreaContent is a helper component for ScrollArea component.\n * @group Components\n */\n@Component({\n selector: 'p-scrollarea-content, p-scroll-area-content',\n standalone: true,\n imports: [BindModule],\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: PARENT_INSTANCE, useExisting: ScrollAreaContent }],\n host: {\n '[class]': 'cx(\"content\")',\n '[style.min-width]': 'contentMinWidth()',\n '[style.min-height]': 'contentMinHeight()'\n },\n hostDirectives: [Bind]\n})\nexport class ScrollAreaContent extends BaseComponent {\n componentName = 'ScrollAreaContent';\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n pcScrollArea = inject<ScrollArea>(SCROLLAREA_INSTANCE);\n\n _componentStyle = inject(ScrollAreaStyle);\n\n contentMinWidth = computed(() => (this.pcScrollArea.hasOverflowX() ? 'fit-content' : null));\n\n contentMinHeight = computed(() => (this.pcScrollArea.hasOverflowY() ? 'fit-content' : null));\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.pcScrollArea.ptms(['content']));\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, ViewEncapsulation } from '@angular/core';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind, BindModule } from 'primeng/bind';\nimport type { ScrollArea } from './scrollarea';\nimport { SCROLLAREA_INSTANCE } from './scrollarea-token';\nimport { ScrollAreaStyle } from './style/scrollareastyle';\n\n/**\n * ScrollAreaCorner is a helper component for ScrollArea component.\n * @group Components\n */\n@Component({\n selector: 'p-scrollarea-corner, p-scroll-area-corner',\n standalone: true,\n imports: [BindModule],\n template: ``,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: PARENT_INSTANCE, useExisting: ScrollAreaCorner }],\n host: {\n '[class]': 'cx(\"corner\")',\n '[style]': 'sx(\"corner\")'\n },\n hostDirectives: [Bind]\n})\nexport class ScrollAreaCorner extends BaseComponent {\n componentName = 'ScrollAreaCorner';\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n pcScrollArea = inject<ScrollArea>(SCROLLAREA_INSTANCE);\n\n _componentStyle = inject(ScrollAreaStyle);\n\n private hostEl = inject(ElementRef);\n\n isHidden = computed(() => this.pcScrollArea.cornerHidden());\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.pcScrollArea.ptms(['corner']));\n }\n\n onAfterViewInit() {\n this.pcScrollArea.cornerEl = this.hostEl.nativeElement;\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, ViewEncapsulation } from '@angular/core';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind, BindModule } from 'primeng/bind';\nimport type { ScrollArea } from './scrollarea';\nimport { SCROLLAREA_INSTANCE, SCROLLAREA_SCROLLBAR_INSTANCE } from './scrollarea-token';\nimport { ScrollAreaStyle } from './style/scrollareastyle';\n\n/**\n * ScrollAreaScrollbar is a helper component for ScrollArea component.\n * @group Components\n */\n@Component({\n selector: 'p-scrollarea-scrollbar, p-scroll-area-scrollbar',\n standalone: true,\n imports: [BindModule],\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: SCROLLAREA_SCROLLBAR_INSTANCE, useExisting: ScrollAreaScrollbar },\n { provide: PARENT_INSTANCE, useExisting: ScrollAreaScrollbar }\n ],\n host: {\n '[class]': 'cx(\"scrollbar\")',\n '[style]': 'sx(\"scrollbar\")',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-hovering]': 'dataHovering()',\n '[attr.data-scrolling]': 'dataScrolling()',\n '(pointerdown)': 'pcScrollArea.onScrollbarPointerDown($event, orientation())',\n '(pointermove)': 'pcScrollArea.onScrollbarPointerMove($event)',\n '(pointerup)': 'pcScrollArea.onScrollbarPointerUp($event)',\n '(wheel)': 'pcScrollArea.onScrollbarWheel($event, orientation())'\n },\n hostDirectives: [Bind]\n})\nexport class ScrollAreaScrollbar extends BaseComponent {\n componentName = 'ScrollAreaScrollbar';\n\n $pcScrollAreaScrollbar: ScrollAreaScrollbar | undefined = inject(SCROLLAREA_SCROLLBAR_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n pcScrollArea = inject<ScrollArea>(SCROLLAREA_INSTANCE);\n\n _componentStyle = inject(ScrollAreaStyle);\n\n private hostEl = inject(ElementRef);\n\n /**\n * Orientation of the scrollbar.\n * @group Props\n */\n orientation = input<'vertical' | 'horizontal'>('vertical');\n\n isVertical = computed(() => this.orientation() === 'vertical');\n\n isHidden = computed(() => (this.isVertical() ? this.pcScrollArea.hiddenY() : this.pcScrollArea.hiddenX()));\n\n dataHovering = computed(() => (this.pcScrollArea.hovering() ? '' : null));\n\n dataScrolling = computed(() => {\n const isVertical = this.isVertical();\n return (isVertical ? this.pcScrollArea.scrollingY() : this.pcScrollArea.scrollingX()) ? '' : null;\n });\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.pcScrollArea.ptms(['scrollbar']));\n }\n\n onAfterViewInit() {\n const el = this.hostEl.nativeElement;\n if (this.isVertical()) {\n this.pcScrollArea.scrollbarYEl = el;\n } else {\n this.pcScrollArea.scrollbarXEl = el;\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, ViewEncapsulation } from '@angular/core';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind, BindModule } from 'primeng/bind';\nimport type { ScrollArea } from './scrollarea';\nimport type { ScrollAreaScrollbar } from './scrollarea-scrollbar';\nimport { SCROLLAREA_INSTANCE, SCROLLAREA_SCROLLBAR_INSTANCE } from './scrollarea-token';\nimport { ScrollAreaStyle } from './style/scrollareastyle';\n\n/**\n * ScrollAreaHandle is a helper component for ScrollArea component.\n * @group Components\n */\n@Component({\n selector: 'p-scrollarea-handle, p-scroll-area-handle',\n standalone: true,\n imports: [BindModule],\n template: ``,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: PARENT_INSTANCE, useExisting: ScrollAreaHandle }],\n host: {\n '[class]': 'cx(\"handle\")',\n '[attr.data-orientation]': 'orientation()',\n '[style.height]': 'handleHeight()',\n '[style.width]': 'handleWidth()',\n '[style.transform]': 'handleTransform()',\n '(pointerdown)': 'pcScrollArea.onHandlePointerDown($event, orientation())'\n },\n hostDirectives: [Bind]\n})\nexport class ScrollAreaHandle extends BaseComponent {\n componentName = 'ScrollAreaHandle';\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n pcScrollArea = inject<ScrollArea>(SCROLLAREA_INSTANCE);\n\n pcScrollbar = inject<ScrollAreaScrollbar>(SCROLLAREA_SCROLLBAR_INSTANCE);\n\n _componentStyle = inject(ScrollAreaStyle);\n\n private hostEl = inject(ElementRef);\n\n orientation = computed(() => this.pcScrollbar.orientation());\n\n isVertical = computed(() => this.orientation() === 'vertical');\n\n handleHeight = computed(() => (this.isVertical() ? 'var(--px-handle-height, 0px)' : undefined));\n\n handleWidth = computed(() => (this.isVertical() ? undefined : 'var(--px-handle-width, 0px)'));\n\n handleTransform = computed(() => (this.isVertical() ? 'translate3d(0, var(--px-handle-offset, 0px), 0)' : 'translate3d(var(--px-handle-offset, 0px), 0, 0)'));\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.pcScrollArea.ptms(['handle']));\n }\n\n onAfterViewInit() {\n const el = this.hostEl.nativeElement;\n if (this.isVertical()) {\n this.pcScrollArea.handleYEl = el;\n } else {\n this.pcScrollArea.handleXEl = el;\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, ViewEncapsulation } from '@angular/core';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind, BindModule } from 'primeng/bind';\nimport type { ScrollArea } from './scrollarea';\nimport { SCROLLAREA_INSTANCE, SCROLLAREA_VIEWPORT_INSTANCE } from './scrollarea-token';\nimport { ScrollAreaStyle } from './style/scrollareastyle';\n\n/**\n * ScrollAreaViewport is a helper component for ScrollArea component.\n * @group Components\n */\n@Component({\n selector: 'p-scrollarea-viewport, p-scroll-area-viewport',\n standalone: true,\n imports: [BindModule],\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: SCROLLAREA_VIEWPORT_INSTANCE, useExisting: ScrollAreaViewport },\n { provide: PARENT_INSTANCE, useExisting: ScrollAreaViewport }\n ],\n host: {\n '[class]': 'cx(\"viewport\")',\n '[style]': 'sx(\"viewport\")',\n '[attr.tabindex]': 'viewportTabindex()',\n '[attr.data-scroll-y-before]': 'dataScrollYBefore()',\n '[attr.data-scroll-y-after]': 'dataScrollYAfter()',\n '[attr.data-scroll-x-before]': 'dataScrollXBefore()',\n '[attr.data-scroll-x-after]': 'dataScrollXAfter()',\n '(scroll)': 'pcScrollArea.onScroll()'\n },\n hostDirectives: [Bind]\n})\nexport class ScrollAreaViewport extends BaseComponent {\n componentName = 'ScrollAreaViewport';\n\n $pcScrollAreaViewport: ScrollAreaViewport | undefined = inject(SCROLLAREA_VIEWPORT_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n pcScrollArea = inject<ScrollArea>(SCROLLAREA_INSTANCE);\n\n _componentStyle = inject(ScrollAreaStyle);\n\n private hostEl = inject(ElementRef);\n\n viewportTabindex = computed(() => (this.pcScrollArea.hasOverflowX() || this.pcScrollArea.hasOverflowY() ? this.pcScrollArea.tabindex() : null));\n\n dataScrollYBefore = computed(() => (this.pcScrollArea.yBefore() ? '' : null));\n\n dataScrollYAfter = computed(() => (this.pcScrollArea.yAfter() ? '' : null));\n\n dataScrollXBefore = computed(() => (this.pcScrollArea.xBefore() ? '' : null));\n\n dataScrollXAfter = computed(() => (this.pcScrollArea.xAfter() ? '' : null));\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.pcScrollArea.ptms(['viewport']));\n }\n\n onAfterViewInit() {\n this.pcScrollArea.viewportEl = this.hostEl.nativeElement;\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, inject, input, NgModule, numberAttribute, signal, ViewEncapsulation } from '@angular/core';\nimport { SharedModule } from 'primeng/api';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind, BindModule } from 'primeng/bind';\nimport { ScrollAreaPassThrough, ScrollAreaVariant } from 'primeng/types/scrollarea';\nimport { ScrollAreaContent } from './scrollarea-content';\nimport { ScrollAreaCorner } from './scrollarea-corner';\nimport { ScrollAreaScrollbar } from './scrollarea-scrollbar';\nimport { ScrollAreaHandle } from './scrollarea-handle';\nimport { SCROLLAREA_INSTANCE } from './scrollarea-token';\nimport { ScrollAreaViewport } from './scrollarea-viewport';\nimport { ScrollAreaStyle } from './style/scrollareastyle';\n\nconst SCROLL_TIMEOUT = 500;\nconst MIN_HANDLE_SIZE = 20;\n\n/**\n * ScrollArea is a cross browser, lightweight and themable alternative to native browser scrollbar.\n * @group Components\n */\n@Component({\n selector: 'p-scrollarea, p-scroll-area',\n standalone: true,\n imports: [SharedModule, BindModule],\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [ScrollAreaStyle, { provide: SCROLLAREA_INSTANCE, useExisting: ScrollArea }, { provide: PARENT_INSTANCE, useExisting: ScrollArea }],\n host: {\n '[class]': 'cx(\"root\")',\n '[style]': 'sx(\"root\")',\n '[attr.data-variant]': 'variant()',\n '[style.--px-corner-height]': 'cornerHeightPx()',\n '[style.--px-corner-width]': 'cornerWidthPx()',\n '(pointerenter)': 'onRootPointerEnter($event)',\n '(pointerleave)': 'onRootPointerLeave()',\n '(pointerdown)': 'onRootPointerDown($event)'\n },\n hostDirectives: [Bind]\n})\nexport class ScrollArea extends BaseComponent<ScrollAreaPassThrough> {\n componentName = 'ScrollArea';\n\n $pcScrollArea: ScrollArea | undefined = inject(SCROLLAREA_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n /**\n * Scrollbar visibility variant.\n * @group Props\n */\n variant = input<ScrollAreaVariant>('auto');\n\n /**\n * Whether to show gradient mask at scroll edges.\n * @group Props\n */\n mask = input(false, { transform: booleanAttribute });\n /**\n * Tabindex of the viewport when content overflows.\n * @defaultValue 0\n * @group Props\n */\n tabindex = input(0, { transform: numberAttribute });\n\n _componentStyle = inject(ScrollAreaStyle);\n\n hovering = signal(false);\n\n scrollingX = signal(false);\n\n scrollingY = signal(false);\n\n touchModality = signal(false);\n\n hiddenX = signal(true);\n\n hiddenY = signal(true);\n\n cornerHidden = signal(true);\n\n hasOverflowX = signal(false);\n\n hasOverflowY = signal(false);\n\n yBefore = signal(false);\n\n yAfter = signal(false);\n\n xBefore = signal(false);\n\n xAfter = signal(false);\n\n cornerWidthValue = signal(0);\n\n cornerHeightValue = signal(0);\n\n cornerWidthPx = computed(() => `${this.cornerWidthValue()}px`);\n\n cornerHeightPx = computed(() => `${this.cornerHeightValue()}px`);\n\n dataHovering = computed(() => (this.hovering() ? '' : null));\n\n dataScrollingY = computed(() => (this.scrollingY() ? '' : null));\n\n dataScrollingX = computed(() => (this.scrollingX() ? '' : null));\n\n viewportEl: HTMLElement | null = null;\n\n scrollbarYEl: HTMLElement | null = null;\n\n scrollbarXEl: HTMLElement | null = null;\n\n handleYEl: HTMLElement | null = null;\n\n handleXEl: HTMLElement | null = null;\n\n cornerEl: HTMLElement | null = null;\n\n private isDragging = false;\n\n private dragOrientation: 'vertical' | 'horizontal' = 'vertical';\n\n private dragStart = { pointerPos: 0, scrollPos: 0 };\n\n private prevScroll = { top: 0, left: 0 };\n\n private scrollXTimeout: ReturnType<typeof setTimeout> | null = null;\n\n private scrollYTimeout: ReturnType<typeof setTimeout> | null = null;\n\n private rafId: number | null = null;\n\n private resizeObserver: ResizeObserver | null = null;\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n }\n\n onAfterViewInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.computeHandle();\n this.setupResizeObserver();\n }\n }\n\n onDestroy() {\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n\n if (this.scrollXTimeout) clearTimeout(this.scrollXTimeout);\n if (this.scrollYTimeout) clearTimeout(this.scrollYTimeout);\n if (this.rafId) cancelAnimationFrame(this.rafId);\n }\n\n private setupResizeObserver() {\n const vp = this.viewportEl;\n if (!vp) return;\n\n let localRaf: number | null = null;\n\n this.resizeObserver = new ResizeObserver(() => {\n if (localRaf) return;\n localRaf = requestAnimationFrame(() => {\n localRaf = null;\n this.computeHandle();\n });\n });\n\n this.resizeObserver.observe(vp);\n if (vp.firstElementChild) {\n this.resizeObserver.observe(vp.firstElementChild);\n }\n }\n\n computeHandle() {\n const vp = this.viewportEl;\n if (!vp) return;\n\n const { scrollHeight, scrollWidth, clientHeight, clientWidth, scrollTop, scrollLeft } = vp;\n const yHidden = clientHeight >= scrollHeight;\n const xHidden = clientWidth >= scrollWidth;\n\n const scrollbarY = this.scrollbarYEl;\n const scrollbarX = this.scrollbarXEl;\n\n const cw = !yHidden && !xHidden && scrollbarY ? scrollbarY.offsetWidth : 0;\n const ch = !yHidden && !xHidden && scrollbarX ? scrollbarX.offsetHeight : 0;\n const scrollbarYHeight = scrollbarY && !yHidden ? scrollbarY.offsetHeight : 0;\n const scrollbarXWidth = scrollbarX && !xHidden ? scrollbarX.offsetWidth : 0;\n\n this.hiddenX.set(xHidden);\n this.hiddenY.set(yHidden);\n this.cornerHidden.set(xHidden || yHidden);\n this.cornerWidthValue.set(cw);\n this.cornerHeightValue.set(ch);\n this.hasOverflowX.set(!xHidden);\n this.hasOverflowY.set(!yHidden);\n this.xBefore.set(!xHidden && scrollLeft > 0);\n this.xAfter.set(!xHidden && scrollWidth - clientWidth - scrollLeft > 1);\n this.yBefore.set(!yHidden && scrollTop > 0);\n this.yAfter.set(!yHidden && scrollHeight - clientHeight - scrollTop > 1);\n\n if (scrollbarY && !yHidden && scrollbarYHeight > 0) {\n const handleRatio = clientHeight / scrollHeight;\n const handleHeight = Math.max(handleRatio * scrollbarYHeight, MIN_HANDLE_SIZE);\n const availableTrack = scrollbarYHeight - handleHeight;\n const maxScrollTop = scrollHeight - clientHeight;\n const scrollRatio = maxScrollTop > 0 ? scrollTop / maxScrollTop : 0;\n const offsetPx = scrollRatio * availableTrack;\n\n scrollbarY.style.setProperty('--px-handle-height', `${handleHeight}px`);\n scrollbarY.style.setProperty('--px-handle-offset', `${offsetPx}px`);\n }\n\n if (scrollbarX && !xHidden && scrollbarXWidth > 0) {\n const handleRatio = clientWidth / scrollWidth;\n const handleWidth = Math.max(handleRatio * scrollbarXWidth, MIN_HANDLE_SIZE);\n const availableTrack = scrollbarXWidth - handleWidth;\n const maxScrollLeft = scrollWidth - clientWidth;\n const scrollRatio = maxScrollLeft > 0 ? scrollLeft / maxScrollLeft : 0;\n const offsetPx = scrollRatio * availableTrack;\n\n scrollbarX.style.setProperty('--px-handle-width', `${handleWidth}px`);\n scrollbarX.style.setProperty('--px-handle-offset', `${offsetPx}px`);\n }\n\n this.cd.markForCheck();\n }\n\n onScroll() {\n if (!this.rafId) {\n this.rafId = requestAnimationFrame(() => {\n this.rafId = null;\n this.computeHandle();\n });\n }\n\n const vp = this.viewportEl;\n if (!vp) return;\n\n const { scrollTop, scrollLeft } = vp;\n\n if (scrollTop !== this.prevScroll.top) {\n this.scrollingY.set(true);\n if (this.scrollYTimeout) clearTimeout(this.scrollYTimeout);\n this.scrollYTimeout = setTimeout(() => {\n this.scrollingY.set(false);\n this.cd.markForCheck();\n }, SCROLL_TIMEOUT);\n }\n\n if (scrollLeft !== this.prevScroll.left) {\n this.scrollingX.set(true);\n if (this.scrollXTimeout) clearTimeout(this.scrollXTimeout);\n this.scrollXTimeout = setTimeout(() => {\n this.scrollingX.set(false);\n this.cd.markForCheck();\n }, SCROLL_TIMEOUT);\n }\n\n this.prevScroll.top = scrollTop;\n this.prevScroll.left = scrollLeft;\n\n this.cd.markForCheck();\n }\n\n onHandlePointerDown(event: PointerEvent, orientation: 'vertical' | 'horizontal') {\n if (event.pointerType === 'mouse' && event.button !== 0) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n const isVertical = orientation === 'vertical';\n const scrollbar = isVertical ? this.scrollbarYEl : this.scrollbarXEl;\n const vp = this.viewportEl;\n\n if (!scrollbar || !vp) return;\n\n scrollbar.setPointerCapture(event.pointerId);\n this.isDragging = true;\n this.dragOrientation = orientation;\n this.dragStart = {\n pointerPos: isVertical ? event.clientY : event.clientX,\n scrollPos: isVertical ? vp.scrollTop : vp.scrollLeft\n };\n }\n\n onScrollbarPointerDown(event: PointerEvent, orientation: 'vertical' | 'horizontal') {\n if (event.pointerType === 'mouse' && event.button !== 0) return;\n\n event.preventDefault();\n\n const isVertical = orientation === 'vertical';\n const scrollbar = isVertical ? this.scrollbarYEl : this.scrollbarXEl;\n const vp = this.viewportEl;\n\n if (!scrollbar || !vp) return;\n\n scrollbar.setPointerCapture(event.pointerId);\n this.isDragging = true;\n this.dragOrientation = orientation;\n\n const rect = scrollbar.getBoundingClientRect();\n const handle = isVertical ? this.handleYEl : this.handleXEl;\n const handleSize = handle ? (isVertical ? handle.offsetHeight : handle.offsetWidth) : 0;\n const trackSize = isVertical ? rect.height : rect.width;\n const effectiveTrack = trackSize - handleSize;\n\n if (effectiveTrack > 0) {\n const clickPos = (isVertical ? event.clientY - rect.top : event.clientX - rect.left) - handleSize / 2;\n const ratio = Math.max(0, Math.min(1, clickPos / effectiveTrack));\n const maxScroll = isVertical ? vp.scrollHeight - vp.clientHeight : vp.scrollWidth - vp.clientWidth;\n\n if (isVertical) {\n vp.scrollTop = ratio * maxScroll;\n } else {\n vp.scrollLeft = ratio * maxScroll;\n }\n }\n\n this.dragStart = {\n pointerPos: isVertical ? event.clientY : event.clientX,\n scrollPos: isVertical ? vp.scrollTop : vp.scrollLeft\n };\n }\n\n onScrollbarPointerMove(event: PointerEvent) {\n if (!this.isDragging) return;\n\n event.preventDefault();\n\n const isVertical = this.dragOrientation === 'vertical';\n const vp = this.viewportEl;\n const scrollbar = isVertical ? this.scrollbarYEl : this.scrollbarXEl;\n\n if (!vp || !scrollbar) return;\n\n const rect = scrollbar.getBoundingClientRect();\n const handle = isVertical ? this.handleYEl : this.handleXEl;\n const handleSize = handle ? (isVertical ? handle.offsetHeight : handle.offsetWidth) : 0;\n const trackSize = isVertical ? rect.height : rect.width;\n const effectiveTrack = trackSize - handleSize;\n\n if (effectiveTrack <= 0) return;\n\n const currentPos = isVertical ? event.clientY : event.clientX;\n const delta = currentPos - this.dragStart.pointerPos;\n const maxScroll = isVertical ? vp.scrollHeight - vp.clientHeight : vp.scrollWidth - vp.clientWidth;\n const scrollDelta = (delta / effectiveTrack) * maxScroll;\n\n if (isVertical) {\n vp.scrollTop = this.dragStart.scrollPos + scrollDelta;\n } else {\n vp.scrollLeft = this.dragStart.scrollPos + scrollDelta;\n }\n }\n\n onScrollbarPointerUp(event: PointerEvent) {\n event.preventDefault();\n (event.currentTarget as HTMLElement).releasePointerCapture(event.pointerId);\n this.isDragging = false;\n }\n\n onScrollbarWheel(event: WheelEvent, orientation: 'vertical' | 'horizontal') {\n const vp = this.viewportEl;\n if (!vp || event.ctrlKey) return;\n\n if (orientation === 'vertical') {\n vp.scrollTop += event.deltaY;\n } else {\n vp.scrollLeft += event.deltaX || event.deltaY;\n }\n }\n\n onRootPointerEnter(event: PointerEvent) {\n if (event.pointerType === 'touch') {\n this.touchModality.set(true);\n } else {\n this.touchModality.set(false);\n this.hovering.set(true);\n }\n }\n\n onRootPointerLeave() {\n this.hovering.set(false);\n }\n\n onRootPointerDown(event: PointerEvent) {\n if (event.pointerType === 'touch') {\n this.touchModality.set(true);\n }\n }\n\n /**\n * Refreshes the position and size of the scrollbar.\n * @group Method\n */\n refresh() {\n this.computeHandle();\n }\n}\n\n@NgModule({\n imports: [ScrollArea, ScrollAreaViewport, ScrollAreaContent, ScrollAreaScrollbar, ScrollAreaHandle, ScrollAreaCorner, SharedModule, BindModule],\n exports: [ScrollArea, ScrollAreaViewport, ScrollAreaContent, ScrollAreaScrollbar, ScrollAreaHandle, ScrollAreaCorner, SharedModule, BindModule]\n})\nexport class ScrollAreaModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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