@libs-ui/components-scroll-overlay 0.2.159 → 0.2.160

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-components-scroll-overlay.mjs","sources":["../../../../../libs-ui/components/scroll-overlay/src/scroll-overlay.directive.ts","../../../../../libs-ui/components/scroll-overlay/src/scroll.interface.ts","../../../../../libs-ui/components/scroll-overlay/src/libs-ui-components-scroll-overlay.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Directive, ElementRef, OnDestroy, Renderer2, computed, effect, inject, input, output, signal, untracked } from \"@angular/core\";\nimport { checkMouseOverInContainer, getDragEventByElement } from '@libs-ui/utils';\nimport { Subject, Subscription, fromEvent, interval, switchMap, takeUntil, tap } from \"rxjs\";\nimport { IScrollOverlayOptions, TYPE_SCROLL_DIRECTION } from \"./scroll.interface\";\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[LibsUiComponentsScrollOverlayDirective]',\n standalone: true\n})\nexport class LibsUiComponentsScrollOverlayDirective implements OnDestroy {\n // #region PROPERTY\n private readonly styles = computed(() => `\n .scrollbar-track{\n background-color:${this.scrollbarColor()};\n }\n .scrollbar-track:hover{\n background-color:${this.scrollbarHoverColor()};\n }\n .scrollbar-track-X {\n width:100%;\n position: absolute;\n bottom: 0;\n left: 0;\n height: ${this.scrollbarWidth()}px;\n visibility: hidden;\n cursor: pointer;\n opacity: 0;\n z-index: 1;\n transition: opacity 0.3s ease, visibility 0.3s ease;\n }\n\n .scrollbar-track-Y {\n height:100%;\n position: absolute;\n top: 0;\n right: 0;\n width: ${this.scrollbarWidth()}px;\n visibility: hidden;\n cursor: pointer;\n opacity: 0;\n z-index: 1;\n transition: opacity 0.3s ease, visibility 0.3s ease;\n }\n\n .scrollbar-thumb{\n background-color:${this.scrollThumbColor()};\n }\n .scrollbar-thumb:hover{\n background-color:${this.scrollThumbHoverColor()};\n }\n\n .scrollbar-thumb-X {\n height: calc(100% - ${this.scrollbarPadding() * 2}px);\n botton: ${this.scrollbarPadding()}px;\n border-radius: 4px;\n cursor: move;\n transition: background-color 0.3s;\n position: absolute;\n }\n\n .scrollbar-thumb-Y {\n width: calc(100% - ${this.scrollbarPadding() * 2}px);\n right: ${this.scrollbarPadding()}px;\n border-radius: 4px;\n cursor: move;\n transition: background-color 0.3s;\n position: absolute;\n }\n `, {})\n private isScrollThumb = signal<boolean>(false);\n private keepDisplayThumb = signal<boolean>(false);\n private subsX = new Subscription();\n private subsY = new Subscription();\n private scrollbarWidth = computed(() => this.options()?.scrollbarWidth || 12); // Chiều rộng thanh cuộn\n private scrollbarPadding = computed(() => this.options()?.scrollbarPadding || 2); // Chiều rộng thanh cuộn\n private scrollbarColor = computed(() => this.options()?.scrollbarColor || '');\n private scrollbarHoverColor = computed(() => this.options()?.scrollbarColor || '#CDD0D640');\n private scrollThumbColor = computed(() => this.options()?.scrollThumbColor || '#CDD0D6');\n private scrollThumbHoverColor = computed(() => this.options()?.scrollThumbHoverColor || '#9CA2AD');\n private readonly divContainer = document.createElement('div');\n private readonly trackX: HTMLElement = document.createElement('div');\n private readonly thumbX: HTMLElement = document.createElement('div');\n private readonly trackY: HTMLElement = document.createElement('div');\n private readonly thumbY: HTMLElement = document.createElement('div');\n private readonly onDestroy = new Subject<void>();\n\n // #region INPUT\n readonly debugMode = input<boolean>(false);\n readonly classContainer = input<string, string | undefined>('', { transform: value => value ?? '' });\n readonly options = input<IScrollOverlayOptions | undefined>(Object.assign({}));\n readonly elementCheckScrollX = input<HTMLElement>();\n readonly elementCheckScrollY = input<HTMLElement>();\n\n // #region OUTPUT\n readonly outScroll = output<Event>();\n readonly outScrollX = output<Event>();\n readonly outScrollY = output<Event>();\n readonly outScrollTop = output<Event>();\n readonly outScrollBottom = output<Event>();\n\n // #region INJECT\n private element = inject(ElementRef);\n private render2 = inject(Renderer2);\n\n constructor() {\n effect(() => {\n const options = this.options();\n this.divContainer.className = '';\n this.classContainer()?.split(' ').forEach(className => {\n if (!className) {\n return;\n }\n this.divContainer.classList.add(className);\n });\n\n untracked(() => {\n if (options?.scrollX !== 'hidden') {\n this.subsX.unsubscribe();\n this.trackX.className = '';\n this.thumbX.className = '';\n this.createScrollbar('X', this.trackX, this.thumbX);\n this.bindEventsScrollBar('X', this.trackX);\n\n this.handlerDragAndDropThumb('X');\n this.handlerClickTrack('X');\n }\n\n if (options?.scrollY !== 'hidden') {\n this.trackY.className = '';\n this.thumbY.className = '';\n this.subsY.unsubscribe();\n this.createScrollbar('Y', this.trackY, this.thumbY);\n this.bindEventsScrollBar('Y', this.trackY);\n\n this.handlerDragAndDropThumb('Y');\n this.handlerClickTrack('Y');\n }\n });\n\n });\n }\n\n // #region FUNCTIONS\n private get Element(): HTMLElement {\n return this.element.nativeElement;\n }\n\n private createScrollbar(scrollDirection: TYPE_SCROLL_DIRECTION, trackEl: HTMLElement, thumbEl: HTMLElement) {\n const idStyleTag = \"#id-style-tag-custom-scroll-overlay\"\n const styleElCustomScrollOverlay = document.getElementById(idStyleTag);\n\n if (!styleElCustomScrollOverlay) {\n const styleEl = document.createElement('style');\n styleEl.setAttribute('id', idStyleTag);\n styleEl.innerHTML = this.styles();\n document.head.append(styleEl);\n }\n\n const stylesProperty = {\n \"box-sizing\": \"border-box\",\n \"scrollbar-width\": \"none\",\n \"scrollbar-color\": \"transparent transparent\",\n \"overflow\": \"hidden\",\n \"overflow-x\": `${this.options()?.scrollX || 'scroll'}`,\n \"overflow-y\": `${this.options()?.scrollY || 'scroll'}`\n } as any;\n\n Object.keys(stylesProperty).forEach(key => {\n this.render2.setStyle(this.Element, key, stylesProperty[key], 1);\n });\n\n trackEl.classList.add(`scrollbar-track`);\n trackEl.classList.add(`scrollbar-track-${scrollDirection}`);\n\n thumbEl.classList.add(`scrollbar-thumb`);\n thumbEl.classList.add(`scrollbar-thumb-${scrollDirection}`);\n trackEl.appendChild(thumbEl);\n if (this.Element.className) {\n this.Element.className.split(' ').forEach((className: string) => {\n if (className && (['w-full', 'w-screen', 'h-full', 'h-screen'].includes(className) || className.includes('min-h-') || className.includes('min-w-') || /^(!?)(h|w)-\\[[0-9]+px\\]$/.test(className)) && !this.divContainer.classList.contains(className)) {\n this.divContainer.classList.add(className);\n }\n\n });\n if (!this.Element.className.includes('min-h-')) {\n this.divContainer.classList.add('min-h-0');\n\n }\n if (!this.Element.className.includes('min-w-')) {\n this.divContainer.classList.add('min-w-0');\n }\n }\n this.divContainer.appendChild(trackEl);\n\n if (!this.divContainer.style.position) {\n this.Element.parentElement?.insertBefore(this.divContainer, this.Element);\n this.divContainer.style.position = 'relative';\n }\n this.divContainer.append(this.Element);\n this.updateScrollbarSize(scrollDirection);\n }\n\n private bindEventsScrollBar(scrollDirection: TYPE_SCROLL_DIRECTION, trackEl: HTMLElement) {\n let scrollLeft = this.Element.scrollLeft;\n let scrollTop = this.Element.scrollTop;\n const subs: Subscription = fromEvent<Event>(this.Element, 'scroll').pipe(tap((event) => {\n const target = this.Element;\n\n this.outScroll.emit(event);\n if (scrollDirection === 'X') {\n if (target.scrollLeft && (target.scrollLeft + target.offsetWidth >= target.scrollWidth)) {\n target.scrollLeft = target.scrollWidth - target.offsetWidth - (target.offsetWidth - target.clientWidth);\n }\n\n if (target.scrollLeft !== scrollLeft) {\n this.outScrollX.emit(event);\n\n }\n scrollLeft = target.scrollLeft;\n this.updateScrollbarPosition(scrollDirection);\n\n return;\n }\n\n if (target.scrollTop === scrollTop) {\n return\n }\n this.updateScrollbarPosition(scrollDirection);\n scrollTop = target.scrollTop;\n this.outScrollY.emit(event);\n\n if (target.scrollTop === 0) {\n return this.outScrollTop.emit(event);\n }\n\n if (target.scrollHeight <= target.scrollTop + target.offsetHeight + 3) {\n return this.outScrollBottom.emit(event);\n }\n }), takeUntil(this.onDestroy)).subscribe();\n\n subs.add(fromEvent(document, 'resize').pipe(tap(this.updateScrollbarSize.bind(this, scrollDirection)), takeUntil(this.onDestroy)).subscribe());\n\n const mouseLeave = fromEvent(this.divContainer, 'mouseleave');\n const mouseenter = fromEvent(this.divContainer, 'mouseenter');\n\n subs.add(mouseenter.pipe(tap(() => {\n trackEl.style.visibility = 'visible';\n trackEl.style.opacity = '1';\n this.updateScrollbarSize(scrollDirection);\n }),\n switchMap(() => interval(1000).pipe(takeUntil(mouseLeave))),\n tap(this.updateScrollbarSize.bind(this, scrollDirection)),\n takeUntil(this.onDestroy)\n ).subscribe());\n\n subs.add(mouseLeave.pipe(tap(() => {\n if (this.keepDisplayThumb()) {\n return;\n }\n trackEl.style.visibility = 'hidden';\n trackEl.style.opacity = '0';\n }), takeUntil(this.onDestroy)).subscribe());\n\n if (scrollDirection === 'X') {\n this.subsX = subs;\n\n return;\n }\n\n if (scrollDirection === 'Y') {\n this.subsY = subs;\n\n return;\n }\n }\n\n protected handlerClickTrack(scrollDirection: TYPE_SCROLL_DIRECTION) {\n const elementTrack = scrollDirection === 'X' ? this.trackX : this.trackY;\n const elementThumb = scrollDirection === 'X' ? this.thumbX : this.thumbY;\n const subs = scrollDirection === 'X' ? this.subsX : this.subsY;\n\n subs.add(fromEvent<MouseEvent>(elementTrack, 'click').subscribe(e => {\n if (this.isScrollThumb()) {\n return;\n }\n if ((scrollDirection === 'X' && e.clientX < elementThumb.getBoundingClientRect().left) || (scrollDirection === 'Y' && e.clientY < elementThumb.getBoundingClientRect().top)) {\n this.updateScrollPositionByUserAction(scrollDirection, e, 'smooth', 0);\n return;\n }\n\n if (scrollDirection === 'X') {\n this.updateScrollPositionByUserAction(scrollDirection, e, 'smooth', -1 * elementThumb.getBoundingClientRect().width);\n return;\n }\n this.updateScrollPositionByUserAction(scrollDirection, e, 'smooth', -1 * elementThumb.getBoundingClientRect().height);\n }));\n }\n\n protected handlerDragAndDropThumb(scrollDirection: TYPE_SCROLL_DIRECTION) {\n const elementTrack = scrollDirection === 'X' ? this.trackX : this.trackY;\n const elementThumb = scrollDirection === 'X' ? this.thumbX : this.thumbY;\n const subs = scrollDirection === 'X' ? this.subsX : this.subsY;\n let lengthThumbToPointClick = 0;\n\n subs.add(getDragEventByElement({\n elementMouseDown: elementThumb,\n functionMouseDown: (mouseEvent: MouseEvent) => {\n this.isScrollThumb.set(true);\n this.keepDisplayThumb.set(true);\n if (scrollDirection === 'X') {\n lengthThumbToPointClick = elementThumb.getBoundingClientRect().left - mouseEvent.clientX;\n return;\n }\n lengthThumbToPointClick = elementThumb.getBoundingClientRect().top - mouseEvent.clientY;\n },\n functionMouseUp: (mouseEvent: MouseEvent) => {\n this.keepDisplayThumb.set(false);\n lengthThumbToPointClick = 0;\n if (!checkMouseOverInContainer(mouseEvent, this.Element)) {\n elementTrack.style.visibility = 'hidden';\n elementTrack.style.opacity = '0';\n }\n setTimeout(() => {\n this.isScrollThumb.set(false);\n }, 250);\n },\n onDestroy: this.onDestroy\n }).subscribe((mouseEvent: MouseEvent) => {\n this.updateScrollPositionByUserAction(scrollDirection, mouseEvent, 'auto', lengthThumbToPointClick)\n }));\n }\n\n private updateScrollPositionByUserAction(scrollDirection: TYPE_SCROLL_DIRECTION, e: MouseEvent, behavior: 'auto' | 'smooth', lengthThumbToPointClick = 0) {\n e.stopPropagation();\n if (scrollDirection === 'X') {\n const containerWidth = this.Element.offsetWidth;\n const contentWidth = (this.elementCheckScrollX() || this.Element).scrollWidth;\n const thumbPosition = e.clientX - this.Element.getBoundingClientRect().left + lengthThumbToPointClick;\n const scrollLeft = (thumbPosition / (containerWidth - this.thumbX.offsetWidth)) * (contentWidth - containerWidth);\n\n this.Element.scroll({ left: scrollLeft, behavior });\n return;\n }\n const containerHeight = this.Element.offsetHeight;\n const contentHeight = (this.elementCheckScrollY() || this.Element).scrollHeight;\n const thumbPosition = e.clientY - this.Element.getBoundingClientRect().top + lengthThumbToPointClick;\n const scrollTop = (thumbPosition / (containerHeight - this.thumbY.offsetHeight)) * (contentHeight - containerHeight);\n\n this.Element.scroll({ top: scrollTop, behavior });\n }\n\n private updateScrollbarSize(scrollDirection: TYPE_SCROLL_DIRECTION) {\n if (scrollDirection === 'X') {\n const containerWidth = this.Element.offsetWidth;\n const contentWidth = (this.elementCheckScrollX() || this.Element).scrollWidth;\n const thumbWidth = (containerWidth / contentWidth) * (containerWidth);\n\n this.thumbX.style.width = `${thumbWidth}px`;\n this.trackX.style.display = 'none';\n if (contentWidth > containerWidth) {\n this.trackX.style.display = 'block';\n }\n this.updateScrollbarPosition(scrollDirection);\n\n return;\n }\n\n const containerHeight = this.Element.offsetHeight;\n const contentHeight = (this.elementCheckScrollY() || this.Element).scrollHeight;\n const thumbHeight = (containerHeight / contentHeight) * (containerHeight);\n\n this.thumbY.style.height = `${thumbHeight < 40 ? 40 : thumbHeight}px`;\n this.trackY.style.display = 'none';\n if (contentHeight > containerHeight) {\n this.trackY.style.display = 'block';\n }\n\n this.updateScrollbarPosition('Y');\n }\n\n private updateScrollbarPosition(scrollDirection: TYPE_SCROLL_DIRECTION) {\n if (scrollDirection === 'X') {\n const containerWidth = this.Element.offsetWidth;\n const contentWidth = (this.elementCheckScrollX() || this.Element).scrollWidth;\n const scrollLeft = this.Element.scrollLeft;\n const thumbPosition = (scrollLeft / (contentWidth - containerWidth)) * (containerWidth - this.thumbX.offsetWidth);\n\n this.thumbX.style.left = `${thumbPosition}px`;\n\n return;\n }\n const containerHeight = this.Element.offsetHeight;\n const contentHeight = (this.elementCheckScrollY() || this.Element).scrollHeight;\n const scrollTop = this.Element.scrollTop;\n const thumbPosition = (scrollTop / (contentHeight - containerHeight)) * (containerHeight - this.thumbY.offsetHeight);\n\n this.thumbY.style.top = `${thumbPosition}px`;\n }\n\n ngOnDestroy(): void {\n this.divContainer.remove();\n this.subsX.unsubscribe();\n this.subsY.unsubscribe();\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n}","export type TYPE_SCROLL_DIRECTION = 'X' | 'Y';\nexport type TYPE_SCROLL_OVERFLOW = 'hidden' | 'scroll';\nexport interface IScrollOverlayOptions {\n scrollbarWidth?: number;\n scrollbarColor?: string;\n scrollbarHoverColor?: string;\n scrollThumbColor?: string;\n scrollThumbHoverColor?: string;\n scrollbarPadding?: number;\n scrollX?: TYPE_SCROLL_OVERFLOW;\n scrollY?: TYPE_SCROLL_OVERFLOW;\n};","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libs-ui-components-scroll-overlay.mjs","sources":["../../../../../libs-ui/components/scroll-overlay/src/scroll-overlay.directive.ts","../../../../../libs-ui/components/scroll-overlay/src/scroll.interface.ts","../../../../../libs-ui/components/scroll-overlay/src/libs-ui-components-scroll-overlay.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Directive, ElementRef, OnDestroy, Renderer2, computed, effect, inject, input, output, signal, untracked } from \"@angular/core\";\nimport { checkMouseOverInContainer, getDragEventByElement } from '@libs-ui/utils';\nimport { Subject, Subscription, fromEvent, interval, switchMap, takeUntil, tap } from \"rxjs\";\nimport { IScrollOverlayOptions, TYPE_SCROLL_DIRECTION } from \"./scroll.interface\";\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[LibsUiComponentsScrollOverlayDirective]',\n standalone: true\n})\nexport class LibsUiComponentsScrollOverlayDirective implements OnDestroy {\n // #region PROPERTY\n private readonly styles = computed(() => `\n .scrollbar-track{\n background-color:${this.scrollbarColor()};\n }\n .scrollbar-track:hover{\n background-color:${this.scrollbarHoverColor()};\n }\n .scrollbar-track-X {\n width:100%;\n position: absolute;\n bottom: 0;\n left: 0;\n height: ${this.scrollbarWidth()}px;\n visibility: hidden;\n cursor: pointer;\n opacity: 0;\n z-index: 1;\n transition: opacity 0.3s ease, visibility 0.3s ease;\n }\n\n .scrollbar-track-Y {\n height:100%;\n position: absolute;\n top: 0;\n right: 0;\n width: ${this.scrollbarWidth()}px;\n visibility: hidden;\n cursor: pointer;\n opacity: 0;\n z-index: 1;\n transition: opacity 0.3s ease, visibility 0.3s ease;\n }\n\n .scrollbar-thumb{\n background-color:${this.scrollThumbColor()};\n }\n .scrollbar-thumb:hover{\n background-color:${this.scrollThumbHoverColor()};\n }\n\n .scrollbar-thumb-X {\n height: calc(100% - ${this.scrollbarPadding() * 2}px);\n botton: ${this.scrollbarPadding()}px;\n border-radius: 4px;\n cursor: move;\n transition: background-color 0.3s;\n position: absolute;\n }\n\n .scrollbar-thumb-Y {\n width: calc(100% - ${this.scrollbarPadding() * 2}px);\n right: ${this.scrollbarPadding()}px;\n border-radius: 4px;\n cursor: move;\n transition: background-color 0.3s;\n position: absolute;\n }\n `, {})\n private isScrollThumb = signal<boolean>(false);\n private keepDisplayThumb = signal<boolean>(false);\n private subsX = new Subscription();\n private subsY = new Subscription();\n private scrollbarWidth = computed(() => this.options()?.scrollbarWidth || 12); // Chiều rộng thanh cuộn\n private scrollbarPadding = computed(() => this.options()?.scrollbarPadding || 2); // Chiều rộng thanh cuộn\n private scrollbarColor = computed(() => this.options()?.scrollbarColor || '');\n private scrollbarHoverColor = computed(() => this.options()?.scrollbarColor || '#CDD0D640');\n private scrollThumbColor = computed(() => this.options()?.scrollThumbColor || '#CDD0D6');\n private scrollThumbHoverColor = computed(() => this.options()?.scrollThumbHoverColor || '#9CA2AD');\n private readonly divContainer = document.createElement('div');\n private readonly trackX: HTMLElement = document.createElement('div');\n private readonly thumbX: HTMLElement = document.createElement('div');\n private readonly trackY: HTMLElement = document.createElement('div');\n private readonly thumbY: HTMLElement = document.createElement('div');\n private readonly onDestroy = new Subject<void>();\n\n // #region INPUT\n readonly debugMode = input<boolean>(false);\n readonly classContainer = input<string, string | undefined>('', { transform: value => value ?? '' });\n readonly options = input<IScrollOverlayOptions | undefined>(Object.assign({}));\n readonly elementCheckScrollX = input<HTMLElement>();\n readonly elementCheckScrollY = input<HTMLElement>();\n\n // #region OUTPUT\n readonly outScroll = output<Event>();\n readonly outScrollX = output<Event>();\n readonly outScrollY = output<Event>();\n readonly outScrollTop = output<Event>();\n readonly outScrollBottom = output<Event>();\n\n // #region INJECT\n private element = inject(ElementRef);\n private render2 = inject(Renderer2);\n\n constructor() {\n effect(() => {\n const options = this.options();\n this.divContainer.className = '';\n this.classContainer()?.split(' ').forEach(className => {\n if (!className) {\n return;\n }\n this.divContainer.classList.add(className);\n });\n\n untracked(() => {\n if (options?.scrollX !== 'hidden') {\n this.subsX.unsubscribe();\n this.trackX.className = '';\n this.thumbX.className = '';\n this.createScrollbar('X', this.trackX, this.thumbX);\n this.bindEventsScrollBar('X', this.trackX);\n\n this.handlerDragAndDropThumb('X');\n this.handlerClickTrack('X');\n }\n\n if (options?.scrollY !== 'hidden') {\n this.trackY.className = '';\n this.thumbY.className = '';\n this.subsY.unsubscribe();\n this.createScrollbar('Y', this.trackY, this.thumbY);\n this.bindEventsScrollBar('Y', this.trackY);\n\n this.handlerDragAndDropThumb('Y');\n this.handlerClickTrack('Y');\n }\n });\n\n });\n }\n\n // #region FUNCTIONS\n private get Element(): HTMLElement {\n return this.element.nativeElement;\n }\n\n private createScrollbar(scrollDirection: TYPE_SCROLL_DIRECTION, trackEl: HTMLElement, thumbEl: HTMLElement) {\n const idStyleTag = \"#id-style-tag-custom-scroll-overlay\"\n const styleElCustomScrollOverlay = document.getElementById(idStyleTag);\n\n if (!styleElCustomScrollOverlay) {\n const styleEl = document.createElement('style');\n styleEl.setAttribute('id', idStyleTag);\n styleEl.innerHTML = this.styles();\n document.head.append(styleEl);\n }\n\n const stylesProperty = {\n \"box-sizing\": \"border-box\",\n \"scrollbar-width\": \"none\",\n \"scrollbar-color\": \"transparent transparent\",\n \"overflow\": \"hidden\",\n \"overflow-x\": `${this.options()?.scrollX || 'scroll'}`,\n \"overflow-y\": `${this.options()?.scrollY || 'scroll'}`\n } as any;\n\n Object.keys(stylesProperty).forEach(key => {\n this.render2.setStyle(this.Element, key, stylesProperty[key], 1);\n });\n\n trackEl.classList.add(`scrollbar-track`);\n trackEl.classList.add(`scrollbar-track-${scrollDirection}`);\n\n thumbEl.classList.add(`scrollbar-thumb`);\n thumbEl.classList.add(`scrollbar-thumb-${scrollDirection}`);\n trackEl.appendChild(thumbEl);\n if (this.Element.className) {\n this.Element.className.split(' ').forEach((className: string) => {\n if (className && (['w-full', 'w-screen', 'h-full', 'h-screen'].includes(className) || className.includes('min-h-') || className.includes('min-w-') || /^(!?)(h|w)-\\[[0-9]+px\\]$/.test(className)) && !this.divContainer.classList.contains(className)) {\n this.divContainer.classList.add(className);\n }\n\n });\n if (!this.Element.className.includes('min-h-')) {\n this.divContainer.classList.add('min-h-0');\n\n }\n if (!this.Element.className.includes('min-w-')) {\n this.divContainer.classList.add('min-w-0');\n }\n }\n this.divContainer.appendChild(trackEl);\n\n if (!this.divContainer.style.position) {\n this.Element.parentElement?.insertBefore(this.divContainer, this.Element);\n this.divContainer.style.position = 'relative';\n }\n this.divContainer.append(this.Element);\n this.updateScrollbarSize(scrollDirection);\n }\n\n private bindEventsScrollBar(scrollDirection: TYPE_SCROLL_DIRECTION, trackEl: HTMLElement) {\n let scrollLeft = this.Element.scrollLeft;\n let scrollTop = this.Element.scrollTop;\n const subs: Subscription = fromEvent<Event>(this.Element, 'scroll').pipe(tap((event) => {\n const target = this.Element;\n\n this.outScroll.emit(event);\n if (scrollDirection === 'X') {\n if (target.scrollLeft && (target.scrollLeft + target.offsetWidth >= target.scrollWidth)) {\n target.scrollLeft = target.scrollWidth - target.offsetWidth - (target.offsetWidth - target.clientWidth);\n }\n\n if (target.scrollLeft !== scrollLeft) {\n this.outScrollX.emit(event);\n\n }\n scrollLeft = target.scrollLeft;\n this.updateScrollbarPosition(scrollDirection);\n\n return;\n }\n\n if (target.scrollTop === scrollTop) {\n return\n }\n this.updateScrollbarPosition(scrollDirection);\n scrollTop = target.scrollTop;\n this.outScrollY.emit(event);\n\n if (target.scrollTop === 0) {\n return this.outScrollTop.emit(event);\n }\n\n if (target.scrollHeight <= target.scrollTop + target.offsetHeight + 3) {\n return this.outScrollBottom.emit(event);\n }\n }), takeUntil(this.onDestroy)).subscribe();\n\n subs.add(fromEvent(document, 'resize').pipe(tap(this.updateScrollbarSize.bind(this, scrollDirection)), takeUntil(this.onDestroy)).subscribe());\n\n const mouseLeave = fromEvent(this.divContainer, 'mouseleave');\n const mouseenter = fromEvent(this.divContainer, 'mouseenter');\n\n subs.add(mouseenter.pipe(tap(() => {\n trackEl.style.visibility = 'visible';\n trackEl.style.opacity = '1';\n this.updateScrollbarSize(scrollDirection);\n }),\n switchMap(() => interval(1000).pipe(takeUntil(mouseLeave))),\n tap(this.updateScrollbarSize.bind(this, scrollDirection)),\n takeUntil(this.onDestroy)\n ).subscribe());\n\n subs.add(mouseLeave.pipe(tap(() => {\n if (this.keepDisplayThumb()) {\n return;\n }\n trackEl.style.visibility = 'hidden';\n trackEl.style.opacity = '0';\n }), takeUntil(this.onDestroy)).subscribe());\n\n if (scrollDirection === 'X') {\n this.subsX = subs;\n\n return;\n }\n\n if (scrollDirection === 'Y') {\n this.subsY = subs;\n\n return;\n }\n }\n\n protected handlerClickTrack(scrollDirection: TYPE_SCROLL_DIRECTION) {\n const elementTrack = scrollDirection === 'X' ? this.trackX : this.trackY;\n const elementThumb = scrollDirection === 'X' ? this.thumbX : this.thumbY;\n const subs = scrollDirection === 'X' ? this.subsX : this.subsY;\n\n subs.add(fromEvent<MouseEvent>(elementTrack, 'click').subscribe(e => {\n if (this.isScrollThumb()) {\n return;\n }\n if ((scrollDirection === 'X' && e.clientX < elementThumb.getBoundingClientRect().left) || (scrollDirection === 'Y' && e.clientY < elementThumb.getBoundingClientRect().top)) {\n this.updateScrollPositionByUserAction(scrollDirection, e, 'smooth', 0);\n return;\n }\n\n if (scrollDirection === 'X') {\n this.updateScrollPositionByUserAction(scrollDirection, e, 'smooth', -1 * elementThumb.getBoundingClientRect().width);\n return;\n }\n this.updateScrollPositionByUserAction(scrollDirection, e, 'smooth', -1 * elementThumb.getBoundingClientRect().height);\n }));\n }\n\n protected handlerDragAndDropThumb(scrollDirection: TYPE_SCROLL_DIRECTION) {\n const elementTrack = scrollDirection === 'X' ? this.trackX : this.trackY;\n const elementThumb = scrollDirection === 'X' ? this.thumbX : this.thumbY;\n const subs = scrollDirection === 'X' ? this.subsX : this.subsY;\n let lengthThumbToPointClick = 0;\n\n subs.add(getDragEventByElement({\n elementMouseDown: elementThumb,\n functionMouseDown: (mouseEvent: MouseEvent) => {\n this.isScrollThumb.set(true);\n this.keepDisplayThumb.set(true);\n if (scrollDirection === 'X') {\n lengthThumbToPointClick = elementThumb.getBoundingClientRect().left - mouseEvent.clientX;\n return;\n }\n lengthThumbToPointClick = elementThumb.getBoundingClientRect().top - mouseEvent.clientY;\n },\n functionMouseUp: (mouseEvent: MouseEvent) => {\n this.keepDisplayThumb.set(false);\n lengthThumbToPointClick = 0;\n if (!checkMouseOverInContainer(mouseEvent, this.Element)) {\n elementTrack.style.visibility = 'hidden';\n elementTrack.style.opacity = '0';\n }\n setTimeout(() => {\n this.isScrollThumb.set(false);\n }, 250);\n },\n onDestroy: this.onDestroy\n }).subscribe((mouseEvent: MouseEvent) => {\n this.updateScrollPositionByUserAction(scrollDirection, mouseEvent, 'auto', lengthThumbToPointClick)\n }));\n }\n\n private updateScrollPositionByUserAction(scrollDirection: TYPE_SCROLL_DIRECTION, e: MouseEvent, behavior: 'auto' | 'smooth', lengthThumbToPointClick = 0) {\n e.stopPropagation();\n if (scrollDirection === 'X') {\n const containerWidth = this.Element.offsetWidth;\n const contentWidth = (this.elementCheckScrollX() || this.Element).scrollWidth;\n const thumbPosition = e.clientX - this.Element.getBoundingClientRect().left + lengthThumbToPointClick;\n const scrollLeft = (thumbPosition / (containerWidth - this.thumbX.offsetWidth)) * (contentWidth - containerWidth);\n\n this.Element.scroll({ left: scrollLeft, behavior });\n return;\n }\n const containerHeight = this.Element.offsetHeight;\n const contentHeight = (this.elementCheckScrollY() || this.Element).scrollHeight;\n const thumbPosition = e.clientY - this.Element.getBoundingClientRect().top + lengthThumbToPointClick;\n const scrollTop = (thumbPosition / (containerHeight - this.thumbY.offsetHeight)) * (contentHeight - containerHeight);\n\n this.Element.scroll({ top: scrollTop, behavior });\n }\n\n private updateScrollbarSize(scrollDirection: TYPE_SCROLL_DIRECTION) {\n if (scrollDirection === 'X') {\n const containerWidth = this.Element.offsetWidth;\n const contentWidth = (this.elementCheckScrollX() || this.Element).scrollWidth;\n const thumbWidth = (containerWidth / contentWidth) * (containerWidth);\n\n this.thumbX.style.width = `${thumbWidth}px`;\n this.trackX.style.display = 'none';\n if (contentWidth > containerWidth) {\n this.trackX.style.display = 'block';\n }\n this.updateScrollbarPosition(scrollDirection);\n\n return;\n }\n\n const containerHeight = this.Element.offsetHeight;\n const contentHeight = (this.elementCheckScrollY() || this.Element).scrollHeight;\n const thumbHeight = (containerHeight / contentHeight) * (containerHeight);\n\n this.thumbY.style.height = `${thumbHeight < 40 ? 40 : thumbHeight}px`;\n this.trackY.style.display = 'none';\n if (contentHeight > containerHeight) {\n this.trackY.style.display = 'block';\n }\n\n this.updateScrollbarPosition('Y');\n }\n\n private updateScrollbarPosition(scrollDirection: TYPE_SCROLL_DIRECTION) {\n if (scrollDirection === 'X') {\n const containerWidth = this.Element.offsetWidth;\n const contentWidth = (this.elementCheckScrollX() || this.Element).scrollWidth;\n const scrollLeft = this.Element.scrollLeft;\n const thumbPosition = (scrollLeft / (contentWidth - containerWidth)) * (containerWidth - this.thumbX.offsetWidth);\n\n this.thumbX.style.left = `${thumbPosition}px`;\n\n return;\n }\n const containerHeight = this.Element.offsetHeight;\n const contentHeight = (this.elementCheckScrollY() || this.Element).scrollHeight;\n const scrollTop = this.Element.scrollTop;\n const thumbPosition = (scrollTop / (contentHeight - containerHeight)) * (containerHeight - this.thumbY.offsetHeight);\n\n this.thumbY.style.top = `${thumbPosition}px`;\n }\n\n ngOnDestroy(): void {\n this.divContainer.remove();\n this.subsX.unsubscribe();\n this.subsY.unsubscribe();\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n}","export type TYPE_SCROLL_DIRECTION = 'X' | 'Y';\nexport type TYPE_SCROLL_OVERFLOW = 'hidden' | 'scroll';\nexport interface IScrollOverlayOptions {\n scrollbarWidth?: number;\n scrollbarColor?: string;\n scrollbarHoverColor?: string;\n scrollThumbColor?: string;\n scrollThumbHoverColor?: string;\n scrollbarPadding?: number;\n scrollX?: TYPE_SCROLL_OVERFLOW;\n scrollY?: TYPE_SCROLL_OVERFLOW;\n};","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;MAUa,sCAAsC,CAAA;;AAEhC,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM;;4BAEf,IAAI,CAAC,cAAc,EAAE,CAAA;;;2BAGtB,IAAI,CAAC,mBAAmB,EAAE,CAAA;;;;;;;kBAOnC,IAAI,CAAC,cAAc,EAAE,CAAA;;;;;;;;;;;;;iBAatB,IAAI,CAAC,cAAc,EAAE,CAAA;;;;;;;;;2BASX,IAAI,CAAC,gBAAgB,EAAE,CAAA;;;2BAGvB,IAAI,CAAC,qBAAqB,EAAE,CAAA;;;;AAIzB,4BAAA,EAAA,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAA;kBACvC,IAAI,CAAC,gBAAgB,EAAE,CAAA;;;;;;;;AAQZ,2BAAA,EAAA,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAA;iBACvC,IAAI,CAAC,gBAAgB,EAAE,CAAA;;;;;;GAMrC,EAAE,EAAE,CAAC;AACE,IAAA,aAAa,GAAG,MAAM,CAAU,KAAK,CAAC;AACtC,IAAA,gBAAgB,GAAG,MAAM,CAAU,KAAK,CAAC;AACzC,IAAA,KAAK,GAAG,IAAI,YAAY,EAAE;AAC1B,IAAA,KAAK,GAAG,IAAI,YAAY,EAAE;AAC1B,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;AACtE,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,gBAAgB,IAAI,CAAC,CAAC,CAAC;AACzE,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,IAAI,EAAE,CAAC;AACrE,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,IAAI,WAAW,CAAC;AACnF,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,gBAAgB,IAAI,SAAS,CAAC;AAChF,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,qBAAqB,IAAI,SAAS,CAAC;AACjF,IAAA,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC5C,IAAA,MAAM,GAAgB,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACnD,IAAA,MAAM,GAAgB,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACnD,IAAA,MAAM,GAAgB,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACnD,IAAA,MAAM,GAAgB,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACnD,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;;AAGvC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,CAAC;AACjC,IAAA,cAAc,GAAG,KAAK,CAA6B,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;IAC3F,OAAO,GAAG,KAAK,CAAoC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrE,mBAAmB,GAAG,KAAK,EAAe;IAC1C,mBAAmB,GAAG,KAAK,EAAe;;IAG1C,SAAS,GAAG,MAAM,EAAS;IAC3B,UAAU,GAAG,MAAM,EAAS;IAC5B,UAAU,GAAG,MAAM,EAAS;IAC5B,YAAY,GAAG,MAAM,EAAS;IAC9B,eAAe,GAAG,MAAM,EAAS;;AAGlC,IAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5B,IAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;AAEnC,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,EAAE;AAChC,YAAA,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,IAAG;gBACpD,IAAI,CAAC,SAAS,EAAE;oBACd;;gBAEF,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AAC5C,aAAC,CAAC;YAEF,SAAS,CAAC,MAAK;AACb,gBAAA,IAAI,OAAO,EAAE,OAAO,KAAK,QAAQ,EAAE;AACjC,oBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;AACxB,oBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE;AAC1B,oBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE;AAC1B,oBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;oBACnD,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC;AAE1C,oBAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC;AACjC,oBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;;AAG7B,gBAAA,IAAI,OAAO,EAAE,OAAO,KAAK,QAAQ,EAAE;AACjC,oBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE;AAC1B,oBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE;AAC1B,oBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;AACxB,oBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;oBACnD,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC;AAE1C,oBAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC;AACjC,oBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;;AAE/B,aAAC,CAAC;AAEJ,SAAC,CAAC;;;AAIJ,IAAA,IAAY,OAAO,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa;;AAG3B,IAAA,eAAe,CAAC,eAAsC,EAAE,OAAoB,EAAE,OAAoB,EAAA;QACxG,MAAM,UAAU,GAAG,qCAAqC;QACxD,MAAM,0BAA0B,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC;QAEtE,IAAI,CAAC,0BAA0B,EAAE;YAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC/C,YAAA,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC;AACtC,YAAA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE;AACjC,YAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;;AAG/B,QAAA,MAAM,cAAc,GAAG;AACrB,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,iBAAiB,EAAE,MAAM;AACzB,YAAA,iBAAiB,EAAE,yBAAyB;AAC5C,YAAA,UAAU,EAAE,QAAQ;YACpB,YAAY,EAAE,CAAG,EAAA,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,IAAI,QAAQ,CAAE,CAAA;YACtD,YAAY,EAAE,CAAG,EAAA,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,IAAI,QAAQ,CAAE;SAChD;QAER,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AACxC,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClE,SAAC,CAAC;AAEF,QAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,eAAA,CAAiB,CAAC;QACxC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAmB,gBAAA,EAAA,eAAe,CAAE,CAAA,CAAC;AAE3D,QAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,eAAA,CAAiB,CAAC;QACxC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAmB,gBAAA,EAAA,eAAe,CAAE,CAAA,CAAC;AAC3D,QAAA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAC1B,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,SAAiB,KAAI;gBAC9D,IAAI,SAAS,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;oBACrP,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;;AAG9C,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAC9C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;;AAG5C,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAC9C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;;;AAG9C,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC;QAEtC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE;AACrC,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC;YACzE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;;QAE/C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACtC,QAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC;;IAGnC,mBAAmB,CAAC,eAAsC,EAAE,OAAoB,EAAA;AACtF,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU;AACxC,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS;AACtC,QAAA,MAAM,IAAI,GAAiB,SAAS,CAAQ,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AACrF,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO;AAE3B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,eAAe,KAAK,GAAG,EAAE;AAC3B,gBAAA,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE;oBACvF,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;;AAGzG,gBAAA,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;AACpC,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG7B,gBAAA,UAAU,GAAG,MAAM,CAAC,UAAU;AAC9B,gBAAA,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC;gBAE7C;;AAGF,YAAA,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;gBAClC;;AAEF,YAAA,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC;AAC7C,YAAA,SAAS,GAAG,MAAM,CAAC,SAAS;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAE3B,YAAA,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,EAAE;gBAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGtC,YAAA,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE;gBACrE,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;;AAE3C,SAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE;AAE1C,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QAE9I,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC;QAC7D,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC;QAE7D,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AAChC,YAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;AACpC,YAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;AAC3B,YAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC;SAC1C,CAAC,EACA,SAAS,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAC3D,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,EACzD,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B,CAAC,SAAS,EAAE,CAAC;QAEd,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AAChC,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;gBAC3B;;AAEF,YAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AACnC,YAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;AAC7B,SAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAE3C,QAAA,IAAI,eAAe,KAAK,GAAG,EAAE;AAC3B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;YAEjB;;AAGF,QAAA,IAAI,eAAe,KAAK,GAAG,EAAE;AAC3B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;YAEjB;;;AAIM,IAAA,iBAAiB,CAAC,eAAsC,EAAA;AAChE,QAAA,MAAM,YAAY,GAAG,eAAe,KAAK,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AACxE,QAAA,MAAM,YAAY,GAAG,eAAe,KAAK,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AACxE,QAAA,MAAM,IAAI,GAAG,eAAe,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AAE9D,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAa,YAAY,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AAClE,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;gBACxB;;AAEF,YAAA,IAAI,CAAC,eAAe,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC,IAAI,MAAM,eAAe,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,EAAE;gBAC3K,IAAI,CAAC,gCAAgC,CAAC,eAAe,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACtE;;AAGF,YAAA,IAAI,eAAe,KAAK,GAAG,EAAE;AAC3B,gBAAA,IAAI,CAAC,gCAAgC,CAAC,eAAe,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;gBACpH;;AAEF,YAAA,IAAI,CAAC,gCAAgC,CAAC,eAAe,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;SACtH,CAAC,CAAC;;AAGK,IAAA,uBAAuB,CAAC,eAAsC,EAAA;AACtE,QAAA,MAAM,YAAY,GAAG,eAAe,KAAK,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AACxE,QAAA,MAAM,YAAY,GAAG,eAAe,KAAK,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AACxE,QAAA,MAAM,IAAI,GAAG,eAAe,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;QAC9D,IAAI,uBAAuB,GAAG,CAAC;AAE/B,QAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;AAC7B,YAAA,gBAAgB,EAAE,YAAY;AAC9B,YAAA,iBAAiB,EAAE,CAAC,UAAsB,KAAI;AAC5C,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,gBAAA,IAAI,eAAe,KAAK,GAAG,EAAE;oBAC3B,uBAAuB,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC,IAAI,GAAG,UAAU,CAAC,OAAO;oBACxF;;gBAEF,uBAAuB,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC,GAAG,GAAG,UAAU,CAAC,OAAO;aACxF;AACD,YAAA,eAAe,EAAE,CAAC,UAAsB,KAAI;AAC1C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;gBAChC,uBAAuB,GAAG,CAAC;gBAC3B,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;AACxD,oBAAA,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AACxC,oBAAA,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;;gBAElC,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;iBAC9B,EAAE,GAAG,CAAC;aACR;YACD,SAAS,EAAE,IAAI,CAAC;AACjB,SAAA,CAAC,CAAC,SAAS,CAAC,CAAC,UAAsB,KAAI;YACtC,IAAI,CAAC,gCAAgC,CAAC,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,uBAAuB,CAAC;SACpG,CAAC,CAAC;;IAGG,gCAAgC,CAAC,eAAsC,EAAE,CAAa,EAAE,QAA2B,EAAE,uBAAuB,GAAG,CAAC,EAAA;QACtJ,CAAC,CAAC,eAAe,EAAE;AACnB,QAAA,IAAI,eAAe,KAAK,GAAG,EAAE;AAC3B,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;AAC/C,YAAA,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,WAAW;AAC7E,YAAA,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,IAAI,GAAG,uBAAuB;YACrG,MAAM,UAAU,GAAG,CAAC,aAAa,IAAI,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,YAAY,GAAG,cAAc,CAAC;AAEjH,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;YACnD;;AAEF,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY;AACjD,QAAA,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,YAAY;AAC/E,QAAA,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,GAAG,GAAG,uBAAuB;QACpG,MAAM,SAAS,GAAG,CAAC,aAAa,IAAI,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,aAAa,GAAG,eAAe,CAAC;AAEpH,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;;AAG3C,IAAA,mBAAmB,CAAC,eAAsC,EAAA;AAChE,QAAA,IAAI,eAAe,KAAK,GAAG,EAAE;AAC3B,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;AAC/C,YAAA,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,WAAW;YAC7E,MAAM,UAAU,GAAG,CAAC,cAAc,GAAG,YAAY,KAAK,cAAc,CAAC;YAErE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,UAAU,CAAA,EAAA,CAAI;YAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AAClC,YAAA,IAAI,YAAY,GAAG,cAAc,EAAE;gBACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;;AAErC,YAAA,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC;YAE7C;;AAGF,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY;AACjD,QAAA,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,YAAY;QAC/E,MAAM,WAAW,GAAG,CAAC,eAAe,GAAG,aAAa,KAAK,eAAe,CAAC;QAEzE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,WAAW,IAAI;QACrE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AAClC,QAAA,IAAI,aAAa,GAAG,eAAe,EAAE;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;;AAGrC,QAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC;;AAG3B,IAAA,uBAAuB,CAAC,eAAsC,EAAA;AACpE,QAAA,IAAI,eAAe,KAAK,GAAG,EAAE;AAC3B,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;AAC/C,YAAA,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,WAAW;AAC7E,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU;YAC1C,MAAM,aAAa,GAAG,CAAC,UAAU,IAAI,YAAY,GAAG,cAAc,CAAC,KAAK,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAEjH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,aAAa,CAAA,EAAA,CAAI;YAE7C;;AAEF,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY;AACjD,QAAA,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,YAAY;AAC/E,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS;QACxC,MAAM,aAAa,GAAG,CAAC,SAAS,IAAI,aAAa,GAAG,eAAe,CAAC,KAAK,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QAEpH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,aAAa,CAAA,EAAA,CAAI;;IAG9C,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;;wGA3YhB,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtC,sCAAsC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAtC,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBALlD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,0CAA0C;AACpD,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACEA;;ACXD;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libs-ui/components-scroll-overlay",
3
- "version": "0.2.159",
3
+ "version": "0.2.160",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.0",
6
6
  "@angular/core": "^18.2.0"