centrifugal 0.0.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"centrifugal.mjs","sources":["../../../projects/centrifugal/src/lib/list/components/cn-scroll-bar/enums/scrollbar-states.ts","../../../projects/centrifugal/src/lib/list/components/cn-scroll-bar/cn-scroll-bar.service.ts","../../../projects/centrifugal/src/lib/list/components/cn-scroll-bar/cn-scroll-bar-public.service.ts","../../../projects/centrifugal/src/lib/list/components/cn-scroller/enums/scroller-direction.ts","../../../projects/centrifugal/src/lib/common/enums/text-directions.ts","../../../projects/centrifugal/src/lib/common/directives/cn-locale-sensitive/cn-locale-sensitive.directive.ts","../../../projects/centrifugal/src/lib/common/directives/cn-locale-sensitive/cn-locale-sensitive.module.ts","../../../projects/centrifugal/src/lib/list/core/events/track-box-events.ts","../../../projects/centrifugal/src/lib/list/enums/alignments.ts","../../../projects/centrifugal/src/lib/list/enums/collection-modes.ts","../../../projects/centrifugal/src/lib/list/enums/directions.ts","../../../projects/centrifugal/src/lib/list/enums/focus-alignments.ts","../../../projects/centrifugal/src/lib/list/enums/collapsing-modes.ts","../../../projects/centrifugal/src/lib/list/enums/selecting-modes.ts","../../../projects/centrifugal/src/lib/list/enums/snap-to-item-aligns.ts","../../../projects/centrifugal/src/lib/list/enums/snapping-methods.ts","../../../projects/centrifugal/src/lib/list/enums/spreading-modes.ts","../../../projects/centrifugal/src/lib/list/enums/selecting-modes-types.ts","../../../projects/centrifugal/src/lib/list/components/cn-list-item/utils/get-element-by-index.ts","../../../projects/centrifugal/src/lib/list/components/cn-list-item/utils/create-display-id.ts","../../../projects/centrifugal/src/lib/list/components/cn-list-item/utils/matrix-3d.ts","../../../projects/centrifugal/src/lib/list/utils/validation.ts","../../../projects/centrifugal/src/lib/list/utils/list-validators.ts","../../../projects/centrifugal/src/lib/list/utils/get-selector-by-item-id.ts","../../../projects/centrifugal/src/lib/list/cn-virtual-list.service.ts","../../../projects/centrifugal/src/lib/common/directives/cn-virtual-click/cn-virtual-click.directive.ts","../../../projects/centrifugal/src/lib/common/directives/cn-virtual-click/cn-virtual-click.module.ts","../../../projects/centrifugal/src/lib/list/const/index.ts","../../../projects/centrifugal/src/lib/list/components/cn-list-item/const/index.ts","../../../projects/centrifugal/src/lib/list/cn-virtual-list-public.service.ts","../../../projects/centrifugal/src/lib/list/components/cn-list-item/base/base-virtual-list-item-component.ts","../../../projects/centrifugal/src/lib/list/components/cn-list-item/cn-virtual-list-item.component.ts","../../../projects/centrifugal/src/lib/list/components/cn-list-item/cn-virtual-list-item.component.html","../../../projects/centrifugal/src/lib/list/utils/scroll-event.ts","../../../projects/centrifugal/src/lib/common/utils/debounce.ts","../../../projects/centrifugal/src/lib/common/const/index.ts","../../../projects/centrifugal/src/lib/common/utils/is-persentage-value.ts","../../../projects/centrifugal/src/lib/common/utils/cmap.ts","../../../projects/centrifugal/src/lib/common/utils/object.ts","../../../projects/centrifugal/src/lib/common/utils/parse-float-or-persentage-value.ts","../../../projects/centrifugal/src/lib/common/utils/parse-arithmetic-expression.ts","../../../projects/centrifugal/src/lib/common/utils/toggle-class-name.ts","../../../projects/centrifugal/src/lib/common/utils/browser.ts","../../../projects/centrifugal/src/lib/common/utils/animator/const/index.ts","../../../projects/centrifugal/src/lib/common/utils/animator/ease.ts","../../../projects/centrifugal/src/lib/common/utils/animator/animator.ts","../../../projects/centrifugal/src/lib/common/utils/event-emitter/event-emitter.ts","../../../projects/centrifugal/src/lib/list/core/cache-map.ts","../../../projects/centrifugal/src/lib/list/core/utils/get-service-id-prop.ts","../../../projects/centrifugal/src/lib/list/core/tracker.ts","../../../projects/centrifugal/src/lib/list/utils/buffer-interpolation.ts","../../../projects/centrifugal/src/lib/list/core/const/index.ts","../../../projects/centrifugal/src/lib/list/core/enums/item-display-methods.ts","../../../projects/centrifugal/src/lib/list/core/track-box.ts","../../../projects/centrifugal/src/lib/list/utils/snapping-method.ts","../../../projects/centrifugal/src/lib/list/utils/is-direction.ts","../../../projects/centrifugal/src/lib/list/utils/is-select-mode.ts","../../../projects/centrifugal/src/lib/list/utils/is-collapse-mode.ts","../../../projects/centrifugal/src/lib/list/utils/is-collection-mode.ts","../../../projects/centrifugal/src/lib/list/utils/screen-reader-formatter.ts","../../../projects/centrifugal/src/lib/list/utils/normalize-collection.ts","../../../projects/centrifugal/src/lib/list/utils/is-spreading-mode.ts","../../../projects/centrifugal/src/lib/list/utils/get-scroll-state-version.ts","../../../projects/centrifugal/src/lib/list/components/cn-scroller/utils/scroll-box.ts","../../../projects/centrifugal/src/lib/list/components/cn-scroll-view/const/index.ts","../../../projects/centrifugal/src/lib/list/components/cn-scroll-view/utils/calculate-direction.ts","../../../projects/centrifugal/src/lib/list/components/cn-scroll-view/enums/scroller-direction.ts","../../../projects/centrifugal/src/lib/list/components/cn-scroll-view/utils/scroll-box.ts","../../../projects/centrifugal/src/lib/list/components/cn-scroll-view/utils/matrix-3d.ts","../../../projects/centrifugal/src/lib/list/components/cn-scroll-view/utils/get-dir.ts","../../../projects/centrifugal/src/lib/list/components/cn-scroll-view/base/base-scroll-view.component.ts","../../../projects/centrifugal/src/lib/list/utils/scrolling-direction.ts","../../../projects/centrifugal/src/lib/list/components/cn-scroll-view/utils/calculate-velocity.ts","../../../projects/centrifugal/src/lib/list/components/cn-scroll-view/cn-scroll-view.component.ts","../../../projects/centrifugal/src/lib/list/components/cn-scroll-bar/const/index.ts","../../../projects/centrifugal/src/lib/list/components/cn-scroll-bar/cn-scroll-bar.component.ts","../../../projects/centrifugal/src/lib/list/components/cn-scroll-bar/cn-scroll-bar.component.html","../../../projects/centrifugal/src/lib/list/components/cn-scroller/cn-scroller.component.ts","../../../projects/centrifugal/src/lib/list/components/cn-scroller/cn-scroller.component.html","../../../projects/centrifugal/src/lib/list/components/cn-prerender-container/events/index.ts","../../../projects/centrifugal/src/lib/list/components/cn-prerender-container/core/prerender-track-box.ts","../../../projects/centrifugal/src/lib/list/components/cn-prerender-container/components/cn-prerender-list-item/cn-prerender-list-item.component.ts","../../../projects/centrifugal/src/lib/list/components/cn-prerender-container/components/cn-prerender-scroller/cn-prerender-scroller.component.ts","../../../projects/centrifugal/src/lib/list/components/cn-prerender-container/components/cn-prerender-scroller/cn-prerender-scroller.component.html","../../../projects/centrifugal/src/lib/list/components/cn-prerender-container/components/cn-prerender-list/cn-prerender-list.component.ts","../../../projects/centrifugal/src/lib/list/components/cn-prerender-container/components/cn-prerender-list/cn-prerender-list.component.html","../../../projects/centrifugal/src/lib/list/components/cn-prerender-container/cn-prerender-container.component.ts","../../../projects/centrifugal/src/lib/list/components/cn-prerender-container/cn-prerender-container.component.html","../../../projects/centrifugal/src/lib/list/cn-virtual-list.component.ts","../../../projects/centrifugal/src/lib/list/cn-virtual-list.component.html","../../../projects/centrifugal/src/lib/list/components/cn-list-item/cn-virtual-list-item.module.ts","../../../projects/centrifugal/src/lib/list/components/cn-scroll-bar/cn-scroll-bar.module.ts","../../../projects/centrifugal/src/lib/list/components/cn-scroller/cn-scroller.module.ts","../../../projects/centrifugal/src/lib/list/components/cn-prerender-container/components/cn-prerender-list-item/cn-prerender-list-item.module.ts","../../../projects/centrifugal/src/lib/list/components/cn-prerender-container/components/cn-prerender-scroller/cn-prerender-scroller.module.ts","../../../projects/centrifugal/src/lib/list/components/cn-prerender-container/components/cn-prerender-list/cn-prerender-list.module.ts","../../../projects/centrifugal/src/lib/list/components/cn-prerender-container/cn-prerender-container.module.ts","../../../projects/centrifugal/src/lib/list/cn-virtual-list.module.ts","../../../projects/centrifugal/src/lib/list/transformations/linear.ts","../../../projects/centrifugal/src/lib/list/transformations/event-horizon.ts","../../../projects/centrifugal/src/lib/list/transformations/deck-of-cards.ts","../../../projects/centrifugal/src/lib/list/transformations/deck-of-cards-3d.ts","../../../projects/centrifugal/src/lib/list/transformations/swipe-3d.ts","../../../projects/centrifugal/src/lib/list/transformations/index.ts","../../../projects/centrifugal/src/lib/list/index.ts","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroll-view/enums/scroller-direction.ts","../../../projects/centrifugal/src/lib/scroll-view/enums/directions.ts","../../../projects/centrifugal/src/lib/scroll-view/const/index.ts","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroll-view/const/index.ts","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroll-view/base/base-scroll-view.component.ts","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroll-view/utils/calculate-direction.ts","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroll-view/utils/scroll-box.ts","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroll-view/utils/matrix-3d.ts","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroll-view/utils/get-dir.ts","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroll-view/utils/calculate-velocity.ts","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroll-view/cn-scroll-view.component.ts","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroll-bar/const/index.ts","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroll-bar/enums/scrollbar-states.ts","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroll-bar/cn-scroll-bar.service.ts","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroll-bar/cn-scroll-bar-public.service.ts","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroll-bar/cn-scroll-bar.component.ts","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroll-bar/cn-scroll-bar.component.html","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroller/utils/scroll-box.ts","../../../projects/centrifugal/src/lib/scroll-view/directives/locale-sensitive/locale-sensitive.directive.ts","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroller/cn-scroller.component.ts","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroller/cn-scroller.component.html","../../../projects/centrifugal/src/lib/scroll-view/directives/locale-sensitive/locale-sensitive.module.ts","../../../projects/centrifugal/src/lib/scroll-view/directives/virtual-click/virtual-click.directive.ts","../../../projects/centrifugal/src/lib/scroll-view/directives/virtual-click/virtual-click.module.ts","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroll-bar/cn-scroll-bar.module.ts","../../../projects/centrifugal/src/lib/scroll-view/components/cn-scroller/cn-scroller.module.ts","../../../projects/centrifugal/src/lib/scroll-view/cn-virtual-scroll-view.service.ts","../../../projects/centrifugal/src/lib/scroll-view/utils/scroll-event.ts","../../../projects/centrifugal/src/lib/scroll-view/utils/is-direction.ts","../../../projects/centrifugal/src/lib/scroll-view/utils/validation.ts","../../../projects/centrifugal/src/lib/scroll-view/cn-virtual-scroll-view.component.ts","../../../projects/centrifugal/src/lib/scroll-view/cn-virtual-scroll-view.component.html","../../../projects/centrifugal/src/lib/scroll-view/cn-virtual-scroll-view.module.ts","../../../projects/centrifugal/src/lib/scroll-view/index.ts","../../../projects/centrifugal/src/public-api.ts","../../../projects/centrifugal/src/centrifugal.ts"],"sourcesContent":["export enum ScrollbarStates {\r\n NORMAL,\r\n PRESSED,\r\n HOVER,\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { ScrollbarState } from './types';\r\nimport { ScrollbarStates } from './enums';\r\n\r\n/**\r\n * CnScrollBarService\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroll-bar/cn-scroll-bar.service.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CnScrollBarService {\r\n private _$click = new Subject<PointerEvent | MouseEvent>();\r\n readonly $click = this._$click.asObservable();\r\n\r\n private _$state = new BehaviorSubject<ScrollbarState>(ScrollbarStates.NORMAL);\r\n readonly $state = this._$state.asObservable();\r\n\r\n set state(v: ScrollbarState) {\r\n if (this._$state.getValue() !== v) {\r\n this._$state.next(v);\r\n }\r\n }\r\n get state() { return this._$state.getValue(); }\r\n\r\n click(event: PointerEvent | MouseEvent) {\r\n this._$click.next(event);\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { CnScrollBarService } from './cn-scroll-bar.service';\r\n\r\n/**\r\n * CnScrollBarService\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroll-bar/cn-scroll-bar-public.service.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CnScrollBarPublicService {\r\n private _internalService = inject(CnScrollBarService);\r\n\r\n get $click() { return this._internalService.$click; }\r\n\r\n get $state() { return this._internalService.$state; }\r\n}\r\n","export enum ScrollerDirection {\r\n HORIZONTAL = 'horizontal',\r\n VERTICAL = 'vertical',\r\n}","/**\r\n * TextDirections.\r\n * RTL - right-to-left.\r\n * LTR - left-to-right.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/enums/text-directions.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport enum TextDirections {\r\n RTL = 'rtl',\r\n LTR = 'ltr',\r\n}","import { Directive, ElementRef, inject, input } from '@angular/core';\r\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\r\nimport { combineLatest, tap } from 'rxjs';\r\nimport { ScrollerDirection, ScrollerDirections } from '../../../list/components/cn-scroller/enums';\r\nimport { TextDirection } from '../../types';\r\nimport { TextDirections } from '../../enums';\r\n\r\nconst LEFT = 'left',\r\n RIGHT = 'right',\r\n DIR = 'dir';\r\n\r\n/**\r\n * LocaleSensitiveDirective\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/directives/cn-locale-sensitive/cn-locale-sensitive.directive.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Directive({\r\n selector: '[localeSensitive]',\r\n standalone: false,\r\n})\r\nexport class CnLocaleSensitiveDirective {\r\n langTextDir = input<TextDirection>(TextDirections.LTR);\r\n\r\n listDir = input<ScrollerDirections>(ScrollerDirection.VERTICAL);\r\n\r\n private _elementRef = inject(ElementRef<HTMLElement>);\r\n\r\n constructor() {\r\n const $langTextDir = toObservable(this.langTextDir),\r\n $listDir = toObservable(this.listDir);\r\n\r\n combineLatest([$langTextDir, $listDir]).pipe(\r\n takeUntilDestroyed(),\r\n tap(([dir, listDir]) => {\r\n const element = this._elementRef.nativeElement as HTMLElement;\r\n element.setAttribute(DIR, dir);\r\n if (dir === TextDirections.RTL) {\r\n element.style.textAlign = RIGHT;\r\n element.classList.add(TextDirections.RTL);\r\n element.classList.remove(TextDirections.LTR);\r\n } else {\r\n element.style.textAlign = LEFT;\r\n element.classList.add(TextDirections.LTR);\r\n element.classList.remove(TextDirections.RTL);\r\n }\r\n }),\r\n ).subscribe();\r\n }\r\n}\r\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CnLocaleSensitiveDirective } from './cn-locale-sensitive.directive';\r\n\r\n@NgModule({\r\n declarations: [CnLocaleSensitiveDirective],\r\n exports: [CnLocaleSensitiveDirective],\r\n imports: [CommonModule],\r\n schemas: [NO_ERRORS_SCHEMA],\r\n})\r\nexport class CnLocaleSensitiveModule { }\r\n","/**\r\n * TrackBoxEvents\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/events/track-box-events.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport enum TrackBoxEvents {\r\n CHANGE = 'change',\r\n TICK = 'tick',\r\n}","/**\r\n * Alignments\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/alignments.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport enum Alignments {\r\n NONE = 'none',\r\n CENTER = 'center',\r\n}","/**\r\n * Action modes for collection elements.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/collection-modes.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport enum CollectionModes {\r\n /**\r\n * When adding elements to the beginning of the collection, the scroll remains at the current position.\r\n */\r\n NORMAL = 'normal',\r\n /**\r\n * When adding elements to the beginning of the collection, the scroll is shifted by the sum of the sizes of the new elements.\r\n */\r\n LAZY = 'lazy',\r\n}","/**\r\n * Axis of the arrangement of virtual list elements.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/directions.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport enum Directions {\r\n /**\r\n * Horizontal axis.\r\n */\r\n HORIZONTAL = 'horizontal',\r\n /**\r\n * Vertical axis.\r\n */\r\n VERTICAL = 'vertical',\r\n}","/**\r\n * Focus Alignments.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/focus-alignments.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport enum FocusAlignments {\r\n NONE = 'none',\r\n START = 'start',\r\n CENTER = 'center',\r\n END = 'end',\r\n}","/**\r\n * Modes for collapsing list items.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/collapsing-modes.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport enum CollapsingModes {\r\n /**\r\n * List items are not selectable.\r\n */\r\n NONE = 'none',\r\n /**\r\n * List items are collapsed one by one.\r\n */\r\n MULTI_COLLAPSE = 'multi-collapse',\r\n /**\r\n * Accordion collapsible list items.\r\n */\r\n ACCORDION = 'accordion',\r\n}","/**\r\n * Mods for selecting list items.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/selecting-modes.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport enum SelectingModes {\r\n /**\r\n * List items are not selectable.\r\n */\r\n NONE = 'none',\r\n /**\r\n * List items are selected one by one.\r\n */\r\n SELECT = 'select',\r\n /**\r\n * Multiple selection of list items.\r\n */\r\n MULTI_SELECT = 'multi-select',\r\n}","/**\r\n * SnapToAtemAligns.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/snap-to-item-aligns.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport enum SnapToItemAligns {\r\n /**\r\n * An anchor indicates the beginning of an element.\r\n */\r\n START = 'start',\r\n /**\r\n * The anchor points to the middle of the element.\r\n */\r\n CENTER = 'center',\r\n /**\r\n * An anchor indicates the end of an element.\r\n */\r\n END = 'end',\r\n}","/**\r\n * Snapping method.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/snapping-method.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport enum SnappingMethods {\r\n /**\r\n * The group is rendered on a background.\r\n */\r\n STANDART = 'standart',\r\n /**\r\n * A mask is applied to the viewport area so that the background is displayed underneath the attached group.\r\n */\r\n ADVANCED = 'advanced',\r\n}","/**\r\n * SpreadingModes.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/spreading-modes.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport enum SpreadingModes {\r\n /**\r\n * List elements are ordered according to the collection sequence.\r\n */\r\n NORMAL = 'normal',\r\n /**\r\n * List elements are ordered cyclically, forming an infinite list.\r\n */\r\n INFINITY = 'infinity',\r\n}","/**\r\n * Mods for selecting list items.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/selecting-modes-types.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport enum SelectingModesTypes {\r\n /**\r\n * List items are not selectable.\r\n */\r\n NONE = 0,\r\n /**\r\n * List items are selected one by one.\r\n */\r\n SELECT = 1,\r\n /**\r\n * Multiple selection of list items.\r\n */\r\n MULTI_SELECT = 2,\r\n}","export const CNVL_INDEX = 'cnvl-index',\r\n /**\r\n * getListElementByIndex\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/ng-list-item/utils/get-element-by-index.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n getListElementByIndex = (index: number) => {\r\n return `[${CNVL_INDEX}=\"${index}\"]`;\r\n },\r\n /**\r\n * getListElements\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/ng-list-item/utils/get-element-by-index.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n getListElements = () => {\r\n return `[${CNVL_INDEX}]`;\r\n };\r\n","/**\r\n * createDisplayId\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/ng-list-item/utils/create-display-id.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const createDisplayId = (listId: number, id: number) => {\r\n return `${listId}-${id}`;\r\n};\r\n","/**\r\n * matrix3d\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/ng-list-item/utils/matrix-3d.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const matrix3d = (x: number, y: number, z: number, scaleX: number, scaleY: number, scaleZ: number, rotationX: number, rotationY: number, rotationZ: number) => {\r\n return rotationZ !== 0 ? `${__matrix3d__(x, y, z, scaleX, scaleY, scaleZ, rotationX, rotationY)} rotateZ(${rotationZ}deg)` : __matrix3d__(x, y, z, scaleX, scaleY, scaleZ, rotationX, rotationY);\r\n};\r\n\r\nconst __matrix3d__ = (x: number, y: number, z: number, scaleX: number, scaleY: number, scaleZ: number, rotationX: number, rotationY: number) => {\r\n return `matrix3d(\r\n ${scaleX}, 0, ${rotationX}, 0,\r\n 0, ${scaleY}, ${rotationY}, 0,\r\n 0, 0, 1, 0,\r\n ${x}, ${y}, ${z}, ${scaleZ}\r\n )`;\r\n};\r\n","const isUndefinable = <T = any>(value: T) => {\r\n return value === undefined;\r\n}\r\n\r\nconst isNullable = <T = any>(value: T) => {\r\n return value === null;\r\n}\r\n\r\n/**\r\n * Int validator\r\n * @param value Int\r\n */\r\nexport const validateInt = (value: number | undefined, undefinable = false) => {\r\n return (undefinable && isUndefinable(value)) || !Number.isNaN(Number.parseInt(`${value}`));\r\n};\r\n\r\n/**\r\n * Float validator\r\n * @param value Float\r\n */\r\nexport const validateFloat = (value: number | undefined, undefinable = false) => {\r\n return (undefinable && isUndefinable(value)) || !Number.isNaN(Number.parseFloat(`${value}`));\r\n};\r\n\r\n/**\r\n * String validator\r\n * @param value String\r\n */\r\nexport const validateString = (value: string | undefined | null, undefinable = false, nullable = false) => {\r\n return (undefinable && isUndefinable(value)) || (nullable && isNullable(value)) || typeof value === 'string';\r\n};\r\n\r\n/**\r\n * Boolean validator\r\n * @param value Boolean\r\n */\r\nexport const validateBoolean = (value: boolean | undefined, undefinable = false) => {\r\n return (undefinable && isUndefinable(value)) || typeof value === 'boolean';\r\n};\r\n\r\n/**\r\n * Array validator\r\n * @param value Array\r\n */\r\nexport const validateArray = <T = any>(value: Array<T> | undefined | null, undefinable = false, nullable = false) => {\r\n return (undefinable && isUndefinable(value)) || (nullable && isNullable(value)) || Array.isArray(value);\r\n};\r\n\r\n/**\r\n * Object validator\r\n * @param value Object\r\n */\r\nexport const validateObject = <T = any>(value: Object & T | undefined | null, undefinable = false, nullable = false) => {\r\n return (undefinable && isUndefinable(value)) || (nullable && isNullable(value)) || typeof value === 'object';\r\n};\r\n\r\n/**\r\n * Function validator\r\n * @param value Function\r\n */\r\nexport const validateFunction = <T = any>(value: Object & T | undefined | null, undefinable = false, nullable = false) => {\r\n return (undefinable && isUndefinable(value)) || (nullable && isNullable(value)) || typeof value === 'function';\r\n};\r\n","import { Id } from \"../../common\";\r\nimport { MAX_SCROLL_TO_ITERATIONS } from \"../const\";\r\nimport { FocusAlignment } from \"../types\";\r\nimport { validateFloat, validateInt, validateString } from \"./validation\";\r\n\r\nexport const validateScrollIteration = (value: number) => {\r\n const result = Number.isNaN(value) || (value < 0) ? 0 : value > MAX_SCROLL_TO_ITERATIONS ? MAX_SCROLL_TO_ITERATIONS : value;\r\n return result;\r\n},\r\n validateId = (id: Id) => {\r\n const valid = validateString(id as string) || validateFloat(id as number);\r\n if (!valid) {\r\n throw Error('The \"id\" parameter must be of type `Id`.');\r\n }\r\n },\r\n validateScrollBehavior = (behavior: ScrollBehavior) => {\r\n const valid = validateString(behavior as string) && (behavior === 'auto' || behavior === 'instant' || behavior === 'smooth');\r\n if (!valid) {\r\n throw Error('The \"behavior\" parameter must have the value `auto`, `instant` or `smooth`.');\r\n }\r\n },\r\n validateIteration = (iteration: number | undefined) => {\r\n const valid = validateInt(iteration, true);\r\n if (!valid) {\r\n throw Error('The \"iteration\" parameter must be of type `number`.');\r\n }\r\n },\r\n validateFocusAlignment = (align: FocusAlignment) => {\r\n const valid = validateString(align as string) && (align === 'none' || align === 'start' || align === 'center' || align === 'end');\r\n if (!valid) {\r\n throw Error('The \"align\" parameter must have the value `none`, `start`, `center` or `end`.');\r\n }\r\n };","import { Id } from \"../../common\";\r\nimport { ITEM_ID } from \"../const\";\r\n\r\nexport const getSelectorByItemId = (id: Id) => {\r\n return `[${ITEM_ID}=\"${id}\"]`;\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\r\nimport { combineLatest, distinctUntilChanged, Subject, tap } from 'rxjs';\r\nimport { TrackBox } from './core/track-box';\r\nimport { TrackBoxEvents } from './core/events';\r\nimport { IRenderVirtualListItem, IVirtualListCollection, IVirtualListItem, IVirtualListItemConfigMap } from './models';\r\nimport { IAnimationParams, IScrollOptions } from './interfaces';\r\nimport { IRenderVirtualListCollection } from './models/render-collection.model';\r\nimport { FocusAlignments } from './enums';\r\nimport { SelectingModesTypes } from './enums/selecting-modes-types';\r\nimport {\r\n BEHAVIOR_AUTO, BEHAVIOR_INSTANT, DEFAULT_ANIMATION_PARAMS, DEFAULT_CLICK_DISTANCE, DEFAULT_COLLAPSE_BY_CLICK,\r\n DEFAULT_ITEM_SIZE, DEFAULT_SELECT_BY_CLICK, DEFAULT_SNAP_TO_ITEM, DEFAULT_ZINDEX_WHEN_SELECTING, ITEM_CONTAINER,\r\n TRACK_BY_PROPERTY_NAME,\r\n} from './const';\r\nimport { FocusAlignment } from './types';\r\nimport { getListElements, CNVL_INDEX } from './components/cn-list-item/utils';\r\nimport { FocusItemParams } from './types/focus-item-params';\r\nimport { validateFocusAlignment, validateId } from './utils/list-validators';\r\nimport { getSelectorByItemId } from './utils/get-selector-by-item-id';\r\nimport { IScrollToParams } from './interfaces/scroll-to-params';\r\nimport { Id, IRect, ISize, TextDirection, TextDirections } from '../common';\r\n\r\n/**\r\n * CnVirtualListService\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/cn-virtual-list.service.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CnVirtualListService {\r\n private _id: number = 0;\r\n get id() { return this._id; }\r\n\r\n private _nextComponentId: number = 0;\r\n\r\n private _$virtualClick = new Subject<IRenderVirtualListItem<any> | null>();\r\n $virtualClick = this._$virtualClick.asObservable();\r\n\r\n private _$selectedIds = new BehaviorSubject<Array<Id> | Id | null>(null);\r\n $selectedIds = this._$selectedIds.asObservable();\r\n\r\n private _$collapsedIds = new BehaviorSubject<Array<Id>>([]);\r\n $collapsedIds = this._$collapsedIds.asObservable();\r\n\r\n private _$selectingMode = new BehaviorSubject<SelectingModesTypes>(0);\r\n $selectingMode = this._$selectingMode.asObservable();\r\n\r\n set selectingMode(v: SelectingModesTypes) {\r\n this._$selectingMode.next(v);\r\n }\r\n\r\n private _$focusedId = new BehaviorSubject<Id | null>(null);\r\n $focusedId = this._$focusedId.asObservable();\r\n set focusedId(v: Id | null) {\r\n if (this._$focusedId.getValue() !== v) {\r\n this._$focusedId.next(v);\r\n }\r\n }\r\n get focusedId() { return this._$focusedId.getValue(); }\r\n\r\n private _$focusItem = new Subject<FocusItemParams>();\r\n readonly $focusItem = this._$focusItem.asObservable();\r\n\r\n private _$scrollTo = new Subject<IScrollToParams | undefined>();\r\n readonly $scrollTo = this._$scrollTo.asObservable();\r\n\r\n private _$scrollToStart = new Subject<IScrollOptions | undefined>();\r\n readonly $scrollToStart = this._$scrollToStart.asObservable();\r\n\r\n private _$scrollToEnd = new Subject<IScrollOptions | undefined>();\r\n readonly $scrollToEnd = this._$scrollToEnd.asObservable();\r\n\r\n private _$tick = new Subject<void>();\r\n readonly $tick = this._$tick.asObservable();\r\n\r\n private _$cacheVersion = new BehaviorSubject<number>(-1);\r\n readonly $cacheVersion = this._$cacheVersion.asObservable();\r\n\r\n trackBy: string = TRACK_BY_PROPERTY_NAME;\r\n\r\n lastFocusedItemId: number = -1;\r\n\r\n scrollStartOffset: number = 0;\r\n\r\n scrollEndOffset: number = 0;\r\n\r\n zIndexWhenSelecting: string | null = DEFAULT_ZINDEX_WHEN_SELECTING;\r\n\r\n selectByClick: boolean = DEFAULT_SELECT_BY_CLICK;\r\n\r\n collapseByClick: boolean = DEFAULT_COLLAPSE_BY_CLICK;\r\n\r\n defaultItemValue: IVirtualListItem | null = null;\r\n\r\n snapToItem: boolean = DEFAULT_SNAP_TO_ITEM;\r\n\r\n isInfinity: boolean = false;\r\n\r\n isVertical: boolean = true;\r\n\r\n dynamic: boolean = true;\r\n\r\n itemSize: number = DEFAULT_ITEM_SIZE;\r\n\r\n snapScrollToStart: boolean = false;\r\n\r\n snapScrollToEnd: boolean = false;\r\n\r\n animationParams: IAnimationParams = DEFAULT_ANIMATION_PARAMS;\r\n\r\n isNoneCollapse: boolean = false;\r\n\r\n isMultipleCollapse: boolean = false;\r\n\r\n isAccordionCollapse: boolean = false;\r\n\r\n private _trackBox: TrackBox | undefined;\r\n\r\n listElement: HTMLDivElement | null = null;\r\n\r\n items: IVirtualListCollection = [];\r\n\r\n itemConfigMap: IVirtualListItemConfigMap = {};\r\n\r\n private _$displayItems = new BehaviorSubject<IRenderVirtualListCollection>([]);\r\n readonly $displayItems = this._$displayItems.asObservable();\r\n get displayItems() { return this._$displayItems.getValue(); }\r\n\r\n private _collection: IRenderVirtualListCollection = [];\r\n set collection(v: IRenderVirtualListCollection) {\r\n if (this._collection === v) {\r\n return;\r\n }\r\n\r\n this._collection = v;\r\n\r\n this._$displayItems.next(v);\r\n }\r\n get collection() { return this._collection; }\r\n\r\n private _$langTextDir = new BehaviorSubject<TextDirection>(TextDirections.LTR);\r\n readonly $langTextDir = this._$langTextDir.asObservable();\r\n get langTextDir() { return this._$langTextDir.getValue(); }\r\n\r\n private _langTextDir: TextDirection = TextDirections.LTR;\r\n set langTextDir(v: TextDirection) {\r\n if (this._langTextDir === v) {\r\n return;\r\n }\r\n\r\n this._langTextDir = v;\r\n\r\n this._$langTextDir.next(v);\r\n }\r\n\r\n private _$grabbing = new BehaviorSubject<boolean>(false);\r\n readonly $grabbing = this._$grabbing.asObservable();\r\n get grabbing() { return this._$grabbing.getValue(); }\r\n\r\n private _grabbing: boolean = false;\r\n set grabbing(v: boolean) {\r\n if (this._grabbing === v) {\r\n return;\r\n }\r\n\r\n this._grabbing = v;\r\n\r\n this._$grabbing.next(v);\r\n }\r\n\r\n private _$clickPressed = new BehaviorSubject<boolean>(false);\r\n readonly $clickPressed = this._$clickPressed.asObservable();\r\n get clickPressed() { return this._$clickPressed.getValue(); }\r\n\r\n private _clickPressed: boolean = false;\r\n set clickPressed(v: boolean) {\r\n if (this._clickPressed === v) {\r\n return;\r\n }\r\n\r\n this._clickPressed = v;\r\n\r\n this._$clickPressed.next(v);\r\n }\r\n\r\n private _$isGrabbing = new BehaviorSubject<boolean>(false);\r\n readonly $isGrabbing = this._$isGrabbing.asObservable();\r\n get isGrabbing() { return this._$isGrabbing.getValue(); }\r\n\r\n get scrollBarSize() { return this._$scrollBarSize.getValue(); }\r\n\r\n private _scrollBarSize: number = 0;\r\n set scrollBarSize(v: number) {\r\n if (this._scrollBarSize === v) {\r\n return;\r\n }\r\n\r\n this._scrollBarSize = v;\r\n\r\n this._$scrollBarSize.next(v);\r\n }\r\n private _$scrollBarSize = new BehaviorSubject<number>(this._scrollBarSize);\r\n readonly $scrollBarSize = this._$scrollBarSize.asObservable();\r\n\r\n private _$intersectionElementBySnapToItemAlign = new BehaviorSubject<Id | null>(null);\r\n readonly $intersectionElementBySnapToItemAlign = this._$intersectionElementBySnapToItemAlign.asObservable();\r\n\r\n private _$clickDistance = new BehaviorSubject<number>(DEFAULT_CLICK_DISTANCE);\r\n readonly $clickDistance = this._$clickDistance.asObservable();\r\n get clickDistance() { return this._$clickDistance.getValue(); }\r\n\r\n private _clickDistance: number = DEFAULT_CLICK_DISTANCE;\r\n set clickDistance(v: number) {\r\n if (this._clickDistance === v) {\r\n return;\r\n }\r\n\r\n this._clickDistance = v;\r\n\r\n this._$clickDistance.next(v);\r\n }\r\n\r\n private _onTickHandler = () => {\r\n this._$tick.next();\r\n };\r\n\r\n private _onTrackBoxChangeHandler = (v: number) => {\r\n this._$cacheVersion.next(v);\r\n };\r\n\r\n set selectedIds(ids: Array<Id> | Id | null) {\r\n if (JSON.stringify(this._$selectedIds.getValue()) !== JSON.stringify(ids)) {\r\n this._$selectedIds.next(ids);\r\n }\r\n }\r\n\r\n get selectedIds() { return this._$selectedIds.getValue(); }\r\n\r\n set collapsedIds(ids: Array<Id>) {\r\n if (JSON.stringify(this._$collapsedIds.getValue()) !== JSON.stringify(ids)) {\r\n this._$collapsedIds.next(ids);\r\n }\r\n }\r\n\r\n get collapsedIds() { return this._$collapsedIds.getValue(); }\r\n\r\n constructor() {\r\n const $grabbing = this.$grabbing.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n ), $clickPressed = this.$clickPressed.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n );\r\n combineLatest([$grabbing, $clickPressed]).pipe(\r\n takeUntilDestroyed(),\r\n tap(([grabbing, clickPressed]) => {\r\n this._$isGrabbing.next(grabbing && !clickPressed);\r\n }),\r\n ).subscribe();\r\n\r\n this._$selectingMode.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n switch (v) {\r\n case SelectingModesTypes.SELECT: {\r\n const curr = this._$selectedIds.getValue();\r\n if (typeof curr !== 'number' && typeof curr !== 'string') {\r\n this._$selectedIds.next(null);\r\n }\r\n break;\r\n }\r\n case SelectingModesTypes.MULTI_SELECT: {\r\n if (!Array.isArray(this._$selectedIds.getValue())) {\r\n this._$selectedIds.next([]);\r\n }\r\n break;\r\n }\r\n case SelectingModesTypes.NONE:\r\n default: {\r\n this._$selectedIds.next(null);\r\n break;\r\n }\r\n }\r\n }),\r\n ).subscribe();\r\n }\r\n\r\n virtualClick(data: IRenderVirtualListItem | null) {\r\n this._$virtualClick.next(data);\r\n if (this.collapseByClick) {\r\n const trackBy = this.trackBy, id = (data as any)?.[trackBy] ?? null;\r\n this.collapse(id);\r\n }\r\n if (this.selectByClick) {\r\n const trackBy = this.trackBy, id = (data as any)?.[trackBy] ?? null;\r\n this.select(id);\r\n }\r\n }\r\n\r\n update(immediately: boolean = false) {\r\n this._trackBox?.changes(immediately, false);\r\n }\r\n\r\n private getItemConfig(id: Id) {\r\n const displayItems = this.displayItems;\r\n if (!!displayItems) {\r\n const trackBy = this.trackBy;\r\n return displayItems.find(data => {\r\n const _id = (data as any)?.[trackBy] ?? null;\r\n return _id === id;\r\n })?.config ?? null;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Selects a list item\r\n * @param id \r\n * @param selected - If the value is undefined, then the toggle method is executed, if false or true, then the selection/deselection is performed.\r\n */\r\n select(id: Id, selected?: boolean) {\r\n validateId(id);\r\n const config = this.getItemConfig(id);\r\n if ((!!config && config.selectable)) {\r\n switch (this._$selectingMode.getValue()) {\r\n case SelectingModesTypes.SELECT: {\r\n const curr = this._$selectedIds.getValue() as (Id | undefined);\r\n if (selected === undefined) {\r\n this._$selectedIds.next(curr !== id ? id : null);\r\n } else {\r\n this._$selectedIds.next(selected ? id : null);\r\n }\r\n break;\r\n }\r\n case SelectingModesTypes.MULTI_SELECT: {\r\n const curr = [...(this._$selectedIds.getValue() || []) as Array<Id>],\r\n index = curr.indexOf(id);\r\n if (selected === undefined) {\r\n if (index > -1) {\r\n curr.splice(index, 1);\r\n this._$selectedIds.next(curr);\r\n } else {\r\n this._$selectedIds.next([...curr, id]);\r\n }\r\n } else if (selected) {\r\n if (index > -1) {\r\n this._$selectedIds.next(curr);\r\n } else {\r\n this._$selectedIds.next([...curr, id]);\r\n }\r\n } else {\r\n if (index > -1) {\r\n curr.splice(index, 1);\r\n this._$selectedIds.next(curr);\r\n } else {\r\n this._$selectedIds.next(curr);\r\n }\r\n }\r\n break;\r\n }\r\n case SelectingModesTypes.NONE:\r\n default: {\r\n this._$selectedIds.next(null);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Collapse list items\r\n * @param data \r\n * @param collapsed - If the value is undefined, then the toggle method is executed, if false or true, then the collapse/expand is performed.\r\n */\r\n collapse(id: Id, collapsed?: boolean) {\r\n if (this.isNoneCollapse) {\r\n return;\r\n }\r\n\r\n validateId(id);\r\n const config = this.getItemConfig(id);\r\n if ((!!config && config.collapsable)) {\r\n const allGroups: Array<Id> = [];\r\n if (this.isAccordionCollapse) {\r\n const items = this.items, itemConfigMap = this.itemConfigMap, trackBy = this.trackBy;\r\n for (let i = 0, l = items.length; i < l; i++) {\r\n const item = items[i], id = item[trackBy], collapsable = itemConfigMap?.[id]?.collapsable === true;\r\n if (!collapsable) {\r\n continue;\r\n }\r\n allGroups.push(id);\r\n }\r\n }\r\n\r\n const curr = this.isAccordionCollapse ? allGroups : [...(this._$collapsedIds.getValue() || []) as Array<Id>],\r\n index = curr.indexOf(id);\r\n if (!collapsed) {\r\n if (index > -1) {\r\n curr.splice(index, 1);\r\n this._$collapsedIds.next(curr);\r\n } else {\r\n this._$collapsedIds.next([...curr, id]);\r\n }\r\n } else if (collapsed) {\r\n if (index > -1) {\r\n this._$collapsedIds.next(curr);\r\n } else {\r\n this._$collapsedIds.next([...curr, id]);\r\n }\r\n } else {\r\n if (index > -1) {\r\n curr.splice(index, 1);\r\n this._$collapsedIds.next(curr);\r\n } else {\r\n this._$collapsedIds.next(curr);\r\n }\r\n }\r\n\r\n if (this.isAccordionCollapse) {\r\n this._$scrollTo.next({\r\n id, cb: null, options: {\r\n delay: 100, focused: true,\r\n },\r\n });\r\n } else {\r\n this._$scrollTo.next({\r\n id, cb: null, options: {\r\n delay: 100, focused: true,\r\n },\r\n });\r\n }\r\n }\r\n }\r\n\r\n getFocusedElementById(id: Id) {\r\n const el = this.listElement?.querySelector<HTMLDivElement>(getSelectorByItemId(id));\r\n if (!!el) {\r\n const focusedEl = el.querySelector<HTMLDivElement>(`.${ITEM_CONTAINER}`);\r\n if (!!focusedEl) {\r\n return focusedEl;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Returns the bounds of an element with a given id\r\n */\r\n getItemBounds(id: Id): ISize | null {\r\n validateId(id);\r\n return this._trackBox?.getItemBounds(id) ?? null;\r\n }\r\n\r\n /**\r\n * Focus an list item by a given id.\r\n */\r\n focusById(id: Id, align: FocusAlignment = FocusAlignments.NONE, scrollBehavior: ScrollBehavior = \"auto\") {\r\n validateId(id);\r\n validateFocusAlignment(align);\r\n const el = this.getFocusedElementById(id);\r\n if (!!el) {\r\n this.focus(el, align, scrollBehavior);\r\n }\r\n }\r\n\r\n focus(element: HTMLElement, align: FocusAlignment = FocusAlignments.CENTER, behavior: ScrollBehavior = BEHAVIOR_AUTO): boolean {\r\n element.focus({ preventScroll: true });\r\n if (!!element.parentElement) {\r\n const position = parseFloat(element.parentElement?.getAttribute('position') ?? '0');\r\n this._$focusItem.next({ element, position, align, behavior });\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n focusList() {\r\n const element = this.listElement;\r\n if (!!element) {\r\n element.focus({ preventScroll: true });\r\n }\r\n }\r\n\r\n focusFirstElement() {\r\n const elements = this.listElement?.querySelectorAll<HTMLDivElement>(getListElements()),\r\n elList = (elements ? Array.from(elements) : []).sort((a, b) => {\r\n const indexA = Number(a.getAttribute(CNVL_INDEX)), indexB = Number(b.getAttribute(CNVL_INDEX));\r\n if (indexA > indexB) return 1;\r\n if (indexA < indexB) return -1;\r\n return 0;\r\n });\r\n let element: HTMLElement | undefined = undefined;\r\n for (let i = 0, l = elList.length; i < l; i++) {\r\n const el = elList[i], index = Number(el.getAttribute(CNVL_INDEX));\r\n if (!!el && index > 0) {\r\n element = el;\r\n break;\r\n }\r\n }\r\n if (!!element) {\r\n this.focus(element, FocusAlignments.CENTER, BEHAVIOR_INSTANT);\r\n }\r\n }\r\n\r\n initialize(id: number, trackBox: TrackBox) {\r\n this._id = id;\r\n this._trackBox = trackBox;\r\n this._trackBox.addEventListener(TrackBoxEvents.TICK, this._onTickHandler);\r\n this._trackBox.addEventListener(TrackBoxEvents.CHANGE, this._onTrackBoxChangeHandler);\r\n }\r\n\r\n generateComponentId() {\r\n return this._nextComponentId = this._nextComponentId === Number.MAX_SAFE_INTEGER\r\n ? 0 : this._nextComponentId + 1;\r\n }\r\n\r\n getComponentBoundsByIntersectionPosition(position: number, maxPosition: number | null = null): (IRect & { id: Id | null; isFirst: boolean; isLast: boolean; }) | null {\r\n return this._trackBox?.getComponentBoundsByIntersectionPosition(position, maxPosition) ?? null;\r\n }\r\n\r\n setIntersectionElementBySnapToItemAlign(id: Id | null) {\r\n if (this._$intersectionElementBySnapToItemAlign.getValue() !== id) {\r\n this._$intersectionElementBySnapToItemAlign.next(id);\r\n }\r\n }\r\n\r\n /**\r\n * The method scrolls the list to the element with the given `id` and returns the value of the scrolled area.\r\n */\r\n scrollTo(id: Id, cb: (() => void) | null = null, options: IScrollOptions | null = null) {\r\n this._$scrollTo.next({ id, cb, options });\r\n }\r\n\r\n /**\r\n * Scrolls the scroll area to the first item in the collection.\r\n */\r\n scrollToStart(options?: IScrollOptions) {\r\n this._$scrollToStart.next(options);\r\n }\r\n\r\n /**\r\n * Scrolls the list to the end of the content size.\r\n */\r\n scrollToEnd(options?: IScrollOptions) {\r\n this._$scrollToEnd.next(options);\r\n }\r\n}\r\n","import { DestroyRef, Directive, ElementRef, inject, Input, output } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { BehaviorSubject, combineLatest, fromEvent, of, race } from 'rxjs';\r\nimport { filter, switchMap, takeUntil, tap } from 'rxjs/operators';\r\nimport { CnVirtualListService } from '../../../list/cn-virtual-list.service';\r\nimport { DEFAULT_CLICK_DISTANCE } from '../../../list/const';\r\n\r\n/**\r\n * VirtualClickDirective\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/directives/cn-item-click/cn-item-click.directive.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Directive({\r\n selector: '[virtualClick]',\r\n standalone: false,\r\n})\r\nexport class CnVirtualClickDirective {\r\n private _$maxDistance = new BehaviorSubject<number | null>(null);\r\n protected $maxDistance = this._$maxDistance.asObservable();\r\n\r\n private _maxDistance: number | null = null;\r\n\r\n @Input('maxClickDistance')\r\n set maxDistance(v: number | string) {\r\n const value = (v !== null || v !== undefined) ? Number(v) : null;\r\n this._maxDistance = value;\r\n this._$maxDistance.next(value);\r\n }\r\n\r\n onVirtualClick = output<PointerEvent | TouchEvent>();\r\n\r\n onVirtualClickPress = output<PointerEvent | TouchEvent>();\r\n\r\n onVirtualClickCancel = output<void>();\r\n\r\n private _service = inject(CnVirtualListService);\r\n\r\n private _elementRef = inject(ElementRef);\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n constructor() {\r\n let maxDistance = this._maxDistance ?? DEFAULT_CLICK_DISTANCE;\r\n combineLatest([this._service.$clickDistance, this.$maxDistance]).pipe(\r\n takeUntilDestroyed(),\r\n tap(([clickDistance, distance]) => {\r\n maxDistance = distance === null ? clickDistance : distance;\r\n }),\r\n ).subscribe();\r\n\r\n const $pointerPressed = fromEvent<PointerEvent>(this._elementRef.nativeElement, 'pointerdown'),\r\n $pointerCancel = race([\r\n fromEvent(window, 'pointerup').pipe(\r\n takeUntilDestroyed(),\r\n ),\r\n fromEvent<PointerEvent>(window, 'pointerleave').pipe(\r\n takeUntilDestroyed(),\r\n ),\r\n ]),\r\n $pointerRelease = fromEvent<PointerEvent>(this._elementRef.nativeElement, 'pointerup', { passive: false });\r\n\r\n $pointerPressed.pipe(\r\n takeUntilDestroyed(),\r\n switchMap(e => {\r\n const x = Math.abs(e.clientX),\r\n y = Math.abs(e.clientY);\r\n this.onVirtualClickPress.emit(e);\r\n return $pointerRelease.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n takeUntil(\r\n race([\r\n $pointerCancel.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(() => {\r\n this.onVirtualClickCancel.emit();\r\n }),\r\n ),\r\n fromEvent<PointerEvent>(window, 'pointermove').pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n switchMap(e => {\r\n const xx = x - Math.abs(e.clientX),\r\n yy = y - Math.abs(e.clientY),\r\n dist = Math.sqrt(Math.pow(xx, 2) + Math.pow(yy, 2));\r\n\r\n if (dist > maxDistance) {\r\n this.onVirtualClickCancel.emit();\r\n return of(true);\r\n }\r\n\r\n return of(false);\r\n }),\r\n filter(v => !!v),\r\n ),\r\n ]),\r\n ),\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(e => {\r\n if (e) {\r\n this.onVirtualClick.emit(e);\r\n }\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n }\r\n}\r\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CnVirtualClickDirective } from './cn-virtual-click.directive';\r\n\r\n@NgModule({\r\n declarations: [CnVirtualClickDirective],\r\n exports: [CnVirtualClickDirective],\r\n imports: [CommonModule],\r\n schemas: [NO_ERRORS_SCHEMA],\r\n})\r\nexport class CnVirtualClickModule { }\r\n","import { TextDirections } from \"../../common\";\r\nimport {\r\n Alignments, CollapsingModes, CollectionModes, SelectingModes, SnappingMethods, SnapToItemAligns, SpreadingModes,\r\n} from \"../enums\";\r\nimport { Directions } from \"../enums/directions\";\r\nimport { IAnimationParams, IScrollingSettings } from '../interfaces';\r\nimport { SpreadingMode } from \"../types\";\r\nimport { Alignment, SnappingDistance, SnapToItemAlign } from \"../types\";\r\n\r\nconst INVISIBLE_POSITION = -10000;\r\n\r\nexport const SERVICE_PROP_DUMMY_ID = '__service-dummy-id__';\r\n\r\nexport const SERVICE_PROP_DUMMY = '__service-dummy__';\r\n\r\nexport const SERVICE_TYPE_DUMMY = '__service-type-dummy__';\r\n\r\nexport const SERVICE_PROP_DUMMY_ENABLED = Symbol('__service-dummy-enabled__');\r\n\r\nexport const MAX_REGULAR_SNAPED_COMPONENTS = 2;\r\n\r\nexport const DEFAULT_ITEM_SIZE = 24;\r\n\r\nexport const DEFAULT_MIN_ITEM_SIZE = 1;\r\n\r\nexport const DEFAULT_MAX_ITEM_SIZE = Number.MAX_SAFE_INTEGER;\r\n\r\nexport const DEFAULT_BUFFER_SIZE = 2;\r\n\r\nexport const DEFAULT_MAX_BUFFER_SIZE = 10;\r\n\r\nexport const DEFAULT_LIST_SIZE = 400;\r\n\r\nexport const DEFAULT_CLICK_DISTANCE = 40;\r\n\r\nexport const DEFAULT_WAIT_FOR_PREPARATION = true;\r\n\r\nexport const DEFAULT_SCROLLBAR_ENABLED = true;\r\n\r\nexport const DEFAULT_SCROLLBAR_INTERACTIVE = true;\r\n\r\nexport const DEFAULT_OVERLAPPING_SCROLLBAR = false;\r\n\r\nexport const DEFAULT_SCROLL_BEHAVIOR: ScrollBehavior = 'smooth';\r\n\r\nexport const NAVIGATION_BY_KEYBOARD_TIMER = 50;\r\n\r\nexport const DEFAULT_SNAP_TO_ITEM = false;\r\n\r\nexport const DEFAULT_SNAP_TO_ITEM_ALIGN: SnapToItemAlign = SnapToItemAligns.CENTER;\r\n\r\nexport const DEFAULT_SNAPPING_DISTANCE: SnappingDistance = '25%';\r\n\r\nexport const DEFAULT_SCROLLING_ONE_BY_ONE = false;\r\n\r\nexport const DEFAULT_ALIGNMENT: Alignment = Alignments.NONE;\r\n\r\nexport const DEFAULT_SPREADING_MODE: SpreadingMode = SpreadingModes.NORMAL;\r\n\r\nexport const DEFAULT_DIVIDES = 1;\r\n\r\nexport const DEFAULT_MOTION_BLUR = 0.15;\r\n\r\nexport const DEFAULT_MOTION_BLUR_ENABLED = false;\r\n\r\nexport const DEFAULT_MAX_MOTION_BLUR = 0.5;\r\n\r\nexport const DEFAULT_ANIMATION_PARAMS: IAnimationParams = {\r\n scrollToItem: 150,\r\n snapToItem: 150,\r\n navigateToItem: 150,\r\n navigateByKeyboard: NAVIGATION_BY_KEYBOARD_TIMER,\r\n};\r\n\r\nexport const DEFAULT_SCROLLING_SETTINGS: IScrollingSettings = {\r\n frictionalForce: 0.035,\r\n mass: 0.005,\r\n maxDistance: 100000,\r\n maxDuration: 4000,\r\n speedScale: 10,\r\n optimization: false,\r\n};\r\n\r\nexport const DEFAULT_OVERSCROLL_ENABLED = true;\r\n\r\nexport const DEFAULT_STICKY_ENABLED = false;\r\n\r\nexport const DEFAULT_SELECT_BY_CLICK = true;\r\n\r\nexport const DEFAULT_ZINDEX_WHEN_SELECTING = null;\r\n\r\nexport const DEFAULT_COLLAPSE_BY_CLICK = true;\r\n\r\nexport const DEFAULT_ENABLED_BUFFER_OPTIMIZATION = false;\r\n\r\nexport const DEFAULT_DYNAMIC_SIZE = true;\r\n\r\nexport const DEFAULT_SNAP_TO_END_TRANSITION_INSTANT_OFFSET = 1;\r\n\r\nexport const DEFAULT_SNAP_SCROLLTO_START = true;\r\n\r\nexport const DEFAULT_SNAP_SCROLLTO_END = true;\r\n\r\nexport const TRACK_BY_PROPERTY_NAME = 'id';\r\n\r\nexport const DEFAULT_DIRECTION = Directions.VERTICAL;\r\n\r\nexport const DEFAULT_COLLECTION_MODE = CollectionModes.NORMAL;\r\n\r\nexport const DISPLAY_OBJECTS_LENGTH_MESUREMENT_ERROR = 1;\r\n\r\nexport const MAX_SCROLL_TO_ITERATIONS = 5;\r\n\r\nexport const DEFAULT_SNAPPING_METHOD = SnappingMethods.STANDART;\r\n\r\nexport const DEFAULT_COLLAPSING_MODES = CollapsingModes.MULTI_COLLAPSE;\r\n\r\nexport const DEFAULT_SELECTING_MODES = SelectingModes.NONE;\r\n\r\nexport const DEFAULT_SCREEN_READER_MESSAGE = 'Showing items $1 to $2';\r\n\r\nexport const DEFAULT_LANG_TEXT_DIR = TextDirections.LTR;\r\n\r\nexport const DEFAULT_SCROLLBAR_THICKNESS: number = 6;\r\n\r\nexport const DEFAULT_SCROLLBAR_MIN_SIZE: number = 80;\r\n\r\n// presets\r\n\r\nexport const BEHAVIOR_AUTO: ScrollBehavior = 'auto';\r\n\r\nexport const BEHAVIOR_INSTANT: ScrollBehavior = 'instant';\r\n\r\nexport const BEHAVIOR_SMOOTH: ScrollBehavior = 'smooth';\r\n\r\nexport const DISABLED = 'disabled';\r\n\r\nexport const VIEWPORT = 'viewport';\r\n\r\nexport const DISPLAY_BLOCK = 'block';\r\n\r\nexport const DISPLAY_NONE = 'none';\r\n\r\nexport const OPACITY_0 = '0';\r\n\r\nexport const OPACITY_100 = '100';\r\n\r\nexport const VISIBILITY_VISIBLE = 'visible';\r\n\r\nexport const VISIBILITY_HIDDEN = 'hidden';\r\n\r\nexport const SIZE_100_PERSENT = '100%';\r\n\r\nexport const SIZE_AUTO = 'auto';\r\n\r\nexport const UNSET = 'unset';\r\n\r\nexport const LEFT = 'left';\r\n\r\nexport const RIGHT = 'right';\r\n\r\nexport const POSITION = 'position';\r\n\r\nexport const POSITION_RELATIVE = 'relative';\r\n\r\nexport const POSITION_ABSOLUTE = 'absolute';\r\n\r\nexport const TRANSLATE_3D = 'translate3d';\r\n\r\nexport const INVISIBLE_TRANSLATE_3D = `${TRANSLATE_3D}(${INVISIBLE_POSITION},${INVISIBLE_POSITION},0)`;\r\n\r\nexport const HIDDEN_ZINDEX = '-1';\r\n\r\nexport const DEFAULT_ZINDEX = '0';\r\n\r\nexport const TOP_PROP_NAME = 'top';\r\n\r\nexport const LEFT_PROP_NAME = 'left';\r\n\r\nexport const X_PROP_NAME = 'x';\r\n\r\nexport const Y_PROP_NAME = 'y';\r\n\r\nexport const TRANSFORMED_X_PROP_NAME = 'transformedX';\r\n\r\nexport const TRANSFORMED_Y_PROP_NAME = 'transformedY';\r\n\r\nexport const WIDTH_PROP_NAME = 'width';\r\n\r\nexport const HEIGHT_PROP_NAME = 'height';\r\n\r\nexport const MARGIN_TOP = 'marginTop';\r\n\r\nexport const MARGIN_LEFT = 'marginLeft';\r\n\r\nexport const PX = 'px';\r\n\r\nexport const INTERACTIVE = 'interactive';\r\n\r\nexport const FOCUS = 'focus';\r\n\r\nexport const WHEEL = 'wheel';\r\n\r\nexport const SCROLLER_WHEEL = 'wheel';\r\n\r\nexport const TOUCH_MOVE = 'touchmove';\r\n\r\nexport const TOUCH_START = 'touchstart';\r\n\r\nexport const TOUCH_END = 'touchend';\r\n\r\nexport const TOUCH_LEAVE = 'touchleave';\r\n\r\nexport const TOUCH_OUT = 'touchout';\r\n\r\nexport const MOUSE_MOVE = 'mousemove';\r\n\r\nexport const MOUSE_UP = 'mouseup';\r\n\r\nexport const MOUSE_DOWN = 'mousedown';\r\n\r\nexport const MOUSE_LEAVE = 'mouseleave';\r\n\r\nexport const MOUSE_OUT = 'mouseout';\r\n\r\nexport const POINTER_MOVE = 'pointermove';\r\n\r\nexport const POINTER_UP = 'pointerup';\r\n\r\nexport const POINTER_DOWN = 'pointerdown';\r\n\r\nexport const POINTER_LEAVE = 'pointerleave';\r\n\r\nexport const POINTER_OUT = 'pointerout';\r\n\r\nexport const CLICK = 'click';\r\n\r\nexport const KEY_DOWN = 'keydown';\r\n\r\nexport const KEY_TAB = 'Tab';\r\n\r\nexport const SCROLL = 'scroll';\r\n\r\nexport const SCROLLER_SCROLL = 'scroll';\r\n\r\nexport const SCROLL_END = 'scrollend';\r\n\r\nexport const CLASS_LIST_VERTICAL = 'vertical';\r\n\r\nexport const CLASS_LIST_HORIZONTAL = 'horizontal';\r\n\r\n// styles\r\n\r\nexport const PART_DEFAULT_ITEM = 'item';\r\n\r\nexport const PART_ITEM_NEW = ' item-new';\r\n\r\nexport const PART_ITEM_ODD = ' item-odd';\r\n\r\nexport const PART_ITEM_EVEN = ' item-even';\r\n\r\nexport const PART_ITEM_ROW_ODD = ' item-row-odd';\r\n\r\nexport const PART_ITEM_ROW_EVEN = ' item-row-even';\r\n\r\nexport const PART_ITEM_SNAPPED = ' item-snapped';\r\n\r\nexport const PART_ITEM_SELECTED = ' item-selected';\r\n\r\nexport const PART_ITEM_COLLAPSED = ' item-collapsed';\r\n\r\nexport const PART_ITEM_FOCUSED = ' item-focused';\r\n\r\nexport const PART_DEFAULT_ITEM_FX = 'item-fx';\r\n\r\nexport const PART_ITEM_FX_NEW = ' item-fx-new';\r\n\r\nexport const PART_ITEM_FX_ODD = ' item-fx-odd';\r\n\r\nexport const PART_ITEM_FX_EVEN = ' item-fx-even';\r\n\r\nexport const PART_ITEM_ROW_FX_ODD = ' item-row-fx-odd';\r\n\r\nexport const PART_ITEM_ROW_FX_EVEN = ' item-row-fx-even';\r\n\r\nexport const PART_ITEM_FX_SNAPPED = ' item-fx-snapped';\r\n\r\nexport const PART_ITEM_FX_SELECTED = ' item-fx-selected';\r\n\r\nexport const PART_ITEM_FX_COLLAPSED = ' item-fx-collapsed';\r\n\r\nexport const PART_ITEM_FX_FOCUSED = ' item-fx-focused';\r\n\r\nexport const MIN_PIXELS_FOR_PREVENT_SNAPPING = 10;\r\n\r\nexport const MAX_VELOCITY_FOR_SCROLL_QUALITY_OPTIMIZATION_LVL1 = 74;\r\n\r\nexport const MAX_NUMBERS_OF_SKIPS_FOR_QUALITY_OPTIMIZATION_LVL1 = 4;\r\n\r\nexport const RANGE_DISPLAY_ITEMS_END_OFFSET = 20;\r\n\r\nexport const PREPARE_ITERATIONS = 1;\r\n\r\nexport const PREPARATION_REUPDATE_LENGTH = 0;\r\n\r\nexport const PREPARE_ITERATIONS_FOR_UPDATE_ITEMS = 1;\r\n\r\nexport const PREPARATION_REUPDATE_LENGTH_FOR_UPDATE_ITEMS = 0;\r\n\r\nexport const PREPARE_ITERATIONS_FOR_COLLAPSE_ITEMS = 1;\r\n\r\nexport const PREPARATION_REUPDATE_LENGTH_FOR_COLLAPSE_ITEMS = 0;\r\n\r\nexport const EMPTY_SCROLL_STATE_VERSION = '-1';\r\n\r\nexport const ROLE_LIST = 'list';\r\n\r\nexport const ROLE_LIST_BOX = 'listbox';\r\n\r\nexport const ITEM_ID = 'item-id';\r\n\r\nexport const ITEM_CONTAINER = 'cnvl-item';\r\n\r\nexport const Z_INDEX_NONE = '-1',\r\n Z_INDEX_0 = '0',\r\n Z_INDEX_1 = '1',\r\n Z_INDEX_2 = '2',\r\n Z_INDEX_3 = '3';","import { matrix3d } from \"../utils\";\r\n\r\nexport const ID = 'id',\r\n CNVL_VISIBILITY = 'cnvl-visibility',\r\n MATRIX_3D_HIDDEN = matrix3d(-1000, -1000, 0, 1, 1, 1, 0, 0, 0),\r\n ATTR_AREA_SELECTED = 'area-selected',\r\n POSITION = 'position',\r\n POSITION_ZERO = '0',\r\n ITEM_ID = 'item-id',\r\n KEY_SPACE = ' ',\r\n KEY_ARR_LEFT = 'ArrowLeft',\r\n KEY_ARR_UP = 'ArrowUp',\r\n KEY_ARR_RIGHT = 'ArrowRight',\r\n KEY_ARR_DOWN = 'ArrowDown',\r\n EVENT_FOCUS_IN = 'focusin',\r\n EVENT_FOCUS_OUT = 'focusout',\r\n EVENT_KEY_DOWN = 'keydown',\r\n CLASS_NAME_SNAPPED = 'snapped',\r\n CLASS_NAME_SNAPPED_OUT = 'snapped-out',\r\n CLASS_NAME_FOCUS = 'focus';\r\n\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IRenderVirtualListItem } from './models';\r\nimport { IScrollOptions } from './interfaces';\r\nimport { FocusAlignment } from './types';\r\nimport { FocusItemParams } from './types/focus-item-params';\r\nimport { CnVirtualListService } from './cn-virtual-list.service';\r\nimport { FocusAlignments } from './enums';\r\nimport { Id } from '../common';\r\n\r\n/**\r\n * CnVirtualListPublicService\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/cn-virtual-list-publick.service.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CnVirtualListPublicService {\r\n private _internalService = inject(CnVirtualListService);\r\n\r\n /**\r\n * Unique list identifier.\r\n */\r\n get id(): number { return this._internalService.id; }\r\n\r\n /**\r\n * Informs about a click on a list item.\r\n */\r\n get $virtualClick(): Observable<IRenderVirtualListItem<any> | null> { return this._internalService.$virtualClick; };\r\n\r\n /**\r\n * Informs about the selection of a list item(s).\r\n */\r\n get $selectedIds(): Observable<Array<Id> | Id | null> { return this._internalService.$selectedIds; };\r\n\r\n /**\r\n * Informs about the collapse (expanding) of a list element(s).\r\n */\r\n get $collapsedIds(): Observable<Array<Id>> { return this._internalService.$collapsedIds; };\r\n\r\n /**\r\n * Informs the focus on the specified list item.\r\n */\r\n get $focusItem(): Observable<FocusItemParams> { return this._internalService.$focusItem; };\r\n\r\n /**\r\n * Notifies about the next change detection tick. Works similarly to `setTimeout` with a timeout of 0.\r\n */\r\n get $tick(): Observable<void> { return this._internalService.$tick; };\r\n\r\n /**\r\n * Specifies a list of selected items.\r\n */\r\n set selectedIds(ids: Array<Id> | Id | null) {\r\n this._internalService.selectedIds = ids;\r\n }\r\n\r\n /**\r\n * Returns a list of selected items.\r\n */\r\n get selectedIds() { return this._internalService.selectedIds; }\r\n\r\n /**\r\n * Specifies a list of collapsed elements.\r\n */\r\n set collapsedIds(ids: Array<Id>) {\r\n this._internalService.collapsedIds = ids;\r\n }\r\n\r\n /**\r\n * Returns a list of collapsed elements.\r\n */\r\n get collapsedIds() { return this._internalService.collapsedIds; }\r\n\r\n /**\r\n * Updates the list\r\n * @param immediately - Indicates that the list is updated instantly.\r\n */\r\n update(immediately: boolean = false) {\r\n this._internalService.update(immediately);\r\n }\r\n\r\n /**\r\n * Selects a list item\r\n * @param id \r\n * @param selected - If the value is undefined, then the toggle method is executed, if false or true, then the selection/deselection is performed.\r\n */\r\n select(id: Id, selected: boolean | undefined = undefined) {\r\n this._internalService.select(id, selected);\r\n }\r\n\r\n /**\r\n * Collapse list items\r\n * @param id \r\n * @param collapsed - If the value is undefined, then the toggle method is executed, if false or true, then the collapse/expand is performed.\r\n */\r\n collapse(id: Id, collapsed: boolean | undefined = undefined) {\r\n this._internalService.collapse(id, collapsed);\r\n }\r\n\r\n /**\r\n * Focus an list item by a given id.\r\n */\r\n focus(id: Id, align: FocusAlignment = FocusAlignments.NONE, scrollBehavior: ScrollBehavior = \"auto\") {\r\n return this._internalService.focusById(id, align, scrollBehavior)\r\n }\r\n\r\n /**\r\n * The method scrolls the list to the element with the given `id` and returns the value of the scrolled area.\r\n */\r\n scrollTo(id: Id, cb: (() => void) | null = null, options: IScrollOptions | null = null) {\r\n this._internalService.scrollTo(id, cb, options);\r\n }\r\n\r\n /**\r\n * Scrolls the scroll area to the first item in the collection.\r\n */\r\n scrollToStart(options?: IScrollOptions) {\r\n this._internalService.scrollToStart(options);\r\n }\r\n\r\n /**\r\n * Scrolls the list to the end of the content size.\r\n */\r\n scrollToEnd(options?: IScrollOptions) {\r\n this._internalService.scrollToEnd(options);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, ElementRef, inject, Signal, signal, TemplateRef, viewChild } from '@angular/core';\r\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\r\nimport { map, tap } from 'rxjs';\r\nimport { IRenderVirtualListItem } from '../../../models/render-item.model';\r\nimport { IDisplayObjectConfig, IDisplayObjectMeasures } from '../../../models';\r\nimport {\r\n DEFAULT_ZINDEX, DISPLAY_BLOCK, DISPLAY_NONE, HIDDEN_ZINDEX, PART_DEFAULT_ITEM, PART_ITEM_COLLAPSED, PART_ITEM_EVEN,\r\n PART_ITEM_FOCUSED, PART_ITEM_NEW, PART_ITEM_ODD, PART_ITEM_SELECTED, PART_ITEM_SNAPPED, PART_DEFAULT_ITEM_FX, PART_ITEM_FX_COLLAPSED,\r\n PART_ITEM_FX_EVEN, PART_ITEM_FX_FOCUSED, PART_ITEM_FX_NEW, PART_ITEM_FX_ODD, PART_ITEM_FX_SELECTED, PART_ITEM_FX_SNAPPED,\r\n PX, SIZE_100_PERSENT, SIZE_AUTO, TRANSLATE_3D, VISIBILITY_HIDDEN, VISIBILITY_VISIBLE, PART_ITEM_ROW_ODD, PART_ITEM_ROW_EVEN,\r\n PART_ITEM_ROW_FX_ODD, PART_ITEM_ROW_FX_EVEN, INVISIBLE_TRANSLATE_3D,\r\n} from '../../../const';\r\nimport { ITemplateContext } from '../interfaces';\r\nimport {\r\n CLASS_NAME_FOCUS, CLASS_NAME_SNAPPED, CLASS_NAME_SNAPPED_OUT, ID, ITEM_ID, POSITION, POSITION_ZERO,\r\n} from '../const';\r\nimport { CnVirtualListPublicService } from '../../../cn-virtual-list-public.service';\r\nimport { createDisplayId, matrix3d } from '../utils';\r\nimport { CnVirtualListService } from '../../../cn-virtual-list.service';\r\nimport { IBaseVirtualListItemComponent } from '../../../interfaces/base-virtual-list-item-component';\r\nimport { Color, ISize, TextDirection, TextDirections } from '../../../../common';\r\n\r\n/**\r\n * BaseVirtualListItemComponent\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/list-item/base/base-virtual-list-item-component.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Component({\r\n selector: 'x-base-virtual-list-item',\r\n template: '',\r\n standalone: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BaseVirtualListItemComponent implements IBaseVirtualListItemComponent {\r\n protected _item = viewChild<ElementRef<HTMLDivElement>>('item');\r\n\r\n protected _container = viewChild<ElementRef<HTMLDivElement>>('container');\r\n\r\n private _apiService = inject(CnVirtualListPublicService);\r\n\r\n protected readonly _service = inject(CnVirtualListService);\r\n\r\n protected _id!: number;\r\n get id() {\r\n return this._id;\r\n }\r\n\r\n protected _listId!: number;\r\n get listId() {\r\n return this._listId;\r\n }\r\n\r\n protected _displayId!: string;\r\n get displayId() {\r\n return this._displayId;\r\n }\r\n\r\n protected _isSelected: boolean = false;\r\n set isSelected(v: boolean) {\r\n if (this._isSelected !== v) {\r\n this._isSelected = v;\r\n\r\n this.update();\r\n }\r\n }\r\n get isSelected() { return this._isSelected; }\r\n\r\n protected _isCollapsed: boolean = false;\r\n\r\n protected readonly config = signal<IDisplayObjectConfig>({} as IDisplayObjectConfig);\r\n\r\n protected readonly measures = signal<IDisplayObjectMeasures | null>(null);\r\n\r\n protected readonly focused = signal<boolean>(false);\r\n\r\n protected readonly part = signal<string>(PART_DEFAULT_ITEM);\r\n\r\n protected readonly fxPart = signal<string>(PART_DEFAULT_ITEM_FX);\r\n\r\n protected readonly data = signal<IRenderVirtualListItem | null>(null);\r\n protected _data: IRenderVirtualListItem | null = null;\r\n set item(v: IRenderVirtualListItem | null) {\r\n if (this._data === v || this._data?.id === -1 || !v) {\r\n return;\r\n }\r\n\r\n this._data = v;\r\n\r\n this.updatePartStr(v, this._isSelected, this._isCollapsed);\r\n\r\n this.updateConfig(v, this._service.isGrabbing);\r\n\r\n this.updateMeasures(v);\r\n\r\n this.update();\r\n\r\n this.data.set(v);\r\n }\r\n\r\n protected readonly classes!: Signal<{ [cName: string]: boolean; }>;\r\n\r\n protected readonly index!: Signal<number>;\r\n\r\n protected readonly templateContext!: Signal<ITemplateContext>;\r\n\r\n public regular: boolean = false;\r\n\r\n protected _blendColor: Color | null = null;\r\n\r\n protected _scrollBarSize: number = 0;\r\n\r\n protected _langTextDir: TextDirection = TextDirections.LTR;\r\n\r\n protected _regularLength: string = SIZE_100_PERSENT;\r\n set regularLength(v: string) {\r\n if (this._regularLength === v) {\r\n return;\r\n }\r\n\r\n this._regularLength = v;\r\n\r\n this.update();\r\n }\r\n\r\n get item() {\r\n return this._data;\r\n }\r\n\r\n get itemId() {\r\n return this._data?.id;\r\n }\r\n\r\n get zIndex() {\r\n return this._elementRef.nativeElement.style.zIndex;\r\n }\r\n\r\n get visibility() {\r\n return this._elementRef.nativeElement.style.visibility;\r\n }\r\n\r\n protected readonly itemRenderer = signal<TemplateRef<any> | undefined>(undefined);\r\n\r\n protected _renderer: TemplateRef<any> | undefined;\r\n set renderer(v: TemplateRef<any> | undefined) {\r\n if (this._renderer !== v) {\r\n this._renderer = v;\r\n this.itemRenderer.set(v);\r\n }\r\n }\r\n\r\n protected _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n get element() {\r\n return this._elementRef.nativeElement;\r\n }\r\n\r\n protected _destroyRef = inject(DestroyRef);\r\n\r\n constructor() {\r\n this._id = this._service.generateComponentId();\r\n this._listId = this._service.id;\r\n this._displayId = createDisplayId(this._listId, this._id);\r\n\r\n this._service.$isGrabbing.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this.updateConfig(this._data, v);\r\n }),\r\n ).subscribe();\r\n\r\n effect(() => {\r\n const part = this.part();\r\n this._elementRef.nativeElement.setAttribute('part', part);\r\n });\r\n\r\n const $focus = this._service.$focusedId.pipe(\r\n takeUntilDestroyed(),\r\n map(id => id === this.itemId),\r\n );\r\n\r\n $focus.pipe(\r\n takeUntilDestroyed(),\r\n tap(() => {\r\n this.updatePartStr(this._data, this._isSelected, this._isCollapsed);\r\n }),\r\n ).subscribe();\r\n\r\n const focus = toSignal($focus);\r\n\r\n this.classes = computed(() => {\r\n const data = this.data(), _focus = focus() ?? false;\r\n return {\r\n [CLASS_NAME_SNAPPED]: data?.config?.snapped ?? false, [CLASS_NAME_SNAPPED_OUT]: data?.config?.snappedOut ?? false,\r\n [CLASS_NAME_FOCUS]: _focus,\r\n };\r\n });\r\n\r\n this.index = computed(() => {\r\n return this.config()?.tabIndex ?? -1;\r\n });\r\n\r\n this.templateContext = computed(() => {\r\n const data = this.data(), measures = this.measures(), config = this.config();\r\n return {\r\n data: data?.data, prevData: data?.previouseData, nextData: data?.nextData, measures,\r\n config, reseted: false, index: data?.index ?? - 1, api: this._apiService,\r\n };\r\n });\r\n\r\n if (this._service.isVertical) {\r\n this._elementRef.nativeElement.style.height = `${this._service.itemSize}px`;\r\n } else {\r\n this._elementRef.nativeElement.style.width = `${this._service.itemSize}px`;\r\n }\r\n\r\n this.hide();\r\n }\r\n\r\n protected updateMeasures(v: IRenderVirtualListItem<any> | null) {\r\n this.measures.set(v?.measures ? { ...v.measures } : null)\r\n }\r\n\r\n protected updateConfig(v: IRenderVirtualListItem<any> | null, grabbing: boolean) {\r\n this.config.set({\r\n ...v?.config || {} as IDisplayObjectConfig, selected: this._isSelected, collapsed: this._isCollapsed, focused: this.focused(), grabbing,\r\n });\r\n }\r\n\r\n protected update() {\r\n const data = this._data, regular = this.regular, length = this._regularLength, el = this._elementRef.nativeElement,\r\n itemElement = this._item()?.nativeElement, containerElement = this._container()?.nativeElement;\r\n if (!!data && !!el && !!itemElement && !!containerElement) {\r\n el.setAttribute(ITEM_ID, `${data.id}`);\r\n const styles = el.style, itemElementStyles = itemElement.style;\r\n if (this._service.zIndexWhenSelecting !== null && this._isSelected) {\r\n styles.zIndex = this._service.zIndexWhenSelecting;\r\n } else {\r\n styles.zIndex = data.config.zIndex;\r\n }\r\n this._blendColor = data.config.blendColor ?? null;\r\n if (!!containerElement && !!data.config.blendColor) {\r\n containerElement.style.opacity = String(data.config.opacity);\r\n }\r\n if (!!data.config.filter) {\r\n styles.filter = data.config.filter;\r\n }\r\n if (this.item?.config?.dynamic && data.config.isStub === true) {\r\n el.style.visibility = VISIBILITY_HIDDEN;\r\n }\r\n if (regular) {\r\n el.setAttribute(POSITION, POSITION_ZERO);\r\n styles.transform = `${TRANSLATE_3D}(${data.config.isVertical ?\r\n (this._langTextDir === TextDirections.RTL ? this._scrollBarSize : 0) :\r\n data.measures.delta}${PX}, ${data.config.isVertical ? data.measures.delta : 0}${PX}, ${POSITION_ZERO})`;\r\n } else {\r\n el.setAttribute(POSITION, `${data.config.isVertical ? data.measures.y : data.measures.x}`);\r\n styles.transform = matrix3d(data.measures.transformedX, data.measures.transformedY, data.measures.z, data.measures.scaleX, data.measures.scaleY,\r\n data.measures.scaleZ, data.measures.rotationX, data.measures.rotationY, data.measures.rotationZ);\r\n }\r\n if (data.config.divides > 1) {\r\n styles.height = data.config.isVertical ? `${data.measures.row.size}${PX}` : `${data.measures.height}${PX}`;\r\n styles.width = data.config.isVertical ? `${data.measures.width}${PX}` : `${data.measures.row.size}${PX}`;\r\n itemElementStyles.minWidth = styles.minWidth = data.config.isVertical ? SIZE_AUTO : `${data.measures.minWidth}${PX}`;\r\n itemElementStyles.maxWidth = styles.maxWidth = data.config.isVertical ? SIZE_AUTO : `${data.measures.maxWidth}${PX}`;\r\n itemElementStyles.minHeight = styles.minHeight = data.config.isVertical ? `${data.measures.minHeight}${PX}` : SIZE_AUTO;\r\n itemElementStyles.maxHeight = styles.maxHeight = data.config.isVertical ? `${data.measures.maxHeight}${PX}` : SIZE_AUTO;\r\n\r\n itemElementStyles.height = data.config.isVertical ? data.config.dynamic ? SIZE_AUTO : `${data.measures.height}${PX}` : regular ? length : `${data.measures.height}${PX}`;\r\n itemElementStyles.width = data.config.isVertical ? regular ? length : `${data.measures.width}${PX}` : data.config.dynamic ? SIZE_AUTO : `${data.measures.width}${PX}`;\r\n } else {\r\n styles.height = data.config.isVertical ? data.config.dynamic ? SIZE_AUTO : `${data.measures.height}${PX}` : regular ? length : `${data.measures.height}${PX}`;\r\n styles.width = data.config.isVertical ? regular ? length : `${data.measures.width}${PX}` : data.config.dynamic ? SIZE_AUTO : `${data.measures.width}${PX}`;\r\n styles.minWidth = data.config.isVertical ? SIZE_AUTO : `${data.measures.minWidth}${PX}`;\r\n styles.maxWidth = data.config.isVertical ? SIZE_AUTO : `${data.measures.maxWidth}${PX}`;\r\n styles.minHeight = data.config.isVertical ? `${data.measures.minHeight}${PX}` : SIZE_AUTO;\r\n styles.maxHeight = data.config.isVertical ? `${data.measures.maxHeight}${PX}` : SIZE_AUTO;\r\n }\r\n } else {\r\n el.removeAttribute(ID);\r\n }\r\n }\r\n\r\n protected updatePartStr(v: IRenderVirtualListItem | null, isSelected: boolean, isCollapsed: boolean) {\r\n const odd = v?.config.odd, rowOdd = v?.measures.row.odd;\r\n\r\n let part = PART_DEFAULT_ITEM, fxPart = PART_DEFAULT_ITEM_FX;\r\n part += odd ? PART_ITEM_ODD : PART_ITEM_EVEN;\r\n part += rowOdd ? PART_ITEM_ROW_ODD : PART_ITEM_ROW_EVEN;\r\n fxPart += odd ? PART_ITEM_FX_ODD : PART_ITEM_FX_EVEN;\r\n fxPart += rowOdd ? PART_ITEM_ROW_FX_ODD : PART_ITEM_ROW_FX_EVEN;\r\n if (v ? v.config.snapped : false) {\r\n part += PART_ITEM_SNAPPED;\r\n fxPart += PART_ITEM_FX_SNAPPED;\r\n }\r\n if (isSelected) {\r\n part += PART_ITEM_SELECTED;\r\n fxPart += PART_ITEM_FX_SELECTED;\r\n }\r\n if (isCollapsed) {\r\n part += PART_ITEM_COLLAPSED;\r\n fxPart += PART_ITEM_FX_COLLAPSED;\r\n }\r\n if (v ? v.config.new : false) {\r\n part += PART_ITEM_NEW;\r\n fxPart += PART_ITEM_FX_NEW;\r\n }\r\n if (this.hasFocus()) {\r\n part += PART_ITEM_FOCUSED;\r\n fxPart += PART_ITEM_FX_FOCUSED;\r\n }\r\n this.part.set(part);\r\n this.fxPart.set(fxPart);\r\n }\r\n\r\n protected hasFocus() {\r\n return this._service.focusedId === this.itemId;\r\n }\r\n\r\n getBounds(): ISize {\r\n const el = this._item()?.nativeElement;\r\n if (!!el) {\r\n const width = el.offsetWidth, height = el.offsetHeight;\r\n return { width, height, };\r\n }\r\n return { width: 0, height: 0 };\r\n }\r\n\r\n show() {\r\n if (!this.item?.config?.dynamic) {\r\n return;\r\n }\r\n const el = this._elementRef.nativeElement as HTMLElement,\r\n styles = el.style;\r\n styles.zIndex = this._data?.config?.zIndex ?? DEFAULT_ZINDEX;\r\n if (this.regular) {\r\n if (styles.display === DISPLAY_BLOCK) {\r\n return;\r\n }\r\n\r\n styles.display = DISPLAY_BLOCK;\r\n } else {\r\n const isStub = this._data?.config?.isStub ?? false;\r\n if (!isStub) {\r\n if (styles.visibility === VISIBILITY_VISIBLE) {\r\n return;\r\n }\r\n styles.visibility = VISIBILITY_VISIBLE;\r\n }\r\n }\r\n }\r\n\r\n hide() {\r\n if (!this.item?.config?.dynamic) {\r\n return;\r\n }\r\n const el = this._elementRef.nativeElement,\r\n styles = el.style;\r\n styles.zIndex = HIDDEN_ZINDEX;\r\n styles.transform = INVISIBLE_TRANSLATE_3D;\r\n if (this.regular) {\r\n if (styles.display === DISPLAY_NONE) {\r\n return;\r\n }\r\n\r\n styles.display = DISPLAY_NONE;\r\n } else {\r\n if (styles.visibility === VISIBILITY_HIDDEN) {\r\n return;\r\n }\r\n\r\n styles.visibility = VISIBILITY_HIDDEN;\r\n }\r\n }\r\n}","import { ChangeDetectionStrategy, Component, inject, Injector, OnInit, signal } from '@angular/core';\r\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\r\nimport { map, tap, combineLatest, fromEvent, switchMap, of, Observable, debounceTime } from 'rxjs';\r\nimport { IRenderVirtualListItem } from '../../models/render-item.model';\r\nimport {\r\n DEFAULT_CLICK_DISTANCE, NAVIGATION_BY_KEYBOARD_TIMER, VISIBILITY_HIDDEN,\r\n} from '../../const';\r\nimport { BaseVirtualListItemComponent } from './base';\r\nimport { SelectingModesTypes } from '../../enums/selecting-modes-types';\r\nimport { IDisplayObjectConfig } from '../../models';\r\nimport { getListElementByIndex } from './utils';\r\nimport {\r\n ATTR_AREA_SELECTED, EVENT_FOCUS_IN, EVENT_FOCUS_OUT, EVENT_KEY_DOWN, KEY_ARR_DOWN, KEY_ARR_LEFT,\r\n KEY_ARR_RIGHT, KEY_ARR_UP, KEY_SPACE, CNVL_VISIBILITY,\r\n} from './const';\r\nimport { Id } from '../../../common';\r\n\r\n/**\r\n * Virtual list component.\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-list-item/cn-virtual-list-item.component.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Component({\r\n selector: 'cn-virtual-list-item',\r\n templateUrl: './cn-virtual-list-item.component.html',\r\n styleUrl: './cn-virtual-list-item.component.scss',\r\n host: {\r\n 'class': 'cnvl__item',\r\n 'role': 'listitem',\r\n },\r\n standalone: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CnVirtualListItemComponent extends BaseVirtualListItemComponent implements OnInit {\r\n protected readonly maxClickDistance = signal<number>(DEFAULT_CLICK_DISTANCE);\r\n\r\n protected _injector = inject(Injector);\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this._service.$clickDistance.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(v => {\r\n this.maxClickDistance.set(v);\r\n }),\r\n ).subscribe();\r\n\r\n this._service.$langTextDir.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(v => {\r\n this._langTextDir = v;\r\n }),\r\n ).subscribe();\r\n\r\n this._service.$scrollBarSize.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(v => {\r\n this._scrollBarSize = v;\r\n }),\r\n ).subscribe();\r\n\r\n const $data = toObservable(this.data, { injector: this._injector }),\r\n $focused = toObservable(this.focused, { injector: this._injector });\r\n\r\n fromEvent(this.element, EVENT_FOCUS_IN).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(e => {\r\n this._service.focusedId = this.itemId ?? null;\r\n this.focused.set(true);\r\n\r\n this.updateConfig(this._data, this._service.isGrabbing);\r\n\r\n this.updatePartStr(this._data, this._isSelected, this._isCollapsed);\r\n }),\r\n ).subscribe(),\r\n\r\n fromEvent(this.element, EVENT_FOCUS_OUT).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(e => {\r\n this.focused.set(false);\r\n\r\n this.updateConfig(this._data, this._service.isGrabbing);\r\n\r\n this.updatePartStr(this._data, this._isSelected, this._isCollapsed);\r\n }),\r\n ).subscribe();\r\n\r\n $focused.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n debounceTime(this.getNavigationTimeout()),\r\n switchMap(v => {\r\n if (v) {\r\n return this.keyKode();\r\n }\r\n return of(false);\r\n }),\r\n ).subscribe();\r\n\r\n combineLatest([$data, this._service.$selectingMode, this._service.$selectedIds, this._service.$collapsedIds]).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n map(([, m, selectedIds, collapsedIds]) => ({ method: m, selectedIds, collapsedIds })),\r\n tap(({ method, selectedIds, collapsedIds }) => {\r\n switch (method) {\r\n case SelectingModesTypes.SELECT: {\r\n const id = selectedIds as Id | undefined, isSelected = id === this.itemId;\r\n this.element.setAttribute(ATTR_AREA_SELECTED, String(isSelected));\r\n this.isSelected = isSelected;\r\n break;\r\n }\r\n case SelectingModesTypes.MULTI_SELECT: {\r\n const actualIds = selectedIds as Array<Id>, isSelected = this.itemId !== undefined && actualIds && actualIds.includes(this.itemId);\r\n this.element.setAttribute(ATTR_AREA_SELECTED, String(isSelected));\r\n this.isSelected = isSelected;\r\n break;\r\n }\r\n case SelectingModesTypes.NONE:\r\n default: {\r\n this.element.removeAttribute(ATTR_AREA_SELECTED);\r\n this.isSelected = false;\r\n break;\r\n }\r\n }\r\n\r\n const actualIds = collapsedIds, isCollapsed = this.itemId !== undefined && actualIds && actualIds.includes(this.itemId);\r\n this._isCollapsed = isCollapsed;\r\n\r\n this.updatePartStr(this._data, this._isSelected, isCollapsed);\r\n\r\n this.updateConfig(this._data, this._service.isGrabbing);\r\n\r\n this.updateMeasures(this._data);\r\n }),\r\n ).subscribe();\r\n }\r\n\r\n private keyKode() {\r\n return fromEvent<KeyboardEvent>(this.element, EVENT_KEY_DOWN).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n switchMap(e => {\r\n switch (e.key) {\r\n case KEY_SPACE: {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n if (!!this._data) {\r\n this._service.select(this._data!.id!);\r\n this._service.collapse(this._data!.id!);\r\n }\r\n break;\r\n }\r\n case KEY_ARR_LEFT:\r\n if (!this.config().isVertical) {\r\n return this.toPrevItem(e);\r\n }\r\n break;\r\n case KEY_ARR_UP:\r\n if (this.config().isVertical) {\r\n return this.toPrevItem(e);\r\n }\r\n break;\r\n case KEY_ARR_RIGHT:\r\n if (!this.config().isVertical) {\r\n return this.toNextItem(e);\r\n }\r\n break;\r\n case KEY_ARR_DOWN:\r\n if (this.config().isVertical) {\r\n return this.toNextItem(e);\r\n }\r\n break;\r\n }\r\n return of(null);\r\n }),\r\n );\r\n }\r\n\r\n private getNavigationTimeout() {\r\n return this._service.snapToItem ?\r\n Math.max(this._service.animationParams.snapToItem, this._service.animationParams.navigateByKeyboard ?? NAVIGATION_BY_KEYBOARD_TIMER) :\r\n this._service.animationParams.navigateByKeyboard ?? NAVIGATION_BY_KEYBOARD_TIMER;\r\n }\r\n\r\n private toNextItem(e: Event): Observable<any> {\r\n if (!!e && e.cancelable) {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n }\r\n\r\n const index = this.focusNext();\r\n if (index !== Number.MIN_SAFE_INTEGER) {\r\n this._service.lastFocusedItemId = index;\r\n }\r\n return of(e).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n debounceTime(this.getNavigationTimeout()),\r\n switchMap(() => {\r\n return this.keyKode();\r\n }),\r\n );\r\n }\r\n\r\n private toPrevItem(e: Event): Observable<any> {\r\n if (!!e && e.cancelable) {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n }\r\n\r\n const index = this.focusPrev();\r\n if (index !== Number.MIN_SAFE_INTEGER) {\r\n this._service.lastFocusedItemId = index;\r\n }\r\n return of(e).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n debounceTime(this.getNavigationTimeout()),\r\n switchMap(() => {\r\n return this.keyKode();\r\n }),\r\n );\r\n }\r\n\r\n private focusNext(): number {\r\n if (this._service.listElement) {\r\n const tabIndex = this._data?.config?.tabIndex ?? 0, length = this._data?.config.totalItems ?? 0,\r\n l = length > 0 ? (this._service.isInfinity ? (length + 1) : length) : 0;\r\n let index = tabIndex;\r\n while (index <= l) {\r\n index++;\r\n const element = this._service.listElement.querySelector<HTMLDivElement>(getListElementByIndex(index));\r\n if (!!element && element.getAttribute(CNVL_VISIBILITY) !== VISIBILITY_HIDDEN) {\r\n const focused = this._service.focus(element);\r\n if (focused) {\r\n return index;\r\n }\r\n }\r\n }\r\n }\r\n return Number.MIN_SAFE_INTEGER;\r\n }\r\n\r\n private focusPrev(): number {\r\n if (this._service.listElement) {\r\n const tabIndex = this._data?.config?.tabIndex ?? 0, min = -(this._data?.config?.layoutIndexOffset ?? 0);\r\n let index = tabIndex;\r\n while (index >= min) {\r\n index--;\r\n const element = this._service.listElement.querySelector<HTMLDivElement>(getListElementByIndex(index));\r\n if (!!element && element.getAttribute(CNVL_VISIBILITY) !== VISIBILITY_HIDDEN) {\r\n this._service.focus(element);\r\n return index;\r\n }\r\n }\r\n }\r\n return Number.MIN_SAFE_INTEGER;\r\n }\r\n\r\n protected override updateConfig(v: IRenderVirtualListItem<any> | null, grabbing: boolean) {\r\n this.config.set({\r\n ...v?.config || {} as IDisplayObjectConfig, selected: this._isSelected, collapsed: this._isCollapsed, focused: this.focused(), grabbing,\r\n });\r\n }\r\n\r\n onClickHandler() {\r\n this._service.virtualClick(this._data);\r\n }\r\n\r\n onClickPressHandler() {\r\n this._service.clickPressed = true;\r\n }\r\n\r\n onClickCancelHandler() {\r\n this._service.clickPressed = false;\r\n }\r\n}\r\n","@let renderer = itemRenderer();\r\n@let class = classes();\r\n<div #item class=\"cnvl-item\" [ngClass]=\"class\" [part]=\"part()\" [attr.cnvl-index]=\"index()\"\r\n [attr.cnvl-visibility]=\"visibility\" tabindex=\"-1\">\r\n @if (_blendColor) {\r\n <div class=\"cnvl-item__blend-color\" [style.--blend-color]=\"_blendColor\"></div>\r\n }\r\n <div #container virtualClick [part]=\"fxPart()\" [maxClickDistance]=\"maxClickDistance()\" class=\"cnvl-item__container\"\r\n [ngClass]=\"class\" (onVirtualClick)=\"onClickHandler()\" (onVirtualClickPress)=\"onClickPressHandler()\"\r\n (onVirtualClickCancel)=\"onClickCancelHandler()\">\r\n @if (renderer) {\r\n <ng-container [ngTemplateOutlet]=\"renderer\" [ngTemplateOutletContext]=\"templateContext()\" />\r\n }\r\n </div>\r\n</div>","import { IScrollEvent } from \"../interfaces\";\r\nimport { ScrollDirection } from '../types';\r\n\r\ninterface IScrollEventParams {\r\n direction: ScrollDirection;\r\n container: HTMLElement;\r\n list: HTMLElement;\r\n delta: number;\r\n deltaOfNewItems: number;\r\n scrollSize: number;\r\n isVertical: boolean;\r\n itemsRange: [number, number] | undefined;\r\n isEnd: boolean;\r\n userAction: boolean;\r\n}\r\n\r\n/**\r\n * Scroll event.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/utils/scroll-event.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport class ScrollEvent implements IScrollEvent {\r\n private _direction: ScrollDirection = 1;\r\n get direction() { return this._direction; }\r\n\r\n private _scrollSize: number = 0;\r\n get scrollSize() { return this._scrollSize; }\r\n\r\n private _scrollWeight: number = 0;\r\n get scrollWeight() { return this._scrollWeight; }\r\n\r\n private _isVertical: boolean = true;\r\n get isVertical() { return this._isVertical; }\r\n\r\n private _listSize: number = 0;\r\n get listSize() { return this._listSize; }\r\n\r\n private _size: number = 0;\r\n get size() { return this._size; }\r\n\r\n private _isStart: boolean = true;\r\n get isStart() { return this._isStart; }\r\n\r\n private _isEnd: boolean = false;\r\n get isEnd() { return this._isEnd; }\r\n\r\n private _delta: number = 0;\r\n get delta() { return this._delta; }\r\n\r\n private _deltaOfNewItems: number = 0;\r\n get deltaOfNewItems() { return this._deltaOfNewItems; }\r\n\r\n private _itemsRange: [number, number] | undefined;\r\n get itemsRange() { return this._itemsRange; }\r\n\r\n private _userAction: boolean;\r\n get userAction() { return this._userAction; }\r\n\r\n constructor(params: IScrollEventParams) {\r\n const { direction, container, list, scrollSize, delta, isVertical, deltaOfNewItems, itemsRange, isEnd, userAction } = params;\r\n this._direction = direction;\r\n this._isVertical = isVertical;\r\n this._scrollSize = scrollSize;\r\n this._scrollWeight = isVertical ? container.scrollHeight : container.scrollWidth;\r\n this._listSize = isVertical ? list.offsetHeight : list.offsetWidth;\r\n this._size = isVertical ? container.offsetHeight : container.offsetWidth;\r\n this._isEnd = isEnd;\r\n this._delta = delta;\r\n this._deltaOfNewItems = deltaOfNewItems;\r\n this._isStart = this._scrollSize === 0;\r\n this._itemsRange = itemsRange;\r\n this._userAction = userAction;\r\n }\r\n}","export interface IDebounce {\r\n /**\r\n * Call handling method\r\n */\r\n execute: (...args: Array<any>) => void;\r\n /**\r\n * Method of destroying handlers\r\n */\r\n dispose: () => void;\r\n /**\r\n * Indicates whether the handler has been removed (true) or not (false)\r\n */\r\n getIsDisposed: () => boolean;\r\n}\r\n\r\n/**\r\n * Simple debounce function.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/utils/debounce.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n * @param cb - Callback.\r\n * @param debounceTime - Debounce trigger time. \r\n * @param maxSkips - Maximum numbers of skips.\r\n * @returns \r\n */\r\nexport const debounce = (cb: (...args: Array<any>) => void, debounceTime: number = 0, maxSkips: number = 0): IDebounce => {\r\n let timeout: any = null, throws = 0;\r\n const dispose = () => {\r\n if (timeout !== null) {\r\n clearTimeout(timeout);\r\n timeout = null\r\n }\r\n }\r\n const execute = (...args: Array<any>) => {\r\n if (maxSkips > 0) {\r\n if (timeout !== null) {\r\n throws++;\r\n } else {\r\n throws = 0;\r\n }\r\n }\r\n\r\n dispose();\r\n\r\n let called = false;\r\n if (maxSkips > 0) {\r\n if (throws === maxSkips) {\r\n throws = 0;\r\n called = true;\r\n cb(...args);\r\n }\r\n }\r\n\r\n if (!called) {\r\n timeout = setTimeout(() => {\r\n cb(...args);\r\n }, debounceTime);\r\n }\r\n };\r\n const getIsDisposed = () => {\r\n return timeout === null;\r\n };\r\n return {\r\n /**\r\n * Call handling method\r\n */\r\n execute,\r\n /**\r\n * Method of destroying handlers\r\n */\r\n dispose,\r\n /**\r\n * Indicates whether the handler has been removed (true) or not (false)\r\n */\r\n getIsDisposed,\r\n };\r\n};\r\n","export const PERCENTAGE_VALUE_PATTERN = /^([\\d]+%)$/;","import { PERCENTAGE_VALUE_PATTERN } from \"../const\";\r\n\r\n/**\r\n * isPercentageValue\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/utils/is-persentage-value.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const isPercentageValue = (value: number | `${number}%` | string) => {\r\n if (value === undefined || typeof value === 'number') {\r\n return false;\r\n }\r\n return PERCENTAGE_VALUE_PATTERN.test(value);\r\n};","export class CMap<K = string, V = any> {\r\n protected _dict: { [k: string | number]: V } = {};\r\n\r\n constructor(dict?: CMap<K, V>) {\r\n this.from(dict);\r\n }\r\n\r\n from(dict?: CMap<K, V>) {\r\n if (dict) {\r\n this._dict = { ...dict._dict };\r\n }\r\n }\r\n\r\n get(key: K) {\r\n const k = String(key);\r\n return this._dict[k];\r\n }\r\n set(key: K, value: V) {\r\n const k = String(key);\r\n this._dict[k] = value;\r\n return this;\r\n }\r\n has(key: K) {\r\n return this._dict.hasOwnProperty(String(key));\r\n }\r\n delete(key: K) {\r\n const k = String(key);\r\n delete this._dict[k];\r\n }\r\n clear() {\r\n this._dict = {};\r\n }\r\n toObject() {\r\n return this._dict;\r\n }\r\n}","export const objectAsReadonly = <T = { [x: string]: any }>(source: T) => {\r\n if (!source) {\r\n return source;\r\n }\r\n\r\n const result = {} as T;\r\n for (const prop in source) {\r\n const value = source[prop];\r\n Object.defineProperty(result, prop, {\r\n value,\r\n writable: false,\r\n enumerable: true,\r\n });\r\n }\r\n\r\n return result;\r\n};\r\n\r\nexport const copyValueAsReadonly = <T = any>(source: T) => {\r\n if (!source) {\r\n return source;\r\n }\r\n\r\n if (Array.isArray(source)) {\r\n return Object.freeze([...source]) as T;\r\n }\r\n\r\n if (typeof source === 'object') {\r\n return objectAsReadonly(source);\r\n }\r\n\r\n return source;\r\n}","import { isPercentageValue } from \"./is-persentage-value\";\r\n\r\nconst PERSENTS_100 = 100,\r\n PERSENTS_1 = 1,\r\n SIZE_PERSENT = '%',\r\n CHAR_NONE = '';\r\n\r\n/**\r\n * parseFloatOrPersentageValue\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/utils/parse-float-or-persentage-value.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const parseFloatOrPersentageValue = (value: number | `${number}%` | string): number => {\r\n const isPercentage = isPercentageValue(value);\r\n if (isPercentage) {\r\n const v = parseFloat(String(value).replace(SIZE_PERSENT, CHAR_NONE));\r\n return v / (isPercentage ? PERSENTS_100 : PERSENTS_1);\r\n }\r\n return value as number;\r\n}\r\n","import { ArithmeticExpression } from \"..\";\r\nimport { isPercentageValue } from \"./is-persentage-value\";\r\nimport { parseFloatOrPersentageValue } from \"./parse-float-or-persentage-value\";\r\n\r\nconst WHITESPACE = ' ', PLUS = '+', MINUS = '-', OPERATORS = [PLUS, MINUS];\r\n\r\nconst calculate = (exp: string, reference: number, operator: -1 | 1 = 1) => {\r\n let result: number = 0;\r\n const isPercentage = isPercentageValue(exp);\r\n if (isPercentage) {\r\n const v = parseFloatOrPersentageValue(exp);\r\n result += (reference * v) * operator;\r\n } else {\r\n result += (Number(exp) ?? 0) * operator;\r\n }\r\n return result;\r\n}\r\n\r\n/**\r\n * parseArithmeticExpression\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/utils/parse-arithmetic-expression.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const parseArithmeticExpression = (value: ArithmeticExpression, reference: number): number => {\r\n if (typeof value === 'number') {\r\n return value;\r\n }\r\n\r\n let result: number = 0, operator: 1 | -1 = 1, exp: string = '';\r\n for (let i = 0, l = value.length; i < l; i++) {\r\n const char = value[i], isLast = i === l - 1;\r\n if ((char === WHITESPACE) || isLast) {\r\n if (isLast) {\r\n exp = `${exp}${char}`;\r\n }\r\n if (exp.length > 0) {\r\n result += calculate(exp, reference, operator);\r\n }\r\n exp = '';\r\n continue;\r\n }\r\n else if (OPERATORS.indexOf(char) > -1) {\r\n if (exp.length > 0) {\r\n result += calculate(exp, reference, operator);\r\n }\r\n exp = '';\r\n operator = char === PLUS ? 1 : -1;\r\n continue;\r\n } else {\r\n exp = `${exp}${char}`;\r\n }\r\n }\r\n return result;\r\n}\r\n","/**\r\n * Switch css classes\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/utils/toggle-class-name.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const toggleClassName = (el: HTMLElement, className: string, removeClassNames?: Array<string>) => {\r\n if (!el.classList.contains(className)) {\r\n el.classList.add(className);\r\n }\r\n if (!!removeClassNames) {\r\n removeClassNames.forEach(v => {\r\n el.classList.remove(v);\r\n });\r\n }\r\n};\r\n","const userAgent = navigator.userAgent.toLowerCase();\r\n\r\nexport const IS_FIREFOX = /firefox/.test(userAgent);\r\n\r\nexport const IS_CROME = /chrome/.test(userAgent);\r\n\r\nexport const IS_SAFARI = /(safari)/.test(userAgent);\r\n\r\nexport const IS_IOS = /(iphone|ipad|ipod)/.test(userAgent);\r\n\r\nexport const IS_ANDROID = /android/.test(userAgent);\r\n\r\nexport const IS_EDGE = /edge/.test(userAgent);\r\n\r\nexport const IS_XIAOMI = /xiaomi/.test(userAgent);\r\n","export const DEFAULT_WITH_DELTA = false,\r\n DEFAULT_ANIMATION_DURATION = 500,\r\n ANIMATOR_MIN_TIMESTAMP = 1000 / 30,\r\n MIN_ANIMATED_VALUE = 10;\r\n","export const easeOutQuad = (t: number) => {\r\n return t * (2 - t);\r\n};\r\n\r\nexport const easeLinear = (t: number) => {\r\n return t + t;\r\n};\r\n","import { ANIMATOR_MIN_TIMESTAMP, DEFAULT_ANIMATION_DURATION, DEFAULT_WITH_DELTA } from './const';\r\nimport { easeLinear } from './ease';\r\nimport { IAnimatorParams, IAnimatorUpdateData } from './interfaces';\r\n\r\n/**\r\n * Animator\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/utils/animator/animator.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport class Animator {\r\n private static _nextId: number = 0;\r\n\r\n private _animationId: number = 0;\r\n\r\n get animated() { return this._animationId > -1; }\r\n\r\n get isAnimated() { return this.hasAnimation(this._currentId); }\r\n\r\n private _currentId: number = Animator._nextId;\r\n\r\n get id() { return this._currentId; }\r\n\r\n private generateId() {\r\n return Animator._nextId = Animator._nextId === Number.MAX_SAFE_INTEGER\r\n ? 0 : Animator._nextId + 1;\r\n }\r\n\r\n private _diff: number = 0;\r\n\r\n private _startValue: number = 0;\r\n\r\n private _endValue: number = 0;\r\n\r\n private _prevPos: number = 0;\r\n\r\n updateTo(end: number): boolean {\r\n if (this.hasAnimation()) {\r\n this._startValue = this._prevPos;\r\n this._endValue = end;\r\n this._diff = this._endValue - this._startValue;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n animate(params: IAnimatorParams) {\r\n this.stop();\r\n\r\n const id = this.generateId();\r\n this._currentId = id;\r\n\r\n const {\r\n withDelta = DEFAULT_WITH_DELTA, startValue, endValue, duration = DEFAULT_ANIMATION_DURATION,\r\n getPropValue, easingFunction = easeLinear, onUpdate, onComplete,\r\n } = params;\r\n\r\n this._startValue = startValue;\r\n this._endValue = endValue;\r\n\r\n const startTime = performance.now();\r\n let isCanceled = false, startPosDelta = 0, delta = 0, prevTime = startTime, isFinished = false;\r\n this._prevPos = startValue;\r\n this._diff = this._endValue - this._startValue;\r\n\r\n const step = (currentTime: number) => {\r\n if (id !== this._currentId) {\r\n isCanceled = true;\r\n }\r\n\r\n if (!!isCanceled) {\r\n return;\r\n }\r\n\r\n const cPos = getPropValue?.() || 0;\r\n let startDelta = 0;\r\n if (cPos !== this._prevPos) {\r\n startDelta = cPos - this._prevPos;\r\n startPosDelta += startDelta;\r\n }\r\n\r\n const elapsed = currentTime - startTime,\r\n progress = this._startValue === this._endValue ? 1 : Math.min(duration > 0 ? elapsed / duration : 0, 1),\r\n easedProgress = easingFunction(progress),\r\n val = (withDelta ? startPosDelta : 0) + this._startValue + this._diff * easedProgress,\r\n currentValue = val,\r\n t = performance.now();\r\n\r\n isFinished = progress === 1;\r\n\r\n delta = currentValue - startDelta - this._prevPos;\r\n\r\n const frameTimestamp = t - prevTime,\r\n actualFrameTimestamp = frameTimestamp < ANIMATOR_MIN_TIMESTAMP ? ANIMATOR_MIN_TIMESTAMP : frameTimestamp;\r\n\r\n prevTime = t;\r\n this._prevPos = currentValue;\r\n\r\n if (isFinished) {\r\n this._animationId = -1;\r\n }\r\n\r\n if (onUpdate !== undefined) {\r\n const data: IAnimatorUpdateData = {\r\n id,\r\n delta,\r\n elapsed,\r\n value: currentValue,\r\n timestamp: actualFrameTimestamp,\r\n };\r\n onUpdate(data);\r\n }\r\n\r\n if (isFinished) {\r\n if (onComplete !== undefined) {\r\n const data: IAnimatorUpdateData = {\r\n id,\r\n delta,\r\n elapsed,\r\n value: currentValue,\r\n timestamp: actualFrameTimestamp,\r\n };\r\n onComplete(data);\r\n }\r\n } else {\r\n this._animationId = requestAnimationFrame(step);\r\n }\r\n }\r\n\r\n this._animationId = requestAnimationFrame(step);\r\n\r\n return this._currentId;\r\n }\r\n\r\n hasAnimation(id: number = -1) {\r\n if ((this._currentId === id || id === -1) && this.animated) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n stop(id: number = -1) {\r\n cancelAnimationFrame(id === -1 ? this._animationId : id);\r\n this._animationId = -1;\r\n }\r\n\r\n dispose() {\r\n this.stop();\r\n }\r\n}\r\n","export type TEventHandler = (...args: Array<any>) => void;\r\n\r\n/**\r\n * Event emitter\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/utils/event-emitter/event-emitter.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport class EventEmitter<E = string, H = TEventHandler> {\r\n protected _listeners: {\r\n [eventName: string]: Array<TEventHandler>,\r\n } = {};\r\n\r\n protected _disposed: boolean = false;\r\n\r\n constructor() { }\r\n\r\n /**\r\n * Emits the event\r\n */\r\n dispatch(event: E, ...args: Array<any>): void {\r\n const ctx = this;\r\n const listeners = this._listeners[event as string];\r\n if (Array.isArray(listeners)) {\r\n for (let i = 0, l = listeners.length; i < l; i++) {\r\n const listener = listeners[i];\r\n if (listener) {\r\n listener.apply(ctx, args);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Emits the event async\r\n */\r\n dispatchAsync(event: E, ...args: Array<any>): void {\r\n queueMicrotask(() => {\r\n if (this._disposed) {\r\n return;\r\n }\r\n this.dispatch(event, ...args);\r\n });\r\n }\r\n\r\n /**\r\n * Returns true if the event listener is already subscribed.\r\n */\r\n hasEventListener(eventName: E, handler: H): boolean {\r\n const event = eventName as string;\r\n if (this._listeners[event] !== undefined) {\r\n const listeners = this._listeners[event];\r\n const index = listeners.findIndex(v => v === handler);\r\n if (index > -1) {\r\n return true;\r\n }\r\n }\r\n return false\r\n }\r\n\r\n /**\r\n * Add event listener\r\n */\r\n addEventListener(eventName: E, handler: H): void {\r\n const event = eventName as string;\r\n if (!this._listeners.hasOwnProperty(event)) {\r\n this._listeners[event] = [];\r\n }\r\n this._listeners[event].push(handler as TEventHandler);\r\n }\r\n\r\n /**\r\n * Remove event listener\r\n */\r\n removeEventListener(eventName: E, handler: H): void {\r\n const event = eventName as string;\r\n if (!this._listeners.hasOwnProperty(event)) {\r\n return;\r\n }\r\n const listeners = this._listeners[event], index = listeners.findIndex(v => v === handler);\r\n if (index > -1) {\r\n listeners.splice(index, 1);\r\n\r\n if (listeners.length === 0) {\r\n delete this._listeners[event];\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Remove all listeners\r\n */\r\n removeAllListeners() {\r\n const events = Object.keys(this._listeners);\r\n while (events.length > 0) {\r\n const event = events.pop();\r\n if (event) {\r\n const listeners = this._listeners[event];\r\n if (Array.isArray(listeners)) {\r\n while (listeners.length > 0) {\r\n const listener = listeners.pop();\r\n if (listener) {\r\n this.removeEventListener(event as E, listener as H);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Method of destroying handlers\r\n */\r\n dispose() {\r\n this._disposed = true;\r\n\r\n this.removeAllListeners();\r\n }\r\n}","import { EventEmitter } from \"../../common/utils\";\r\nimport { CMap } from \"../../common/utils/cmap\";\r\n\r\nexport interface ICacheMap<I = any, B = any> {\r\n set: (id: I, bounds: B) => CMap<I, B>;\r\n has: (id: I) => boolean;\r\n get: (id: I) => B | undefined;\r\n delete: (id: I) => void;\r\n clear: () => void;\r\n}\r\n\r\nexport const CACHE_BOX_CHANGE_EVENT_NAME = 'change';\r\n\r\ntype CacheMapEvents = typeof CACHE_BOX_CHANGE_EVENT_NAME;\r\n\r\ntype OnChangeEventListener = (version: number) => void;\r\n\r\ntype CacheMapListeners = OnChangeEventListener;\r\n\r\n/**\r\n * Cache map.\r\n * Emits a change event on each mutation.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/cache-map.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport class CacheMap<I = string | number, B = any, E = CacheMapEvents, L = CacheMapListeners> extends EventEmitter<E, L> implements ICacheMap {\r\n protected _map = new CMap<I, B>();\r\n\r\n protected _snapshot = new CMap<I, B>();\r\n\r\n protected _version: number = 0;\r\n\r\n protected _previousVersion = this._version;\r\n\r\n protected _lifeCircleId: any;\r\n\r\n protected _delta: number = 0;\r\n\r\n get delta() {\r\n return this._delta;\r\n }\r\n\r\n get version() {\r\n return this._version;\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.lifeCircle();\r\n }\r\n\r\n protected changesDetected() {\r\n return this._version !== this._previousVersion;\r\n }\r\n\r\n protected stopLifeCircle() {\r\n if (this._lifeCircleId !== undefined) {\r\n clearTimeout(this._lifeCircleId);\r\n }\r\n }\r\n\r\n protected nextTick(cb: () => void) {\r\n if (this._disposed) {\r\n return;\r\n }\r\n\r\n this._lifeCircleId = setTimeout(() => {\r\n cb();\r\n });\r\n return this._lifeCircleId;\r\n }\r\n\r\n protected lifeCircle() {\r\n this.fireChangeIfNeed();\r\n\r\n this.lifeCircleDo();\r\n }\r\n\r\n protected lifeCircleDo() {\r\n this._previousVersion = this._version;\r\n\r\n this.nextTick(() => {\r\n this.lifeCircle();\r\n });\r\n }\r\n\r\n protected bumpVersion() {\r\n if (this.changesDetected()) {\r\n return;\r\n }\r\n const v = this._version === Number.MAX_SAFE_INTEGER ? 0 : this._version + 1;\r\n this._version = v;\r\n }\r\n\r\n protected fireChangeIfNeed() {\r\n if (this.changesDetected()) {\r\n this.dispatch(CACHE_BOX_CHANGE_EVENT_NAME as E, this.version);\r\n }\r\n }\r\n\r\n set(id: I, bounds: B): CMap<I, B> {\r\n if (this._map.has(id)) {\r\n const b: any = this._map.get(id), bb: any = bounds;\r\n if (b.width === bb.width && b.height === bb.height) {\r\n return this._map;\r\n }\r\n return this._map;\r\n }\r\n\r\n const v = this._map.set(id, bounds);\r\n\r\n this.bumpVersion();\r\n\r\n return v;\r\n }\r\n\r\n has(id: I): boolean {\r\n return this._map.has(id);\r\n }\r\n\r\n get(id: I): B | undefined {\r\n return this._map.get(id);\r\n }\r\n\r\n delete(id: I) {\r\n this._map.delete(id);\r\n }\r\n\r\n clear() {\r\n this._map.clear();\r\n }\r\n\r\n snapshot() {\r\n this._snapshot = new CMap(this._map);\r\n }\r\n\r\n override dispose() {\r\n super.dispose();\r\n\r\n this.stopLifeCircle();\r\n\r\n this._snapshot.clear();\r\n\r\n this._map.clear();\r\n }\r\n}","/**\r\n * getServiceIdProp\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/utils/get-service-id-prop.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const getServiceIdProp = (trackBy: string) => {\r\n return `__service-id-${trackBy}__`;\r\n};\r\n","import { ComponentRef } from \"@angular/core\";\r\nimport { ScrollDirection } from \"../types\";\r\nimport { IRenderVirtualListCollection } from \"../models/render-collection.model\";\r\nimport { BaseVirtualListItemComponent } from \"../components/cn-list-item/base\";\r\nimport { CMap } from \"../../common/utils/cmap\";\r\nimport { SERVICE_PROP_DUMMY, SERVICE_PROP_DUMMY_ENABLED } from \"../const\";\r\nimport { getServiceIdProp } from \"./utils\";\r\nimport { Id, ISize } from \"../../common\";\r\n\r\ntype TrackingPropertyId = string | number;\r\n\r\nexport interface IVirtualListItemComponent<I = any> {\r\n getBounds(): ISize;\r\n itemId: Id;\r\n id: number;\r\n item: I | null;\r\n show: () => void;\r\n hide: () => void;\r\n}\r\n\r\n/**\r\n * Tracks display items by property\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/tracker.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport class Tracker<C extends BaseVirtualListItemComponent = any> {\r\n /**\r\n * display objects dictionary of indexes by id\r\n */\r\n protected _displayObjectIndexMapById: { [id: number]: number } = {};\r\n\r\n set displayObjectIndexMapById(v: { [id: number]: number }) {\r\n if (this._displayObjectIndexMapById === v) {\r\n return;\r\n }\r\n\r\n this._displayObjectIndexMapById = v;\r\n }\r\n\r\n get displayObjectIndexMapById() {\r\n return this._displayObjectIndexMapById;\r\n }\r\n\r\n /**\r\n * Dictionary displayItems propertyNameId by items propertyNameId\r\n */\r\n protected _trackMap = new CMap<TrackingPropertyId, number>();\r\n\r\n get trackMap() {\r\n return this._trackMap;\r\n }\r\n\r\n protected _trackingPropertyName!: string;\r\n\r\n set trackingPropertyName(v: string) {\r\n this._trackingPropertyName = v;\r\n }\r\n\r\n constructor(trackingPropertyName: string) {\r\n this._trackingPropertyName = trackingPropertyName;\r\n }\r\n\r\n private tearOutSnapedDisplayObjectByItemId = (itemId: Id, snappedComponents: Array<ComponentRef<C>> | null | undefined):\r\n ComponentRef<C> | null => {\r\n if (!snappedComponents || snappedComponents?.length === 0) {\r\n return null;\r\n }\r\n const index = snappedComponents?.findIndex(comp => comp?.instance?.itemId === itemId);\r\n if (index > -1) {\r\n const comp = snappedComponents[index];\r\n snappedComponents.splice(index, 1);\r\n return comp;\r\n }\r\n return snappedComponents.shift() ?? null;\r\n }\r\n\r\n /**\r\n * tracking by propName\r\n */\r\n track(items: IRenderVirtualListCollection, components: Array<ComponentRef<C>>, snappedComponents: Array<ComponentRef<C>> | null | undefined,\r\n direction: ScrollDirection, trackBy: string): void {\r\n if (!items) {\r\n return;\r\n }\r\n\r\n const untrackedItems = [...components], newTrackItems: Array<any> = [],\r\n untrackedComponentsByTypeMap: { [type: string]: Array<{ comp: ComponentRef<C>; index: number }>; } = {},\r\n isDown = direction === 0 || direction === 1, snapped = !!snappedComponents ? [...snappedComponents] : [];\r\n let isRegularSnapped = false;\r\n\r\n const serviceIdProp = getServiceIdProp(trackBy), snappedItems = new Array<ComponentRef<C>>();\r\n for (let i = isDown ? 0 : items.length - 1, l = isDown ? items.length : 0; isDown ? i < l : i >= l; isDown ? i++ : i--) {\r\n const item = items[i],\r\n isDummy = item?.data?.[SERVICE_PROP_DUMMY] && (item?.data?.[SERVICE_PROP_DUMMY] === SERVICE_PROP_DUMMY_ENABLED);\r\n if (isDummy) {\r\n continue;\r\n }\r\n const itemTrackingProperty = (item as any)[serviceIdProp] ?? (item as any)[trackBy];\r\n let snappedComponent: ComponentRef<C> | null | undefined;\r\n if (this._trackMap) {\r\n if (this._trackMap.has(itemTrackingProperty)) {\r\n const diId = this._trackMap.get(itemTrackingProperty),\r\n compIndex = this._displayObjectIndexMapById[diId], comp = components[compIndex] ?? null,\r\n data = item?.data,\r\n compId = comp?.instance?.id ?? null;\r\n if (comp !== null && compId === diId && compId !== null && data?.[SERVICE_PROP_DUMMY] !== SERVICE_PROP_DUMMY_ENABLED) {\r\n const indexByUntrackedItems = untrackedItems.findIndex(v => {\r\n return v.instance.id === compId;\r\n });\r\n if (indexByUntrackedItems > -1) {\r\n if (item.config.snapped || item.config.snappedOut) {\r\n if (snapped.length > 0) {\r\n snappedComponent = this.tearOutSnapedDisplayObjectByItemId(item.id, snapped);\r\n if (!!snappedComponent) {\r\n isRegularSnapped = true;\r\n snappedComponent.instance.item = item;\r\n snappedComponent.instance.show();\r\n snappedItems.push(snappedComponent);\r\n }\r\n }\r\n }\r\n\r\n if (!!snappedComponent) {\r\n if (item.config.snapped || item.config.snappedOut) {\r\n comp.instance.item = null;\r\n comp.instance.hide();\r\n } else {\r\n comp.instance.item = item;\r\n comp.instance.show();\r\n }\r\n } else {\r\n comp.instance.item = item;\r\n comp.instance.show();\r\n }\r\n untrackedItems.splice(indexByUntrackedItems, 1);\r\n continue;\r\n }\r\n }\r\n } else {\r\n this._trackMap.delete(itemTrackingProperty);\r\n\r\n }\r\n }\r\n\r\n if (untrackedItems.length > 0) {\r\n newTrackItems.push(item);\r\n }\r\n }\r\n\r\n if (untrackedItems.length > 0) {\r\n for (let i = 0, l = untrackedItems.length; i < l; i++) {\r\n const comp = untrackedItems[i], type = comp?.instance.item?.data?.type;\r\n if (!untrackedComponentsByTypeMap[type]) {\r\n untrackedComponentsByTypeMap[type] = [];\r\n }\r\n untrackedComponentsByTypeMap[type].push({ comp, index: i });\r\n }\r\n }\r\n\r\n for (let i = 0, l = newTrackItems.length; i < l; i++) {\r\n let snappedComponent: ComponentRef<C> | null | undefined;\r\n if (untrackedItems.length > 0) {\r\n const item = newTrackItems[i], itemTrackingProperty = item.id,\r\n type = item.data?.type;\r\n let comp: ComponentRef<C> | undefined;\r\n if (type) {\r\n const list = untrackedComponentsByTypeMap[type];\r\n if (!!list && list.length > 0) {\r\n const untrackedItem = list.shift();\r\n if (untrackedItem) {\r\n comp = untrackedItem.comp;\r\n untrackedItems.slice(untrackedItem.index, 1);\r\n }\r\n }\r\n }\r\n\r\n if (!comp) {\r\n comp = untrackedItems.shift();\r\n }\r\n\r\n if (comp) {\r\n if (item.config.snapped || item.config.snappedOut) {\r\n if (snapped.length > 0) {\r\n snappedComponent = this.tearOutSnapedDisplayObjectByItemId(item.id, snapped);\r\n isRegularSnapped = true;\r\n if (!!snappedComponent) {\r\n snappedComponent.instance.item = item;\r\n snappedComponent.instance.show();\r\n snappedItems.push(snappedComponent);\r\n }\r\n }\r\n }\r\n if (!!snappedComponent) {\r\n if (item.config.snapped || item.config.snappedOut) {\r\n comp.instance.item = null;\r\n comp.instance.hide();\r\n } else {\r\n comp.instance.item = item;\r\n comp.instance.show();\r\n }\r\n } else {\r\n comp.instance.item = item;\r\n comp.instance.show();\r\n }\r\n\r\n if (this._trackMap) {\r\n this._trackMap.set(itemTrackingProperty, comp.instance.id);\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (untrackedItems.length) {\r\n for (let i = 0, l = untrackedItems.length; i < l; i++) {\r\n const comp = untrackedItems[i];\r\n comp.instance.item = null;\r\n comp.instance.hide();\r\n }\r\n }\r\n\r\n for (let i = 0, l = snapped.length; i < l; i++) {\r\n const snappedComponent = snapped[i];\r\n if (snappedItems.indexOf(snappedComponent) > -1) {\r\n continue;\r\n }\r\n if (!!snappedComponent) {\r\n snappedComponent.instance.item = null;\r\n snappedComponent.instance.hide();\r\n }\r\n }\r\n }\r\n\r\n untrackComponentByIdProperty(component?: C): void {\r\n if (!component) {\r\n return;\r\n }\r\n\r\n const propertyIdName = this._trackingPropertyName;\r\n\r\n if (this._trackMap && (component as any)[propertyIdName] !== undefined) {\r\n this._trackMap.delete(propertyIdName);\r\n }\r\n }\r\n\r\n clearTrackMap() {\r\n this._trackMap.clear();\r\n }\r\n\r\n dispose() {\r\n if (this._trackMap) {\r\n this._trackMap.clear();\r\n }\r\n }\r\n}","const DEFAULT_EXTRA = {\r\n extremumThreshold: 2,\r\n bufferSize: 10,\r\n};\r\n\r\nexport interface IExtraOptions {\r\n extremumThreshold?: number;\r\n bufferSize?: number;\r\n}\r\n\r\nexport const bufferInterpolation = (currentBufferValue: number, array: Array<number>, value: number, extra?: IExtraOptions) => {\r\n const {\r\n extremumThreshold = DEFAULT_EXTRA.extremumThreshold,\r\n bufferSize = DEFAULT_EXTRA.bufferSize,\r\n } = extra ?? DEFAULT_EXTRA;\r\n\r\n if (currentBufferValue < value) {\r\n let i = 0;\r\n while (i < extremumThreshold) {\r\n array.push(value);\r\n i++;\r\n }\r\n } else {\r\n array.push(value);\r\n }\r\n\r\n if (array.length > bufferSize) {\r\n while (array.length > bufferSize) {\r\n array.shift();\r\n }\r\n }\r\n\r\n const l = array.length;\r\n let buffer = 0;\r\n\r\n for (let i = 0; i < l; i++) {\r\n buffer += array[i];\r\n }\r\n\r\n return l !== 0 ? Math.ceil(buffer / l) : 0;\r\n};\r\n","export const START_COLLECTION_PREFIX_ID = 'n',\r\n END_COLLECTION_PREFIX_ID = 'p',\r\n DEFAULT_BUFFER_EXTREMUM_THRESHOLD = 15,\r\n DEFAULT_MAX_BUFFER_SEQUENCE_LENGTH = 30,\r\n DEFAULT_RESET_BUFFER_SIZE_TIMEOUT = 10000,\r\n IS_NEW = 'n';;\r\n","/**\r\n * ItemDisplayMethods\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/enums/item-display-methods.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport enum ItemDisplayMethods {\r\n CREATE,\r\n UPDATE,\r\n DELETE,\r\n NOT_CHANGED,\r\n}","import { ComponentRef } from \"@angular/core\";\r\nimport { IRenderVirtualListCollection, } from \"../models/render-collection.model\";\r\nimport { IRenderVirtualListItem } from \"../models/render-item.model\";\r\nimport { CACHE_BOX_CHANGE_EVENT_NAME, CacheMap } from \"./cache-map\";\r\nimport { Tracker } from \"./tracker\";\r\nimport {\r\n DEFAULT_DIVIDES, HEIGHT_PROP_NAME, SERVICE_PROP_DUMMY, SERVICE_PROP_DUMMY_ENABLED, TRACK_BY_PROPERTY_NAME, TRANSFORMED_X_PROP_NAME,\r\n TRANSFORMED_Y_PROP_NAME, WIDTH_PROP_NAME, X_PROP_NAME, Y_PROP_NAME,\r\n} from \"../const\";\r\nimport { IRenderVirtualListItemConfig, IRenderVirtualListItemMeasures, IVirtualListItemConfigMap } from \"../models\";\r\nimport { CMap } from '../../common/utils/cmap';\r\nimport { bufferInterpolation } from \"../utils/buffer-interpolation\";\r\nimport { BaseVirtualListItemComponent } from \"../components/cn-list-item/base\";\r\nimport { PrerenderCache } from \"../components/cn-prerender-container/types/cache\";\r\nimport { ScrollDirection } from \"../types\";\r\nimport { getServiceIdProp } from \"./utils\";\r\nimport {\r\n DEFAULT_BUFFER_EXTREMUM_THRESHOLD, DEFAULT_MAX_BUFFER_SEQUENCE_LENGTH, DEFAULT_RESET_BUFFER_SIZE_TIMEOUT, END_COLLECTION_PREFIX_ID,\r\n IS_NEW, START_COLLECTION_PREFIX_ID,\r\n} from \"./const\";\r\nimport { Z_INDEX_0, Z_INDEX_1, Z_INDEX_2, Z_INDEX_3, } from '../const';\r\nimport {\r\n IGetItemPositionOptions, IGetMetricsReturns, IItem, IMetrics, IRecalculateMetricsOptions, IUpdateCollectionOptions,\r\n IUpdateCollectionReturns,\r\n} from \"./interfaces\";\r\nimport { TrackBoxEvents } from \"./events\";\r\nimport { Cache, CacheMapEvents, CacheMapListeners } from \"./types\";\r\nimport { ItemDisplayMethods } from \"./enums\";\r\nimport { Alignments } from \"../enums\";\r\nimport { Id, IRect, ISize } from \"../../common\";\r\nimport { debounce, objectAsReadonly } from \"../../common/utils\";\r\n\r\n/**\r\n * An object that performs tracking, calculations and caching.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/track-box.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport class TrackBox<C extends BaseVirtualListItemComponent = any>\r\n extends CacheMap<Id, Cache, CacheMapEvents, CacheMapListeners> {\r\n\r\n protected _tracker!: Tracker<C>;\r\n\r\n protected _items: IRenderVirtualListCollection | null | undefined;\r\n\r\n set items(v: IRenderVirtualListCollection | null | undefined) {\r\n if (this._items === v) {\r\n return;\r\n }\r\n\r\n this._items = v;\r\n }\r\n\r\n protected _displayComponents: Array<ComponentRef<C>> | null | undefined;\r\n\r\n set displayComponents(v: Array<ComponentRef<C>> | null | undefined) {\r\n if (this._displayComponents === v) {\r\n return;\r\n }\r\n\r\n this._displayComponents = v;\r\n }\r\n\r\n protected _snappedDisplayComponents: Array<ComponentRef<C>> | null | undefined;\r\n\r\n set snappedDisplayComponents(v: Array<ComponentRef<C>> | null | undefined) {\r\n if (this._snappedDisplayComponents === v) {\r\n return;\r\n }\r\n\r\n this._snappedDisplayComponents = v;\r\n }\r\n\r\n protected _scrollDirection: ScrollDirection = 0;\r\n set scrollDirection(v: ScrollDirection) {\r\n if (this._scrollDirection === v) {\r\n return;\r\n }\r\n\r\n this._scrollDirection = v;\r\n }\r\n get scrollDirection() { return this._scrollDirection; }\r\n\r\n protected _trackBy: string = TRACK_BY_PROPERTY_NAME;\r\n set trackBy(v: string) {\r\n if (this._trackBy === v) {\r\n return;\r\n }\r\n\r\n this._trackBy = v;\r\n }\r\n get trackBy() { return this._trackBy; }\r\n\r\n protected _divides: number = DEFAULT_DIVIDES;\r\n\r\n set divides(v: number) {\r\n if (this._divides === v) {\r\n return;\r\n }\r\n\r\n this._divides = v;\r\n }\r\n\r\n protected _isInfinity: boolean = false;\r\n\r\n set isInfinity(v: boolean) {\r\n if (this._isInfinity === v) {\r\n return;\r\n }\r\n\r\n this._isInfinity = v;\r\n }\r\n\r\n protected _isSnappingMethodAdvanced: boolean = false;\r\n\r\n set isSnappingMethodAdvanced(v: boolean) {\r\n if (this._isSnappingMethodAdvanced === v) {\r\n return;\r\n }\r\n\r\n this._isSnappingMethodAdvanced = v;\r\n }\r\n\r\n protected _isLazy: boolean = false;\r\n\r\n set isLazy(v: boolean) {\r\n if (this._isLazy === v) {\r\n return;\r\n }\r\n\r\n this._isLazy = v;\r\n }\r\n\r\n /**\r\n * Set the trackBy property\r\n */\r\n set trackingPropertyName(v: string) {\r\n this._trackingPropertyName = this._tracker.trackingPropertyName = v;\r\n }\r\n\r\n protected _trackingPropertyName: string = TRACK_BY_PROPERTY_NAME;\r\n\r\n protected _isScrollStart: boolean = false;\r\n\r\n set isScrollStart(v: boolean) {\r\n this._isScrollStart = v;\r\n if (v) {\r\n this._isScrollSnapToStart = true;\r\n }\r\n }\r\n\r\n protected _isScrollEnd: boolean = false;\r\n\r\n set isScrollEnd(v: boolean) {\r\n this._isScrollEnd = v;\r\n if (v) {\r\n this._isScrollSnapToEnd = true;\r\n }\r\n }\r\n\r\n protected _isScrollSnapToStart: boolean = false;\r\n\r\n get isSnappedToStart() {\r\n return this._isScrollStart || this._isScrollSnapToStart;\r\n }\r\n\r\n protected _isScrollSnapToEnd: boolean = false;\r\n\r\n get isSnappedToEnd() {\r\n return this._isScrollEnd || this._isScrollSnapToEnd;\r\n }\r\n\r\n protected _scrollStartOffset: number = 0;\r\n set scrollStartOffset(v: number) {\r\n this._scrollStartOffset = v;\r\n }\r\n get scrollStartOffset() {\r\n return this._scrollStartOffset;\r\n }\r\n\r\n protected _scrollEndOffset: number = 0;\r\n set scrollEndOffset(v: number) {\r\n this._scrollEndOffset = v;\r\n }\r\n get scrollEndOffset() {\r\n return this._scrollEndOffset;\r\n }\r\n\r\n constructor(trackingPropertyName: string) {\r\n super();\r\n\r\n this._trackingPropertyName = trackingPropertyName;\r\n\r\n this.initialize();\r\n }\r\n\r\n protected initialize() {\r\n this._tracker = new Tracker(this._trackingPropertyName);\r\n }\r\n\r\n override set(id: Id, cache: Cache): CMap<Id, ISize> {\r\n if (this._map.has(id)) {\r\n const b = this._map.get(id);\r\n if (b?.width === cache.width && b?.height === cache.height) {\r\n return this._map;\r\n }\r\n }\r\n\r\n const v = this._map.set(id, cache);\r\n\r\n this.bumpVersion();\r\n return v;\r\n }\r\n\r\n protected _previousCollection: Array<IItem> | null | undefined;\r\n\r\n protected _deletedItemsMap: { [index: number]: ISize } = {};\r\n\r\n protected _crudDetected = false;\r\n get crudDetected() { return this._crudDetected; }\r\n\r\n protected override fireChangeIfNeed() {\r\n if (this.changesDetected()) {\r\n this.dispatch(TrackBoxEvents.CHANGE, this._version);\r\n }\r\n }\r\n\r\n protected fireTick() {\r\n this.dispatch(TrackBoxEvents.TICK);\r\n }\r\n\r\n protected _previousTotalSize = 0;\r\n\r\n protected _deltaOfNewItems: number = 0;\r\n get deltaOfNewItems() { return this._deltaOfNewItems; }\r\n\r\n isAdaptiveBuffer = true;\r\n\r\n protected _bufferSequenceExtraThreshold = DEFAULT_BUFFER_EXTREMUM_THRESHOLD;\r\n\r\n protected _maxBufferSequenceLength = DEFAULT_MAX_BUFFER_SEQUENCE_LENGTH;\r\n\r\n protected _bufferSizeSequence: Array<number> = [];\r\n\r\n protected _bufferSize: number = 0;\r\n get bufferSize() { return this._bufferSize; }\r\n\r\n protected _defaultBufferSize: number = 0;\r\n\r\n protected _maxBufferSize: number = this._defaultBufferSize;\r\n\r\n protected _resetBufferSizeTimeout: number = DEFAULT_RESET_BUFFER_SIZE_TIMEOUT;\r\n\r\n protected _resetBufferSizeTimer: number | undefined;\r\n\r\n protected _isReseted: boolean = true;\r\n\r\n private _prerenderedCache: PrerenderCache | null = null;\r\n\r\n private _newItems: Array<Id> = [];\r\n\r\n protected override lifeCircle() {\r\n this.fireChangeIfNeed();\r\n\r\n this.fireTick();\r\n\r\n this.lifeCircleDo();\r\n }\r\n\r\n /**\r\n * Scans the collection for deleted items and flushes the deleted item cache.\r\n */\r\n resetCollection<I extends IItem, C extends Array<I>>(currentCollection: C | null | undefined,\r\n itemSize: number): void {\r\n if (currentCollection !== undefined && currentCollection !== null &&\r\n currentCollection === this._previousCollection) {\r\n console.warn('Attention! The collection must be immutable.');\r\n return;\r\n }\r\n\r\n const reseted = ((!this._previousCollection || this._previousCollection.length === 0) &&\r\n (!!currentCollection && currentCollection.length > 0));\r\n\r\n this._isReseted = reseted;\r\n\r\n this.updateCache(this._previousCollection, currentCollection, itemSize);\r\n\r\n this._previousCollection = [...(currentCollection || [])];\r\n }\r\n\r\n /**\r\n * Update the cache of items from the list\r\n */\r\n protected updateCache<I extends IItem, C extends Array<I>>(previousCollection: C | null | undefined,\r\n currentCollection: C | null | undefined,\r\n itemSize: number): void {\r\n const trackBy = this._trackingPropertyName;\r\n let crudDetected = false;\r\n this._newItems = [];\r\n\r\n if (!currentCollection || currentCollection.length === 0) {\r\n if (previousCollection) {\r\n // deleted\r\n for (let i = 0, l = previousCollection.length; i < l; i++) {\r\n const item = previousCollection[i], id = item?.[trackBy];\r\n crudDetected = true;\r\n if (!!item && this._map.has(id)) {\r\n this._map.delete(id);\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n if (!previousCollection || previousCollection.length === 0) {\r\n if (currentCollection) {\r\n // added\r\n for (let i = 0, l = currentCollection.length; i < l; i++) {\r\n crudDetected = true;\r\n const item = currentCollection[i], id = item?.[trackBy];\r\n if (!!item) {\r\n this._map.set(id, { width: itemSize, height: itemSize, method: ItemDisplayMethods.CREATE });\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n const collectionDict: IItem<I> = {};\r\n for (let i = 0, l = currentCollection.length; i < l; i++) {\r\n const item = currentCollection[i];\r\n if (!!item) {\r\n collectionDict[item[trackBy]] = item;\r\n }\r\n }\r\n const notChangedMap: IItem<I> = {}, deletedMap: IItem<I> = {}, deletedItemsMap: { [index: number]: ISize } = {},\r\n updatedMap: IItem<I> = {};\r\n for (let i = 0, l = previousCollection.length; i < l; i++) {\r\n const item = previousCollection[i], id = item?.[trackBy];\r\n if (!!item) {\r\n if (collectionDict.hasOwnProperty(id)) {\r\n if (item === collectionDict[id]) {\r\n // not changed\r\n notChangedMap[item[trackBy]] = item;\r\n this._map.set(id, {\r\n ...(this._map.get(id) || { width: itemSize, height: itemSize }),\r\n method: ItemDisplayMethods.NOT_CHANGED\r\n });\r\n continue;\r\n } else {\r\n // updated\r\n crudDetected = true;\r\n updatedMap[item[trackBy]] = item;\r\n this._map.set(id, {\r\n ...(this._map.get(id) || { width: itemSize, height: itemSize }),\r\n method: ItemDisplayMethods.UPDATE\r\n });\r\n continue;\r\n }\r\n }\r\n\r\n // deleted\r\n crudDetected = true;\r\n deletedMap[id] = item;\r\n deletedItemsMap[i] = this._map.get(id);\r\n this._map.delete(id);\r\n }\r\n }\r\n\r\n for (let i = 0, l = currentCollection.length; i < l; i++) {\r\n const item = currentCollection[i], id = item?.[trackBy];\r\n if (!!item && !deletedMap.hasOwnProperty(id) && !updatedMap.hasOwnProperty(id) &&\r\n !notChangedMap.hasOwnProperty(id)) {\r\n this._newItems.push(id);\r\n // added\r\n crudDetected = true;\r\n this._map.set(id, { width: itemSize, height: itemSize, method: ItemDisplayMethods.CREATE });\r\n }\r\n }\r\n this._crudDetected = crudDetected;\r\n this._deletedItemsMap = deletedItemsMap;\r\n }\r\n\r\n /**\r\n * Finds the position of a collection element by the given Id\r\n */\r\n getItemPosition<I extends IItem, C extends Array<I>>(id: Id, itemConfigMap: IVirtualListItemConfigMap,\r\n options: IGetItemPositionOptions<I, C>): number {\r\n const opt = { fromItemId: id ?? options.fromItemId, itemConfigMap, ...options };\r\n this._defaultBufferSize = opt.bufferSize;\r\n this._maxBufferSize = opt.maxBufferSize;\r\n\r\n const { scrollSize, isFromItemIdFound } = this.recalculateMetrics({\r\n ...opt,\r\n dynamicSize: this._crudDetected || opt.dynamicSize,\r\n previousTotalSize: this._previousTotalSize,\r\n crudDetected: this._crudDetected,\r\n deletedItemsMap: this._deletedItemsMap,\r\n });\r\n return isFromItemIdFound ? scrollSize : -1;\r\n }\r\n\r\n preventScrollSnapping(clearBuffer: boolean = false) {\r\n this._isScrollStart = this._isScrollEnd = false;\r\n\r\n if (clearBuffer) {\r\n this._isScrollSnapToStart = this._isScrollSnapToEnd = false;\r\n }\r\n }\r\n\r\n /**\r\n * Updates the collection of display objects\r\n */\r\n getMetrics<I extends IItem, C extends Array<I>>(items: C, itemConfigMap: IVirtualListItemConfigMap,\r\n options: IUpdateCollectionOptions<I, C>): IGetMetricsReturns {\r\n const opt = { itemConfigMap, ...options }, crudDetected = this._crudDetected,\r\n deletedItemsMap = this._deletedItemsMap;\r\n this._defaultBufferSize = opt.bufferSize;\r\n this._maxBufferSize = opt.maxBufferSize;\r\n\r\n const metrics = this.recalculateMetrics({\r\n ...opt,\r\n collection: items,\r\n previousTotalSize: this._previousTotalSize,\r\n crudDetected: this._crudDetected,\r\n deletedItemsMap,\r\n });\r\n\r\n return { totalSize: metrics.totalSize, delta: metrics.delta, crudDetected };\r\n }\r\n\r\n /**\r\n * Updates the collection of display objects\r\n */\r\n updateCollection<I extends IItem, C extends Array<I>>(items: C, itemConfigMap: IVirtualListItemConfigMap,\r\n options: IUpdateCollectionOptions<I, C>): IUpdateCollectionReturns {\r\n const opt = { itemConfigMap, ...options }, dynamicSize = opt.dynamicSize, crudDetected = this._crudDetected,\r\n deletedItemsMap = this._deletedItemsMap;\r\n if (dynamicSize) {\r\n this.cacheElements(opt.isVertical, opt.itemSize);\r\n }\r\n this._defaultBufferSize = opt.bufferSize;\r\n this._maxBufferSize = opt.maxBufferSize;\r\n\r\n const metrics = this.recalculateMetrics({\r\n ...opt,\r\n collection: items,\r\n previousTotalSize: this._previousTotalSize,\r\n crudDetected: this._crudDetected,\r\n deletedItemsMap,\r\n });\r\n\r\n this._delta += metrics.delta;\r\n\r\n this.updateAdaptiveBufferParams(metrics, items.length);\r\n\r\n this._previousTotalSize = metrics.totalSize;\r\n\r\n this._deletedItemsMap = {};\r\n\r\n this._crudDetected = false;\r\n\r\n if (opt.dynamicSize) {\r\n this.snapshot();\r\n }\r\n\r\n const displayItems = this.generateDisplayCollection(metrics.items, items, itemConfigMap, { ...metrics, });\r\n return { displayItems, totalSize: metrics.totalSize, delta: metrics.delta, crudDetected, leftLayoutOffset: metrics.leftLayoutOffset };\r\n }\r\n\r\n protected _previousScrollSize = 0;\r\n\r\n protected updateAdaptiveBufferParams<I extends IItem>(metrics: IMetrics<I>, totalItemsLength: number) {\r\n this.disposeClearBufferSizeTimer();\r\n\r\n const scrollSize = metrics.scrollSize + this._delta, delta = Math.abs(this._previousScrollSize - scrollSize);\r\n this._previousScrollSize = scrollSize;\r\n const bufferRawSize = Math.min(Math.floor(metrics.typicalItemSize !== 0 ? delta / metrics.typicalItemSize : 0) * 5, totalItemsLength),\r\n minBufferSize = bufferRawSize < this._defaultBufferSize ? this._defaultBufferSize : bufferRawSize,\r\n bufferValue = minBufferSize > this._maxBufferSize ? this._maxBufferSize : minBufferSize;\r\n\r\n this._bufferSize = bufferInterpolation(this._bufferSize, this._bufferSizeSequence, bufferValue, {\r\n extremumThreshold: this._bufferSequenceExtraThreshold,\r\n bufferSize: this._maxBufferSequenceLength,\r\n });\r\n\r\n this.startResetBufferSizeTimer();\r\n }\r\n\r\n protected startResetBufferSizeTimer() {\r\n this._resetBufferSizeTimer = setTimeout(() => {\r\n this._bufferSize = this._defaultBufferSize;\r\n this._bufferSizeSequence = [];\r\n }, this._resetBufferSizeTimeout) as unknown as number;\r\n }\r\n\r\n protected disposeClearBufferSizeTimer() {\r\n clearTimeout(this._resetBufferSizeTimer);\r\n }\r\n\r\n /**\r\n * Calculates the entry into the overscroll area and returns the number of overscroll elements\r\n */\r\n protected getElementNumToEnd<I extends IItem, C extends Array<I>>(i: number, collection: C, map: CMap<Id, ISize>, typicalItemSize: number,\r\n size: number, isVertical: boolean, indexOffset: number = 0, reverse: boolean = false): { num: number, offset: number } {\r\n const trackBy = this._trackingPropertyName, sizeProperty = isVertical ? HEIGHT_PROP_NAME : WIDTH_PROP_NAME;\r\n let offset = 0, num = 0;\r\n for (let j = collection.length - indexOffset - 1; reverse ? j >= 0 : j >= i; j--) {\r\n const item = collection[j], id = item[trackBy];\r\n let itemSize = 0;\r\n if (map.has(id)) {\r\n const cache = map.get(id);\r\n itemSize = cache && cache[sizeProperty] > 0 ? cache[sizeProperty] : typicalItemSize;\r\n } else {\r\n itemSize = typicalItemSize;\r\n }\r\n if (offset + itemSize > size) {\r\n return { num, offset };\r\n }\r\n offset += itemSize;\r\n num++;\r\n }\r\n return { num, offset };\r\n }\r\n\r\n /**\r\n * Calculates list metrics\r\n */\r\n protected recalculateMetrics<I extends IItem, C extends Array<I>>(options: IRecalculateMetricsOptions<I, C>): IMetrics<I> {\r\n const { alignment, fromItemId, bounds, collection, dynamicSize, isVertical, itemSize, minItemSize, maxItemSize, bufferSize: minBufferSize,\r\n scrollSize, stickyEnabled, itemConfigMap, enabledBufferOptimization, previousTotalSize, snapToItem, snapToItemAlign,\r\n deletedItemsMap, inverted, itemTransform } = options as IRecalculateMetricsOptions<I, C> & {\r\n itemConfigMap: IVirtualListItemConfigMap,\r\n }, roundedScrollSize = Math.round(scrollSize);\r\n\r\n const trackBy = this._trackingPropertyName, bufferSize = Math.max(minBufferSize, this._bufferSize),\r\n { width, height } = bounds, sizeProperty = isVertical ? HEIGHT_PROP_NAME : WIDTH_PROP_NAME,\r\n size = isVertical ? height : width, totalLength = collection.length, typicalItemSize = itemSize,\r\n w = isVertical ? width : typicalItemSize, h = isVertical ? typicalItemSize : height,\r\n map = this._map, snapshot = this._snapshot, divides = this._divides,\r\n stickyPos = Math.floor(scrollSize) + this._scrollStartOffset, leftItemsOrRowsWeights: Array<number> = [],\r\n isFromId = fromItemId !== undefined && (typeof fromItemId === 'number' && fromItemId > -1)\r\n || (typeof fromItemId === 'string' && fromItemId > '-1');\r\n\r\n let leftItemsOffset = 0, rightItemsOffset = 0;\r\n if (enabledBufferOptimization) {\r\n switch (this._scrollDirection) {\r\n case 1: {\r\n leftItemsOffset = 0;\r\n rightItemsOffset = bufferSize * divides;\r\n break;\r\n }\r\n case -1: {\r\n leftItemsOffset = bufferSize * divides;\r\n rightItemsOffset = 0;\r\n break;\r\n }\r\n case 0:\r\n default: {\r\n leftItemsOffset = rightItemsOffset = bufferSize * divides;\r\n }\r\n }\r\n } else {\r\n leftItemsOffset = rightItemsOffset = bufferSize * divides;\r\n }\r\n\r\n let itemsFromStartToScrollEnd: number = -1,\r\n itemsFromDisplayEndToOffsetEnd = 0,\r\n itemsFromStartToDisplayEnd = -1,\r\n leftItemLength = 0, rightItemLength = 0,\r\n leftItemsWeight = 0, rightItemsWeight = 0,\r\n leftHiddenItemsWeight = 0,\r\n totalItemsToDisplayEndWeight = 0,\r\n deltaOfNewItems = 0,\r\n leftSizeOfAddedItems = 0,\r\n leftSizeOfUpdatedItems = 0,\r\n leftSizeOfDeletedItems = 0,\r\n itemById: I | null = null,\r\n itemByIdPos: number = this._scrollStartOffset,\r\n isTargetInOverscroll: boolean = false,\r\n actualScrollSize = itemByIdPos,\r\n totalSize = this._scrollStartOffset + this._scrollEndOffset,\r\n startIndex: number,\r\n isFromItemIdFound = false,\r\n deltaFromStartCreation = 0,\r\n isUpdating = false,\r\n leftYOffset = 0,\r\n leftLayoutOffset = 0,\r\n leftLayoutIndexOffset = 0,\r\n rightLayoutIndexOffset = 0;\r\n\r\n const isStart = ((roundedScrollSize === 0) || this.isSnappedToStart);\r\n let stickyItemId: Id | undefined, isNew = false;\r\n\r\n let items: Array<I>;\r\n\r\n // If the list is dynamic or there are new elements in the collection, then it switches to the long algorithm.\r\n if (dynamicSize) {\r\n items = [];\r\n const serviceIdProp = getServiceIdProp(trackBy);\r\n if (isFromId) {\r\n for (let stickyId: Id | undefined = undefined, i = 0, l = collection.length; i < l; i++) {\r\n const item = collection[i], id = item?.[trackBy];\r\n if (itemConfigMap[id]?.sticky === 1) {\r\n stickyId = id;\r\n }\r\n if (!itemConfigMap[id]?.sticky) {\r\n stickyItemId = stickyId;\r\n }\r\n if (id == fromItemId) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n let y = this._scrollStartOffset,\r\n stickyComponentSize = 0,\r\n row: {\r\n startItemIndex: number;\r\n endItemIndex: number;\r\n size: number;\r\n snapshotSize: number;\r\n deltaFromStartCreation: number;\r\n leftSizeOfAddedItems: number;\r\n leftSizeOfUpdatedItems: number;\r\n leftSizeOfDeletedItems: number;\r\n deltaOfNewItems: number;\r\n leftItemsOrRowsWeights: number | null;\r\n rightItemsWeight: number;\r\n leftHiddenItemsWeight: number;\r\n totalItemsToDisplayEndWeight: number;\r\n } = {\r\n startItemIndex: 0,\r\n endItemIndex: 0,\r\n size: 0,\r\n snapshotSize: 0,\r\n deltaFromStartCreation: 0,\r\n leftSizeOfAddedItems: 0,\r\n leftSizeOfUpdatedItems: 0,\r\n leftSizeOfDeletedItems: 0,\r\n deltaOfNewItems: 0,\r\n leftItemsOrRowsWeights: null,\r\n rightItemsWeight: 0,\r\n leftHiddenItemsWeight: 0,\r\n totalItemsToDisplayEndWeight: 0,\r\n };\r\n const calculate = (i: number, l: number, li: number, isPrecollection: boolean = false, idPrefix: string | null = null) => {\r\n const ii = i + 1;\r\n if (ii > l) {\r\n return false;\r\n }\r\n const collectionItem = collection[i],\r\n id = collectionItem[trackBy],\r\n sticky = itemConfigMap?.[id]?.sticky ?? 0,\r\n isNewRow = i % divides === 0,\r\n isLastItemInRow = ii % divides === 0,\r\n isLastItem = i === li,\r\n isRowEnd = (isLastItemInRow || (!isLastItemInRow && isLastItem));\r\n items.push(isPrecollection ? { ...collectionItem, [serviceIdProp]: `_${idPrefix}-${id}_` } : collectionItem);\r\n if (isNewRow || row === null) {\r\n row = {\r\n startItemIndex: i + 1,\r\n endItemIndex: i + divides,\r\n size: 0,\r\n snapshotSize: 0,\r\n deltaFromStartCreation: 0,\r\n leftSizeOfAddedItems: 0,\r\n leftSizeOfUpdatedItems: 0,\r\n leftSizeOfDeletedItems: 0,\r\n deltaOfNewItems: 0,\r\n leftItemsOrRowsWeights: null,\r\n rightItemsWeight: 0,\r\n leftHiddenItemsWeight: 0,\r\n totalItemsToDisplayEndWeight: 0,\r\n };\r\n }\r\n let componentSize = 0, rowSizeDelta = 0, itemDisplayMethod: ItemDisplayMethods = ItemDisplayMethods.NOT_CHANGED;\r\n if (map.has(id)) {\r\n const cache = map.get(id);\r\n componentSize = cache[sizeProperty] > 0 ? cache[sizeProperty] : typicalItemSize;\r\n itemDisplayMethod = cache?.method ?? ItemDisplayMethods.UPDATE;\r\n const isItemNew = this._newItems.indexOf(id) > -1 || (this._isLazy && isStart && !this._isReseted);\r\n isNew = isItemNew;\r\n if (isNew) {\r\n isUpdating = true;\r\n }\r\n const snapshotBounds = snapshot.get(id),\r\n snapshotSize = snapshotBounds ? snapshotBounds[sizeProperty] : typicalItemSize;\r\n\r\n row.size = Math.max(row.size, componentSize);\r\n row.snapshotSize = Math.max(row.snapshotSize, snapshotSize);\r\n\r\n rowSizeDelta = row.size - row.snapshotSize;\r\n\r\n switch (itemDisplayMethod) {\r\n case ItemDisplayMethods.UPDATE: {\r\n map.set(id, { ...cache, method: isNew ? ItemDisplayMethods.UPDATE : ItemDisplayMethods.NOT_CHANGED, [IS_NEW]: isNew });\r\n if (isRowEnd && isNew && y <= (scrollSize + size + deltaFromStartCreation + componentSize)) {\r\n row.deltaFromStartCreation = rowSizeDelta;\r\n rowSizeDelta = 0;\r\n }\r\n break;\r\n }\r\n case ItemDisplayMethods.CREATE: {\r\n rowSizeDelta = typicalItemSize;\r\n map.set(id, { ...cache, method: ItemDisplayMethods.UPDATE, [IS_NEW]: isNew });\r\n if (isRowEnd && isNew && y <= (scrollSize + size + deltaFromStartCreation + componentSize)) {\r\n row.deltaFromStartCreation = rowSizeDelta;\r\n rowSizeDelta = 0;\r\n }\r\n break;\r\n }\r\n }\r\n } else {\r\n componentSize = typicalItemSize;\r\n row.size = Math.max(row.size, componentSize);\r\n row.snapshotSize = row.size;\r\n rowSizeDelta = row.size - row.snapshotSize;\r\n }\r\n\r\n if (deletedItemsMap.hasOwnProperty(i)) {\r\n const cache = deletedItemsMap[i], size = cache?.[sizeProperty] ?? typicalItemSize;\r\n if (y < scrollSize + this._scrollStartOffset - size) {\r\n row.leftSizeOfDeletedItems = Math.max(row.leftSizeOfDeletedItems, size);\r\n }\r\n }\r\n\r\n if (isFromId) {\r\n if (itemById === null) {\r\n if (id != fromItemId && id === stickyItemId && sticky === 1) {\r\n stickyComponentSize = componentSize;\r\n y -= stickyComponentSize;\r\n }\r\n\r\n if (id == fromItemId) {\r\n isFromItemIdFound = true;\r\n\r\n if (alignment !== Alignments.CENTER) {\r\n const { num, offset } = this.getElementNumToEnd(i, collection, map, typicalItemSize, size, isVertical),\r\n leftViewportSize = size - offset;\r\n if (leftViewportSize > 0) {\r\n const { num: num1, offset: offset1 } = this.getElementNumToEnd(i + num, collection, map, typicalItemSize, size, isVertical, 0, true),\r\n deltaNum = (num1 - num), deltaOffset = (offset1 - offset);\r\n totalItemsToDisplayEndWeight += offset;\r\n itemsFromStartToScrollEnd -= deltaNum;\r\n rightItemsWeight = rightItemLength = 0;\r\n leftHiddenItemsWeight -= deltaOffset;\r\n leftItemsOrRowsWeights.splice(leftItemsOrRowsWeights.length - deltaNum, deltaNum);\r\n y -= deltaOffset;\r\n }\r\n }\r\n\r\n itemById = collectionItem;\r\n itemByIdPos = y;\r\n } else {\r\n leftItemsOrRowsWeights.push(componentSize);\r\n leftHiddenItemsWeight += componentSize;\r\n itemsFromStartToScrollEnd = row.startItemIndex;\r\n }\r\n }\r\n } else if (y <= scrollSize - componentSize) {\r\n if (row.leftItemsOrRowsWeights === null) {\r\n row.leftItemsOrRowsWeights = 0;\r\n }\r\n row.leftItemsOrRowsWeights = Math.max(row.leftItemsOrRowsWeights, componentSize);\r\n row.leftHiddenItemsWeight = Math.max(row.leftHiddenItemsWeight, componentSize);\r\n if (!isPrecollection) {\r\n itemsFromStartToScrollEnd = row.startItemIndex;\r\n }\r\n }\r\n\r\n if (isFromId) {\r\n if (itemById === null || y < itemByIdPos + size + componentSize) {\r\n itemsFromStartToDisplayEnd = row.endItemIndex;\r\n totalItemsToDisplayEndWeight += componentSize;\r\n itemsFromDisplayEndToOffsetEnd = itemsFromStartToDisplayEnd + rightItemsOffset;\r\n }\r\n } else if (y <= scrollSize + size + componentSize) {\r\n if (!isPrecollection) {\r\n itemsFromStartToDisplayEnd = row.endItemIndex;\r\n itemsFromDisplayEndToOffsetEnd = itemsFromStartToDisplayEnd + rightItemsOffset;\r\n }\r\n row.totalItemsToDisplayEndWeight = Math.max(row.totalItemsToDisplayEndWeight, componentSize);\r\n\r\n if (isRowEnd && y <= scrollSize + componentSize) {\r\n switch (itemDisplayMethod) {\r\n case ItemDisplayMethods.CREATE: {\r\n row.leftSizeOfAddedItems = rowSizeDelta;\r\n break;\r\n }\r\n case ItemDisplayMethods.UPDATE:\r\n case ItemDisplayMethods.NOT_CHANGED: {\r\n row.leftSizeOfUpdatedItems = rowSizeDelta;\r\n break;\r\n }\r\n case ItemDisplayMethods.DELETE: {\r\n row.leftSizeOfDeletedItems = rowSizeDelta;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (isRowEnd && itemDisplayMethod === ItemDisplayMethods.CREATE) {\r\n row.deltaOfNewItems = rowSizeDelta;\r\n }\r\n } else {\r\n if (isRowEnd && i < itemsFromDisplayEndToOffsetEnd) {\r\n row.rightItemsWeight = Math.max(row.rightItemsWeight, componentSize);\r\n }\r\n }\r\n\r\n if (isRowEnd) {\r\n if (!isPrecollection) {\r\n deltaFromStartCreation += row.deltaFromStartCreation;\r\n leftSizeOfAddedItems += row.leftSizeOfAddedItems;\r\n leftSizeOfUpdatedItems += row.leftSizeOfUpdatedItems;\r\n leftSizeOfDeletedItems += row.leftSizeOfDeletedItems;\r\n deltaOfNewItems += row.deltaOfNewItems;\r\n rightItemsWeight += row.rightItemsWeight;\r\n totalItemsToDisplayEndWeight += row.totalItemsToDisplayEndWeight;\r\n leftHiddenItemsWeight += row.leftHiddenItemsWeight;\r\n if (row.leftItemsOrRowsWeights !== null) {\r\n leftItemsOrRowsWeights.push(row.leftItemsOrRowsWeights);\r\n }\r\n }\r\n totalSize += row.size;\r\n y += row.size;\r\n }\r\n return true;\r\n }\r\n\r\n if (this._isInfinity) {\r\n const viewportSize = isVertical ? height : width;\r\n let buffSize = -1;\r\n if (scrollSize <= viewportSize) {\r\n let i = 0, l = collection.length, li = l > 0 ? (l - 1) : 0;\r\n if (l > 0) {\r\n const limit = viewportSize;\r\n while (y <= limit || buffSize > -1) {\r\n const ii = i + 1;\r\n if (buffSize === -1) {\r\n buffSize = leftItemsOffset;\r\n }\r\n if (y >= limit) {\r\n buffSize--;\r\n }\r\n if (!calculate(li - i, l, li, true, START_COLLECTION_PREFIX_ID)) {\r\n break;\r\n }\r\n if (ii === l) {\r\n i = 0;\r\n } else {\r\n i++;\r\n }\r\n }\r\n\r\n items.reverse();\r\n leftYOffset = y;\r\n leftLayoutOffset = viewportSize * .5;\r\n leftLayoutIndexOffset = i;\r\n y = this._scrollStartOffset;\r\n totalSize = this._scrollStartOffset + this._scrollEndOffset;\r\n itemsFromStartToDisplayEnd = itemsFromDisplayEndToOffsetEnd = 0;\r\n\r\n (row as any) = null;\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0, l = collection.length, li = l - 1; i < l; i++) {\r\n if (!calculate(i, l, li)) {\r\n break;\r\n }\r\n }\r\n\r\n if (this._isInfinity) {\r\n (row as any) = null;\r\n\r\n const yy = y, currentTotalSize = totalSize, viewportSize = isVertical ? height : width,\r\n normalizedTotalSize = totalSize + viewportSize;\r\n row = {\r\n startItemIndex: 0,\r\n endItemIndex: 0,\r\n size: 0,\r\n snapshotSize: 0,\r\n deltaFromStartCreation: 0,\r\n leftSizeOfAddedItems: 0,\r\n leftSizeOfUpdatedItems: 0,\r\n leftSizeOfDeletedItems: 0,\r\n deltaOfNewItems: 0,\r\n leftItemsOrRowsWeights: null,\r\n rightItemsWeight: 0,\r\n leftHiddenItemsWeight: 0,\r\n totalItemsToDisplayEndWeight: 0,\r\n };\r\n const l = collection.length, li = l - 1;\r\n let i = 0, count = 0;\r\n while (y < normalizedTotalSize) {\r\n const ii = i + 1;\r\n if (!calculate(i, l, li, true, END_COLLECTION_PREFIX_ID)) {\r\n break;\r\n }\r\n if (ii === l) {\r\n i = 0;\r\n } else {\r\n i++;\r\n }\r\n count++;\r\n }\r\n y = yy;\r\n totalSize = currentTotalSize;\r\n rightLayoutIndexOffset = count;\r\n }\r\n\r\n actualScrollSize = (isFromId ? itemByIdPos : scrollSize);\r\n\r\n if (itemsFromStartToScrollEnd <= -1) {\r\n itemsFromStartToScrollEnd = 0;\r\n }\r\n if (itemsFromStartToDisplayEnd <= -1) {\r\n itemsFromStartToDisplayEnd = 0;\r\n }\r\n\r\n leftItemsOrRowsWeights.splice(0, leftItemsOrRowsWeights.length - bufferSize);\r\n leftItemsOrRowsWeights.forEach(v => {\r\n leftItemsWeight += v;\r\n });\r\n\r\n leftItemLength = Math.min(itemsFromStartToScrollEnd, leftItemsOffset);\r\n rightItemLength = itemsFromStartToDisplayEnd + rightItemsOffset > totalLength\r\n ? totalLength - itemsFromStartToDisplayEnd : rightItemsOffset;\r\n\r\n startIndex = (Math.ceil(Math.min(itemsFromStartToScrollEnd - leftItemLength, totalLength > 0 ? totalLength - 1 : 0) / divides) * divides);\r\n } else\r\n // Buffer optimization does not work on fast linear algorithm\r\n {\r\n const dividedTypicalItemSize = typicalItemSize / divides, bufferItemNumbers = bufferSize * divides;\r\n itemsFromStartToScrollEnd = Math.floor(dividedTypicalItemSize !== 0 ? (scrollSize / dividedTypicalItemSize) : 0);\r\n itemsFromStartToDisplayEnd = Math.ceil(dividedTypicalItemSize !== 0 ? ((scrollSize + size) / dividedTypicalItemSize) : 0);\r\n leftItemLength = Math.min(itemsFromStartToScrollEnd, bufferSize * divides);\r\n rightItemLength = (itemsFromStartToDisplayEnd + bufferItemNumbers) > totalLength\r\n ? totalLength - itemsFromStartToDisplayEnd : bufferItemNumbers;\r\n leftItemsWeight = Math.floor(leftItemLength * dividedTypicalItemSize / typicalItemSize) * typicalItemSize;\r\n rightItemsWeight = Math.floor(rightItemLength * dividedTypicalItemSize / typicalItemSize) * typicalItemSize;\r\n leftHiddenItemsWeight = Math.floor(itemsFromStartToScrollEnd * dividedTypicalItemSize / typicalItemSize) * typicalItemSize;\r\n totalItemsToDisplayEndWeight = Math.floor(itemsFromStartToDisplayEnd * dividedTypicalItemSize / typicalItemSize) * typicalItemSize;\r\n totalSize = (Math.ceil(totalLength / divides) * divides * dividedTypicalItemSize) + this._scrollStartOffset + this._scrollEndOffset;\r\n const k = totalSize !== 0 ? previousTotalSize / totalSize : 0;\r\n\r\n if (isFromId) {\r\n const index = collection.findIndex(item => item[trackBy] == fromItemId);\r\n if (index > -1) {\r\n itemByIdPos = this._scrollStartOffset + Math.floor(index * dividedTypicalItemSize / divides);\r\n isFromItemIdFound = true;\r\n }\r\n }\r\n\r\n actualScrollSize = (isFromId ? itemByIdPos : scrollSize * k);\r\n\r\n items = [];\r\n\r\n if (this._isInfinity) {\r\n const viewportSize = isVertical ? height : width;\r\n let buffSize = -1, y = this._scrollStartOffset;\r\n if (scrollSize <= viewportSize) {\r\n let i = 0, l = collection.length, li = l > 0 ? (l - 1) : 0;\r\n if (l > 0) {\r\n const limit = viewportSize;\r\n while (y <= limit || buffSize > -1) {\r\n const ii = i + 1;\r\n if (buffSize === -1) {\r\n buffSize = leftItemsOffset;\r\n }\r\n if (y >= limit) {\r\n buffSize--;\r\n }\r\n const itemIndex = li - i;\r\n if (collection.length > itemIndex) {\r\n items.push(collection[itemIndex] as I);\r\n } else {\r\n break;\r\n }\r\n const isLastItemInRow = ii % divides === 0,\r\n isLastItem = i === li;\r\n if (isLastItemInRow || (!isLastItemInRow && isLastItem)) {\r\n y += dividedTypicalItemSize;\r\n }\r\n if (ii === l) {\r\n i = 0;\r\n } else {\r\n i++;\r\n }\r\n }\r\n\r\n items.reverse();\r\n leftYOffset = y;\r\n leftLayoutOffset = viewportSize * .5;\r\n leftLayoutIndexOffset = i;\r\n }\r\n }\r\n }\r\n\r\n items.push(...collection);\r\n\r\n if (this._isInfinity) {\r\n let y = Math.floor(totalSize / dividedTypicalItemSize) * dividedTypicalItemSize;\r\n const viewportSize = isVertical ? height : width,\r\n normalizedTotalSize = totalSize + viewportSize;\r\n const l = collection.length, li = l - 1;\r\n let i = 0, count = 0;\r\n while (y < normalizedTotalSize) {\r\n const ii = i + 1;\r\n if (collection.length <= i) {\r\n break;\r\n }\r\n items.push(collection[i]);\r\n const isLastItemInRow = ii % divides === 0,\r\n isLastItem = i === li;\r\n if (isLastItemInRow || (!isLastItemInRow && isLastItem)) {\r\n y += dividedTypicalItemSize;\r\n }\r\n if (ii === l) {\r\n i = 0;\r\n } else {\r\n i++;\r\n }\r\n count++;\r\n }\r\n rightLayoutIndexOffset = count;\r\n leftItemLength = Math.min(itemsFromStartToScrollEnd, leftItemsOffset);\r\n rightItemLength = itemsFromStartToDisplayEnd + rightItemsOffset > totalLength\r\n ? totalLength - itemsFromStartToDisplayEnd : rightItemsOffset;\r\n\r\n startIndex = (Math.ceil(Math.min(itemsFromStartToScrollEnd - leftItemLength, totalLength > 0 ? totalLength - 1 : 0) / divides) * divides);\r\n } else {\r\n startIndex = Math.min(itemsFromStartToScrollEnd - leftItemLength, totalLength > 0 ? totalLength - 1 : 0);\r\n }\r\n }\r\n\r\n const itemsOnDisplayWeight = totalItemsToDisplayEndWeight - leftItemsWeight,\r\n itemsOnDisplayLength = itemsFromStartToDisplayEnd - itemsFromStartToScrollEnd,\r\n startPosition = this._scrollStartOffset + leftHiddenItemsWeight - leftItemsWeight - leftYOffset,\r\n renderItems = (Math.ceil((itemsOnDisplayLength + leftItemLength + rightItemLength) / divides) * divides) + rightLayoutIndexOffset,\r\n startCreationDelta = deltaFromStartCreation > 0 ? deltaFromStartCreation : 0,\r\n delta = leftSizeOfUpdatedItems + leftSizeOfAddedItems - leftSizeOfDeletedItems + startCreationDelta;\r\n this._deltaOfNewItems = deltaOfNewItems;\r\n\r\n if (isFromId && !isTargetInOverscroll) {\r\n actualScrollSize -= this._scrollStartOffset;\r\n }\r\n\r\n const metrics: IMetrics<I> = {\r\n delta,\r\n normalizedItemWidth: w,\r\n normalizedItemHeight: h,\r\n width,\r\n height,\r\n dynamicSize,\r\n divides,\r\n itemSize,\r\n minItemSize,\r\n maxItemSize,\r\n items,\r\n itemsFromStartToScrollEnd,\r\n itemsFromStartToDisplayEnd,\r\n itemsOnDisplayWeight,\r\n itemsOnDisplayLength,\r\n isVertical,\r\n leftHiddenItemsWeight,\r\n leftItemLength,\r\n leftItemsWeight,\r\n leftLayoutOffset,\r\n leftLayoutIndexOffset,\r\n renderItems,\r\n rightItemLength,\r\n rightItemsWeight,\r\n scrollSize: actualScrollSize,\r\n maCnScrollSize: totalSize,\r\n leftSizeOfAddedItems,\r\n sizeProperty,\r\n stickyEnabled,\r\n stickyPos,\r\n startIndex,\r\n startPosition,\r\n totalItemsToDisplayEndWeight,\r\n totalLength,\r\n totalSize,\r\n typicalItemSize,\r\n isFromItemIdFound,\r\n isUpdating,\r\n snapToItem,\r\n snapToItemAlign,\r\n inverted,\r\n itemTransform,\r\n };\r\n\r\n return metrics;\r\n }\r\n\r\n refreshCache(cache: PrerenderCache) {\r\n this._prerenderedCache = cache;\r\n }\r\n\r\n clearDelta(): void {\r\n this._delta = this._deltaOfNewItems = 0;\r\n }\r\n\r\n changes(immediately: boolean = false, force: boolean = false): void {\r\n if (immediately) {\r\n if (force) {\r\n this.bumpVersion();\r\n }\r\n this._previousVersion = this._version;\r\n this.dispatch(CACHE_BOX_CHANGE_EVENT_NAME as CacheMapEvents, this.version);\r\n } else {\r\n if (force) {\r\n this.bumpVersion();\r\n return;\r\n }\r\n if (this.changesDetected()) {\r\n return;\r\n }\r\n this.bumpVersion();\r\n }\r\n }\r\n\r\n /**\r\n * Returns true if the bounds of at least one screen object have changed.\r\n */\r\n checkBoundsOfElements(): boolean {\r\n if (!this._displayComponents) {\r\n return false;\r\n }\r\n\r\n for (let i = 0, l = this._displayComponents.length; i < l; i++) {\r\n const component = this._displayComponents[i], itemId = component.instance.itemId;\r\n if (itemId === undefined) {\r\n continue;\r\n }\r\n const bounds = component.instance.getBounds(), cache = this.get(itemId);\r\n if (!!bounds && !!cache) {\r\n if (bounds.width !== cache.width || bounds.height !== cache.height) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n protected generateDisplayCollection<I extends IItem, C extends Array<I>>(items: C, actualItems: C, itemConfigMap: IVirtualListItemConfigMap,\r\n metrics: IMetrics<I>): IRenderVirtualListCollection {\r\n const {\r\n width,\r\n height,\r\n normalizedItemWidth,\r\n normalizedItemHeight,\r\n dynamicSize,\r\n divides,\r\n itemsOnDisplayLength,\r\n itemsFromStartToScrollEnd,\r\n isVertical,\r\n leftLayoutOffset: layoutOffset,\r\n leftLayoutIndexOffset: layoutIndexOffset,\r\n renderItems: renderItemsLength,\r\n scrollSize,\r\n maCnScrollSize,\r\n sizeProperty,\r\n stickyEnabled,\r\n stickyPos,\r\n startPosition,\r\n totalLength,\r\n startIndex,\r\n typicalItemSize,\r\n minItemSize,\r\n maxItemSize,\r\n snapToItem,\r\n snapToItemAlign,\r\n inverted,\r\n itemTransform,\r\n } = metrics,\r\n displayItems: IRenderVirtualListCollection = [];\r\n\r\n if (items.length) {\r\n const trackBy = this._trackingPropertyName, actualSnippedPosition = stickyPos,\r\n isSnappingMethodAdvanced = this._isSnappingMethodAdvanced,\r\n deltaOffet = (isSnappingMethodAdvanced ? scrollSize : 0),\r\n scrollDirection = this._scrollDirection,\r\n boundsSize = isVertical ? height : width, actualEndSnippedPosition = scrollSize + boundsSize - this._scrollEndOffset;\r\n let pos = startPosition,\r\n renderItems = renderItemsLength,\r\n stickyItem: IRenderVirtualListItem | undefined, nextSticky: IRenderVirtualListItem | undefined, stickyItemIndex = -1, nexstStickyItemIndex = -1,\r\n stickyItemSize = 0, endStickyItem: IRenderVirtualListItem | undefined, nextEndSticky: IRenderVirtualListItem | undefined,\r\n endStickyItemIndex = -1, endStickyItemSize = 0;\r\n\r\n const li = layoutIndexOffset + actualItems.length - 1;\r\n if (stickyEnabled) {\r\n for (let i = Math.min(itemsFromStartToScrollEnd > 0 ? (divides > 1 ? (itemsFromStartToScrollEnd - 1) : itemsFromStartToScrollEnd) : 0, totalLength - 1); i >= 0; i--) {\r\n const collectionItem = items[i],\r\n isDummy = collectionItem?.[SERVICE_PROP_DUMMY] && (collectionItem?.[SERVICE_PROP_DUMMY] === SERVICE_PROP_DUMMY_ENABLED);\r\n if (!collectionItem || isDummy) {\r\n continue;\r\n }\r\n const rowIndex = Math.floor(((items.length - layoutIndexOffset + i) + 1) / divides), id = collectionItem[trackBy], cache = this.get(id)!, sticky = itemConfigMap[id]?.sticky ?? 0,\r\n selectable = itemConfigMap[id]?.selectable ?? true,\r\n collapsable = itemConfigMap[id]?.collapsable ?? false,\r\n size = dynamicSize ? cache?.[sizeProperty] > 0 ? cache?.[sizeProperty] : typicalItemSize : typicalItemSize,\r\n absoluteStartPosition = pos - (scrollSize - size) - size,\r\n ratio = size !== 0 ? boundsSize / size : 0, absoluteStartPositionPercent = -(boundsSize !== 0 ? absoluteStartPosition / boundsSize : 0) * ratio,\r\n absoluteEndPosition = boundsSize - (absoluteStartPositionPercent + size),\r\n absoluteEndPositionPercent = (absoluteStartPositionPercent + (boundsSize !== 0 ? (absoluteEndPosition + size) / boundsSize : 0) * ratio),\r\n x = isVertical ? 0 : actualSnippedPosition,\r\n y = isVertical ? actualSnippedPosition : 0;\r\n if (sticky === 1) {\r\n const isOdd = (items.length - layoutIndexOffset + i) % 2 != 0,\r\n measures: IRenderVirtualListItemMeasures = {\r\n x,\r\n y,\r\n transformedX: x,\r\n transformedY: y,\r\n z: 0,\r\n rotationX: 0,\r\n rotationY: 0,\r\n rotationZ: 0,\r\n scaleX: 1,\r\n scaleY: 1,\r\n scaleZ: 1,\r\n width: isVertical ? normalizedItemWidth : size,\r\n height: isVertical ? size : normalizedItemHeight,\r\n minWidth: minItemSize,\r\n minHeight: minItemSize,\r\n maxWidth: maxItemSize,\r\n maxHeight: maxItemSize,\r\n size,\r\n row: {\r\n size,\r\n odd: rowIndex % 2 != 0,\r\n even: rowIndex % 2 == 0,\r\n },\r\n position: pos,\r\n boundsSize,\r\n scrollSize,\r\n maCnScrollSize,\r\n absoluteStartPosition,\r\n absoluteStartPositionPercent,\r\n absoluteEndPosition,\r\n absoluteEndPositionPercent,\r\n scrollDirection,\r\n delta: sticky === 1 ? this._scrollStartOffset : sticky === 2 ? actualEndSnippedPosition - deltaOffet - size : 0,\r\n }, config: IRenderVirtualListItemConfig = {\r\n fullSize: true,\r\n isFirst: i === layoutIndexOffset,\r\n isLast: i === li,\r\n new: (cache satisfies Cache)?.[IS_NEW] === true,\r\n odd: isOdd,\r\n even: !isOdd,\r\n isVertical,\r\n collapsable,\r\n selectable,\r\n sticky,\r\n snap: stickyEnabled,\r\n snapped: true,\r\n snappedOut: false,\r\n dynamic: dynamicSize,\r\n isSnappingMethodAdvanced,\r\n layoutOffset,\r\n layoutIndexOffset,\r\n totalItems: items.length,\r\n snapToItem,\r\n snapToItemAlign,\r\n tabIndex: i - layoutIndexOffset,\r\n divides,\r\n opacity: 1,\r\n inverted,\r\n zIndex: Z_INDEX_1,\r\n };\r\n\r\n const itemData: I = collectionItem;\r\n\r\n stickyItem = {\r\n index: i, id, measures, data: itemData, previouseData: i > 0 ? items[i - 1] : null,\r\n nextData: i < totalLength ? items[i + 1] : null, config,\r\n };\r\n stickyItemIndex = i;\r\n stickyItemSize = size;\r\n\r\n displayItems.push(stickyItem);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (stickyEnabled) {\r\n const si = itemsFromStartToScrollEnd + itemsOnDisplayLength - 1, startIndex = si < 0 ? si : si;\r\n for (let i = Math.min(startIndex, totalLength > 0 ? totalLength - 1 : 0),\r\n rowIndex = Math.floor(((items.length - layoutIndexOffset + i) + 1) / divides),\r\n l = totalLength; i < l; i++) {\r\n const collectionItem = items[i],\r\n isDummy = collectionItem?.[SERVICE_PROP_DUMMY] && (collectionItem?.[SERVICE_PROP_DUMMY] === SERVICE_PROP_DUMMY_ENABLED);\r\n if (!collectionItem || isDummy) {\r\n continue;\r\n }\r\n const id = collectionItem[trackBy], cache = this.get(id)!, sticky = itemConfigMap[id]?.sticky ?? 0,\r\n selectable = itemConfigMap[id]?.selectable ?? true,\r\n collapsable = itemConfigMap[id]?.collapsable ?? false,\r\n size = dynamicSize\r\n ? cache?.[sizeProperty] || typicalItemSize\r\n : typicalItemSize;\r\n if (sticky === 2) {\r\n const isOdd = (items.length - layoutIndexOffset + i) % 2 != 0,\r\n w = isVertical ? normalizedItemWidth : size, h = isVertical ? size : normalizedItemHeight,\r\n absoluteStartPosition = pos - (scrollSize - size) - size, ratio = size !== 0 ? boundsSize / size : 0, absoluteStartPositionPercent = -(boundsSize !== 0 ? absoluteStartPosition / boundsSize : 0) * ratio,\r\n absoluteEndPosition = boundsSize - (absoluteStartPositionPercent + size),\r\n absoluteEndPositionPercent = (absoluteStartPositionPercent + (boundsSize !== 0 ? (absoluteEndPosition + size) / boundsSize : 0) * ratio),\r\n x = isVertical ? 0 : actualEndSnippedPosition - w,\r\n y = isVertical ? actualEndSnippedPosition - h : 0,\r\n measures: IRenderVirtualListItemMeasures = {\r\n x,\r\n y,\r\n transformedX: x,\r\n transformedY: y,\r\n z: 0,\r\n rotationX: 0,\r\n rotationY: 0,\r\n rotationZ: 0,\r\n scaleX: 1,\r\n scaleY: 1,\r\n scaleZ: 1,\r\n size,\r\n row: {\r\n size,\r\n odd: rowIndex % 2 != 0,\r\n even: rowIndex % 2 == 0,\r\n },\r\n position: pos,\r\n boundsSize,\r\n scrollSize,\r\n maCnScrollSize,\r\n absoluteStartPosition,\r\n absoluteStartPositionPercent,\r\n absoluteEndPosition,\r\n absoluteEndPositionPercent,\r\n width: w,\r\n height: h,\r\n minWidth: minItemSize,\r\n minHeight: minItemSize,\r\n maxWidth: maxItemSize,\r\n maxHeight: maxItemSize,\r\n scrollDirection,\r\n delta: actualEndSnippedPosition - deltaOffet - size,\r\n }, config: IRenderVirtualListItemConfig = {\r\n fullSize: true,\r\n isFirst: i === layoutIndexOffset,\r\n isLast: i === li,\r\n new: (cache satisfies Cache)?.[IS_NEW] === true,\r\n odd: isOdd,\r\n even: !isOdd,\r\n isVertical,\r\n collapsable,\r\n selectable,\r\n sticky,\r\n snap: stickyEnabled,\r\n snapped: true,\r\n snappedOut: false,\r\n dynamic: dynamicSize,\r\n isSnappingMethodAdvanced,\r\n layoutOffset,\r\n layoutIndexOffset,\r\n totalItems: items.length,\r\n snapToItem,\r\n snapToItemAlign,\r\n tabIndex: i - layoutIndexOffset,\r\n divides,\r\n opacity: 1,\r\n inverted,\r\n zIndex: Z_INDEX_1,\r\n };\r\n\r\n const itemData: I = collectionItem;\r\n\r\n endStickyItem = {\r\n index: i, id, measures, data: itemData, previouseData: i > 0 ? items[i - 1] : null,\r\n nextData: i < totalLength ? items[i + 1] : null, config,\r\n };\r\n endStickyItemIndex = i;\r\n endStickyItemSize = size;\r\n\r\n displayItems.push(endStickyItem);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const collectionLength = items.length;\r\n let i = startIndex,\r\n ci = 0,\r\n row: {\r\n size: number;\r\n odd: boolean;\r\n even: boolean;\r\n } = {\r\n size: 0,\r\n odd: false,\r\n even: false,\r\n };\r\n while (renderItems > 0) {\r\n if (i >= collectionLength) {\r\n break;\r\n }\r\n const collectionItem = items[i];\r\n if (!collectionItem) {\r\n break;\r\n }\r\n\r\n const isDummy = collectionItem?.[SERVICE_PROP_DUMMY] && (collectionItem?.[SERVICE_PROP_DUMMY] === SERVICE_PROP_DUMMY_ENABLED),\r\n ii = i + 1,\r\n rowIndex = Math.floor(((items.length - layoutIndexOffset + i) + 1) / divides),\r\n id = collectionItem[trackBy],\r\n cache = this.get(id)!,\r\n size = isDummy ? typicalItemSize : (dynamicSize ? cache?.[sizeProperty] || typicalItemSize : typicalItemSize),\r\n divSize = (isVertical ? normalizedItemWidth : normalizedItemHeight) / divides;\r\n\r\n if (i % divides === 0) {\r\n ci = 0;\r\n row = {\r\n size,\r\n odd: rowIndex % 2 !== 0,\r\n even: rowIndex % 2 === 0,\r\n };\r\n } else {\r\n row.size = Math.max(row.size, size);\r\n ci++;\r\n }\r\n\r\n if (!isDummy) {\r\n if ((isSnappingMethodAdvanced || id !== stickyItem?.id) && id !== endStickyItem?.id) {\r\n const isOdd = (items.length - layoutIndexOffset + i) % 2 != 0,\r\n sticky = itemConfigMap[id]?.sticky ?? 0,\r\n fullSize = itemConfigMap[id]?.fullSize ?? false,\r\n selectable = itemConfigMap[id]?.selectable ?? true,\r\n collapsable = itemConfigMap[id]?.collapsable ?? false,\r\n snapped = stickyEnabled && ((sticky === 1 && (pos <= scrollSize + this._scrollStartOffset)) || (sticky === 2 && (pos >= scrollSize + boundsSize - size))),\r\n absoluteStartPosition = pos - scrollSize, ratio = size !== 0 ? boundsSize / size : 0, absoluteStartPositionPercent = -(boundsSize !== 0 ? absoluteStartPosition / boundsSize : 0) * ratio,\r\n absoluteEndPosition = boundsSize - (absoluteStartPositionPercent + size),\r\n absoluteEndPositionPercent = (absoluteStartPositionPercent + (boundsSize !== 0 ? (absoluteEndPosition + size) / boundsSize : 0) * ratio),\r\n x = isVertical ? divSize * ((sticky || fullSize) ? 0 : ci) : pos,\r\n y = isVertical ? pos : divSize * ((sticky || fullSize) ? 0 : ci),\r\n measures: IRenderVirtualListItemMeasures = {\r\n x,\r\n y,\r\n transformedX: x,\r\n transformedY: y,\r\n z: 0,\r\n rotationX: 0,\r\n rotationY: 0,\r\n rotationZ: 0,\r\n scaleX: 1,\r\n scaleY: 1,\r\n scaleZ: 1,\r\n size,\r\n row,\r\n position: pos,\r\n boundsSize,\r\n scrollSize,\r\n maCnScrollSize,\r\n absoluteStartPosition,\r\n absoluteStartPositionPercent,\r\n absoluteEndPosition,\r\n absoluteEndPositionPercent,\r\n width: isVertical ? ((sticky || fullSize) ? normalizedItemWidth : (normalizedItemWidth / divides)) : size,\r\n height: isVertical ? size : ((sticky || fullSize) ? normalizedItemHeight : (normalizedItemHeight / divides)),\r\n minWidth: minItemSize,\r\n minHeight: minItemSize,\r\n maxWidth: maxItemSize,\r\n maxHeight: maxItemSize,\r\n scrollDirection,\r\n delta: sticky === 1 ? actualSnippedPosition : (sticky === 2 ? (actualEndSnippedPosition - deltaOffet - size) : 0),\r\n }, config: IRenderVirtualListItemConfig = {\r\n isFirst: i === layoutIndexOffset,\r\n isLast: i === li,\r\n new: (cache satisfies Cache)?.[IS_NEW] === true,\r\n odd: isOdd,\r\n even: !isOdd,\r\n isVertical,\r\n collapsable,\r\n selectable,\r\n sticky,\r\n snap: stickyEnabled,\r\n snapped: false,\r\n snappedOut: false,\r\n dynamic: dynamicSize,\r\n isSnappingMethodAdvanced,\r\n layoutOffset,\r\n layoutIndexOffset,\r\n totalItems: items.length,\r\n snapToItem,\r\n snapToItemAlign,\r\n tabIndex: i - layoutIndexOffset,\r\n isStub: (isSnappingMethodAdvanced && id === stickyItem?.id),\r\n divides,\r\n opacity: 1,\r\n zIndex: Z_INDEX_0,\r\n fullSize,\r\n inverted,\r\n };\r\n\r\n if (snapped) {\r\n config.zIndex = Z_INDEX_2;\r\n }\r\n\r\n const itemData: I = collectionItem;\r\n\r\n const item: IRenderVirtualListItem = {\r\n index: i, id, measures, data: itemData, previouseData: i > 0 ? items[i - 1] : null,\r\n nextData: i < totalLength ? items[i + 1] : null, config,\r\n };\r\n if (!nextSticky && stickyItemIndex < i && sticky === 1 && (pos <= scrollSize + this._scrollStartOffset + size + stickyItemSize)) {\r\n item.measures.x = isVertical ? 0 : snapped ? actualSnippedPosition : pos;\r\n item.measures.y = isVertical ? snapped ? actualSnippedPosition : pos : 0;\r\n nextSticky = item;\r\n nexstStickyItemIndex = displayItems.length;\r\n nextSticky.config.snapped = snapped;\r\n nextSticky.measures.delta = (isVertical ? item.measures.y : item.measures.x) - scrollSize;\r\n nextSticky.config.zIndex = Z_INDEX_3;\r\n }\r\n if (!nextEndSticky && endStickyItemIndex > i && sticky === 2 &&\r\n (pos >= actualEndSnippedPosition - size - endStickyItemSize)) {\r\n item.measures.x = isVertical ? 0 : snapped ? actualEndSnippedPosition - size : pos;\r\n item.measures.y = isVertical ? snapped ? actualEndSnippedPosition - size : pos : 0;\r\n nextEndSticky = item;\r\n nextEndSticky.config.zIndex = Z_INDEX_3;\r\n nextEndSticky.config.snapped = snapped;\r\n nextEndSticky.measures.delta = (isVertical ? item.measures.y : item.measures.x) - scrollSize;\r\n }\r\n\r\n displayItems.push(item);\r\n }\r\n }\r\n\r\n renderItems--;\r\n\r\n if (ii % divides === 0 || renderItems <= 0) {\r\n pos += row.size;\r\n }\r\n i++;\r\n }\r\n\r\n const axis = isVertical ? Y_PROP_NAME : X_PROP_NAME, transformedAxis = isVertical ? TRANSFORMED_Y_PROP_NAME : TRANSFORMED_X_PROP_NAME;\r\n\r\n if (!!nextSticky && !!stickyItem && nextSticky.measures[axis] <= actualSnippedPosition + stickyItem.measures[sizeProperty]) {\r\n if (nextSticky.measures[axis] > actualSnippedPosition) {\r\n stickyItem.measures[axis] = stickyItem.measures[transformedAxis] = nextSticky.measures[axis] - stickyItem.measures[sizeProperty];\r\n stickyItem.config.snapped = nextSticky.config.snapped = false;\r\n stickyItem.config.snappedOut = true;\r\n stickyItem.config.sticky = 1;\r\n stickyItem.measures.delta = (isVertical ? stickyItem.measures.y : stickyItem.measures.x) - scrollSize;\r\n } else {\r\n nextSticky.config.snapped = true;\r\n nextSticky.measures.delta = (isVertical ? nextSticky.measures.y : nextSticky.measures.x) - scrollSize;\r\n stickyItem.measures[axis] = stickyItem.measures[transformedAxis] = nextSticky.measures[axis] - stickyItem.measures[sizeProperty];\r\n stickyItem.measures.delta = (isVertical ? stickyItem.measures.y : stickyItem.measures.x) - scrollSize;\r\n const lastStickyItem = displayItems?.[nexstStickyItemIndex + 1];\r\n if (lastStickyItem?.config?.sticky === 1 && displayItems?.[nexstStickyItemIndex + 2]?.config?.sticky !== 1) {\r\n nextSticky.config.snapped = nextSticky.config.snappedOut = false;\r\n stickyItem.config.snappedOut = true;\r\n nextSticky.measures.delta = this._scrollStartOffset;\r\n\r\n if (lastStickyItem.measures[axis] <= actualSnippedPosition) {\r\n lastStickyItem.config.snapped = lastStickyItem.config.snappedOut = true;\r\n lastStickyItem.measures[axis] = lastStickyItem.measures[transformedAxis] = lastStickyItem.measures.position = actualSnippedPosition;\r\n lastStickyItem.measures.delta = this._scrollStartOffset;\r\n }\r\n } else if (lastStickyItem?.config?.sticky !== 1 && displayItems?.[nexstStickyItemIndex + 2]?.config?.sticky !== 1) {\r\n if (nextSticky.measures[axis] <= actualSnippedPosition) {\r\n nextSticky.config.snapped = nextSticky.config.snappedOut = true;\r\n nextSticky.measures[axis] = nextSticky.measures[transformedAxis] = nextSticky.measures.position = actualSnippedPosition;\r\n nextSticky.measures.delta = this._scrollStartOffset;\r\n }\r\n } else {\r\n nextSticky.config.snapped = nextSticky.config.snappedOut = false;\r\n }\r\n }\r\n }\r\n\r\n if (!!nextEndSticky && !!endStickyItem &&\r\n (nextEndSticky.measures[axis] >= actualEndSnippedPosition - endStickyItemSize - nextEndSticky.measures[sizeProperty])) {\r\n if (nextEndSticky.measures[axis] < actualEndSnippedPosition - nextEndSticky.measures[sizeProperty]) {\r\n endStickyItem.measures[axis] = endStickyItem.measures[transformedAxis] = nextEndSticky.measures[axis] + nextEndSticky.measures[sizeProperty];\r\n endStickyItem.config.snapped = nextEndSticky.config.snapped = false;\r\n endStickyItem.config.snappedOut = true;\r\n endStickyItem.config.sticky = 2;\r\n endStickyItem.measures.delta = (isVertical ? endStickyItem.measures.y : endStickyItem.measures.x) - scrollSize;\r\n } else {\r\n nextEndSticky.config.snapped = true;\r\n nextEndSticky.measures[axis] = nextEndSticky.measures[transformedAxis] = actualEndSnippedPosition - nextEndSticky.measures[sizeProperty];\r\n nextEndSticky.measures.delta = (isVertical ? nextEndSticky.measures.y : nextEndSticky.measures.x) - scrollSize;\r\n endStickyItem.measures[axis] = endStickyItem.measures[transformedAxis] = nextEndSticky.measures[axis] + nextEndSticky.measures[sizeProperty];\r\n endStickyItem.measures.delta = (isVertical ? endStickyItem.measures.y : endStickyItem.measures.x) - scrollSize;\r\n }\r\n }\r\n\r\n if (itemTransform !== null) {\r\n for (let i = 0, l = displayItems.length; i < l; i++) {\r\n const item = displayItems[i];\r\n if (!!item) {\r\n const transformation = itemTransform(item.index, objectAsReadonly(item.measures), objectAsReadonly(item.config));\r\n item.measures.transformedX = transformation.x;\r\n item.measures.transformedY = transformation.y;\r\n item.measures.z = transformation.z;\r\n item.measures.rotationX = transformation.rotationX;\r\n item.measures.rotationY = transformation.rotationY;\r\n item.measures.rotationZ = transformation.rotationZ;\r\n item.measures.scaleX = transformation.scaleX;\r\n item.measures.scaleY = transformation.scaleY;\r\n item.measures.scaleZ = transformation.scaleZ;\r\n item.config.opacity = transformation.opacity;\r\n item.config.filter = transformation.filter;\r\n item.config.blendColor = transformation.blendColor;\r\n item.config.zIndex = String(transformation.zIndex);\r\n }\r\n }\r\n }\r\n }\r\n return displayItems;\r\n }\r\n\r\n resetPositions() {\r\n this._tracker.clearTrackMap();\r\n\r\n this.track();\r\n }\r\n\r\n /**\r\n * tracking by propName\r\n */\r\n track(): void {\r\n if (!this._items || !this._displayComponents) {\r\n return;\r\n }\r\n\r\n this._tracker.track(this._items, this._displayComponents, this._snappedDisplayComponents, this._scrollDirection, this._trackBy);\r\n }\r\n\r\n setDisplayObjectIndexMapById(v: { [id: number]: number }): void {\r\n this._tracker.displayObjectIndexMapById = v;\r\n }\r\n\r\n untrackComponentByIdProperty(component?: C | undefined) {\r\n this._tracker.untrackComponentByIdProperty(component);\r\n }\r\n\r\n getItemBounds(id: Id): ISize | null {\r\n if (this.has(id)) {\r\n return this.get(id) ?? null;\r\n }\r\n return null;\r\n }\r\n\r\n getComponentBoundsByIntersectionPosition(position: number, maxPosition: number | null = null): (IRect & { id: Id | null; isFirst: boolean; isLast: boolean; }) | null {\r\n const components = this._displayComponents;\r\n let first: (IRect & { id: Id | null; isFirst: boolean; isLast: boolean; }) | null = null,\r\n last: (IRect & { id: Id | null; isFirst: boolean; isLast: boolean; }) | null = null;\r\n if (!!components) {\r\n for (const comp of components) {\r\n const id = comp.instance.itemId ?? null, isVertical = comp.instance.item?.config?.isVertical,\r\n inverted = comp.instance.item?.config.inverted ?? false,\r\n maCnScrollSize = comp.instance.item?.measures.maCnScrollSize ?? 0,\r\n { width, height } = comp.instance.getBounds(),\r\n x = comp.instance.item?.measures?.x ?? 0,\r\n xx = inverted ? (maCnScrollSize - x) - width : x,\r\n y = comp.instance.item?.measures?.y ?? 0,\r\n isFirst = comp.instance.item?.config?.isFirst ?? false,\r\n isLast = comp.instance.item?.config?.isLast ?? false,\r\n pos = position;\r\n if (isVertical && (pos >= y && pos < y + height)) {\r\n return { id, x, y, width, height, isFirst, isLast };\r\n } else if (!isVertical && (pos >= xx && pos < xx + width)) {\r\n return { id, x: xx, y, width, height, isFirst, isLast };\r\n }\r\n if (isFirst) {\r\n first = { id, x: xx, y, width, height, isFirst, isLast };\r\n } else if (isLast) {\r\n last = { id, x: xx, y, width, height, isFirst, isLast };\r\n }\r\n }\r\n }\r\n if (position < 0) {\r\n return first;\r\n }\r\n if (maxPosition !== null && position > maxPosition) {\r\n return last;\r\n }\r\n return null;\r\n }\r\n private _debouncedIsScrollStartOff = debounce(() => {\r\n this._isScrollStart = false;\r\n });\r\n\r\n protected cacheElements(isVertical: boolean, itemSize: number): void {\r\n if (!this._displayComponents) {\r\n return;\r\n }\r\n\r\n for (let i = 0, l = this._displayComponents.length; i < l; i++) {\r\n const component = this._displayComponents[i], itemId = component.instance.itemId;\r\n if (itemId === undefined) {\r\n continue;\r\n }\r\n const bounds = component.instance.getBounds();\r\n this.set(itemId, {\r\n ...this.get(itemId), ...bounds,\r\n width: bounds.width || (isVertical ? 0 : itemSize),\r\n height: bounds.height || (isVertical ? itemSize : 0),\r\n });\r\n if (this._isLazy && (this._isScrollStart)) {\r\n this._debouncedIsScrollStartOff.execute();\r\n }\r\n }\r\n const cache = this._prerenderedCache;\r\n if (!!cache) {\r\n for (const id in cache) {\r\n const cacheItem = cache[id];\r\n this.set(id, { ...(this.get(id) || {}), ...cacheItem });\r\n }\r\n this._prerenderedCache = null;\r\n }\r\n }\r\n\r\n resetCacheChunkInfo(): void {\r\n this._newItems = [];\r\n }\r\n\r\n cacheClean() {\r\n this._map.clear();\r\n this._snapshot.clear();\r\n }\r\n\r\n override dispose() {\r\n super.dispose();\r\n\r\n this.disposeClearBufferSizeTimer();\r\n\r\n if (!!this._debouncedIsScrollStartOff) {\r\n this._debouncedIsScrollStartOff.dispose();\r\n }\r\n\r\n if (!!this._tracker) {\r\n this._tracker.dispose();\r\n }\r\n }\r\n}\r\n","import { SnappingMethods } from \"../enums\";\r\nimport { SnappingMethod } from \"../types\";\r\n\r\nconst ADVANCED_PATTERNS: Array<SnappingMethod> = [SnappingMethods.ADVANCED, SnappingMethods.STANDART, 'advanced', 'standart'],\r\n DEFAULT_PATTERN: Array<SnappingMethod> = [SnappingMethods.STANDART, 'standart'];\r\n\r\nexport const isSnappingMethodAdvenced = (method: SnappingMethod): boolean => {\r\n return ADVANCED_PATTERNS.includes(method);\r\n}\r\n\r\nexport const isSnappingMethodDefault = (method: SnappingMethod): boolean => {\r\n return DEFAULT_PATTERN.includes(method);\r\n}","import { Directions } from \"../enums\";\r\nimport { Direction } from \"../types\";\r\n\r\nconst HORIZONTAL_ALIASES = [Directions.HORIZONTAL, 'horizontal'],\r\n VERTICAL_ALIASES = [Directions.VERTICAL, 'vertical'];\r\n\r\n/**\r\n * Determines the axis membership of a virtual list\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/utils/is-direction.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const isDirection = (src: Direction, expected: Direction): boolean => {\r\n if (HORIZONTAL_ALIASES.includes(expected)) {\r\n return HORIZONTAL_ALIASES.includes(src);\r\n }\r\n return VERTICAL_ALIASES.includes(src);\r\n}","import { SelectingModes } from \"../enums\";\r\nimport { SelectingMode } from \"../types\";\r\n\r\nconst NONE_ALIASES = [SelectingModes.NONE, 'none'],\r\n SELECT_ALIASES = [SelectingModes.SELECT, 'select'],\r\n MULTI_SELECT_ALIASES = [SelectingModes.MULTI_SELECT, 'multi-select'];\r\n\r\n/**\r\n * Defines the mode for selecting list items.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/utils/is-select-mode.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const isSelectMode = (src: SelectingMode, expected: SelectingMode): boolean => {\r\n if (NONE_ALIASES.includes(expected)) {\r\n return NONE_ALIASES.includes(src);\r\n } else if (SELECT_ALIASES.includes(expected)) {\r\n return SELECT_ALIASES.includes(src);\r\n }\r\n return MULTI_SELECT_ALIASES.includes(src);\r\n}\r\n","import { CollapsingModes } from \"../enums\";\r\nimport { CollapsingMode } from \"../types\";\r\n\r\nconst NONE_ALIASES = [CollapsingModes.NONE, 'none'],\r\n MULTIMPLE_ALIASES = [CollapsingModes.MULTI_COLLAPSE, 'multi-collapse'],\r\n ACCORDION_ALIASES = [CollapsingModes.ACCORDION, 'accordion'];\r\n\r\n/**\r\n * Defines the mode for collapsing list items.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/utils/is-collapse-mode.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const isCollapseMode = (src: CollapsingMode, expected: CollapsingMode): boolean => {\r\n if (NONE_ALIASES.includes(expected)) {\r\n return NONE_ALIASES.includes(src);\r\n } else if (MULTIMPLE_ALIASES.includes(expected)) {\r\n return MULTIMPLE_ALIASES.includes(src);\r\n }\r\n return ACCORDION_ALIASES.includes(src);\r\n}\r\n","import { CollectionModes } from \"../enums\";\r\nimport { CollectionMode } from \"../types\";\r\n\r\nconst NORMAL_ALIASES = [CollectionModes.NORMAL, 'normal'],\r\n LAZY_ALIASES = [CollectionModes.LAZY, 'lazy'];\r\n\r\n/**\r\n * Determines the axis membership of a virtual list\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/utils/is-collection-mode.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const isCollectionMode = (src: CollectionMode, expected: CollectionMode): boolean => {\r\n if (LAZY_ALIASES.includes(expected)) {\r\n return LAZY_ALIASES.includes(src);\r\n }\r\n return NORMAL_ALIASES.includes(src);\r\n}","import { ISize } from \"../../common\";\r\nimport { RANGE_DISPLAY_ITEMS_END_OFFSET } from \"../const\";\r\nimport { IRenderVirtualListItem } from \"../models\";\r\nimport { IRenderVirtualListCollection } from \"../models/render-collection.model\";\r\n\r\nexport const formatScreenReaderMessage = (items: IRenderVirtualListCollection, messagePattern: string | undefined, scrollSize: number,\r\n isVertical: boolean, bounds: ISize) => {\r\n if (!messagePattern) {\r\n return '';\r\n }\r\n const list = items ?? [], size = isVertical ? bounds.height : bounds.width;\r\n let start = Number.NaN, end = Number.NaN, prevItem: IRenderVirtualListItem | undefined;\r\n for (let i = 0, l = list.length; i < l; i++) {\r\n const item = list[i], position = isVertical ? item.measures.y : item.measures.x,\r\n itemSize = isVertical ? item.measures.height : item.measures.width;\r\n if (((position + itemSize) >= scrollSize) && Number.isNaN(start)) {\r\n start = item.index + 1;\r\n }\r\n if ((position >= (scrollSize + size)) && Number.isNaN(end) && prevItem) {\r\n end = prevItem.index + 1;\r\n }\r\n prevItem = item;\r\n }\r\n if (Number.isNaN(start) || Number.isNaN(end)) {\r\n return '';\r\n }\r\n let formatted = messagePattern ?? '';\r\n formatted = formatted.replace('$1', `${start}`);\r\n formatted = formatted.replace('$2', `${end}`);\r\n return formatted;\r\n};\r\n\r\nexport const formatActualDisplayItems = (items: IRenderVirtualListCollection, startOffset: number, endOffset: number, scrollSize: number,\r\n isVertical: boolean, bounds: ISize): [number, number] | undefined => {\r\n const list = items ?? [], size = isVertical ? bounds.height : bounds.width;\r\n let start = Number.NaN, end = Number.NaN;\r\n for (let i = 0, l = list.length; i < l; i++) {\r\n const item = list[i], position = isVertical ? item.measures.y : item.measures.x,\r\n itemSize = isVertical ? item.measures.height : item.measures.width;\r\n if ((position + itemSize <= scrollSize + startOffset)) {\r\n start = item.index;\r\n }\r\n if (((position) <= (scrollSize + size - endOffset + RANGE_DISPLAY_ITEMS_END_OFFSET))) {\r\n end = item.index;\r\n }\r\n }\r\n if (Number.isNaN(start) || Number.isNaN(end)) {\r\n return undefined;\r\n }\r\n return [start, end];\r\n};\r\n","import { SERVICE_PROP_DUMMY, SERVICE_PROP_DUMMY_ENABLED, SERVICE_PROP_DUMMY_ID, SERVICE_TYPE_DUMMY } from \"../const\";\r\nimport { IVirtualListCollection, IVirtualListItemConfigMap } from \"../models\";\r\n\r\n/**\r\n * normalizeCollection\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/utils/normalize-collection.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const normalizeCollection = (items: IVirtualListCollection, itemConfigMap: IVirtualListItemConfigMap, trackBy: string, divides: number) => {\r\n if (divides > 1) {\r\n const normalizedItems: IVirtualListCollection<any | null> = [];\r\n let ci = -1, emptyId = Number.MIN_SAFE_INTEGER, offset = 0;\r\n for (let i = 0, l = items.length; i < l; i++) {\r\n const ii = i + offset, item = items[i], id = item[trackBy] ?? null, config = id !== null ? itemConfigMap[id] : null,\r\n fullSize = !!config ? ((!!config.sticky && config.sticky > 0) || (config.fullSize === true)) : false;\r\n\r\n if ((ii % divides) === 0) {\r\n ci = 0;\r\n } else {\r\n ci++;\r\n }\r\n\r\n if (fullSize && ii > 0 && ci !== 0) {\r\n for (let j = ci; j < divides; j++) {\r\n const dummyId = `${SERVICE_PROP_DUMMY_ID}-${i},${j}`;\r\n normalizedItems.push({ [trackBy]: dummyId, [SERVICE_PROP_DUMMY]: SERVICE_PROP_DUMMY_ENABLED, type: SERVICE_TYPE_DUMMY });\r\n emptyId++;\r\n offset++;\r\n }\r\n }\r\n normalizedItems.push(item);\r\n if (fullSize && (i < (l - 1))) {\r\n for (let j = 1; j < divides; j++) {\r\n const dummyId = `${SERVICE_PROP_DUMMY_ID}-${i},${j}`;\r\n normalizedItems.push({ [trackBy]: dummyId, [SERVICE_PROP_DUMMY]: SERVICE_PROP_DUMMY_ENABLED, type: SERVICE_TYPE_DUMMY });\r\n emptyId++;\r\n offset++;\r\n }\r\n }\r\n }\r\n return normalizedItems;\r\n }\r\n return items;\r\n}\r\n","import { SpreadingModes } from \"../enums\";\r\nimport { SpreadingMode } from \"../types\";\r\n\r\nconst NORMAL_ALIASES = [SpreadingModes.NORMAL, 'normal'],\r\n INFINITY_ALIASES = [SpreadingModes.INFINITY, 'infinity'];\r\n\r\n/**\r\n * Determines the display mode of list items.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/utils/is-select-mode.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const isSpreadingMode = (src: SpreadingMode, expected: SpreadingMode): boolean => {\r\n if (INFINITY_ALIASES.includes(expected)) {\r\n return INFINITY_ALIASES.includes(src);\r\n }\r\n return NORMAL_ALIASES.includes(src);\r\n}\r\n","import { EMPTY_SCROLL_STATE_VERSION } from \"../const\";\r\n\r\nexport const getScrollStateVersion = (totalSize: number, scrollSize: number): string => {\r\n if (totalSize === -1) {\r\n return EMPTY_SCROLL_STATE_VERSION;\r\n }\r\n let scrollStateUpdateIndex = 0;\r\n if (totalSize < scrollSize) {\r\n scrollStateUpdateIndex = scrollStateUpdateIndex === Number.MAX_SAFE_INTEGER ? 0 : scrollStateUpdateIndex + 1;\r\n }\r\n return `${scrollStateUpdateIndex}_${totalSize}_${scrollSize}`;\r\n};\r\n","import { GradientColorPositions } from \"../../../../common\";\r\nimport { ScrollerDirection } from \"../enums\";\r\nimport { ICalculateScrollParams, ICalculateScrollPositionParams, ICalculateScrollMetrics } from \"./interfaces\";\r\n\r\n/**\r\n * ScrollBox\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/scroller/utils/scroll-box.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport class ScrollBox {\r\n calculateScroll({\r\n direction,\r\n viewportWidth,\r\n viewportHeight,\r\n contentWidth,\r\n contentHeight,\r\n startOffset,\r\n endOffset,\r\n positionX,\r\n positionY,\r\n minSize,\r\n }: ICalculateScrollParams) {\r\n const isVertical = direction === ScrollerDirection.VERTICAL;\r\n let x = 0, y = 0, thumbPosition = 0, thumbSize = 0, thumbGradientPositions: GradientColorPositions = [0, 0];\r\n if (isVertical) {\r\n const { gradientPos, size, pos, } = this.getMetrics(positionY, viewportHeight, contentHeight, startOffset, endOffset, minSize);\r\n thumbGradientPositions = gradientPos;\r\n thumbSize = size;\r\n thumbPosition = pos;\r\n } else {\r\n const { gradientPos, size, pos, } = this.getMetrics(positionX, viewportWidth, contentWidth, startOffset, endOffset, minSize);\r\n thumbGradientPositions = gradientPos;\r\n thumbSize = size;\r\n thumbPosition = pos;\r\n }\r\n return {\r\n x,\r\n y,\r\n thumbSize,\r\n thumbPosition,\r\n thumbGradientPositions,\r\n };\r\n }\r\n\r\n private getMetrics(inputPosition: number, viewportSize: number, contentSize: number, startOffset: number, endOffset: number,\r\n minSize: number): ICalculateScrollMetrics {\r\n let thumbPosition = 0, thumbSize = 0;\r\n const vh = viewportSize - startOffset - endOffset, ch = contentSize - startOffset - endOffset,\r\n ratio = ch > 0 ? vh / ch : 1, ts = vh * ratio, ats = Math.max(ts, minSize), atsDelta = ats - ts,\r\n rh = (ch !== 0 ? (inputPosition / ch) : 0),\r\n pos = startOffset + ((vh - atsDelta) * rh),\r\n size = ats, asp = pos, bRatio = size !== 0 ? vh / size : 0,\r\n aspp = -(vh !== 0 ? asp / vh : 0) * bRatio, aep = vh - (aspp + size),\r\n aepp = (aspp + (vh !== 0 ? (aep + size) / vh : 0) * bRatio);\r\n thumbSize = ats;\r\n thumbPosition = pos;\r\n return {\r\n gradientPos: [aspp, aepp],\r\n size,\r\n pos,\r\n };\r\n }\r\n\r\n getScrollPositionByScrollBar({\r\n scrollSize,\r\n position,\r\n }: ICalculateScrollPositionParams) {\r\n const pos = (position * scrollSize);\r\n return {\r\n position: pos,\r\n };\r\n }\r\n}","import { InjectionToken } from \"@angular/core\";\r\nimport { SCROLLER_SCROLL } from \"../../../const\";\r\n\r\nexport const SCROLL_VIEW_INVERSION = new InjectionToken<boolean>('ScrollViewInversion');\r\n\r\nexport const SCROLL_VIEW_OVERSCROLL_ENABLED = new InjectionToken<boolean>('ScrollViewOverscrollEnabled');\r\n\r\nexport const SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO = new InjectionToken<boolean>('ScrollViewNormalizeValueFromZero');\r\n\r\nexport const TOP = 'top',\r\n LEFT = 'left',\r\n INSTANT = 'instant',\r\n AUTO = 'auto',\r\n SMOOTH = 'smooth',\r\n DURATION = 2000,\r\n FRICTION_FORCE = .035,\r\n MAX_DURATION = 4000,\r\n ANIMATION_DURATION = 50,\r\n MASS = .005,\r\n ACCELERATION_SCALE = 40,\r\n MAX_DIST = 12500,\r\n MIN_DELTA = 0.1,\r\n MAX_VELOCITY_TIMESTAMP = 100,\r\n MAX_VELOCITIES_LENGTH = 10,\r\n MIN_ACCELERATION = 0.001,\r\n SPEED_SCALE = 15,\r\n OVERSCROLL_START_ITERATION = 2;\r\n\r\nexport const MAX_ITERATIONS_FOR_AVERAGE_CALCULATIONS = 5,\r\n INSTANT_VELOCITY_SCALE = 1000;\r\n\r\nexport const SCROLL_EVENT = new Event(SCROLLER_SCROLL);\r\n","/**\r\n * calculateDirection\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroll-view/utils/calculate-direction.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const calculateDirection = (buffer: Array<[number, number]>) => {\r\n for (let i = buffer.length - 1, l = 0; i >= l; i--) {\r\n const v = buffer[i];\r\n if (v[0] === 0) {\r\n continue;\r\n }\r\n return Math.sign(v[0]);\r\n }\r\n return 1;\r\n};\r\n","/**\r\n * ScrollerDirection\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroll-view/enums/scroller-direction.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport enum ScrollerDirection {\r\n HORIZONTAL = 'horizontal',\r\n VERTICAL = 'vertical',\r\n}","import { GradientColorPositions } from \"../../../../common\";\r\nimport { ScrollerDirection, ScrollerDirections } from \"../enums\";\r\n\r\ninterface ICalculateScrollParams {\r\n direction: ScrollerDirections;\r\n viewportWidth: number;\r\n viewportHeight: number;\r\n contentWidth: number;\r\n contentHeight: number;\r\n startOffset: number;\r\n endOffset: number;\r\n positionX: number;\r\n positionY: number;\r\n minSize: number;\r\n}\r\n\r\ninterface ICalculateScrollPositionParams {\r\n scrollSize: number;\r\n position: number;\r\n}\r\n\r\n/**\r\n * ScrollBox\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroll-view/utils/scroll-box.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport class ScrollBox {\r\n calculateScroll({\r\n direction,\r\n viewportWidth,\r\n viewportHeight,\r\n contentWidth,\r\n contentHeight,\r\n startOffset,\r\n endOffset,\r\n positionX,\r\n positionY,\r\n minSize,\r\n }: ICalculateScrollParams) {\r\n const isVertical = direction === ScrollerDirection.VERTICAL;\r\n let x = 0, y = 0, thumbPosition = 0, thumbSize = 0, thumbGradientPositions: GradientColorPositions = [0, 0];\r\n if (isVertical) {\r\n y = positionY;\r\n const vh = viewportHeight - startOffset - endOffset, ch = contentHeight - startOffset - endOffset,\r\n ratio = ch > 0 ? vh / ch : 1, ts = vh * ratio, ats = Math.max(ts, minSize), atsDelta = ats - ts, rh = (ch !== 0 ? (y / ch) : 0),\r\n pos = startOffset + ((vh - atsDelta) * rh),\r\n size = ats, asp = pos, bRatio = size !== 0 ? vh / size : 0,\r\n aspp = -(vh !== 0 ? asp / vh : 0) * bRatio, aep = vh - (aspp + size),\r\n aepp = (aspp + (vh !== 0 ? (aep + size) / vh : 0) * bRatio);\r\n thumbGradientPositions[0] = aspp;\r\n thumbGradientPositions[1] = aepp;\r\n thumbSize = ats;\r\n thumbPosition = pos;\r\n } else {\r\n x = positionX;\r\n const vw = viewportWidth - startOffset - endOffset, cw = contentWidth - startOffset - endOffset,\r\n ratio = cw > 0 ? vw / cw : 1, ts = vw * ratio, ats = Math.max(ts, minSize), atsDelta = ats - ts, rw = (cw !== 0 ? (x / cw) : 0),\r\n pos = startOffset + ((vw - atsDelta) * rw),\r\n size = ats, asp = pos, bRatio = size !== 0 ? vw / size : 0,\r\n aspp = -(vw !== 0 ? asp / vw : 0) * bRatio, aep = vw - (aspp + size),\r\n aepp = (aspp + (vw !== 0 ? (aep + size) / vw : 0) * bRatio);\r\n thumbGradientPositions[0] = aspp;\r\n thumbGradientPositions[1] = aepp;\r\n thumbSize = ats;\r\n thumbPosition = pos;\r\n }\r\n return {\r\n x,\r\n y,\r\n thumbSize,\r\n thumbPosition,\r\n thumbGradientPositions,\r\n };\r\n }\r\n\r\n getScrollPositionByScrollBar({\r\n scrollSize,\r\n position,\r\n }: ICalculateScrollPositionParams) {\r\n const pos = (position * scrollSize);\r\n return {\r\n position: pos,\r\n };\r\n }\r\n}","/**\r\n * matrix3d\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroll-view/utils/matrix-3d.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const matrix3d = (x: number, y: number) => {\r\n return `matrix3d(\r\n 1, 0, 0, 0,\r\n 0, 1, 0, 0,\r\n 0, 0, 1, 0,\r\n ${x}, ${y}, 0, 1\r\n )`;\r\n};\r\n","/**\r\n * getDir\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroll-view/utils/get-dir.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const getDir = (p: number, c: number) => {\r\n return p < c ? 1 : p > c ? -1 : 0;\r\n}","import {\r\n Component, computed, DestroyRef, ElementRef, inject, input, Signal, signal, viewChild,\r\n} from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { ScrollerDirection, ScrollerDirections } from '../enums';\r\nimport { SCROLL_VIEW_INVERSION, SCROLL_VIEW_OVERSCROLL_ENABLED } from '../const';\r\nimport { ISize, TextDirection, TextDirections } from '../../../../common';\r\n\r\n/**\r\n * BaseScrollView\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroll-view/base/base-scroll-view.component.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Component({\r\n selector: 'base-scroll-view',\r\n template: '',\r\n})\r\nexport class BaseScrollView {\r\n readonly scrollContent = viewChild<ElementRef<HTMLDivElement>>('scrollContent');\r\n\r\n readonly scrollViewport = viewChild<ElementRef<HTMLDivElement>>('scrollViewport');\r\n\r\n readonly direction = input<ScrollerDirections>(ScrollerDirection.VERTICAL);\r\n\r\n readonly startOffset = input<number>(0);\r\n\r\n readonly endOffset = input<number>(0);\r\n\r\n readonly alignmentStartOffset = input<number>(0);\r\n\r\n readonly alignmentEndOffset = input<number>(0);\r\n\r\n readonly isInfinity = input<boolean>(false);\r\n\r\n readonly isVertical: Signal<boolean>;\r\n\r\n readonly grabbing = signal<boolean>(false);\r\n\r\n readonly langTextDir = input<TextDirection>(TextDirections.LTR);\r\n\r\n protected _inversion = inject(SCROLL_VIEW_INVERSION);\r\n\r\n protected _overscrollEnabled = inject(SCROLL_VIEW_OVERSCROLL_ENABLED);\r\n\r\n protected _$updateScrollBar = new Subject<void>();\r\n protected $updateScrollBar = this._$updateScrollBar.asObservable();\r\n\r\n get scrollable() {\r\n const { width, height } = this.viewportBounds(),\r\n isVertical = this.isVertical(),\r\n viewportSize = isVertical ? height : width,\r\n totalSize = this._totalSize;\r\n return this._inversion ? (totalSize < viewportSize) : (totalSize > viewportSize);\r\n }\r\n\r\n protected _destroyRef = inject(DestroyRef);\r\n\r\n protected _isMoving = false;\r\n get isMoving() {\r\n return this._isMoving;\r\n }\r\n\r\n protected _x: number = 0;\r\n set x(v: number) {\r\n this._x = this._actualX = v;\r\n\r\n this.normalizeScrollSize();\r\n }\r\n get x() { return this._x; }\r\n\r\n protected _y: number = 0;\r\n set y(v: number) {\r\n this._y = this._actualY = v;\r\n\r\n this.normalizeScrollSize();\r\n }\r\n get y() { return this._y; }\r\n\r\n protected _actualTotalSize: number = 0;\r\n protected _totalSize: number = 0;\r\n set totalSize(v: number) {\r\n if (this._totalSize !== v) {\r\n this._totalSize = v;\r\n const startOffset = this.startOffset(), endOffset = this.alignmentEndOffset();\r\n this._actualTotalSize = v + startOffset + endOffset;\r\n\r\n this.normalizeScrollSize();\r\n }\r\n }\r\n get totalSize() {\r\n return this._totalSize;\r\n }\r\n\r\n protected _startLayoutOffset: number = 0;\r\n set startLayoutOffset(v: number) {\r\n if (this._startLayoutOffset !== v) {\r\n this._startLayoutOffset = v;\r\n }\r\n }\r\n get startLayoutOffset() { return this._startLayoutOffset; }\r\n\r\n get actualScrollHeight() {\r\n const { height: viewportHeight } = this.viewportBounds(),\r\n totalSize = this._actualTotalSize,\r\n isVertical = this.isVertical(),\r\n startOffset = this.startOffset(),\r\n endOffset = this.endOffset();\r\n if (this._inversion) {\r\n return totalSize > viewportHeight ? isVertical ? endOffset : 0 : viewportHeight - totalSize;\r\n }\r\n return totalSize < viewportHeight ? isVertical ? startOffset : 0 : totalSize - viewportHeight;\r\n }\r\n\r\n get actualScrollWidth() {\r\n const { width: viewportWidth } = this.viewportBounds(),\r\n totalSize = this._actualTotalSize,\r\n isVertical = this.isVertical(),\r\n startOffset = this.startOffset(),\r\n endOffset = this.endOffset();\r\n if (this._inversion) {\r\n return totalSize > viewportWidth ? isVertical ? 0 : endOffset : viewportWidth - totalSize;\r\n }\r\n return totalSize < viewportWidth ? isVertical ? 0 : startOffset : totalSize - viewportWidth;\r\n }\r\n\r\n protected _actualX: number = 0;\r\n get actualScrollLeft() {\r\n return this._actualX;\r\n }\r\n\r\n protected _actualY: number = 0;\r\n get actualScrollTop() {\r\n return this._actualY;\r\n }\r\n\r\n get scrollLeft() {\r\n return this._x;\r\n }\r\n\r\n get scrollTop() {\r\n return this._y;\r\n }\r\n\r\n get scrollWidth() {\r\n const { width: viewportWidth } = this.viewportBounds(),\r\n { width: contentWidth } = this.contentBounds(),\r\n isVertical = this.isVertical(),\r\n startOffset = this.startOffset(),\r\n endOffset = this.endOffset();\r\n if (this._inversion) {\r\n return contentWidth > viewportWidth ? isVertical ? 0 : endOffset : (viewportWidth - (contentWidth + this.alignmentEndOffset()));\r\n }\r\n return contentWidth < viewportWidth ? isVertical ? 0 : startOffset : ((contentWidth + this.alignmentEndOffset()) - viewportWidth);\r\n }\r\n\r\n get scrollHeight() {\r\n const { height: viewportHeight } = this.viewportBounds(),\r\n { height: contentHeight } = this.contentBounds(),\r\n isVertical = this.isVertical(),\r\n startOffset = this.startOffset(),\r\n endOffset = this.endOffset();\r\n if (this._inversion) {\r\n return contentHeight > viewportHeight ? isVertical ? endOffset : 0 : (viewportHeight - (contentHeight + this.alignmentEndOffset()));\r\n }\r\n return contentHeight < viewportHeight ? isVertical ? startOffset : 0 : ((contentHeight + this.alignmentEndOffset()) - viewportHeight);\r\n }\r\n\r\n readonly viewportBounds = signal<ISize>({ width: 0, height: 0 });\r\n\r\n readonly contentBounds = signal<ISize>({ width: 0, height: 0 });\r\n\r\n protected _isCoordinatesOverrided: boolean = false;\r\n\r\n constructor() {\r\n this.isVertical = computed(() => {\r\n return this.direction() === ScrollerDirection.VERTICAL;\r\n });\r\n }\r\n\r\n tick() {\r\n this.onResizeContent();\r\n this.onResizeViewport();\r\n }\r\n\r\n protected overrideCoordinates(x: number, y: number) { }\r\n\r\n protected normalizeScrollSize() {\r\n if (this.isInfinity()) {\r\n const isVertical = this.isVertical();\r\n if (isVertical) {\r\n const scrollSize = (this._totalSize - this.viewportBounds().height);\r\n if (this._y < 0) {\r\n this._isCoordinatesOverrided = true;\r\n const currentPosition = scrollSize;\r\n this.overrideCoordinates(this._x, currentPosition);\r\n this._y = currentPosition;\r\n return true;\r\n } else if (this._y > scrollSize) {\r\n this._isCoordinatesOverrided = true;\r\n const currentPosition = 0;\r\n this.overrideCoordinates(this._x, currentPosition);\r\n this._y = currentPosition;\r\n return true;\r\n }\r\n } else {\r\n const scrollSize = (this._totalSize - this.viewportBounds().width);\r\n if (this._x < 0) {\r\n this._isCoordinatesOverrided = true;\r\n const currentPosition = scrollSize;\r\n this.overrideCoordinates(currentPosition, this._y);\r\n this._x = currentPosition;\r\n return true;\r\n } else if (this._x > scrollSize) {\r\n this._isCoordinatesOverrided = true;\r\n const currentPosition = 0;\r\n this.overrideCoordinates(currentPosition, this._y);\r\n this._x = currentPosition;\r\n return true;\r\n }\r\n }\r\n }\r\n this._isCoordinatesOverrided = false;\r\n return false;\r\n }\r\n\r\n protected onResizeViewport() {\r\n const viewport = this.scrollViewport()?.nativeElement;\r\n if (!!viewport) {\r\n const isVertical = this.isVertical(),\r\n startOffset = this.startOffset(),\r\n endOffset = this.endOffset(),\r\n w = viewport.offsetWidth,\r\n h = viewport.offsetHeight,\r\n width = isVertical ? w : (w - startOffset - endOffset),\r\n height = isVertical ? (h - startOffset - endOffset) : h,\r\n bounds = this.viewportBounds();\r\n if (bounds.width === width && bounds.height === height) {\r\n return;\r\n }\r\n this.viewportBounds.set({ width, height });\r\n }\r\n }\r\n\r\n protected onResizeContent(value: number | null = null) {\r\n const content = this.scrollContent()?.nativeElement;\r\n if (!!content) {\r\n const isVertical = this.isVertical(),\r\n startOffset = this.startOffset(),\r\n w = content.offsetWidth,\r\n h = content.offsetHeight,\r\n width = isVertical ? w : value ?? (w - startOffset),\r\n height = isVertical ? value ?? (h - startOffset) : h,\r\n bounds = this.contentBounds();\r\n if (bounds.width === width && bounds.height === height) {\r\n return;\r\n }\r\n this.contentBounds.set({ width, height });\r\n }\r\n }\r\n}","import { BehaviorSubject } from \"rxjs\";\r\nimport { ScrollDirection } from \"../types\";\r\n\r\n/**\r\n * ScrollingDirection\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/utils/scrolling-direction.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport class ScrollingDirection {\r\n private _value: number = 0;\r\n\r\n private _$direction = new BehaviorSubject<ScrollDirection>(0);\r\n readonly $direction = this._$direction.asObservable();\r\n\r\n constructor(private _length: number = 5) { }\r\n\r\n add(v: ScrollDirection) {\r\n this._value += v;\r\n const dir = this._value < this._length ? -this._length : this._value > this._length ? this._length : this._value,\r\n result = dir === 0 ? 0 : Math.sign(dir) as ScrollDirection;\r\n this._$direction.next(result);\r\n }\r\n\r\n get(): ScrollDirection {\r\n return this._$direction.getValue();\r\n }\r\n\r\n clear() {\r\n this._value = 0;\r\n this._$direction.next(0);\r\n }\r\n}","import { INSTANT_VELOCITY_SCALE } from \"../const\";\r\n\r\n/**\r\n * calculateVelocity\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroll-view/utils/calculate-velocity.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const calculateVelocity = (startPosition: number, currentPosition: number, timestamp: number) => {\r\n const s = currentPosition - startPosition, t = timestamp;\r\n return t !== 0 ? (s / t) * INSTANT_VELOCITY_SCALE : 0;\r\n}","import {\r\n Component, computed, inject, input, Signal, ViewChild,\r\n} from '@angular/core';\r\nimport { CdkScrollable } from '@angular/cdk/scrolling';\r\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\r\nimport { BehaviorSubject, combineLatest, debounceTime, delay, filter, fromEvent, map, of, race, startWith, Subject, switchMap, takeUntil, tap } from 'rxjs';\r\nimport {\r\n BEHAVIOR_INSTANT, DEFAULT_ANIMATION_PARAMS, DEFAULT_OVERSCROLL_ENABLED, DEFAULT_SCROLL_BEHAVIOR, DEFAULT_SCROLLING_ONE_BY_ONE,\r\n DEFAULT_SCROLLING_SETTINGS, DEFAULT_SNAP_TO_ITEM, DEFAULT_SNAP_TO_ITEM_ALIGN, DEFAULT_SNAPPING_DISTANCE, INTERACTIVE, MOUSE_DOWN,\r\n MOUSE_MOVE, MOUSE_UP, TOUCH_END, TOUCH_MOVE, TOUCH_START, WHEEL,\r\n} from '../../const';\r\nimport { IScrollToParams } from './interfaces';\r\nimport {\r\n ACCELERATION_SCALE, ANIMATION_DURATION, AUTO, DURATION, FRICTION_FORCE, INSTANT, LEFT, MASS, MAX_DIST, MAX_DURATION, MAX_ITERATIONS_FOR_AVERAGE_CALCULATIONS,\r\n MAX_VELOCITY_TIMESTAMP, MAX_VELOCITIES_LENGTH, OVERSCROLL_START_ITERATION, SCROLL_EVENT, SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, SMOOTH, SPEED_SCALE, TOP,\r\n MIN_ACCELERATION, MIN_DELTA,\r\n} from './const';\r\nimport { calculateDirection, matrix3d } from './utils';\r\nimport { BaseScrollView } from './base/base-scroll-view.component';\r\nimport { IAnimationParams, IScrollingSettings } from '../../interfaces';\r\nimport { SnapToItemAligns } from '../../enums';\r\nimport { CnVirtualListService } from '../../cn-virtual-list.service';\r\nimport { SnappingDistance, SnapToItemAlign } from '../../types';\r\nimport { ScrollingDirection } from '../../utils/scrolling-direction';\r\nimport { calculateVelocity } from './utils/calculate-velocity';\r\nimport { Id, TextDirections } from '../../../common';\r\nimport { Animator, ANIMATOR_MIN_TIMESTAMP, easeOutQuad, Easing, isPercentageValue, parseFloatOrPersentageValue } from '../../../common/utils';\r\n\r\n/**\r\n * CnScrollView\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroll-view/cn-scroll-view.component.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Component({\r\n selector: 'cn-scroll-view',\r\n template: '',\r\n})\r\nexport class CnScrollView extends BaseScrollView {\r\n @ViewChild('scrollViewport', { read: CdkScrollable })\r\n readonly cdkScrollable: CdkScrollable | undefined;\r\n\r\n protected _service = inject(CnVirtualListService);\r\n\r\n readonly scrollBehavior = input<ScrollBehavior>(DEFAULT_SCROLL_BEHAVIOR);\r\n\r\n readonly overscrollEnabled = input<boolean>(DEFAULT_OVERSCROLL_ENABLED);\r\n\r\n readonly scrollingSettings = input<IScrollingSettings>(DEFAULT_SCROLLING_SETTINGS);\r\n\r\n readonly snapToItem = input<boolean>(DEFAULT_SNAP_TO_ITEM);\r\n\r\n readonly scrollingOneByOne = input<boolean>(DEFAULT_SCROLLING_ONE_BY_ONE);\r\n\r\n readonly snapToItemAlign = input<SnapToItemAlign>(DEFAULT_SNAP_TO_ITEM_ALIGN);\r\n\r\n readonly snappingDistance = input<SnappingDistance>(DEFAULT_SNAPPING_DISTANCE);\r\n\r\n readonly animationParams = input<IAnimationParams>(DEFAULT_ANIMATION_PARAMS);\r\n\r\n protected _normalizeValueFromZero = inject(SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO);\r\n\r\n protected _isScrollsTo: boolean = false;\r\n\r\n protected _scrollDirection = new ScrollingDirection();\r\n get scrollDirection() {\r\n return this._scrollDirection.get();\r\n }\r\n\r\n get $scrollDirection() { return this._scrollDirection.$direction; }\r\n\r\n protected _$wheel = new Subject<number>();\r\n readonly $wheel = this._$wheel.asObservable();\r\n\r\n protected _$scroll = new Subject<boolean>();\r\n readonly $scroll = this._$scroll.asObservable();\r\n\r\n protected _$scrollEnd = new Subject<boolean>();\r\n readonly $scrollEnd = this._$scrollEnd.asObservable();\r\n\r\n protected _velocities: Array<number> = [];\r\n\r\n protected _$velocity = new BehaviorSubject<number>(0);\r\n protected $velocity = this._$velocity.asObservable();\r\n get velocity() { return this._$velocity.getValue(); }\r\n\r\n protected _$averageVelocity = new BehaviorSubject<number>(0);\r\n protected $averageVelocity = this._$averageVelocity.asObservable();\r\n get averageVelocity() { return this._$averageVelocity.getValue(); }\r\n\r\n private _measureVelocityTimestamp: number = Date.now();\r\n\r\n private _measureVelocityLastPosition: number = this.isVertical() ? this._y : this._x;\r\n\r\n private _startPositionX = 0;\r\n\r\n private _startPositionY = 0;\r\n\r\n private _touchId = -1;\r\n\r\n set startPosition(v: number) {\r\n const isVertical = this.isVertical(),\r\n c = isVertical ? this._startPositionY : this._startPositionX;\r\n if (v !== c) {\r\n if (isVertical) {\r\n this._startPositionY = v;\r\n } else {\r\n this._startPositionX = v;\r\n }\r\n }\r\n }\r\n\r\n get startPosition() {\r\n if (this.isVertical()) {\r\n return this._startPositionY;\r\n }\r\n return this._startPositionX;\r\n }\r\n\r\n protected _animator = new Animator();\r\n\r\n protected _interactive = true;\r\n\r\n protected _horizontalAxisInvertion: Signal<boolean>;\r\n\r\n get inverted() { return this._horizontalAxisInvertion(); }\r\n\r\n private _overscrollIteration: number = 0;\r\n\r\n private _overscrollStartIteration = 0;\r\n\r\n private _overscrollApplied = false;\r\n\r\n override set x(v: number) {\r\n this.setX(v);\r\n }\r\n override get x() { return this._x; }\r\n\r\n protected setX(x: number, snap: boolean = true, normalize: boolean = true) {\r\n if (x !== undefined && !Number.isNaN(x)) {\r\n this.updateDirection(x, this._y);\r\n\r\n this._x = this._actualY = x;\r\n\r\n if (normalize) {\r\n this.normalizeScrollSize();\r\n }\r\n\r\n this.refreshCoordinate(this._x, this._y);\r\n\r\n this.measureVelocity();\r\n\r\n if (snap) {\r\n this.checkIntersectionComponent();\r\n }\r\n }\r\n }\r\n\r\n override set y(v: number) {\r\n this.setY(v);\r\n }\r\n override get y() { return this._y; }\r\n\r\n protected setY(y: number, snap: boolean = true, normalize: boolean = true) {\r\n if (y !== undefined && !Number.isNaN(y)) {\r\n this.updateDirection(y, this._y);\r\n\r\n this._y = this._actualY = y;\r\n\r\n if (normalize) {\r\n this.normalizeScrollSize();\r\n }\r\n\r\n this.refreshCoordinate(this._x, this._y);\r\n\r\n this.measureVelocity();\r\n\r\n if (snap) {\r\n this.checkIntersectionComponent();\r\n }\r\n }\r\n }\r\n\r\n protected _delta: number = 0;\r\n set delta(v: number) {\r\n this._delta = v;\r\n this.startPosition += v;\r\n }\r\n\r\n override set startLayoutOffset(v: number) {\r\n if (this._startLayoutOffset !== v) {\r\n this._startLayoutOffset = v;\r\n\r\n this.refreshCoordinate(this._x, this._y);\r\n }\r\n }\r\n override get startLayoutOffset() { return this._startLayoutOffset; }\r\n\r\n private _scrollDirectionValueX: number = 0;\r\n\r\n private _scrollDirectionValueY: number = 0;\r\n\r\n protected _intersectionComponentId: Id | null = null;\r\n\r\n protected _isAlignmentAnimation = false;\r\n\r\n get animated() { return this._animator?.isAnimated ?? false; }\r\n\r\n constructor() {\r\n super();\r\n\r\n let mouseCanceled = false,\r\n touchCanceled = false;\r\n\r\n this._horizontalAxisInvertion = computed(() => {\r\n const isVertical = this.isVertical(), langTextDir = this.langTextDir();\r\n return !isVertical && langTextDir === TextDirections.RTL;\r\n });\r\n\r\n const $viewportBounds = toObservable(this.viewportBounds);\r\n $viewportBounds.pipe(\r\n takeUntilDestroyed(),\r\n debounceTime(0),\r\n tap(() => {\r\n this._isMoving = false;\r\n this.grabbing.set(false);\r\n if (!mouseCanceled || !touchCanceled) {\r\n this.stopMoving();\r\n }\r\n mouseCanceled = touchCanceled = true;\r\n if (this.snapToItem() || this.scrollingOneByOne()) {\r\n this.stopScrolling(true);\r\n this.alignPosition(true, true);\r\n }\r\n this._$scrollEnd.next(false);\r\n }),\r\n ).subscribe();\r\n\r\n const $wheel = this.$wheel;\r\n $wheel.pipe(\r\n takeUntilDestroyed(),\r\n switchMap(v => of(this.averageVelocity)),\r\n debounceTime(100),\r\n tap(v => {\r\n this.snapWithInitialForceIfNecessary(v);\r\n this._overscrollIteration = this._overscrollStartIteration = 0;\r\n this._overscrollApplied = false;\r\n this._scrollDirection.clear();\r\n this._scrollDirectionValueX = this._scrollDirectionValueY = 0;\r\n }),\r\n ).subscribe();\r\n\r\n const $viewport = toObservable(this.scrollViewport).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n filter(v => !!v),\r\n map(v => v.nativeElement),\r\n ), $content = toObservable(this.scrollContent).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n filter(v => !!v),\r\n map(v => v.nativeElement),\r\n ), $wheelEmitter = this._inversion ? $viewport : $content;\r\n\r\n $wheelEmitter.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n switchMap(content => {\r\n return fromEvent<WheelEvent>(content, WHEEL, { passive: false }).pipe(\r\n filter(() => this._interactive),\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(e => {\r\n const isVertical = this.isVertical();\r\n this.emitScrollableEvent();\r\n this.checkOverscroll(e, true);\r\n this.stopScrolling(true);\r\n const scrollSize = isVertical ? this.scrollHeight : this.scrollWidth,\r\n startPos = isVertical ? this._y : this._x,\r\n delta = isVertical ? e.deltaY : (e.deltaX * (this._horizontalAxisInvertion() ? -1 : 1)), dp = (startPos + delta),\r\n position = this.isInfinity() ? dp : (dp < 0 ? 0 : dp > scrollSize ? scrollSize : dp);\r\n this.scroll({ [isVertical ? TOP : LEFT]: position, behavior: INSTANT, userAction: true, blending: false, fireUpdate: true });\r\n this._$wheel.next(delta);\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n const $mouseUp = race([\r\n fromEvent<MouseEvent>(window, MOUSE_UP, { passive: true }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n ),\r\n $content.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n switchMap(content => fromEvent<MouseEvent>(content, MOUSE_UP, { passive: true }))\r\n ),\r\n ]),\r\n $mouseDragCancel = $mouseUp.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n delay(0),\r\n tap(() => {\r\n this._isMoving = false;\r\n this.grabbing.set(false);\r\n if (!mouseCanceled) {\r\n this.stopMoving();\r\n }\r\n mouseCanceled = true;\r\n if (this.snapToItem() && this.scrollingOneByOne()) {\r\n this._isAlignmentAnimation = false;\r\n this.alignPosition(true, true);\r\n }\r\n this._$scrollEnd.next(true);\r\n }),\r\n );\r\n\r\n $content.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n switchMap(content => {\r\n return fromEvent<MouseEvent>(content, MOUSE_DOWN, { passive: false }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n filter(() => this._interactive),\r\n switchMap(e => {\r\n return race([fromEvent<MouseEvent>(window, MOUSE_UP, { passive: false }), fromEvent<MouseEvent>(content, MOUSE_UP, { passive: false })]).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n takeUntil(fromEvent<MouseEvent>(window, MOUSE_MOVE, { passive: false })),\r\n tap(e => {\r\n this._isMoving = false;\r\n this.grabbing.set(false);\r\n if (!mouseCanceled) {\r\n this.stopMoving();\r\n }\r\n mouseCanceled = true;\r\n if (this.snapToItem() || this.scrollingOneByOne()) {\r\n this._isAlignmentAnimation = false;\r\n this.alignPosition(true, true);\r\n }\r\n this._$scrollEnd.next(true);\r\n }),\r\n );\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n $content.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n switchMap(content => {\r\n return fromEvent<MouseEvent>(content, MOUSE_DOWN, { passive: false }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n filter(v => this._interactive),\r\n switchMap(e => {\r\n mouseCanceled = false;\r\n this._overscrollStartIteration = 0;\r\n this._overscrollApplied = false;\r\n this._scrollDirection.clear();\r\n this._scrollDirectionValueX = this._scrollDirectionValueY = 0;\r\n this.cancelOverscroll();\r\n this.onDragStart();\r\n this.stopScrolling(true);\r\n this.stopMoving();\r\n const target = e.target as HTMLElement;\r\n if (target.classList.contains(INTERACTIVE)) {\r\n return of(undefined);\r\n }\r\n const inversion = this._inversion, isVertical = this.isVertical();\r\n this._isMoving = true;\r\n this.grabbing.set(true);\r\n this._startPositionX = this.x;\r\n this._startPositionY = this.y;\r\n this._touchId = -1;\r\n let prevClientPositionX: number | null = (e.clientX) * (this._horizontalAxisInvertion() ? -1 : 1),\r\n prevClientPositionY: number | null = e.clientY,\r\n startClientPosX = prevClientPositionX,\r\n startClientPosY = prevClientPositionY,\r\n offsetsX = new Array<[number, number]>(),\r\n offsetsY = new Array<[number, number]>(),\r\n velocitiesX = new Array<[number, number]>(),\r\n velocitiesY = new Array<[number, number]>(),\r\n startTime = Date.now();\r\n return fromEvent<MouseEvent>(window, MOUSE_MOVE, { passive: false }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n takeUntil($mouseDragCancel),\r\n tap(e => {\r\n this.checkOverscroll(e);\r\n }),\r\n switchMap(e => {\r\n const { position: positionX, currentPos: currentPosX, endTime, scrollDelta: scrollDeltaX } =\r\n this.calculatePosition(false, true, this._horizontalAxisInvertion(), e, inversion, startClientPosX, startTime, prevClientPositionX, offsetsX, velocitiesX),\r\n { position: positionY, currentPos: currentPosY, scrollDelta: scrollDeltaY } =\r\n this.calculatePosition(true, true, false, e, inversion, startClientPosY, startTime, prevClientPositionY, offsetsY, velocitiesY),\r\n position = isVertical ? positionY : positionX;\r\n prevClientPositionX = currentPosX;\r\n prevClientPositionY = currentPosY;\r\n this._scrollDirectionValueX += Math.abs(scrollDeltaX);\r\n this._scrollDirectionValueY += Math.abs(scrollDeltaY);\r\n this.move(isVertical, position, true, true, true);\r\n if (this.isInfinity()) {\r\n const offset = Math.abs(position) - Math.abs(isVertical ? this._y : this._x),\r\n scrollSize = isVertical ? this.scrollHeight : this.scrollWidth,\r\n viewportSize = isVertical ? this.viewportBounds().height : this.viewportBounds().width;\r\n if (position >= (scrollSize - viewportSize * .5) || position <= 0) {\r\n if (isVertical) {\r\n startClientPosY -= offset;\r\n } else {\r\n startClientPosX -= offset;\r\n }\r\n }\r\n }\r\n startTime = endTime;\r\n return race([fromEvent<MouseEvent>(window, MOUSE_UP, { passive: false }), fromEvent<MouseEvent>(content, MOUSE_UP, { passive: false })]).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n takeUntil($mouseDragCancel),\r\n tap(e => {\r\n mouseCanceled = true;\r\n this.cancelOverscroll();\r\n const endTime = Date.now(),\r\n timestamp = endTime - startTime,\r\n { v0 } = this.calculateVelocity(isVertical ? offsetsY : offsetsX, isVertical ? scrollDeltaY : scrollDeltaX, timestamp),\r\n { a0 } = this.calculateAcceleration(isVertical ? velocitiesY : velocitiesX, v0, timestamp);\r\n this._isMoving = false;\r\n this.grabbing.set(false);\r\n if (!this.snapIfNecessary(v0, false) && this.scrollBehavior() !== BEHAVIOR_INSTANT) {\r\n this.moveWithAcceleration(isVertical, position, 0, v0, a0, timestamp);\r\n } else {\r\n this.snapIfNecessary(v0);\r\n this._$scrollEnd.next(true);\r\n }\r\n }),\r\n );\r\n }),\r\n );\r\n })\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n const $touchUp = race(\r\n [\r\n fromEvent<TouchEvent>(window, TOUCH_END, { passive: false }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n ),\r\n $content.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n switchMap(content => fromEvent<TouchEvent>(content, TOUCH_END, { passive: false })),\r\n ),\r\n ]\r\n ), $touchMove = fromEvent<TouchEvent>(window, TOUCH_MOVE, { passive: false }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n ),\r\n $touchCanceler = race([$touchUp.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n filter(e => Array.from(e.targetTouches).findIndex(({ identifier }) => identifier === this._touchId) === -1),\r\n tap((e) => {\r\n if (this._touchId > -1) {\r\n e.stopImmediatePropagation();\r\n }\r\n }),\r\n delay(0),\r\n tap(() => {\r\n this._touchId = -1;\r\n this._isMoving = false;\r\n this.grabbing.set(false);\r\n if (!touchCanceled) {\r\n this.stopMoving();\r\n }\r\n touchCanceled = true;\r\n if (this.snapToItem() && this.scrollingOneByOne()) {\r\n this._isAlignmentAnimation = false;\r\n this.alignPosition(true, true);\r\n }\r\n this._$scrollEnd.next(true);\r\n }),\r\n ), $touchMove.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n delay(0),\r\n filter(e => Array.from(e.targetTouches).findIndex(({ identifier }) => identifier === this._touchId) === -1),\r\n tap(() => {\r\n this._touchId = -1;\r\n }),\r\n )]);\r\n\r\n $content.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n switchMap(content => {\r\n return fromEvent<TouchEvent>(content, TOUCH_START, { passive: false }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n filter(() => this._interactive),\r\n switchMap(e => {\r\n return race([fromEvent<TouchEvent>(window, TOUCH_END, { passive: false }), fromEvent<TouchEvent>(content, TOUCH_END, { passive: false })]).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n takeUntil(fromEvent<TouchEvent>(window, TOUCH_MOVE, { passive: false })),\r\n tap(e => {\r\n this._touchId = -1;\r\n this._isMoving = false;\r\n this.grabbing.set(false);\r\n if (!touchCanceled) {\r\n this.stopMoving();\r\n }\r\n touchCanceled = true;\r\n if (this.snapToItem() || this.scrollingOneByOne()) {\r\n this._isAlignmentAnimation = false;\r\n this.alignPosition(true, true);\r\n }\r\n this._$scrollEnd.next(true);\r\n }),\r\n );\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n $content.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n switchMap(content => {\r\n return fromEvent<TouchEvent>(content, TOUCH_START, { passive: false }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n filter(() => this._interactive),\r\n switchMap(e => {\r\n touchCanceled = false;\r\n this._overscrollStartIteration = 0;\r\n this._overscrollApplied = false;\r\n this._scrollDirection.clear();\r\n this._scrollDirectionValueX = this._scrollDirectionValueY = 0;\r\n this.cancelOverscroll();\r\n this.onDragStart();\r\n this.stopScrolling(true);\r\n this.stopMoving();\r\n const target = e.target as HTMLElement;\r\n if (target.classList.contains(INTERACTIVE)) {\r\n return of(undefined);\r\n }\r\n const inversion = this._inversion, isVertical = this.isVertical(),\r\n touch = (e.targetTouches?.length ?? 0) > 0 ? e.targetTouches[e.targetTouches.length - 1] : null;\r\n if (!touch) {\r\n return of(null);\r\n }\r\n this._isMoving = true;\r\n this.grabbing.set(true);\r\n this._startPositionX = this.x;\r\n this._startPositionY = this.y;\r\n this._touchId = touch.identifier;\r\n\r\n let prevClientPositionX: number | null = (touch.clientX) * (this._horizontalAxisInvertion() ? -1 : 1),\r\n prevClientPositionY: number | null = touch.clientY,\r\n startClientPosX = prevClientPositionX,\r\n startClientPosY = prevClientPositionY,\r\n offsetsX = new Array<[number, number]>(),\r\n offsetsY = new Array<[number, number]>(),\r\n velocitiesX = new Array<[number, number]>(),\r\n velocitiesY = new Array<[number, number]>(),\r\n startTime = Date.now();\r\n return combineLatest([fromEvent<TouchEvent>(window, TOUCH_MOVE, { passive: false }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n startWith(null),\r\n ), fromEvent<TouchEvent>(content, TOUCH_MOVE, { passive: false }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n startWith(null),\r\n )]).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n takeUntil($touchCanceler),\r\n map(([e1, e2]) => e1 ?? e2),\r\n filter(e => !!e),\r\n tap(e => {\r\n this.checkOverscroll(e);\r\n }),\r\n switchMap(e => {\r\n const { position: positionX, currentPos: currentPosX, endTime, scrollDelta: scrollDeltaX } =\r\n this.calculatePosition(false, true, this._horizontalAxisInvertion(), e, inversion, startClientPosX, startTime, prevClientPositionX, offsetsX, velocitiesX, this._touchId),\r\n { position: positionY, currentPos: currentPosY, scrollDelta: scrollDeltaY } =\r\n this.calculatePosition(true, true, false, e, inversion, startClientPosY, startTime, prevClientPositionY, offsetsY, velocitiesY, this._touchId),\r\n position = isVertical ? positionY : positionX;\r\n prevClientPositionX = currentPosX;\r\n prevClientPositionY = currentPosY;\r\n this._scrollDirectionValueX += Math.abs(scrollDeltaX);\r\n this._scrollDirectionValueY += Math.abs(scrollDeltaY);\r\n this.move(isVertical, position, true, true, true);\r\n if (this.isInfinity()) {\r\n const offset = Math.abs(position) - Math.abs(isVertical ? this._y : this._x),\r\n scrollSize = isVertical ? this.scrollHeight : this.scrollWidth,\r\n viewportSize = isVertical ? this.viewportBounds().height : this.viewportBounds().width;\r\n if (position >= (scrollSize - viewportSize * .5) || position <= 0) {\r\n if (isVertical) {\r\n startClientPosY -= offset;\r\n } else {\r\n startClientPosX -= offset;\r\n }\r\n }\r\n }\r\n startTime = endTime;\r\n return race([fromEvent<TouchEvent>(window, TOUCH_END, { passive: false }), fromEvent<TouchEvent>(content, TOUCH_END, { passive: false })]).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n takeUntil($touchCanceler),\r\n tap(e => {\r\n this._touchId = -1;\r\n touchCanceled = true;\r\n this.cancelOverscroll();\r\n const endTime = Date.now(),\r\n timestamp = endTime - startTime,\r\n { v0 } = this.calculateVelocity(isVertical ? offsetsY : offsetsX, isVertical ? scrollDeltaY : scrollDeltaX, timestamp),\r\n { a0 } = this.calculateAcceleration(isVertical ? velocitiesY : velocitiesX, v0, timestamp);\r\n this._isMoving = false;\r\n this.grabbing.set(false);\r\n if (!this.snapIfNecessary(v0, false) && this.scrollBehavior() !== BEHAVIOR_INSTANT) {\r\n this.moveWithAcceleration(isVertical, position, 0, v0, a0, timestamp);\r\n } else {\r\n this.snapIfNecessary(v0);\r\n this._$scrollEnd.next(true);\r\n }\r\n }),\r\n );\r\n }),\r\n );\r\n })\r\n );\r\n }),\r\n ).subscribe();\r\n }\r\n\r\n hasAnimation(id: number = -1) { return this._animator?.hasAnimation(id) ?? false; }\r\n\r\n protected updateDirection(position: number, prePosition: number) {\r\n const delta = (position - this._delta) - prePosition;\r\n this._scrollDirection.add(delta > 0 ? 1 : delta < 0 ? -1 : 0);\r\n }\r\n\r\n protected override overrideCoordinates(x: number, y: number) {\r\n super.overrideCoordinates(x, y);\r\n const position = Math.abs(this.isVertical() ? y : x);\r\n this._measureVelocityTimestamp = Date.now();\r\n this._measureVelocityLastPosition = position;\r\n this.refreshCoordinate(x, y);\r\n }\r\n\r\n protected measureVelocity() {\r\n const timestamp = Date.now();\r\n if (timestamp === this._measureVelocityTimestamp) {\r\n return;\r\n }\r\n const position = Math.abs(this.isVertical() ? this._y : this._x);\r\n if (!this.isInfinity()) {\r\n if (position <= 0 || position >= (this.isVertical() ? this.scrollHeight : this.scrollWidth)) {\r\n this._velocities = [0];\r\n this._$averageVelocity.next(0);\r\n this._measureVelocityLastPosition = position;\r\n this._measureVelocityTimestamp = timestamp;\r\n return;\r\n }\r\n }\r\n if (this._delta !== 0) {\r\n return;\r\n }\r\n const timeDelta = timestamp - this._measureVelocityTimestamp,\r\n positionDelta = Math.abs(position - this._measureVelocityLastPosition),\r\n velocity = timeDelta > 0 ? positionDelta / timeDelta : 0;\r\n let avgVelocity = this._velocities.length > 0 ? this._velocities.reduce((p, c) => p + c) : 0;\r\n if (this._velocities.length >= MAX_ITERATIONS_FOR_AVERAGE_CALCULATIONS) {\r\n this._velocities.shift();\r\n }\r\n avgVelocity += velocity;\r\n this._$velocity.next(velocity);\r\n this._velocities.push(velocity);\r\n this._$averageVelocity.next(avgVelocity / MAX_ITERATIONS_FOR_AVERAGE_CALCULATIONS);\r\n this._measureVelocityLastPosition = position;\r\n this._measureVelocityTimestamp = timestamp;\r\n }\r\n\r\n protected stopMoving() { }\r\n\r\n private snapIfNecessary(v0: number, withInitialForce: boolean = true, animated: boolean = true, force: boolean = false) {\r\n const scrollDirection = this._scrollDirection.get() || (force ? 1 : 0);\r\n if (scrollDirection === 0) {\r\n return false;\r\n }\r\n const snapToItem = this.snapToItem();\r\n if (!!snapToItem) {\r\n const scrollingOneByOne = this.scrollingOneByOne();\r\n if (scrollingOneByOne) {\r\n return this.alignPosition();\r\n }\r\n if (withInitialForce) {\r\n return this.snapWithInitialForceIfNecessary(v0, animated, force);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n protected snapWithInitialForceIfNecessary(v0: number | null = null, animated = true, force: boolean = false, fireUpdate: boolean = true) {\r\n const t = this.animationParams().snapToItem * .01, s = this.getSnappedComponentSize(),\r\n va = s !== null && t !== 0 ? (s / t) : 0;\r\n if (va >= Math.abs(v0 ?? this.averageVelocity)) {\r\n return this.alignPosition(animated, force, fireUpdate);\r\n }\r\n return false;\r\n }\r\n\r\n private calculatePosition(isVertical: boolean, enabled: boolean, axisInversion: boolean, e: MouseEvent | TouchEvent | any, inversion: boolean, startClientPos: number, startTime: number,\r\n prevClientPosition: number | null, offsets: Array<[number, number]>, velocities: Array<[number, number]>, touchId: number = 0,\r\n ) {\r\n if (!enabled) {\r\n return { position: isVertical ? this._y : this._x, currentPos: null, endTime: Date.now(), scrollDelta: 0 };\r\n }\r\n const coord = (isVertical ? (e instanceof TouchEvent) ? Array.from(e.targetTouches)?.find(({ identifier }) => identifier === touchId)?.clientY : e.clientY :\r\n (e instanceof TouchEvent) ? Array.from(e.targetTouches)?.find(({ identifier }) => identifier === touchId)?.clientX : e.clientX),\r\n currentPos = coord * (axisInversion ? -1 : 1),\r\n scrollSize = isVertical ? this.scrollHeight : this.scrollWidth, delta = (inversion ? -1 : 1) * (startClientPos - currentPos),\r\n dp = (isVertical ? this._startPositionY : this._startPositionX) + delta, position = this.isInfinity() ? dp : dp < 0 ? 0 : dp > scrollSize ? scrollSize : dp,\r\n endTime = Date.now(), timestamp = endTime - startTime, scrollDelta = (prevClientPosition === 0 || prevClientPosition === null) ? 0 : prevClientPosition - currentPos,\r\n { v0 } = this.calculateVelocity(offsets, scrollDelta, timestamp);\r\n this.calculateAcceleration(velocities, v0, timestamp);\r\n\r\n return { position, currentPos, endTime, scrollDelta };\r\n }\r\n\r\n private cancelOverscroll() {\r\n if (!this.overscrollEnabled()) {\r\n return;\r\n }\r\n this._overscrollIteration = 0;\r\n }\r\n\r\n private checkOverscrollByAxis(e: Event, pos: number, limit: number) {\r\n const p = Math.abs(pos);\r\n if (p > 0 && p < limit) {\r\n if (e.cancelable) {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n }\r\n this._overscrollIteration = 0;\r\n } else {\r\n if (this._overscrollIteration < OVERSCROLL_START_ITERATION) {\r\n this._overscrollIteration++;\r\n if (e.cancelable) {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private checkOverscroll(e: Event, wheel: boolean = false) {\r\n if (!this._overscrollEnabled || !this.overscrollEnabled()) {\r\n if (e.cancelable) {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n }\r\n return;\r\n }\r\n if (this._overscrollEnabled) {\r\n if (this.isVertical()) {\r\n if (this._overscrollStartIteration < OVERSCROLL_START_ITERATION) {\r\n this._overscrollStartIteration++;\r\n this.checkOverscrollByAxis(e, this._y, this.scrollHeight);\r\n } else {\r\n if (wheel || this._overscrollApplied || this._scrollDirectionValueY > this._scrollDirectionValueX) {\r\n this._overscrollApplied = true;\r\n this.checkOverscrollByAxis(e, this._y, this.scrollHeight);\r\n }\r\n }\r\n } else {\r\n if (this._overscrollStartIteration < OVERSCROLL_START_ITERATION) {\r\n this._overscrollStartIteration++;\r\n this.checkOverscrollByAxis(e, this._x, this.scrollWidth);\r\n } else {\r\n if (wheel || this._overscrollApplied || this._scrollDirectionValueX > this._scrollDirectionValueY) {\r\n this._overscrollApplied = true;\r\n this.checkOverscrollByAxis(e, this._x, this.scrollWidth);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private calculateVelocity(offsets: Array<[number, number]>, delta: number, timestamp: number, indexOffset: number = 10) {\r\n if (offsets.length > MAX_VELOCITIES_LENGTH) {\r\n offsets.shift();\r\n }\r\n offsets.push([delta, timestamp < ANIMATOR_MIN_TIMESTAMP ? ANIMATOR_MIN_TIMESTAMP : timestamp]);\r\n const len = offsets.length, startIndex = len > indexOffset ? len - indexOffset : 0, lastVSign = calculateDirection(offsets),\r\n speedScale = this.scrollingSettings()?.speedScale ?? SPEED_SCALE;\r\n let vSum = 0;\r\n for (let i = startIndex, l = offsets.length; i < l; i++) {\r\n const p0 = offsets[i];\r\n if (lastVSign !== Math.sign(p0[0])) {\r\n continue;\r\n }\r\n\r\n const v0 = (p0[1] !== 0 ? lastVSign * Math.abs(p0[0] / p0[1]) * speedScale : 0);\r\n vSum += Math.sign(v0) * Math.pow(v0, 4) * .003;\r\n }\r\n\r\n const l = Math.min(offsets.length, indexOffset), v0 = l > 0 ? (vSum / l) : 0;\r\n return { v0 };\r\n }\r\n\r\n private calculateAcceleration(velocities: Array<[number, number]>, delta: number, timestamp: number, indexOffset: number = 10) {\r\n if (velocities.length > MAX_VELOCITIES_LENGTH) {\r\n velocities.shift();\r\n }\r\n velocities.push([Math.abs(delta) < MIN_DELTA ? 0 : delta, timestamp < ANIMATOR_MIN_TIMESTAMP ? ANIMATOR_MIN_TIMESTAMP : timestamp]);\r\n const len = velocities.length, startIndex = len > indexOffset ? len - indexOffset : 0;\r\n let aSum = 0, prevV0: [number, number] | undefined, iteration = 0, lastVSign = calculateDirection(velocities);\r\n const mass = this.scrollingSettings()?.mass ?? MASS;\r\n for (let i = startIndex, l = velocities.length; i < l; i++) {\r\n const v00 = prevV0, v01 = velocities[i];\r\n if (lastVSign !== Math.sign(v01[0])) {\r\n continue;\r\n }\r\n if (v00) {\r\n const a0 = timestamp < MAX_VELOCITY_TIMESTAMP ? (v00[1] !== 0 ? (lastVSign * Math.abs(Math.abs(v01[0]) - Math.abs(v00[0]))) / Math.abs(v00[1]) : 0) : .1;\r\n aSum = Math.abs((aSum * mass)) + Math.abs(a0);\r\n prevV0 = v01;\r\n }\r\n prevV0 = v01;\r\n iteration++;\r\n }\r\n\r\n const a0 = aSum * (this.scrollingSettings()?.frictionalForce ?? FRICTION_FORCE);\r\n return { a0: Math.abs(a0) < MIN_ACCELERATION ? 0 : a0 };\r\n }\r\n\r\n stopScrolling(force: boolean = false) {\r\n if (this._isAlignmentAnimation && !force) {\r\n return;\r\n }\r\n this._isAlignmentAnimation = false;\r\n this._animator.stop();\r\n }\r\n\r\n protected move(isVertical: boolean, position: number, blending: boolean = false, userAction: boolean = false, fireUpdate: boolean = true) {\r\n this.scroll({ [isVertical ? TOP : LEFT]: position, behavior: INSTANT, blending, userAction, fireUpdate });\r\n }\r\n\r\n protected moveWithAcceleration(isVertical: boolean, position: number, v0: number, v: number, a0: number, timestamp: number) {\r\n if (a0 !== 0 && timestamp < MAX_VELOCITY_TIMESTAMP) {\r\n const dvSign = Math.sign(v),\r\n mass = this.scrollingSettings()?.mass ?? MASS,\r\n duration = DURATION, maxDuration = this.scrollingSettings()?.maxDuration ?? MAX_DURATION,\r\n maxDist = this.scrollingSettings()?.maxDistance ?? MAX_DIST,\r\n maxDistance = dvSign * maxDist, s = (dvSign * Math.abs((a0 * Math.pow(duration, 2)) * .5) / 10000) / mass,\r\n distance = Math.abs(s) < maxDist ? s : maxDistance, positionWithVelocity = position + (this._inversion ? -1 : 1) * distance,\r\n ad = Math.abs(a0 !== 0 ? Math.sqrt(a0) : 0) * ACCELERATION_SCALE / mass,\r\n aDuration = ad < maxDuration ? ad : maxDuration,\r\n startPosition = isVertical ? this.y : this.x;\r\n this.animate(startPosition, Math.round(positionWithVelocity), aDuration, easeOutQuad, false, true);\r\n } else {\r\n this.alignPosition(true, true);\r\n }\r\n }\r\n\r\n protected normalizeValue(value: number) {\r\n if (this.isInfinity()) {\r\n return value;\r\n }\r\n const isVertical = this.isVertical(),\r\n startOffset = this._normalizeValueFromZero ? 0 : this.startOffset(),\r\n scrollSize = this.scrollable ? ((isVertical ? this.scrollHeight : this.scrollWidth) - this.alignmentEndOffset()) : 0,\r\n result = this.scrollable ? (value <= startOffset ? startOffset : value > scrollSize ? scrollSize : value) : startOffset;\r\n return result;\r\n }\r\n\r\n protected animate(startValue: number, endValue: number, duration = ANIMATION_DURATION, easingFunction: Easing = easeOutQuad, blending: boolean = false,\r\n userAction: boolean = false, alignmentAtComplete: boolean = true, skipOverridedCoordinates: boolean = false, fireUpdate: boolean = true): number {\r\n const isVertical = this.isVertical();\r\n let position = startValue;\r\n this._isAlignmentAnimation = !alignmentAtComplete;\r\n\r\n if (this.hasAnimation() && blending) {\r\n const updatable = this._animator.updateTo(endValue);\r\n if (updatable) {\r\n return this._animator.id;\r\n }\r\n }\r\n\r\n return this._animator.animate({\r\n withDelta: this._service.dynamic && !this.isInfinity(),\r\n startValue,\r\n endValue,\r\n duration,\r\n easingFunction,\r\n getPropValue: () => {\r\n return isVertical ? this._y : this._x;\r\n }, onUpdate: ({ value, timestamp, elapsed }) => {\r\n if (this._isCoordinatesOverrided && !skipOverridedCoordinates) {\r\n this._isCoordinatesOverrided = false;\r\n const currentCoordinate = isVertical ? this._y : this._x, delta = endValue - value;\r\n this.animate(currentCoordinate, currentCoordinate + delta, duration - elapsed, easingFunction, blending, userAction, alignmentAtComplete);\r\n return;\r\n }\r\n const v0 = calculateVelocity(position, value - this._delta, timestamp) ?? this.averageVelocity;\r\n position = value;\r\n if (alignmentAtComplete && !this._isAlignmentAnimation && !skipOverridedCoordinates) {\r\n if (!this.snapIfNecessary(v0)) {\r\n this.move(isVertical, value, false, userAction, fireUpdate);\r\n }\r\n } else {\r\n this.move(isVertical, value, false, userAction, fireUpdate);\r\n }\r\n this._service.update(true);\r\n }, onComplete: ({ value, timestamp }) => {\r\n this._isAlignmentAnimation = false;\r\n const v0 = calculateVelocity(position, value, timestamp);\r\n if (alignmentAtComplete && !this._isAlignmentAnimation && !skipOverridedCoordinates) {\r\n this.snapIfNecessary(v0);\r\n } else {\r\n this.move(isVertical, value, false, userAction, fireUpdate);\r\n }\r\n this._$scrollEnd.next(userAction);\r\n this._service.update(true);\r\n this.onAnimationComplete(value);\r\n },\r\n });\r\n }\r\n\r\n protected getSnappedComponentSize() {\r\n const align = this.snapToItemAlign(), isVertical = this.isVertical(), sd = this.snappingDistance(),\r\n snappingDistance = parseFloatOrPersentageValue(sd),\r\n isPersentageSnappingDistance = isPercentageValue(sd);\r\n let size: number | null = null;\r\n const scrollDirection = this._scrollDirection.get(),\r\n currentPosition = (isVertical ? this.scrollTop : this.scrollLeft) - this._startLayoutOffset,\r\n currentComponentBounds = this._service.getComponentBoundsByIntersectionPosition(currentPosition),\r\n currentComponentSize = isVertical ? currentComponentBounds?.height ?? 0 : currentComponentBounds?.width ?? 0;\r\n switch (align) {\r\n case SnapToItemAligns.START: {\r\n const offset = ((scrollDirection === 1 ? currentComponentSize : 0) - (isPersentageSnappingDistance ? currentComponentSize * snappingDistance : snappingDistance)) * scrollDirection,\r\n componentBounds = this._service.getComponentBoundsByIntersectionPosition(currentPosition + offset);\r\n if (!!componentBounds) {\r\n const { width, height } = componentBounds,\r\n compSize = isVertical ? height : width;\r\n size = compSize;\r\n }\r\n break;\r\n }\r\n case SnapToItemAligns.CENTER: {\r\n const viewportSize = isVertical ? this.viewportBounds().height : this.viewportBounds().width,\r\n offset = (currentComponentSize * .5 - (isPersentageSnappingDistance ? currentComponentSize * snappingDistance : snappingDistance)) * scrollDirection,\r\n actualPos = currentPosition + offset + viewportSize * .5,\r\n maxPos = isVertical ? this.scrollHeight : this.scrollWidth,\r\n pos = Math.min(actualPos, maxPos);\r\n const componentBounds = this._service.getComponentBoundsByIntersectionPosition(pos);\r\n if (!!componentBounds) {\r\n const { width, height } = componentBounds,\r\n compSize = isVertical ? height : width;\r\n size = compSize;\r\n }\r\n break;\r\n }\r\n case SnapToItemAligns.END: {\r\n const viewportSize = isVertical ? this.viewportBounds().height : this.viewportBounds().width,\r\n offset = ((scrollDirection === 1 ? currentComponentSize : 0) - (isPersentageSnappingDistance ? currentComponentSize * snappingDistance : snappingDistance)) * scrollDirection,\r\n actualPos = currentPosition + offset + viewportSize,\r\n maxPos = isVertical ? this.scrollHeight : this.scrollWidth,\r\n pos = Math.min(actualPos, maxPos);\r\n const componentBounds = this._service.getComponentBoundsByIntersectionPosition(pos);\r\n if (!!componentBounds) {\r\n const { width, height } = componentBounds,\r\n compSize = isVertical ? height : width;\r\n size = compSize;\r\n }\r\n break;\r\n }\r\n }\r\n return size;\r\n }\r\n\r\n protected alignPosition(animated: boolean = true, force: boolean = false, fireUpdate: boolean = false) {\r\n if (!this.snapToItem() || (this._isAlignmentAnimation && !force)) {\r\n return false;\r\n }\r\n const scrollDirection = this._scrollDirection.get() || (force ? 1 : 0);\r\n if (scrollDirection === 0) {\r\n return false;\r\n }\r\n const align = this.snapToItemAlign(), isVertical = this.isVertical(),\r\n viewportSize = isVertical ? this.viewportBounds().height : this.viewportBounds().width,\r\n sd = this.snappingDistance(),\r\n snappingDistance = parseFloatOrPersentageValue(sd),\r\n isPersentageSnappingDistance = isPercentageValue(sd);\r\n let position: number | null = null, size: number = 0;\r\n const currentPosition = (isVertical ? this.scrollTop : this.scrollLeft) - this._startLayoutOffset,\r\n currentComponentBounds = this._service.getComponentBoundsByIntersectionPosition(currentPosition),\r\n currentComponentSize = isVertical ? currentComponentBounds?.height ?? 0 : currentComponentBounds?.width ?? 0;\r\n switch (align) {\r\n case SnapToItemAligns.START: {\r\n const offset = ((scrollDirection === 1 ? currentComponentSize : 0) - (isPersentageSnappingDistance ? currentComponentSize * snappingDistance : snappingDistance)) * scrollDirection,\r\n componentBounds = this._service.getComponentBoundsByIntersectionPosition(currentPosition + offset);\r\n if (!!componentBounds) {\r\n const { x, y, width, height } = componentBounds, startOffset = this.startOffset(), alignmentStartOffset = this.alignmentStartOffset(),\r\n componentPosition = isVertical ? y : x;\r\n size = isVertical ? height : width;\r\n const maxPos = (isVertical ? this.scrollHeight : this.scrollWidth) - (startOffset - alignmentStartOffset) + this._startLayoutOffset;\r\n position = componentPosition - (startOffset - alignmentStartOffset) + this._startLayoutOffset;\r\n if (this.isInfinity()) {\r\n if (position < 0 || position > maxPos) {\r\n position = maxPos;\r\n if (isVertical) {\r\n this._y = this.scrollHeight;\r\n } else {\r\n this._x = this.scrollWidth;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n case SnapToItemAligns.CENTER: {\r\n const offset = (currentComponentSize * .5 - (isPersentageSnappingDistance ? currentComponentSize * snappingDistance : snappingDistance)) * scrollDirection,\r\n actualPos = currentPosition + offset + viewportSize * .5,\r\n maxPos = isVertical ? this.scrollHeight : this.scrollWidth,\r\n pos = Math.min(actualPos, maxPos);\r\n const componentBounds = this._service.getComponentBoundsByIntersectionPosition(pos);\r\n if (!!componentBounds) {\r\n const { x, y, width, height } = componentBounds, startOffset = this.startOffset(), alignmentStartOffset = this.alignmentStartOffset(),\r\n componentPosition = isVertical ? y : x;\r\n size = isVertical ? height : width;\r\n const maxPos = (isVertical ? this.scrollHeight : this.scrollWidth) - size * .5 - viewportSize * .5 - (startOffset - alignmentStartOffset) * .5;\r\n position = componentPosition + size * .5 - viewportSize * .5 - (startOffset - alignmentStartOffset) * .5 + this._startLayoutOffset;\r\n if (this.isInfinity()) {\r\n if (position <= 0 || position > maxPos) {\r\n position = maxPos;\r\n if (isVertical) {\r\n this._y = this.scrollHeight;\r\n } else {\r\n this._x = this.scrollWidth;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n case SnapToItemAligns.END: {\r\n const offset = ((scrollDirection === 1 ? currentComponentSize : 0) - (isPersentageSnappingDistance ? currentComponentSize * snappingDistance : snappingDistance)) * scrollDirection,\r\n actualPos = currentPosition + offset + viewportSize,\r\n maxPos = isVertical ? this.scrollHeight : this.scrollWidth,\r\n pos = Math.min(actualPos, maxPos);\r\n const componentBounds = this._service.getComponentBoundsByIntersectionPosition(pos);\r\n if (!!componentBounds) {\r\n const { x, y, width, height } = componentBounds,\r\n componentPosition = isVertical ? y : x;\r\n size = isVertical ? height : width;\r\n position = componentPosition - viewportSize + this._startLayoutOffset;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n const cPos = (isVertical ? this.scrollTop : this.scrollLeft);\r\n\r\n if (position !== null && position !== cPos) {\r\n this.stopScrolling(true);\r\n this.animate(cPos, position, animated ? this.animationParams().snapToItem : 1, easeOutQuad, false, false, false, true, fireUpdate);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n protected checkIntersectionComponent() {\r\n const align = this.snapToItemAlign(), isVertical = this.isVertical(),\r\n viewportSize = isVertical ? this.viewportBounds().height : this.viewportBounds().width;\r\n let componentId: Id | null = null;\r\n const currentPosition = (isVertical ? this.scrollTop : this.scrollLeft) - this._startLayoutOffset;\r\n switch (align) {\r\n case SnapToItemAligns.START: {\r\n const maxPos = isVertical ? this.scrollHeight : this.scrollWidth,\r\n componentBounds = this._service.getComponentBoundsByIntersectionPosition(currentPosition, maxPos);\r\n if (!!componentBounds) {\r\n const { id } = componentBounds;\r\n componentId = id;\r\n }\r\n break;\r\n }\r\n case SnapToItemAligns.CENTER: {\r\n const actualPos = currentPosition + viewportSize * .5,\r\n maxPos = isVertical ? this.scrollHeight : this.scrollWidth,\r\n pos = Math.min(actualPos, maxPos);\r\n const componentBounds = this._service.getComponentBoundsByIntersectionPosition(pos, maxPos);\r\n if (!!componentBounds) {\r\n const { id } = componentBounds;\r\n componentId = id;\r\n }\r\n break;\r\n }\r\n case SnapToItemAligns.END: {\r\n const actualPos = currentPosition + viewportSize,\r\n maxPos = isVertical ? this.scrollHeight : this.scrollWidth,\r\n pos = Math.min(actualPos, maxPos);\r\n const componentBounds = this._service.getComponentBoundsByIntersectionPosition(pos, maxPos);\r\n if (!!componentBounds) {\r\n const { id } = componentBounds;\r\n componentId = id;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n if (componentId !== this._intersectionComponentId && componentId !== null) {\r\n this._service.setIntersectionElementBySnapToItemAlign(componentId);\r\n }\r\n this._intersectionComponentId = componentId;\r\n }\r\n\r\n protected onAnimationComplete(position: number) { }\r\n\r\n fireScroll(userAction: boolean = false) {\r\n this._$updateScrollBar.next();\r\n this.emitScrollableEvent();\r\n this.fireScrollEvent(userAction);\r\n }\r\n\r\n scrollLimits(value?: number | undefined, silent: boolean = false): boolean {\r\n if (!this.isInfinity()) {\r\n const x = value !== undefined ? value : this._x, y = value !== undefined ? value : this._y, isVertical = this.isVertical();\r\n if (isVertical) {\r\n const yy = this.normalizeValue(y);\r\n if (y !== yy) {\r\n if (silent) {\r\n this._y = yy;\r\n this.refreshCoordinate(this._x, this._y);\r\n } else {\r\n this.y = yy;\r\n }\r\n return true;\r\n }\r\n } else {\r\n const xx = this.normalizeValue(x);\r\n if (x !== xx) {\r\n if (silent) {\r\n this._x = xx;\r\n this.refreshCoordinate(this._x, this._y);\r\n } else {\r\n this.x = xx;\r\n }\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n scroll(params: IScrollToParams) {\r\n const posX = params.x || params.left || 0,\r\n posY = params.y || params.top || 0,\r\n userAction = params.userAction ?? false,\r\n snap = params.snap ?? true,\r\n normalize = params.normalize ?? true,\r\n ease = params.ease || easeOutQuad,\r\n fireUpdate = params.fireUpdate ?? true,\r\n behavior = params.behavior ?? INSTANT,\r\n blending = params.blending ?? true,\r\n force = params.force ?? false,\r\n duration = params.duration ?? ANIMATION_DURATION,\r\n isVertical = this.isVertical();\r\n\r\n const x = this.normalizeValue(posX),\r\n y = this.normalizeValue(posY),\r\n prevX = this._x,\r\n prevY = this._y;\r\n if (behavior === AUTO || behavior === SMOOTH) {\r\n if (isVertical) {\r\n if (prevY !== y) {\r\n return this.animate(prevY, y, duration, ease, blending, userAction);\r\n }\r\n } else {\r\n if (prevX !== x) {\r\n return this.animate(prevX, x, duration, ease, blending, userAction);\r\n }\r\n }\r\n } else {\r\n if (isVertical) {\r\n if (this._y !== y || force) {\r\n this.setY(y, snap, normalize);\r\n this.emitScrollableEvent();\r\n if (fireUpdate) {\r\n this.fireScrollEvent(userAction);\r\n }\r\n }\r\n } else {\r\n if (this._x !== x || force) {\r\n this.setX(x, snap, normalize);\r\n this.emitScrollableEvent();\r\n if (fireUpdate) {\r\n this.fireScrollEvent(userAction);\r\n }\r\n }\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n protected emitScrollableEvent() {\r\n if (!!this.cdkScrollable) {\r\n this.cdkScrollable.getElementRef()?.nativeElement?.dispatchEvent(SCROLL_EVENT);\r\n }\r\n }\r\n\r\n refreshCoordinate(x: number, y: number) {\r\n const scrollContent = this.scrollContent()?.nativeElement as HTMLDivElement;\r\n scrollContent.style.transform = matrix3d((this._inversion ? 1 : -1) * x * (this._horizontalAxisInvertion() ? -1 : 1) + (this.isVertical() ? 0 : this._startLayoutOffset),\r\n (this._inversion ? 1 : -1) * y + (this.isVertical() ? this._startLayoutOffset : 0));\r\n }\r\n\r\n protected fireScrollEvent(userAction: boolean) {\r\n this._$scroll.next(userAction);\r\n }\r\n\r\n protected onDragStart() { }\r\n\r\n reset(offset: number = 0) {\r\n this.stopScrolling();\r\n this.move(this.isVertical(), offset);\r\n }\r\n\r\n stopAnimation(id: number) {\r\n this._animator.stop(id);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._animator) {\r\n this._animator.dispose();\r\n }\r\n }\r\n}","export const DEFAULT_THICKNESS = 6,\r\n DEFAULT_SIZE = 6,\r\n PX = 'px',\r\n WIDTH = 'width',\r\n HEIGHT = 'height',\r\n OPACITY = 'opacity',\r\n OPACITY_0 = '0',\r\n OPACITY_1 = '1',\r\n TRANSITION = 'transition',\r\n NONE = 'none',\r\n TRANSITION_FADE_IN = `${OPACITY} 500ms ease-out`;\r\n","import { Component, computed, effect, ElementRef, inject, input, output, Signal, signal, TemplateRef, viewChild } from '@angular/core';\r\nimport { combineLatest, debounceTime, filter, fromEvent, of, startWith, Subject, switchMap, tap } from 'rxjs';\r\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\r\nimport { CnScrollView, SCROLL_VIEW_INVERSION } from '../cn-scroll-view';\r\nimport { IScrollBarDragEvent, IScrollBarTemplateContext } from './interfaces';\r\nimport {\r\n DEFAULT_OVERLAPPING_SCROLLBAR, DEFAULT_SCROLLBAR_INTERACTIVE, LEFT, POSITION, POSITION_ABSOLUTE,\r\n POSITION_RELATIVE, RIGHT, SIZE_100_PERSENT, SIZE_AUTO, UNSET,\r\n} from '../../const';\r\nimport {\r\n DEFAULT_SIZE, DEFAULT_THICKNESS, HEIGHT, NONE, OPACITY, OPACITY_0, OPACITY_1, PX, TRANSITION, TRANSITION_FADE_IN, WIDTH,\r\n} from './const';\r\nimport { SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, SCROLL_VIEW_OVERSCROLL_ENABLED } from '../cn-scroll-view/const';\r\nimport { CnScrollBarService } from './cn-scroll-bar.service';\r\nimport { CnScrollBarPublicService } from './cn-scroll-bar-public.service';\r\nimport { ScrollbarStates } from './enums';\r\nimport { GradientColorPositions, TextDirections } from '../../../common';\r\n\r\n/**\r\n * ScrollBar component.\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroll-bar/cn-scroll-bar.component.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Component({\r\n selector: 'cn-scroll-bar',\r\n providers: [\r\n { provide: SCROLL_VIEW_INVERSION, useValue: true },\r\n { provide: SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, useValue: false },\r\n { provide: SCROLL_VIEW_OVERSCROLL_ENABLED, useValue: false },\r\n CnScrollBarService,\r\n CnScrollBarPublicService,\r\n ],\r\n standalone: false,\r\n templateUrl: './cn-scroll-bar.component.html',\r\n styleUrl: './cn-scroll-bar.component.scss'\r\n})\r\nexport class CnScrollBarComponent extends CnScrollView {\r\n protected _defaultRenderer = viewChild<TemplateRef<any>>('defaultRenderer');\r\n\r\n protected _scrollBarService = inject(CnScrollBarService);\r\n\r\n private _apiService = inject(CnScrollBarPublicService);\r\n\r\n readonly loading = input<boolean>(false);\r\n\r\n readonly onDrag = output<IScrollBarDragEvent>();\r\n\r\n readonly onDragEnd = output<IScrollBarDragEvent>();\r\n\r\n readonly thumbGradientPositions = input<GradientColorPositions>([0, 0]);\r\n\r\n readonly size = input<number>(DEFAULT_SIZE);\r\n\r\n readonly thickness = input<number>(DEFAULT_THICKNESS);\r\n\r\n readonly scrollbarMinSize = input<number>(0);\r\n\r\n readonly prepared = input<boolean>(false);\r\n\r\n readonly interactive = input<boolean>(DEFAULT_SCROLLBAR_INTERACTIVE);\r\n\r\n readonly overlapping = input<boolean>(DEFAULT_OVERLAPPING_SCROLLBAR);\r\n\r\n readonly show = input<boolean>(false);\r\n\r\n readonly params = input<{ [propName: string]: any } | null>({});\r\n\r\n readonly renderer = input<TemplateRef<any> | null>(null);\r\n\r\n readonly thumbRenderer = signal<TemplateRef<any> | null>(this._defaultRenderer() ?? null);\r\n\r\n protected readonly hoverState = signal<boolean>(false);\r\n\r\n protected readonly pressedState = signal<boolean>(false);\r\n\r\n protected readonly templateContext!: Signal<IScrollBarTemplateContext>;\r\n\r\n protected readonly styles: Signal<{ [sName: string]: any }>;\r\n\r\n protected readonly thumbWidth: Signal<number>;\r\n\r\n protected readonly thumbHeight: Signal<number>;\r\n\r\n private _$scrollingCancel = new Subject<void>();\r\n protected readonly $scrollingCancel = this._$scrollingCancel.asObservable();\r\n\r\n private _elementRef = inject(ElementRef);\r\n\r\n constructor() {\r\n super();\r\n\r\n this.templateContext = computed(() => {\r\n const context: IScrollBarTemplateContext = {\r\n api: this._apiService,\r\n width: this.thumbWidth(),\r\n height: this.thumbHeight(),\r\n fillPositions: this.thumbGradientPositions(),\r\n params: this.params() ?? {},\r\n };\r\n return context;\r\n });\r\n\r\n const $renderer = toObservable(this.renderer).pipe(\r\n startWith(null),\r\n ),\r\n $defaultRenderer = toObservable(this._defaultRenderer);\r\n\r\n combineLatest([$renderer, $defaultRenderer]).pipe(\r\n takeUntilDestroyed(),\r\n switchMap(([renderer, defaultRenderer]) => {\r\n return of((renderer ?? defaultRenderer) ?? null);\r\n }),\r\n tap(v => {\r\n this.thumbRenderer.set(v);\r\n }),\r\n ).subscribe();\r\n\r\n const $prepared = toObservable(this.prepared);\r\n $prepared.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n tap(() => {\r\n this.scrollLimits();\r\n this.refreshCoordinate(this._x, this._y);\r\n this.fireScrollEvent(false);\r\n }),\r\n ).subscribe();\r\n\r\n this.thumbWidth = computed(() => {\r\n return this.isVertical() ? this.thickness() : this.size();\r\n });\r\n\r\n this.thumbHeight = computed(() => {\r\n return this.isVertical() ? this.size() : this.thickness();\r\n });\r\n\r\n const $wheel = this.$wheel;\r\n $wheel.pipe(\r\n takeUntilDestroyed(),\r\n debounceTime(100),\r\n tap(() => {\r\n const event = this.createDragEvent(true);\r\n if (!!event) {\r\n this.onDragEnd.emit(event);\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n const $pointerDown = fromEvent<PointerEvent>(this._elementRef.nativeElement, 'pointerdown').pipe(\r\n takeUntilDestroyed(),\r\n ), $pointerUp = fromEvent<PointerEvent>(this._elementRef.nativeElement, 'pointerup').pipe(\r\n takeUntilDestroyed(),\r\n ), $docPointerUp = fromEvent<PointerEvent>(document, 'pointerup').pipe(\r\n takeUntilDestroyed()\r\n ), $pointerEnter = fromEvent<PointerEvent>(this._elementRef.nativeElement, 'pointerenter').pipe(\r\n takeUntilDestroyed(),\r\n ), $pointerLeave = fromEvent<PointerEvent>(this._elementRef.nativeElement, 'pointerleave').pipe(\r\n takeUntilDestroyed(),\r\n );\r\n\r\n $pointerDown.pipe(\r\n takeUntilDestroyed(),\r\n tap(e => {\r\n this.pressedState.set(this.thumbHit(e.clientX, e.clientY));\r\n }),\r\n ).subscribe();\r\n\r\n combineLatest([$docPointerUp, $pointerUp]).pipe(\r\n takeUntilDestroyed(),\r\n tap(() => {\r\n this.pressedState.set(false);\r\n }),\r\n ).subscribe();\r\n\r\n $pointerEnter.pipe(\r\n takeUntilDestroyed(),\r\n tap(() => {\r\n this.hoverState.set(true);\r\n }),\r\n ).subscribe();\r\n\r\n $pointerLeave.pipe(\r\n takeUntilDestroyed(),\r\n tap(() => {\r\n this.hoverState.set(false);\r\n }),\r\n ).subscribe();\r\n\r\n effect(() => {\r\n const pressed = this.pressedState(), hover = this.hoverState();\r\n if (pressed) {\r\n this._scrollBarService.state = ScrollbarStates.PRESSED;\r\n return;\r\n } else if (hover) {\r\n this._scrollBarService.state = ScrollbarStates.HOVER;\r\n return;\r\n }\r\n this._scrollBarService.state = ScrollbarStates.NORMAL;\r\n return;\r\n });\r\n\r\n effect(() => {\r\n this.totalSize = this.size();\r\n });\r\n\r\n effect(() => {\r\n this._interactive = this.interactive();\r\n });\r\n\r\n this.styles = computed(() => {\r\n const show = this.show(), sizePropName = this.isVertical() ? WIDTH : HEIGHT;\r\n return {\r\n [sizePropName]: `${show ? this.thickness() : 0}${PX}`,\r\n [OPACITY]: show ? OPACITY_1 : OPACITY_0, [TRANSITION]: show ? TRANSITION_FADE_IN : NONE,\r\n };\r\n });\r\n\r\n effect(() => {\r\n const el = this._elementRef.nativeElement;\r\n if (!!el) {\r\n const overlapping = this.overlapping(), langTextDir = this.langTextDir();\r\n el.style[POSITION] = overlapping ? POSITION_ABSOLUTE : POSITION_RELATIVE;\r\n el.style[LEFT] = overlapping && langTextDir === TextDirections.RTL ? '0' : UNSET;\r\n el.style[RIGHT] = overlapping && langTextDir === TextDirections.LTR ? '0' : UNSET;\r\n el.style[WIDTH] = overlapping ? SIZE_AUTO : SIZE_100_PERSENT;\r\n }\r\n });\r\n\r\n this.$scroll.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n const event = this.createDragEvent(v);\r\n if (!!event) {\r\n this.onDrag.emit(event);\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n const $scrollEnd = this.$scrollEnd;\r\n $scrollEnd.pipe(\r\n takeUntilDestroyed(),\r\n tap(userAction => {\r\n const event = this.createDragEvent(userAction);\r\n if (!!event) {\r\n this.onDragEnd.emit(event);\r\n }\r\n }),\r\n ).subscribe();\r\n }\r\n\r\n private createDragEvent(userAction: boolean) {\r\n const isVertical = this.isVertical(), scrollSize = isVertical ? this.scrollHeight : this.scrollWidth,\r\n scrollPosition = isVertical ? this.y : this.x,\r\n startOffset = this.startOffset(), endOffset = this.endOffset(),\r\n scrollContent = this.scrollContent()?.nativeElement as HTMLElement,\r\n scrollViewport = this.scrollViewport()?.nativeElement as HTMLDivElement;\r\n if (!!scrollViewport && !!scrollContent) {\r\n const contentSize = isVertical ? scrollContent.offsetHeight : scrollContent.offsetWidth,\r\n viewportSize = isVertical ? scrollViewport.offsetHeight : scrollViewport.offsetWidth,\r\n offsetSize = (scrollSize !== 0 ? (startOffset / scrollSize) : 0),\r\n positionSize = (scrollSize !== 0 ? (scrollPosition / scrollSize) : 0),\r\n maxSize = 1 - offsetSize,\r\n pos = (positionSize - offsetSize);\r\n const event: IScrollBarDragEvent = {\r\n position: pos / maxSize,\r\n min: scrollSize !== 0 ? (startOffset / scrollSize) : 0,\r\n max: scrollSize !== 0 ? ((viewportSize - endOffset - contentSize) / scrollSize) : 0,\r\n animation: !this._isMoving,\r\n userAction,\r\n };\r\n return event;\r\n }\r\n return null;\r\n }\r\n\r\n private thumbHit(x: number, y: number): boolean {\r\n const thumb = this.scrollContent()?.nativeElement;\r\n if (!!thumb) {\r\n const { x: tX, y: tY, width: tWidth, height: tHeight } = thumb.getBoundingClientRect();\r\n if ((x >= tX && x <= tX + tWidth) && (y >= tY && y <= tY + tHeight)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n click(event: PointerEvent | MouseEvent) {\r\n this._scrollBarService.click(event);\r\n }\r\n}\r\n","@let grab = grabbing();\r\n<div #scrollViewport class=\"track\" part=\"scrollbar-track\" [ngStyle]=\"styles()\" [ngClass]=\"{grabbing: grab}\">\r\n <div #scrollContent class=\"thumb\" part=\"scrollbar-thumb\" [class.horizontal]=\"!isVertical()\"\r\n (pointerdown)=\"click($event)\">\r\n <ng-container [ngTemplateOutlet]=\"thumbRenderer()\" [ngTemplateOutletContext]=\"templateContext()\" />\r\n </div>\r\n</div>\r\n\r\n<ng-template #defaultRenderer let-api=\"api\" let-width=\"width\" let-height=\"height\" let-fillPositions=\"fillPositions\"\r\n let-params=\"params\">\r\n <div class=\"shape\" part=\"scrollbar-thumb__shape\" [style.width.px]=\"width\" [style.height.px]=\"height\"></div>\r\n</ng-template>","import { Component, computed, effect, ElementRef, input, output, Signal, signal, TemplateRef, viewChild, ViewChild } from '@angular/core';\r\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\r\nimport { combineLatest, debounceTime, filter, from, Subject, switchMap, take, tap } from 'rxjs';\r\nimport { ScrollBox } from './utils';\r\nimport { CnScrollBarComponent } from \"../cn-scroll-bar/cn-scroll-bar.component\";\r\nimport {\r\n BEHAVIOR_INSTANT, DEFAULT_MAX_MOTION_BLUR, DEFAULT_MOTION_BLUR, DEFAULT_MOTION_BLUR_ENABLED, DEFAULT_OVERLAPPING_SCROLLBAR, DEFAULT_SCROLLBAR_ENABLED,\r\n DEFAULT_SCROLLBAR_INTERACTIVE, DEFAULT_SCROLLBAR_MIN_SIZE, DEFAULT_SCROLLBAR_THICKNESS, LEFT_PROP_NAME, PX, SCROLLER_SCROLL, TOP_PROP_NAME,\r\n} from '../../const';\r\nimport { IScrollToParams, CnScrollView, SCROLL_VIEW_INVERSION } from '../cn-scroll-view';\r\nimport { IScrollBarDragEvent } from '../cn-scroll-bar/interfaces';\r\nimport { SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, SCROLL_VIEW_OVERSCROLL_ENABLED } from '../cn-scroll-view/const';\r\nimport { GradientColorPositions, Id, ISize } from '../../../common';\r\n\r\nconst TOP = 'top',\r\n LEFT = 'left',\r\n INSTANT = 'instant',\r\n MOTION_BLUR = 'motion-blur';\r\n\r\nexport const SCROLL_EVENT = new Event(SCROLLER_SCROLL);\r\n\r\n/**\r\n * The scroller for the CnVirtualList item component\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroller/cn-scroller.component.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Component({\r\n selector: 'cn-scroller',\r\n providers: [\r\n { provide: SCROLL_VIEW_INVERSION, useValue: false },\r\n { provide: SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, useValue: true },\r\n { provide: SCROLL_VIEW_OVERSCROLL_ENABLED, useValue: true },\r\n ],\r\n standalone: false,\r\n templateUrl: './cn-scroller.component.html',\r\n styleUrl: './cn-scroller.component.scss'\r\n})\r\nexport class CnScrollerComponent extends CnScrollView {\r\n @ViewChild('scrollBar', { read: CnScrollBarComponent })\r\n readonly scrollBar: CnScrollBarComponent | undefined;\r\n\r\n readonly filter = viewChild<ElementRef<SVGFEGaussianBlurElement>>('filter');\r\n\r\n readonly onScrollbarVisible = output<boolean>();\r\n\r\n readonly scrollbarEnabled = input<boolean>(DEFAULT_SCROLLBAR_ENABLED);\r\n\r\n readonly scrollbarInteractive = input<boolean>(DEFAULT_SCROLLBAR_INTERACTIVE);\r\n\r\n readonly focusedElement = input<Id | null>(null);\r\n\r\n readonly overlappingScrollbar = input<boolean>(DEFAULT_OVERLAPPING_SCROLLBAR);\r\n\r\n readonly content = input<HTMLElement>();\r\n\r\n readonly loading = input<boolean>(false);\r\n\r\n readonly classes = input<{ [cName: string]: boolean }>({});\r\n\r\n readonly scrollbarMinSize = input<number>(DEFAULT_SCROLLBAR_MIN_SIZE);\r\n\r\n readonly scrollbarThickness = input<number>(DEFAULT_SCROLLBAR_THICKNESS);\r\n\r\n readonly scrollbarThumbRenderer = input<TemplateRef<any> | null>(null);\r\n\r\n readonly scrollbarThumbParams = input<{ [propName: string]: any } | null>(null);\r\n\r\n readonly motionBlur = input<number | 'disabled'>(DEFAULT_MOTION_BLUR);\r\n\r\n readonly maxMotionBlur = input<number>(DEFAULT_MAX_MOTION_BLUR);\r\n\r\n readonly motionBlurEnabled = input<boolean>(DEFAULT_MOTION_BLUR_ENABLED);\r\n\r\n public readonly actualClasses: Signal<{ [cName: string]: boolean }>;\r\n\r\n public readonly containerClasses: Signal<{ [cName: string]: boolean }>;\r\n\r\n public readonly thumbGradientPositions = signal<GradientColorPositions>([0, 0]);\r\n\r\n public readonly thumbSize = signal<number>(0);\r\n\r\n public readonly scrollbarShow = signal<boolean>(false);\r\n\r\n public readonly preparedSignal = signal<boolean>(false);\r\n\r\n public readonly listStyles = signal<{ perspectiveOrigin: string }>({ perspectiveOrigin: 'center' });\r\n\r\n private _scrollBox = new ScrollBox();\r\n\r\n get host() {\r\n return this.scrollViewport()?.nativeElement;\r\n }\r\n\r\n private _$scrollbarScroll = new Subject<boolean>();\r\n readonly $scrollbarScroll = this._$scrollbarScroll.asObservable();\r\n\r\n private _prepared = false;\r\n set prepared(v: boolean) {\r\n if (this._prepared !== v) {\r\n this._prepared = v;\r\n this.preparedSignal.set(v);\r\n }\r\n }\r\n\r\n protected override setX(x: number, snap: boolean = true, normalize: boolean = true) {\r\n if (x !== undefined && !Number.isNaN(x)) {\r\n this.updateDirection(x, this._x);\r\n\r\n this._x = this._actualX = x;\r\n\r\n const overridden = normalize ? this.normalizeScrollSize() : false;\r\n\r\n this.refreshCoordinate(this._x, this._y);\r\n\r\n if (!overridden) {\r\n this.measureVelocity();\r\n }\r\n\r\n this.updateScrollBar();\r\n\r\n this.recalculatePerspective();\r\n\r\n if (snap) {\r\n this.checkIntersectionComponent();\r\n }\r\n }\r\n }\r\n\r\n protected override setY(y: number, snap: boolean = true, normalize: boolean = true) {\r\n if (y !== undefined && !Number.isNaN(y)) {\r\n this.updateDirection(y, this._y);\r\n\r\n this._y = this._actualY = y;\r\n\r\n const overridden = normalize ? this.normalizeScrollSize() : false;\r\n\r\n this.refreshCoordinate(this._x, this._y);\r\n\r\n if (!overridden) {\r\n this.measureVelocity();\r\n }\r\n\r\n this.updateScrollBar();\r\n\r\n this.recalculatePerspective();\r\n\r\n if (snap) {\r\n this.checkIntersectionComponent();\r\n }\r\n }\r\n }\r\n\r\n override set startLayoutOffset(v: number) {\r\n if (this._startLayoutOffset !== v) {\r\n this._startLayoutOffset = v;\r\n\r\n this.refreshCoordinate(this._x, this._y);\r\n\r\n this.recalculatePerspective();\r\n }\r\n }\r\n override get startLayoutOffset() { return this._startLayoutOffset; }\r\n\r\n readonly viewInitialized = signal<boolean>(false);\r\n\r\n private _isScrollbarUserAction: boolean = false;\r\n get isScrollbarUserAction() {\r\n return this._isScrollbarUserAction;\r\n }\r\n\r\n protected _$resizeViewport = new Subject<ISize>();\r\n readonly $resizeViewport = this._$resizeViewport.asObservable();\r\n\r\n protected _$resizeContent = new Subject<ISize>();\r\n readonly $resizeContent = this._$resizeContent.asObservable();\r\n\r\n protected _filterId: string;\r\n\r\n protected _filter: string;\r\n\r\n constructor() {\r\n super();\r\n\r\n this._filterId = `${this._service.id}-${MOTION_BLUR}`;\r\n this._filter = `url(#${this._filterId})`;\r\n\r\n this.$resizeViewport.pipe(\r\n takeUntilDestroyed(),\r\n debounceTime(0),\r\n tap(() => {\r\n this.snapIfNeed();\r\n }),\r\n switchMap(() => {\r\n return this.$scroll.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n take(1),\r\n tap(() => {\r\n this.snapIfNeed();\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n const $filter = toObservable(this.filter),\r\n $motionBlur = toObservable(this.motionBlur),\r\n $maxMotionBlur = toObservable(this.maxMotionBlur),\r\n $motionBlurEnabled = toObservable(this.motionBlurEnabled),\r\n $isVertical = toObservable(this.isVertical);\r\n\r\n const $scrollbarScroll = this.$scrollbarScroll;\r\n $scrollbarScroll.pipe(\r\n takeUntilDestroyed(),\r\n debounceTime(50),\r\n tap(() => {\r\n this.dropVelocity();\r\n this.fireScrollEvent(false);\r\n }),\r\n ).subscribe();\r\n\r\n const $averageVelocity = this.$averageVelocity;\r\n combineLatest([$isVertical, $averageVelocity, $filter, $motionBlurEnabled, $motionBlur, $maxMotionBlur]).pipe(\r\n takeUntilDestroyed(),\r\n filter(([, , f, e, mb]) => !!f && (!!e && mb !== 0)),\r\n tap(([isVertical, v, filter, , mb, mbMax]) => {\r\n const _v = v * (mb as number), value = _v > mbMax ? mbMax : _v;\r\n filter!.nativeElement.setStdDeviation(isVertical ? 0 : v * value, isVertical ? v * value : 0);\r\n }),\r\n debounceTime(50),\r\n tap(([, , filter, ,]) => {\r\n filter!.nativeElement.setStdDeviation(0, 0);\r\n }),\r\n ).subscribe();\r\n\r\n const $prepare = toObservable(this.preparedSignal);\r\n $prepare.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n tap(() => {\r\n this.updateScrollBarHandler(true, false, true);\r\n }),\r\n ).subscribe();\r\n\r\n const $startOffset = toObservable(this.startOffset),\r\n $endOffset = toObservable(this.endOffset),\r\n $scrollbarMinSize = toObservable(this.scrollbarMinSize),\r\n $thumbSize = toObservable(this.thumbSize);\r\n\r\n from([$endOffset, $startOffset, $thumbSize, $scrollbarMinSize, $isVertical]).pipe(\r\n takeUntilDestroyed(),\r\n debounceTime(0),\r\n tap(() => {\r\n this.updateScrollBar();\r\n }),\r\n ).subscribe();\r\n\r\n const $updateScrollBar = this.$updateScrollBar;\r\n\r\n $updateScrollBar.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n debounceTime(0),\r\n tap(() => {\r\n this.updateScrollBarHandler(!this._isScrollbarUserAction);\r\n }),\r\n ).subscribe();\r\n\r\n effect(() => {\r\n const grabbing = this.grabbing();\r\n this._service.grabbing = grabbing;\r\n });\r\n\r\n this.actualClasses = computed(() => {\r\n const classes = this.classes(), direction = this.direction(), filtered = this.motionBlurEnabled();\r\n return { ...classes, [direction]: true, grabbing: this.grabbing(), filtered };\r\n });\r\n\r\n this.containerClasses = computed(() => {\r\n const { width: contentWidth, height: contentHeight } = this.contentBounds(),\r\n { width, height } = this.viewportBounds(),\r\n overlappingScrollbar = this.overlappingScrollbar(),\r\n isVertical = this.isVertical(),\r\n viewportSize = isVertical ? height : width,\r\n contentSize = isVertical ? contentHeight : contentWidth;\r\n return { [this.direction()]: true, grabbing: this.grabbing(), enabled: this.scrollbarEnabled(), scrollable: contentSize > viewportSize, overlapping: overlappingScrollbar };\r\n });\r\n\r\n effect(() => {\r\n const viewInitialized = this.viewInitialized();\r\n if (viewInitialized) {\r\n this.updateScrollBarHandler();\r\n }\r\n });\r\n }\r\n\r\n private recalculatePerspective() {\r\n const isVertical = this.isVertical(),\r\n inverted = this._horizontalAxisInvertion(),\r\n scrollSize = (isVertical ? this.scrollTop : this.scrollLeft) - this._startLayoutOffset,\r\n maCnScrollSize = isVertical ? this.scrollHeight : this.scrollWidth,\r\n { width, height } = this.viewportBounds();\r\n this.listStyles.set({\r\n perspectiveOrigin: `${isVertical ? width * .5 : (inverted ? ((maCnScrollSize - scrollSize) + width * .5 - this.startOffset()) : (scrollSize + width * .5))}${PX} ${isVertical ? (inverted ? ((maCnScrollSize - scrollSize) + height * .5) : (scrollSize + height * .5)) : height * .5}${PX}`\r\n });\r\n }\r\n\r\n protected override onResizeViewport() {\r\n const viewport = this.scrollViewport()?.nativeElement;\r\n if (!!viewport) {\r\n const bounds: ISize = { width: viewport.offsetWidth, height: viewport.offsetHeight }, b = this.viewportBounds();\r\n if (bounds.width === b.width && bounds.height === b.height) {\r\n return;\r\n }\r\n this.viewportBounds.set(bounds);\r\n this.updateScrollBar();\r\n this._$resizeViewport.next(bounds);\r\n this.recalculatePerspective();\r\n }\r\n }\r\n\r\n protected override onResizeContent(value: number | null = null) {\r\n const content = this.scrollContent()?.nativeElement;\r\n if (!!content) {\r\n const isVertical = this.isVertical(), bounds: ISize = {\r\n width: isVertical ? content.offsetWidth : (value ?? content.offsetWidth),\r\n height: isVertical ? (value ?? content.offsetHeight) : content.offsetHeight\r\n }, b = this.contentBounds();\r\n if (value === null && bounds.width === b.width && bounds.height === b.height) {\r\n return;\r\n }\r\n this.contentBounds.set(bounds);\r\n this.updateScrollBar();\r\n this._$resizeContent.next(bounds);\r\n this.recalculatePerspective();\r\n }\r\n }\r\n\r\n private updateScrollBarHandler(update: boolean = false, blending: boolean = true, fireUpdate: boolean = false) {\r\n const direction = this.direction(),\r\n isVertical = this.isVertical(),\r\n viewportBounds = this.viewportBounds(),\r\n contentBounds = this.contentBounds(),\r\n startOffset = this.startOffset(),\r\n endOffset = this.endOffset(),\r\n {\r\n thumbSize,\r\n thumbPosition,\r\n thumbGradientPositions,\r\n } = this._scrollBox.calculateScroll({\r\n direction,\r\n viewportWidth: viewportBounds.width,\r\n viewportHeight: viewportBounds.height,\r\n contentWidth: contentBounds.width,\r\n contentHeight: contentBounds.height,\r\n startOffset,\r\n endOffset,\r\n positionX: this._x,\r\n positionY: this._y,\r\n minSize: this.scrollbarMinSize(),\r\n });\r\n\r\n this.thumbGradientPositions.set(thumbGradientPositions);\r\n this.thumbSize.set(thumbSize);\r\n const actualThumbPosition = thumbPosition < startOffset ? startOffset : thumbPosition;\r\n if (update) {\r\n this.scrollBar?.scroll({\r\n [isVertical ? TOP_PROP_NAME : LEFT_PROP_NAME]: actualThumbPosition, fireUpdate, behavior: BEHAVIOR_INSTANT,\r\n userAction: false, blending,\r\n });\r\n }\r\n this.scrollbarShow.set(this.scrollable && this.scrollbarEnabled());\r\n };\r\n\r\n ngAfterViewInit() {\r\n this.viewInitialized.set(true);\r\n }\r\n\r\n override tick() {\r\n super.tick();\r\n\r\n this.scrollBar?.tick();\r\n }\r\n\r\n private updateScrollBar() {\r\n this._$updateScrollBar.next();\r\n }\r\n\r\n refreshScrollbar() {\r\n this.updateScrollBarHandler(true, false, false);\r\n }\r\n\r\n protected override onDragStart() {\r\n super.onDragStart();\r\n\r\n this.stopScrollbar();\r\n\r\n this._isScrollbarUserAction = false;\r\n\r\n this.updateScrollBar();\r\n }\r\n\r\n override reset() {\r\n super.reset();\r\n this.totalSize = 0;\r\n this.onResizeContent(0);\r\n this.stopScrollbar();\r\n this.refresh(true, true);\r\n this.prepared = false;\r\n }\r\n\r\n refresh(fireUpdate: boolean = false, updateScrollbar: boolean = true) {\r\n if (updateScrollbar) {\r\n this.stopScrolling();\r\n }\r\n\r\n this.scrollLimits();\r\n\r\n this.refreshCoordinate(this._x, this._y);\r\n\r\n if (updateScrollbar) {\r\n this.updateScrollBarHandler(false);\r\n this.emitScrollableEvent();\r\n }\r\n\r\n if (fireUpdate) {\r\n this.fireScrollEvent(false);\r\n }\r\n }\r\n\r\n snapIfNeed(animated = true, fireUpdate: boolean = true) {\r\n this.snapWithInitialForceIfNecessary(null, animated, true, fireUpdate);\r\n }\r\n\r\n startScrollTo() {\r\n this.stopScrollbar();\r\n this.stopScrolling(true);\r\n this._scrollDirection.clear();\r\n this.dropVelocity();\r\n this._isScrollsTo = true;\r\n }\r\n\r\n finishedScrollTo() {\r\n this._isScrollsTo = false;\r\n this._scrollDirection.clear();\r\n this.dropVelocity();\r\n this.checkIntersectionComponent();\r\n this.fireScrollEvent(true);\r\n this.snapWithInitialForceIfNecessary(null, false, true, false);\r\n }\r\n\r\n scrollTo(params: IScrollToParams): number {\r\n const userAction = params?.userAction ?? true;\r\n if (userAction) {\r\n this._isScrollbarUserAction = false;\r\n this.scrollBar?.stopScrolling();\r\n }\r\n return this.scroll({ ...params, userAction: userAction });\r\n }\r\n\r\n stopScrollbar() {\r\n if (!!this.scrollBar) {\r\n this.scrollBar.stopScrolling();\r\n this.alignPosition();\r\n this.dropVelocity();\r\n }\r\n }\r\n\r\n private dropVelocity() {\r\n this._velocities = [0];\r\n this._$velocity.next(0);\r\n this._$averageVelocity.next(0);\r\n }\r\n\r\n protected override stopMoving() {\r\n super.stopMoving();\r\n this.dropVelocity();\r\n }\r\n\r\n protected override onAnimationComplete(position: number) {\r\n this.dropVelocity();\r\n this._$scrollEnd.next(false);\r\n }\r\n\r\n onScrollBarDragHandler(event: IScrollBarDragEvent) {\r\n const { position, min, max, userAction } = event;\r\n this._isScrollbarUserAction = userAction;\r\n if (!userAction) {\r\n return;\r\n }\r\n this._$scrollbarScroll.next(true);\r\n this.stopScrolling(true);\r\n const isVertical = this.isVertical(),\r\n {\r\n position: absolutePosition,\r\n } = this._scrollBox.getScrollPositionByScrollBar({\r\n scrollSize: isVertical ? this.scrollHeight : this.scrollWidth,\r\n position,\r\n });\r\n\r\n this.scrollTo({\r\n [isVertical ? TOP : LEFT]: absolutePosition, behavior: INSTANT,\r\n blending: false, userAction: true, fireUpdate: true,\r\n });\r\n this.emitScrollableEvent();\r\n this._service.update(false);\r\n }\r\n\r\n onScrollBarDragEndHandler(event: IScrollBarDragEvent) {\r\n const { position, min, max, userAction } = event;\r\n this._isScrollbarUserAction = userAction;\r\n if (!userAction) {\r\n return;\r\n }\r\n this._isScrollbarUserAction = false;\r\n this.dropVelocity();\r\n this._service.update(false);\r\n const isEdge = this.fireUpdateIfEdgesDetected(position, min, max, true, true);\r\n if (!isEdge) {\r\n this.alignPosition();\r\n }\r\n this._scrollDirection.clear();\r\n this._$scrollbarScroll.next(true);\r\n this.fireScrollEvent(true);\r\n }\r\n\r\n private fireUpdateIfEdgesDetected(position: number, min: number = 0, max: number = 1, animation: boolean = false, userAction: boolean = false) {\r\n if (userAction && animation) {\r\n if (position <= min) {\r\n this._service.scrollToStart();\r\n return true;\r\n } else if (position >= max) {\r\n this._service.scrollToEnd();\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}","@let filtered = motionBlurEnabled();\r\n<div localeSensitive [langTextDir]=\"langTextDir()\" [listDir]=\"direction()\" class=\"cnvl__container\"\r\n [ngClass]=\"containerClasses()\">\r\n <svg part=\"viewport\" width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <filter [id]=\"_filterId\">\r\n <feGaussianBlur #filter></feGaussianBlur>\r\n </filter>\r\n <foreignObject xmlns=\"http://www.w3.org/1999/xhtml\" width=\"100%\" height=\"100%\" class=\"cnvl__viewport\">\r\n <div class=\"cnvl__scroller-wrapper\" [class.filtered]=\"filtered\" [style.filter]=\"filtered ? _filter : 'unset'\">\r\n <div cdkScrollable #scrollViewport part=\"scroller\" class=\"cnvl__scroller\">\r\n <div #scrollContent [attr.aria-orientation]=\"direction()\"\r\n [attr.aria-activedescendant]=\"focusedElement()\" tabindex=\"0\" part=\"list\" class=\"cnvl__list\"\r\n [ngClass]=\"actualClasses()\" [ngStyle]=\"listStyles()\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n </foreignObject>\r\n </svg>\r\n @if (scrollbarEnabled()) {\r\n @let prepared = preparedSignal();\r\n <cn-scroll-bar #scrollBar [direction]=\"direction()\" [langTextDir]=\"langTextDir()\" [size]=\"thumbSize()\" [renderer]=\"scrollbarThumbRenderer()\"\r\n [thickness]=\"scrollbarThickness()\" [params]=\"scrollbarThumbParams()\" [loading]=\"loading()\" [overlapping]=\"overlappingScrollbar()\"\r\n [thumbGradientPositions]=\"thumbGradientPositions()\" [prepared]=\"prepared\" [interactive]=\"scrollbarInteractive()\"\r\n [show]=\"scrollbarShow() && scrollbarEnabled() && prepared\" [startOffset]=\"startOffset()\" [langTextDir]=\"langTextDir()\"\r\n [endOffset]=\"endOffset()\" [overscrollEnabled]=\"overscrollEnabled()\" [scrollBehavior]=\"scrollBehavior()\"\r\n [scrollbarMinSize]=\"scrollbarMinSize()\" (onDrag)=\"onScrollBarDragHandler($event)\"\r\n (onDragEnd)=\"onScrollBarDragEndHandler($event)\"></cn-scroll-bar>\r\n }\r\n</div>","import { PrerenderCache } from \"../types/cache\";\r\n\r\nexport enum PrerenderTrackBoxEvents {\r\n RESIZE = 'resize',\r\n};\r\n\r\nexport type PrerenderTrackBoxResizeHandler = (cache: PrerenderCache) => void;\r\n\r\nexport type PrerenderTrackBoxHandlers = PrerenderTrackBoxResizeHandler;\r\n","import { ComponentRef, ViewContainerRef } from \"@angular/core\";\r\nimport { IRenderVirtualListItem, IVirtualListCollection, IVirtualListItem } from \"../../../models\";\r\nimport { CMap } from \"../../../../common/utils/cmap\";\r\nimport { PrerenderCache } from \"../types/cache\";\r\nimport { BaseVirtualListItemComponent } from \"../../cn-list-item/base\";\r\nimport { IPrerenderTrackBoxRefreshParams } from \"../interfaces\";\r\nimport { DEFAULT_DIVIDES, DEFAULT_DYNAMIC_SIZE, DEFAULT_ITEM_SIZE, DEFAULT_SNAP_TO_ITEM_ALIGN, TRACK_BY_PROPERTY_NAME } from \"../../../const\";\r\nimport { Component$1 } from \"../../../models/component.model\";\r\nimport { PrerenderTrackBoxEvents, PrerenderTrackBoxHandlers } from \"../events\";\r\nimport { Id, ISize } from \"../../../../common\";\r\nimport { EventEmitter } from \"../../../../common/utils\";\r\n\r\nconst createItemData = (data: IVirtualListItem, isVertical: boolean, bounds: ISize, boundsSize: number,\r\n dynamic: boolean, divides: number, itemSize: number, id: Id, index: number): IRenderVirtualListItem => {\r\n const w = (isVertical ? (bounds.width / divides) : itemSize) as any,\r\n h = (isVertical ? itemSize : (bounds.height / divides)) as any;\r\n return {\r\n index,\r\n id,\r\n measures: {\r\n position: 0,\r\n scrollSize: 0,\r\n maCnScrollSize: 0,\r\n size: itemSize,\r\n row: {\r\n size: itemSize,\r\n odd: false,\r\n even: false\r\n },\r\n boundsSize,\r\n absoluteStartPosition: 0,\r\n absoluteStartPositionPercent: 0,\r\n absoluteEndPosition: 0,\r\n absoluteEndPositionPercent: 0,\r\n delta: 0,\r\n x: 0,\r\n y: 0,\r\n transformedX: 0,\r\n transformedY: 0,\r\n z: 0,\r\n rotationX: 0,\r\n rotationY: 0,\r\n rotationZ: 0,\r\n scaleX: 0,\r\n scaleY: 0,\r\n scaleZ: 0,\r\n width: w,\r\n height: h,\r\n minWidth: 0,\r\n minHeight: 0,\r\n maxWidth: Number.MAX_SAFE_INTEGER,\r\n maxHeight: Number.MAX_SAFE_INTEGER,\r\n scrollDirection: 0,\r\n },\r\n data,\r\n previouseData: data,\r\n nextData: data,\r\n config: {\r\n new: false,\r\n odd: false,\r\n even: false,\r\n collapsable: false,\r\n sticky: 0,\r\n selectable: false,\r\n snap: false,\r\n snapped: false,\r\n snappedOut: false,\r\n isVertical,\r\n dynamic,\r\n isSnappingMethodAdvanced: false,\r\n divides: 1,\r\n tabIndex: 0,\r\n opacity: 1,\r\n zIndex: \"0\",\r\n snapToItem: false,\r\n snapToItemAlign: DEFAULT_SNAP_TO_ITEM_ALIGN,\r\n layoutOffset: 0,\r\n isFirst: false,\r\n isLast: false,\r\n fullSize: false,\r\n layoutIndexOffset: 0,\r\n totalItems: 0,\r\n inverted: false,\r\n },\r\n }\r\n}\r\n\r\n/**\r\n * PrerenderTrackBox\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/prerender-container/core/prerender-track-box.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport class PrerenderTrackBox extends EventEmitter<PrerenderTrackBoxEvents, PrerenderTrackBoxHandlers> {\r\n private _map: CMap<Id, ISize> | null = new CMap<Id, ISize>();\r\n\r\n private _items: IVirtualListCollection | null = new Array<IVirtualListItem>();\r\n\r\n private _container: ViewContainerRef | null = null;\r\n\r\n private _componentClass: Component$1<BaseVirtualListItemComponent> | null = null;\r\n\r\n private _components: Array<ComponentRef<BaseVirtualListItemComponent>> | null = new Array<ComponentRef<BaseVirtualListItemComponent>>();\r\n\r\n private _componentsResizeObserver: ResizeObserver | null = new ResizeObserver(() => {\r\n const components = this._components;\r\n if (!!components) {\r\n for (const comp of components) {\r\n const { width, height } = comp.instance.getBounds();\r\n this._map?.set(comp.instance.itemId!, { width, height });\r\n }\r\n }\r\n this.dispatch(PrerenderTrackBoxEvents.RESIZE, (this._map?.toObject() || {}));\r\n });\r\n\r\n private _active: boolean = true;\r\n get active() { return this._active; }\r\n\r\n private refresh(componentClass: Component$1<BaseVirtualListItemComponent>, bounds: ISize, params: IPrerenderTrackBoxRefreshParams) {\r\n const isVertical = params.isVertical ?? true,\r\n dynamic = params.dynamic ?? DEFAULT_DYNAMIC_SIZE,\r\n divides = params.divides ?? DEFAULT_DIVIDES,\r\n itemsSize = params.itemSize ?? DEFAULT_ITEM_SIZE,\r\n trackBy = params.trackBy ?? TRACK_BY_PROPERTY_NAME,\r\n itemRenderer = params.itemRenderer,\r\n boundsSize = isVertical ? bounds.height : bounds.width,\r\n items = this._items, components = this._components,\r\n resizeObserver = this._componentsResizeObserver;\r\n\r\n if (!items || !components || !this._container) {\r\n return;\r\n }\r\n let totalSize = 0, j = 0;\r\n for (let i = items.length - 1, l = 0; i >= l; i--) {\r\n if (totalSize > boundsSize) {\r\n break;\r\n }\r\n const item = items[i];\r\n if (!!item) {\r\n const id = item[trackBy], index = items.length - i - 1;\r\n let comp: ComponentRef<BaseVirtualListItemComponent>;\r\n if (components.length <= j) {\r\n comp = this._container.createComponent(componentClass);\r\n comp.instance.renderer = itemRenderer;\r\n if (!!resizeObserver) {\r\n resizeObserver.observe(comp.instance.element);\r\n }\r\n components.push(comp);\r\n } else {\r\n comp = components[j];\r\n }\r\n comp.instance.item = createItemData(item, isVertical, bounds, boundsSize, dynamic, divides, itemsSize, id, index);\r\n comp.instance.show();\r\n const { width, height } = comp.instance.getBounds(),\r\n w = isVertical ? width : width < itemsSize ? itemsSize : width,\r\n h = isVertical ? height < itemsSize ? itemsSize : height : height;\r\n totalSize += isVertical ? h : w;\r\n j++;\r\n }\r\n }\r\n }\r\n\r\n create(container: ViewContainerRef) {\r\n this._container = container;\r\n }\r\n\r\n reset(componentClass: Component$1<BaseVirtualListItemComponent>, items: IVirtualListCollection,\r\n bounds: ISize, params: IPrerenderTrackBoxRefreshParams) {\r\n this._items = items;\r\n this._componentClass = componentClass;\r\n this.refresh(componentClass, bounds, params);\r\n }\r\n\r\n getCache(): PrerenderCache {\r\n return !!this._map ? this._map.toObject() : {};\r\n }\r\n\r\n clear() {\r\n if (!!this._map) {\r\n this._map.clear();\r\n }\r\n }\r\n\r\n on() {\r\n if (this._active) {\r\n return;\r\n }\r\n\r\n this._active = true;\r\n const components = this._components;\r\n if (!!components) {\r\n const observer = this._componentsResizeObserver;\r\n for (const comp of components) {\r\n if (!!comp && !!observer) {\r\n observer.observe(comp.instance.element);\r\n }\r\n }\r\n }\r\n }\r\n\r\n off() {\r\n if (!this._active) {\r\n return;\r\n }\r\n\r\n this._active = false;\r\n if (!!this._componentsResizeObserver) {\r\n this._componentsResizeObserver?.disconnect();\r\n }\r\n }\r\n\r\n override dispose() {\r\n super.dispose();\r\n\r\n if (!!this._map) {\r\n this._map.clear();\r\n this._map = null;\r\n }\r\n\r\n if (!!this._items) {\r\n this._items = null;\r\n }\r\n\r\n if (!!this._componentClass) {\r\n this._componentClass = null;\r\n }\r\n\r\n if (!!this._container) {\r\n this._container = null;\r\n }\r\n\r\n if (!!this._components) {\r\n this._components = null;\r\n }\r\n\r\n if (!!this._componentsResizeObserver) {\r\n this._componentsResizeObserver.disconnect();\r\n this._componentsResizeObserver = null;\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { CnVirtualListItemComponent } from '../../../cn-list-item/cn-virtual-list-item.component';\r\nimport {\r\n DEFAULT_ZINDEX, DISPLAY_BLOCK, DISPLAY_NONE, HIDDEN_ZINDEX, PX, SIZE_AUTO,\r\n VISIBILITY_HIDDEN, VISIBILITY_VISIBLE,\r\n} from '../../../../const';\r\nimport { ID, POSITION, POSITION_ZERO } from '../../../cn-list-item/const';\r\n\r\n/**\r\n * CnPrerenderVirtualListItemComponent\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-prerender-container/components/cn-prerender-list-item/cn-prerender-list-item.component.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Component({\r\n selector: 'cn-prerender-virtual-list-item',\r\n templateUrl: '../../../cn-list-item/cn-virtual-list-item.component.html',\r\n styleUrls: ['../../../cn-list-item/cn-virtual-list-item.component.scss', './cn-prerender-list-item.component.scss'],\r\n host: {\r\n 'class': 'cnvl__item',\r\n 'role': 'listitem',\r\n },\r\n standalone: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CnPrerenderVirtualListItemComponent extends CnVirtualListItemComponent {\r\n protected override update() {\r\n const data = this._data, regular = this.regular, length = this._regularLength, el = this._elementRef.nativeElement,\r\n itemElement = this._item()?.nativeElement, containerElement = this._container()?.nativeElement;\r\n if (!!data && !!el && !!itemElement && !!containerElement) {\r\n const styles = el.style, itemElementStyles = itemElement.style;\r\n el.setAttribute(ID, `${data.id}`);\r\n styles.zIndex = data.config.zIndex;\r\n if (regular) {\r\n el.setAttribute(POSITION, POSITION_ZERO);\r\n } else {\r\n el.setAttribute(POSITION, `${data.config.isVertical ? data.measures.y : data.measures.x}`);\r\n }\r\n if (data.config.divides > 1) {\r\n styles.height = data.config.isVertical ? `${data.measures.row.size}${PX}` : `${data.measures.height}${PX}`;\r\n styles.width = data.config.isVertical ? `${data.measures.width}${PX}` : `${data.measures.row.size}${PX}`;\r\n itemElementStyles.minWidth = styles.minWidth = `${data.measures.minWidth}${PX}`;\r\n itemElementStyles.maxWidth = styles.maxWidth = `${data.measures.maxWidth}${PX}`;\r\n itemElementStyles.minHeight = styles.minHeight = `${data.measures.minHeight}${PX}`;\r\n itemElementStyles.maxHeight = styles.maxHeight = `${data.measures.maxHeight}${PX}`;\r\n \r\n itemElementStyles.height = data.config.isVertical ? data.config.dynamic ? SIZE_AUTO : `${data.measures.height}${PX}` : regular ? length : `${data.measures.height}${PX}`;\r\n itemElementStyles.width = data.config.isVertical ? regular ? length : `${data.measures.width}${PX}` : data.config.dynamic ? SIZE_AUTO : `${data.measures.width}${PX}`;\r\n } else {\r\n styles.height = data.config.isVertical ? data.config.dynamic ? SIZE_AUTO : `${data.measures.height}${PX}` : regular ? length : `${data.measures.height}${PX}`;\r\n styles.width = data.config.isVertical ? regular ? length : `${data.measures.width}${PX}` : data.config.dynamic ? SIZE_AUTO : `${data.measures.width}${PX}`;\r\n styles.minWidth = `${data.measures.minWidth}${PX}`;\r\n styles.maxWidth = `${data.measures.maxWidth}${PX}`;\r\n styles.minHeight = `${data.measures.minHeight}${PX}`;\r\n styles.maxHeight = `${data.measures.maxHeight}${PX}`;\r\n }\r\n // styles.height = data.config.isVertical ? data.config.dynamic ? SIZE_AUTO : `${data.measures.height}${PX}` : regular ? length : SIZE_100_PERSENT;\r\n // styles.width = data.config.isVertical ? regular ? length : SIZE_100_PERSENT : data.config.dynamic ? SIZE_AUTO : `${data.measures.width}${PX}`;\r\n } else {\r\n el.removeAttribute(ID);\r\n }\r\n }\r\n\r\n override show() {\r\n const el = this._elementRef.nativeElement as HTMLElement,\r\n styles = el.style;\r\n styles.zIndex = this._data?.config?.zIndex ?? DEFAULT_ZINDEX;\r\n if (this.regular) {\r\n if (styles.display === DISPLAY_BLOCK) {\r\n return;\r\n }\r\n\r\n styles.display = DISPLAY_BLOCK;\r\n } else {\r\n if (styles.visibility === VISIBILITY_VISIBLE) {\r\n return;\r\n }\r\n\r\n styles.visibility = VISIBILITY_VISIBLE;\r\n }\r\n }\r\n\r\n override hide() {\r\n const el = this._elementRef.nativeElement,\r\n styles = el.style;\r\n styles.zIndex = HIDDEN_ZINDEX;\r\n if (this.regular) {\r\n if (styles.display === DISPLAY_NONE) {\r\n return;\r\n }\r\n\r\n styles.display = DISPLAY_NONE;\r\n } else {\r\n if (styles.visibility === VISIBILITY_HIDDEN) {\r\n return;\r\n }\r\n\r\n styles.visibility = VISIBILITY_HIDDEN;\r\n }\r\n }\r\n}","import { ChangeDetectionStrategy, Component, computed, input, Signal, signal, ViewChild } from '@angular/core';\r\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\r\nimport { combineLatest, from, tap } from 'rxjs';\r\nimport { BaseScrollView } from '../../../cn-scroll-view/base/base-scroll-view.component';\r\nimport { SCROLL_VIEW_INVERSION } from '../../../cn-scroll-view';\r\nimport { BEHAVIOR_INSTANT, DEFAULT_SCROLLBAR_ENABLED, LEFT_PROP_NAME, TOP_PROP_NAME } from '../../../../const';\r\nimport { CnScrollBarComponent } from '../../../cn-scroll-bar/cn-scroll-bar.component';\r\nimport { ScrollBox } from '../../../cn-scroller/utils';\r\nimport { SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, SCROLL_VIEW_OVERSCROLL_ENABLED } from '../../../cn-scroll-view/const';\r\n\r\n/**\r\n * CnPrerenderScrollerComponent\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-prerender-container/components/cn-prerender-scroller/cn-prerender-scroller.component.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Component({\r\n selector: 'cn-prerender-scroller',\r\n templateUrl: './cn-prerender-scroller.component.html',\r\n styleUrl: '../../../cn-scroller/cn-scroller.component.scss',\r\n providers: [\r\n { provide: SCROLL_VIEW_INVERSION, useValue: false },\r\n { provide: SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, useValue: true },\r\n { provide: SCROLL_VIEW_OVERSCROLL_ENABLED, useValue: false },\r\n ],\r\n standalone: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CnPrerenderScrollerComponent extends BaseScrollView {\r\n @ViewChild('scrollBar', { read: CnScrollBarComponent })\r\n scrollBar: CnScrollBarComponent | undefined;\r\n\r\n scrollbarEnabled = input<boolean>(DEFAULT_SCROLLBAR_ENABLED);\r\n\r\n classes = input<{ [cName: string]: boolean }>({});\r\n\r\n actualClasses: Signal<{ [cName: string]: boolean }>;\r\n\r\n containerClasses = signal<{ [cName: string]: boolean }>({});\r\n\r\n thumbSize = signal<number>(0);\r\n\r\n scrollbarShow = signal<boolean>(false);\r\n\r\n override set x(v: number) {\r\n if (v !== undefined && !Number.isNaN(v)) {\r\n this._x = this._actualX = v;\r\n\r\n this.updateScrollBar();\r\n }\r\n }\r\n override get x() { return this._x; }\r\n\r\n override set y(v: number) {\r\n if (v !== undefined && !Number.isNaN(v)) {\r\n this._y = this._actualY = v;\r\n\r\n this.updateScrollBar();\r\n }\r\n }\r\n override get y() { return this._y; }\r\n\r\n protected override onResizeViewport() {\r\n const viewport = this.scrollViewport()?.nativeElement;\r\n if (viewport) {\r\n this.viewportBounds.set({ width: viewport.offsetWidth, height: viewport.offsetHeight });\r\n this.updateScrollBar();\r\n }\r\n }\r\n\r\n protected override onResizeContent() {\r\n const content = this.scrollContent()?.nativeElement;\r\n if (content) {\r\n this.contentBounds.set({ width: content.offsetWidth, height: content.offsetHeight });\r\n this.updateScrollBar();\r\n }\r\n }\r\n\r\n private _scrollBox = new ScrollBox();\r\n\r\n constructor() {\r\n super();\r\n\r\n this.actualClasses = computed(() => {\r\n const classes = this.classes(), direction = this.direction();\r\n return { ...classes, [direction]: true };\r\n });\r\n\r\n const $contentBounds = toObservable(this.contentBounds),\r\n $viewportBounds = toObservable(this.viewportBounds),\r\n $isVertical = toObservable(this.isVertical),\r\n $direction = toObservable(this.direction),\r\n $scrollbarEnabled = toObservable(this.scrollbarEnabled);\r\n\r\n combineLatest([$direction, $scrollbarEnabled, $isVertical, $contentBounds, $viewportBounds]).pipe(\r\n takeUntilDestroyed(),\r\n tap(([direction, scrollbarEnabled]) => {\r\n this.containerClasses.set({ [direction]: true, enabled: scrollbarEnabled, scrollable: scrollbarEnabled });\r\n }),\r\n ).subscribe();\r\n\r\n const $startOffset = toObservable(this.startOffset),\r\n $endOffset = toObservable(this.endOffset),\r\n $thumbSize = toObservable(this.thumbSize);\r\n\r\n from([$endOffset, $startOffset, $thumbSize, $isVertical]).pipe(\r\n takeUntilDestroyed(),\r\n tap(() => {\r\n this.updateScrollBar();\r\n }),\r\n ).subscribe();\r\n\r\n const $updateScrollBar = this.$updateScrollBar;\r\n\r\n $updateScrollBar.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(() => {\r\n this.updateScrollBarHandler(true);\r\n }),\r\n ).subscribe();\r\n }\r\n\r\n private updateScrollBarHandler(update: boolean = false) {\r\n const direction = this.direction(),\r\n isVertical = this.isVertical(),\r\n startOffset = this.startOffset(),\r\n endOffset = this.endOffset(),\r\n scrollContent = this.scrollContent()?.nativeElement as HTMLElement,\r\n scrollViewport = this.scrollViewport()?.nativeElement as HTMLDivElement,\r\n {\r\n thumbSize,\r\n thumbPosition,\r\n } = this._scrollBox.calculateScroll({\r\n direction,\r\n viewportWidth: scrollViewport.offsetWidth, viewportHeight: scrollViewport.offsetHeight,\r\n contentWidth: scrollContent.offsetWidth, contentHeight: scrollContent.offsetHeight,\r\n startOffset,\r\n endOffset,\r\n positionX: this._x,\r\n positionY: this._y,\r\n minSize: 1,\r\n });\r\n\r\n this.thumbSize.set(thumbSize);\r\n if (update) {\r\n this.scrollBar?.scroll({\r\n [isVertical ? TOP_PROP_NAME : LEFT_PROP_NAME]: thumbPosition, fireUpdate: false, behavior: BEHAVIOR_INSTANT,\r\n userAction: false, blending: true,\r\n });\r\n }\r\n this.scrollbarShow.set(this.scrollable);\r\n }\r\n\r\n protected updateScrollBar() {\r\n this._$updateScrollBar.next();\r\n }\r\n}","<div localeSensitive [langTextDir]=\"langTextDir()\" [listDir]=\"direction()\" class=\"cnvl__container\"\r\n [ngClass]=\"containerClasses()\">\r\n <div #scrollViewport part=\"scroller\" class=\"cnvl__scroller\">\r\n <div #scrollContent part=\"list\" class=\"cnvl__list\" [ngClass]=\"actualClasses()\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>","import {\r\n ChangeDetectionStrategy, Component, DestroyRef, effect, ElementRef, inject, input, OnDestroy, signal, TemplateRef, ViewChild,\r\n ViewContainerRef, ViewEncapsulation,\r\n} from \"@angular/core\";\r\nimport { takeUntilDestroyed, toObservable } from \"@angular/core/rxjs-interop\";\r\nimport { combineLatest, filter, Observable, Subject, Subscription, tap } from \"rxjs\";\r\nimport {\r\n CLASS_LIST_HORIZONTAL, CLASS_LIST_VERTICAL, DEFAULT_DIRECTION, DEFAULT_DIVIDES, DEFAULT_DYNAMIC_SIZE, DEFAULT_ITEM_SIZE,\r\n DEFAULT_SCROLLBAR_ENABLED, PX, TRACK_BY_PROPERTY_NAME,\r\n} from \"../../../../const\";\r\nimport { IVirtualListCollection } from \"../../../../models\";\r\nimport { PrerenderCache } from \"../../types/cache\";\r\nimport { BaseVirtualListItemComponent } from \"../../../cn-list-item/base\";\r\nimport { Component$1 } from \"../../../../models/component.model\";\r\nimport { PrerenderTrackBox } from \"../../core\";\r\nimport { PrerenderTrackBoxEvents } from \"../../events\";\r\nimport { CnPrerenderVirtualListItemComponent } from \"../cn-prerender-list-item/cn-prerender-list-item.component\";\r\nimport { Direction } from \"../../../../types\";\r\nimport { ISize } from \"../../../../../common\";\r\nimport { toggleClassName } from \"../../../../../common/utils\";\r\n\r\n/**\r\n * CnPrerenderList\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-prerender-container/components/cn-prerender-list/cn-prerender-list.component.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Component({\r\n selector: 'cn-prerender-list',\r\n templateUrl: './cn-prerender-list.component.html',\r\n styleUrls: ['../../../../cn-virtual-list.component.scss', './cn-prerender-list.component.scss'],\r\n host: {\r\n 'style': 'position: relative;'\r\n },\r\n standalone: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.ShadowDom,\r\n})\r\nexport class CnPrerenderList implements OnDestroy {\r\n @ViewChild('renderersContainer', { read: ViewContainerRef })\r\n private _listContainerRef: ViewContainerRef | undefined;\r\n\r\n enabled = input<boolean>(false);\r\n\r\n direction = input<Direction>(DEFAULT_DIRECTION);\r\n\r\n isVertical = input<boolean>(true);\r\n\r\n scrollbarEnabled = input<boolean>(DEFAULT_SCROLLBAR_ENABLED);\r\n\r\n startOffset = input<number>(0);\r\n\r\n endOffset = input<number>(0);\r\n\r\n bounds = input.required<ISize>();\r\n\r\n dynamic = input<boolean>(DEFAULT_DYNAMIC_SIZE);\r\n\r\n itemSize = input<number>(DEFAULT_ITEM_SIZE);\r\n\r\n trackBy = input<string>(TRACK_BY_PROPERTY_NAME);\r\n\r\n divides = input<number>(DEFAULT_DIVIDES);\r\n\r\n itemRenderer = input<TemplateRef<any>>();\r\n\r\n itemComponentClass = input<Component$1<BaseVirtualListItemComponent>>(CnPrerenderVirtualListItemComponent);\r\n\r\n protected _items = signal<IVirtualListCollection | null>(null);\r\n\r\n protected readonly classes = signal<{ [cName: string]: boolean }>({ prepared: true });\r\n\r\n private _$render = new Subject<PrerenderCache>();\r\n $render = this._$render.asObservable();\r\n\r\n private _$componentResize = new Subject<PrerenderCache>();\r\n protected $componentResize = this._$componentResize.asObservable();\r\n\r\n private _trackBox: PrerenderTrackBox | null = new PrerenderTrackBox();\r\n\r\n private _onTrackBoxResizeHandler = (cache: PrerenderCache) => {\r\n this._$componentResize.next(cache);\r\n };\r\n\r\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n protected $isVertical: Observable<boolean>;\r\n\r\n protected $items: Observable<IVirtualListCollection | null>;\r\n\r\n protected $bounds: Observable<ISize>;\r\n\r\n get active() { return this._trackBox?.active ?? false; }\r\n\r\n private _activated: boolean = false;\r\n\r\n private _subscriptions = new Array<Subscription>();\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n constructor() {\r\n this.$isVertical = toObservable(this.isVertical);\r\n this.$items = toObservable(this._items);\r\n this.$bounds = toObservable(this.bounds);\r\n\r\n effect(() => {\r\n const enabled = this.enabled();\r\n if (enabled) {\r\n this.activate();\r\n } else {\r\n this.deactivate();\r\n }\r\n });\r\n }\r\n\r\n activate() {\r\n if (this._activated) {\r\n return;\r\n }\r\n this._activated = true;\r\n\r\n this._trackBox!.addEventListener(PrerenderTrackBoxEvents.RESIZE, this._onTrackBoxResizeHandler);\r\n\r\n this._subscriptions.push(this.$isVertical.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(v => {\r\n const el = this._elementRef.nativeElement;\r\n toggleClassName(el, v ? CLASS_LIST_VERTICAL : CLASS_LIST_HORIZONTAL, [v ? CLASS_LIST_HORIZONTAL : CLASS_LIST_VERTICAL]);\r\n }),\r\n ).subscribe());\r\n\r\n this._subscriptions.push(this.$bounds.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n filter(v => !!v),\r\n tap(({ width, height }) => {\r\n const el = this._elementRef.nativeElement;\r\n el.style.width = `${width}${PX}`;\r\n el.style.height = `${height}${PX}`;\r\n }),\r\n ).subscribe());\r\n\r\n this._subscriptions.push(combineLatest([this.$bounds, this.$items]).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n filter(([b, i]) => !!b && !!i),\r\n tap(([bounds, items]) => {\r\n if (this.active && !!this._trackBox && !!items) {\r\n this._trackBox.reset(this.itemComponentClass(), items, bounds, {\r\n itemRenderer: this.itemRenderer(),\r\n dynamic: this.dynamic(),\r\n divides: this.divides(),\r\n itemSize: this.itemSize(),\r\n isVertical: this.isVertical(),\r\n trackBy: this.trackBy(),\r\n });\r\n }\r\n }),\r\n ).subscribe());\r\n\r\n const $componentResize = this.$componentResize;\r\n this._subscriptions.push($componentResize.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(cache => {\r\n this._$render.next(cache);\r\n }),\r\n ).subscribe());\r\n }\r\n\r\n deactivate() {\r\n if (!this._activated) {\r\n return;\r\n }\r\n this._activated = false;\r\n\r\n this.off();\r\n\r\n if (!!this._trackBox) {\r\n this._trackBox!.removeEventListener(PrerenderTrackBoxEvents.RESIZE, this._onTrackBoxResizeHandler);\r\n }\r\n\r\n const subscriptions = this._subscriptions;\r\n for (const subscr of subscriptions) {\r\n if (!subscr.closed) {\r\n subscr.unsubscribe();\r\n }\r\n }\r\n this._subscriptions = [];\r\n }\r\n\r\n clear() {\r\n if (!!this._trackBox) {\r\n this._trackBox.clear();\r\n }\r\n }\r\n\r\n on(items: IVirtualListCollection | null = null) {\r\n if (!!this._trackBox) {\r\n this._trackBox.on();\r\n this._items.set(items);\r\n }\r\n }\r\n\r\n off() {\r\n if (!!this._trackBox) {\r\n this._trackBox.off();\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this._trackBox!.create(this._listContainerRef!);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.dispose();\r\n }\r\n\r\n dispose() {\r\n this._subscriptions = [];\r\n\r\n if (!!this._trackBox) {\r\n this._trackBox.dispose();\r\n this._trackBox = null;\r\n }\r\n }\r\n}","<cn-prerender-scroller #scroller class=\"cnvl__list-scroller\" [classes]=\"classes()\" [direction]=\"direction()\"\r\n [scrollbarEnabled]=\"scrollbarEnabled()\" [startOffset]=\"startOffset()\" [endOffset]=\"endOffset()\">\r\n <ng-container #renderersContainer></ng-container>\r\n</cn-prerender-scroller>","import {\r\n ChangeDetectionStrategy, Component, input, TemplateRef, viewChild, ViewEncapsulation,\r\n} from \"@angular/core\";\r\nimport { takeUntilDestroyed, toObservable } from \"@angular/core/rxjs-interop\";\r\nimport { filter, Observable, switchMap } from \"rxjs\";\r\nimport {\r\n DEFAULT_DIRECTION, DEFAULT_DIVIDES, DEFAULT_DYNAMIC_SIZE, DEFAULT_ITEM_SIZE, DEFAULT_SCROLLBAR_ENABLED, TRACK_BY_PROPERTY_NAME,\r\n} from \"../../const\";\r\nimport { IVirtualListCollection } from \"../../models\";\r\nimport { Direction } from \"../../types\";\r\nimport { CnPrerenderList } from \"./components/cn-prerender-list/cn-prerender-list.component\";\r\nimport { PrerenderCache } from \"./types\";\r\nimport { ISize } from \"../../../common\";\r\n\r\n/**\r\n * CnPrerenderContainer\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-prerender-container/cn-prerender-container.component.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Component({\r\n selector: 'cn-prerender-container',\r\n templateUrl: './cn-prerender-container.component.html',\r\n styleUrls: ['../../cn-virtual-list.component.scss', './cn-prerender-container.component.scss'],\r\n host: {\r\n 'style': 'position: relative;'\r\n },\r\n standalone: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.ShadowDom,\r\n})\r\nexport class CnPrerenderContainer {\r\n private _list = viewChild<CnPrerenderList>('list');\r\n\r\n enabled = input<boolean>(false);\r\n\r\n direction = input<Direction>(DEFAULT_DIRECTION);\r\n\r\n isVertical = input<boolean>(true);\r\n\r\n scrollbarEnabled = input<boolean>(DEFAULT_SCROLLBAR_ENABLED);\r\n\r\n startOffset = input<number>(0);\r\n\r\n endOffset = input<number>(0);\r\n\r\n bounds = input.required<ISize>();\r\n\r\n dynamic = input<boolean>(DEFAULT_DYNAMIC_SIZE);\r\n\r\n itemSize = input<number>(DEFAULT_ITEM_SIZE);\r\n\r\n trackBy = input<string>(TRACK_BY_PROPERTY_NAME);\r\n\r\n divides = input<number>(DEFAULT_DIVIDES);\r\n\r\n itemRenderer = input<TemplateRef<any>>();\r\n\r\n readonly $render: Observable<PrerenderCache>;\r\n\r\n get active() {\r\n return this._list()?.active ?? false;\r\n }\r\n\r\n constructor() {\r\n const $list = toObservable(this._list);\r\n\r\n this.$render = $list.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n switchMap(v => v.$render),\r\n );\r\n }\r\n\r\n clear() {\r\n const list = this._list();\r\n if (!!list) {\r\n list.clear();\r\n }\r\n }\r\n\r\n on(items: IVirtualListCollection | null = null) {\r\n const list = this._list();\r\n if (!!list) {\r\n list.on(items);\r\n }\r\n }\r\n\r\n off() {\r\n const list = this._list();\r\n if (!!list) {\r\n list.off();\r\n }\r\n }\r\n}","<cn-prerender-list #list [bounds]=\"bounds()!\" [direction]=\"direction()\" [dynamic]=\"dynamic()\" [divides]=\"divides()\"\r\n [isVertical]=\"isVertical()\" [itemSize]=\"itemSize()\" [trackBy]=\"trackBy()\" [itemRenderer]=\"itemRenderer()\"\r\n [startOffset]=\"startOffset()\" [endOffset]=\"endOffset()\" [scrollbarEnabled]=\"scrollbarEnabled()\"\r\n [enabled]=\"enabled()\" />","import {\r\n ChangeDetectionStrategy, Component, ComponentRef, computed, DestroyRef, effect, ElementRef, inject, input,\r\n OnDestroy, output, Signal, signal, TemplateRef, ViewChild, viewChild, ViewContainerRef, ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\r\nimport {\r\n BehaviorSubject, combineLatest, debounceTime, delay, distinctUntilChanged, filter, fromEvent, map,\r\n of, skip, Subject, switchMap, take, takeUntil, tap,\r\n} from 'rxjs';\r\nimport { CnVirtualListItemComponent } from './components/cn-list-item/cn-virtual-list-item.component';\r\nimport {\r\n BEHAVIOR_INSTANT, CLASS_LIST_HORIZONTAL, CLASS_LIST_VERTICAL, DEFAULT_DIRECTION, DEFAULT_DYNAMIC_SIZE,\r\n DEFAULT_ENABLED_BUFFER_OPTIMIZATION, DEFAULT_ITEM_SIZE, DEFAULT_BUFFER_SIZE, DEFAULT_LIST_SIZE, DEFAULT_STICKY_ENABLED, DEFAULT_SNAPPING_METHOD,\r\n HEIGHT_PROP_NAME, LEFT_PROP_NAME, MAX_SCROLL_TO_ITERATIONS, PX, FOCUS, TOP_PROP_NAME, TRACK_BY_PROPERTY_NAME, WIDTH_PROP_NAME,\r\n DEFAULT_MAX_BUFFER_SIZE, DEFAULT_SELECTING_MODES, DEFAULT_SELECT_BY_CLICK, DEFAULT_COLLAPSE_BY_CLICK, DEFAULT_COLLECTION_MODE,\r\n DEFAULT_SCREEN_READER_MESSAGE, DEFAULT_SNAP_TO_END_TRANSITION_INSTANT_OFFSET, DEFAULT_SNAP_SCROLLTO_END, MIN_PIXELS_FOR_PREVENT_SNAPPING,\r\n MOUSE_DOWN, TOUCH_START, DEFAULT_LANG_TEXT_DIR, DEFAULT_CLICK_DISTANCE, DEFAULT_WAIT_FOR_PREPARATION, DEFAULT_SCROLLBAR_THICKNESS,\r\n DEFAULT_SCROLLBAR_MIN_SIZE, KEY_DOWN, BEHAVIOR_AUTO, DEFAULT_SCROLLBAR_ENABLED, DEFAULT_SCROLLBAR_INTERACTIVE, DEFAULT_OVERSCROLL_ENABLED,\r\n DEFAULT_ANIMATION_PARAMS, DEFAULT_SCROLL_BEHAVIOR, DEFAULT_SNAP_SCROLLTO_START, EMPTY_SCROLL_STATE_VERSION, MAX_REGULAR_SNAPED_COMPONENTS,\r\n PREPARE_ITERATIONS, PREPARATION_REUPDATE_LENGTH, ROLE_LIST_BOX, ROLE_LIST, KEY_TAB, MAX_VELOCITY_FOR_SCROLL_QUALITY_OPTIMIZATION_LVL1,\r\n PREPARE_ITERATIONS_FOR_UPDATE_ITEMS, PREPARATION_REUPDATE_LENGTH_FOR_UPDATE_ITEMS, PREPARE_ITERATIONS_FOR_COLLAPSE_ITEMS,\r\n PREPARATION_REUPDATE_LENGTH_FOR_COLLAPSE_ITEMS, MAX_NUMBERS_OF_SKIPS_FOR_QUALITY_OPTIMIZATION_LVL1, DEFAULT_SCROLLING_SETTINGS,\r\n DEFAULT_SNAP_TO_ITEM, DEFAULT_SNAP_TO_ITEM_ALIGN, VIEWPORT, DEFAULT_MOTION_BLUR, DEFAULT_MAX_MOTION_BLUR, DEFAULT_SCROLLING_ONE_BY_ONE,\r\n DEFAULT_MOTION_BLUR_ENABLED, DEFAULT_DIVIDES, DEFAULT_SNAPPING_DISTANCE, DEFAULT_MAX_ITEM_SIZE, DEFAULT_MIN_ITEM_SIZE,\r\n DEFAULT_ALIGNMENT, DEFAULT_COLLAPSING_MODES, DEFAULT_SPREADING_MODE, DEFAULT_ZINDEX_WHEN_SELECTING,\r\n DEFAULT_OVERLAPPING_SCROLLBAR,\r\n} from './const';\r\nimport {\r\n IRenderVirtualListItem, IVirtualListCollection, IVirtualListItem, IVirtualListItemConfigMap,\r\n} from './models';\r\nimport {\r\n IScrollEvent, IScrollOptions, IAnimationParams, IRenderStabilizerOptions, IScrollingSettings,\r\n} from './interfaces';\r\nimport {\r\n Alignment, FocusAlignment, ItemTransform, SnappingDistance, CollectionMode, Direction, SelectingMode,\r\n SnappingMethod, SnapToItemAlign, CollapsingMode,\r\n SpreadingMode,\r\n} from './types';\r\nimport { IRenderVirtualListCollection } from './models/render-collection.model';\r\nimport {\r\n Alignments, CollectionModes, Directions, FocusAlignments, SelectingModes, SnappingMethods, SnapToItemAligns, SpreadingModes,\r\n} from './enums';\r\nimport { ScrollEvent } from './utils';\r\nimport { TrackBox } from './core/track-box';\r\nimport { isSnappingMethodAdvenced } from './utils/snapping-method';\r\nimport { BaseVirtualListItemComponent } from './components/cn-list-item/base';\r\nimport { Component$1 } from './models/component.model';\r\nimport { isDirection } from './utils/is-direction';\r\nimport { CnVirtualListService } from './cn-virtual-list.service';\r\nimport { isSelectMode } from './utils/is-select-mode';\r\nimport { isCollapseMode } from './utils/is-collapse-mode';\r\nimport { SelectingModesTypes } from './enums/selecting-modes-types';\r\nimport { CMap } from '../common/utils/cmap';\r\nimport {\r\n validateArray, validateBoolean, validateFloat, validateFunction, validateInt, validateObject, validateString,\r\n} from './utils/validation';\r\nimport { isCollectionMode } from './utils/is-collection-mode';\r\nimport { CnScrollerComponent } from './components/cn-scroller/cn-scroller.component';\r\nimport { IScrollToParams } from './components/cn-scroll-view';\r\nimport { CnPrerenderContainer } from './components/cn-prerender-container/cn-prerender-container.component';\r\nimport { IScrollParams } from './interfaces';\r\nimport { formatActualDisplayItems, formatScreenReaderMessage } from './utils/screen-reader-formatter';\r\nimport { validateId, validateIteration, validateScrollBehavior, validateScrollIteration } from './utils/list-validators';\r\nimport { EVENT_KEY_DOWN, KEY_ARR_DOWN, KEY_ARR_LEFT, KEY_ARR_RIGHT, KEY_ARR_UP } from './components/cn-list-item/const';\r\nimport { CnVirtualListPublicService } from './cn-virtual-list-public.service';\r\nimport { normalizeCollection } from './utils/normalize-collection';\r\nimport { CollapsingModes } from './enums';\r\nimport { isSpreadingMode } from './utils/is-spreading-mode';\r\nimport { IGetItemPositionOptions, IUpdateCollectionOptions } from './core/interfaces';\r\nimport { getScrollStateVersion } from './utils/get-scroll-state-version';\r\nimport { ArithmeticExpression, Id, ISize, TextDirection, TextDirections } from '../common';\r\nimport { copyValueAsReadonly, debounce, isPercentageValue, objectAsReadonly, parseArithmeticExpression, toggleClassName } from '../common/utils';\r\n\r\n/**\r\n * Virtual list component.\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/cn-virtual-list.component.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Component({\r\n selector: 'cn-virtual-list',\r\n templateUrl: './cn-virtual-list.component.html',\r\n styleUrl: './cn-virtual-list.component.scss',\r\n host: {\r\n 'style': 'position: relative;'\r\n },\r\n standalone: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.ShadowDom,\r\n providers: [CnVirtualListService, CnVirtualListPublicService],\r\n})\r\nexport class CnVirtualListComponent implements OnDestroy {\r\n private static __nextId: number = 0;\r\n\r\n private _id: number = CnVirtualListComponent.__nextId;\r\n\r\n /**\r\n * Readonly. Returns the unique identifier of the component.\r\n */\r\n get id() { return this._id; }\r\n\r\n private _service = inject(CnVirtualListService);\r\n\r\n private _prerender = viewChild<CnPrerenderContainer>('prerender');\r\n\r\n @ViewChild('renderersContainer', { read: ViewContainerRef })\r\n private _listContainerRef: ViewContainerRef | undefined;\r\n\r\n @ViewChild('snapRendererContainer', { read: ViewContainerRef })\r\n private _snapContainerRef: ViewContainerRef | undefined;\r\n\r\n private _scrollerComponent = viewChild<CnScrollerComponent>('scroller');\r\n\r\n private _scroller: Signal<ElementRef<HTMLDivElement> | undefined>;\r\n\r\n private _list: Signal<ElementRef<HTMLDivElement> | undefined>;\r\n\r\n /**\r\n * Fires when the list has been scrolled.\r\n */\r\n onScroll = output<IScrollEvent>();\r\n\r\n /**\r\n * Fires when the list has completed scrolling.\r\n */\r\n onScrollEnd = output<IScrollEvent>();\r\n\r\n /**\r\n * Fires when the viewport size is changed.\r\n */\r\n onViewportChange = output<ISize>();\r\n\r\n /**\r\n * Emit the component ID when an element crosses the alignment line specified by the snapToItemAlign property.\r\n */\r\n onSnapItem = output<Id>();\r\n\r\n /**\r\n * Fires when an element is clicked.\r\n */\r\n onItemClick = output<IRenderVirtualListItem<any> | null>();\r\n\r\n /**\r\n * Fires when elements are selected.\r\n */\r\n onSelect = output<Array<Id> | Id | null>();\r\n\r\n /**\r\n * Fires when elements are collapsed.\r\n */\r\n onCollapse = output<Array<Id> | Id | null>();\r\n\r\n /**\r\n * Fires when the scroll reaches the start.\r\n */\r\n onScrollReachStart = output<void>();\r\n\r\n /**\r\n * Fires when the scroll reaches the end.\r\n */\r\n onScrollReachEnd = output<void>();\r\n\r\n private _$show = new BehaviorSubject<boolean>(false);\r\n readonly $show = this._$show.asObservable();\r\n\r\n private _$initialized = new BehaviorSubject<boolean>(false);\r\n readonly $initialized = this._$initialized.asObservable();\r\n\r\n private _scrollbarThickness = {\r\n transform: (v: number) => {\r\n const valid = validateInt(v);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollbarThickness\" parameter must be of type `number`.');\r\n return DEFAULT_SCROLLBAR_THICKNESS;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Scrollbar thickness.\r\n */\r\n scrollbarThickness = input<number>(DEFAULT_SCROLLBAR_THICKNESS, { ...this._scrollbarThickness });\r\n\r\n private _scrollbarMinSize = {\r\n transform: (v: number) => {\r\n const valid = validateInt(v);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollbarMinSize\" parameter must be of type `number`.');\r\n return DEFAULT_SCROLLBAR_MIN_SIZE;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Minimum scrollbar size.\r\n */\r\n scrollbarMinSize = input<number>(DEFAULT_SCROLLBAR_MIN_SIZE, { ...this._scrollbarMinSize });\r\n\r\n private _scrollbarThumbRenderer = {\r\n transform: (v: TemplateRef<any> | null) => {\r\n const valid = validateObject(v, true, true);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollbarThumbRenderer\" parameter must be of type `object`.');\r\n return null;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Scrollbar customization template.\r\n */\r\n scrollbarThumbRenderer = input<TemplateRef<any> | null>(null, { ...this._scrollbarThumbRenderer });\r\n\r\n private _scrollbarThumbParams = {\r\n transform: (v: { [propName: string]: any } | null) => {\r\n const valid = validateObject(v, true, true);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollbarThumbParams\" parameter must be of type `object`.');\r\n return null;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Additional options for the scrollbar.\r\n */\r\n scrollbarThumbParams = input<{ [propName: string]: any } | null>({}, { ...this._scrollbarThumbParams });\r\n\r\n private _loading = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v);\r\n\r\n if (!valid) {\r\n console.error('The \"loading\" parameter must be of type `boolean`.');\r\n return false;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * If `true`, the scrollBar goes into loading state. The default value is `false`.\r\n */\r\n loading = input<boolean>(false, { ...this._loading });\r\n\r\n private _waitForPreparation = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v);\r\n\r\n if (!valid) {\r\n console.error('The \"waitForPreparation\" parameter must be of type `boolean`.');\r\n return DEFAULT_WAIT_FOR_PREPARATION;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * If true, it will wait until the list items are fully prepared before displaying them.. The default value is `true`.\r\n */\r\n waitForPreparation = input<boolean>(DEFAULT_WAIT_FOR_PREPARATION, { ...this._waitForPreparation });\r\n\r\n private _clickDistance = {\r\n transform: (v: number) => {\r\n const valid = validateInt(v);\r\n\r\n if (!valid) {\r\n console.error('The \"clickDistance\" parameter must be of type `number`.');\r\n return DEFAULT_CLICK_DISTANCE;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * The maximum scroll distance at which a click event is triggered.\r\n */\r\n clickDistance = input<number>(DEFAULT_CLICK_DISTANCE, { ...this._clickDistance });\r\n\r\n private _itemsOptions = {\r\n transform: (v: IVirtualListCollection | undefined) => {\r\n let valid = validateArray(v, true, true);\r\n if (valid) {\r\n if (v) {\r\n const trackBy = this.trackBy();\r\n for (let i = 0, l = v.length; i < l; i++) {\r\n const item = v[i];\r\n valid = validateObject(item, true, true);\r\n if (valid) {\r\n if (item && !(validateFloat(item?.[trackBy] as number, true) || validateString(item?.[trackBy] as string, true, true))) {\r\n valid = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (!valid) {\r\n console.error('The \"items\" parameter must be of type `IVirtualListCollection` or `undefined`.');\r\n return [];\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Collection of list items.\r\n */\r\n items = input.required<IVirtualListCollection>({\r\n ...this._itemsOptions,\r\n });\r\n\r\n private _selectedIdsOptions = {\r\n transform: (v: Array<Id> | Id | undefined) => {\r\n let valid = validateArray(v as any, true, true) || validateString(v as any, true, true) || validateFloat(v as any, true);\r\n if (valid) {\r\n if (v && Array.isArray(v)) {\r\n for (let i = 0, l = v.length; i < l; i++) {\r\n const item = v[i];\r\n valid = validateString(item as any) || validateFloat(item as any);\r\n if (!valid) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (!valid) {\r\n console.error('The \"selectedIds\" parameter must be of type `Array<Id> | Id` or `null`.');\r\n return this._isMultiSelection ? [] : undefined;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n defaultItemValue = input<IVirtualListItem | null>(null);\r\n\r\n /**\r\n * Sets the selected items.\r\n */\r\n selectedIds = input<Array<Id> | Id | null>(null, { ...this._selectedIdsOptions });\r\n\r\n private _collapsedIdsOptions = {\r\n transform: (v: Array<Id>) => {\r\n let valid = validateArray(v as any, true, true);\r\n if (valid) {\r\n if (v && Array.isArray(v)) {\r\n for (let i = 0, l = v.length; i < l; i++) {\r\n const item = v[i];\r\n valid = validateString(item as any) || validateFloat(item as any);\r\n if (!valid) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (!valid) {\r\n console.error('The \"collapsedIds\" parameter must be of type `Array<Id>.');\r\n return [];\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Sets the collapsed items.\r\n */\r\n collapsedIds = input<Array<Id>>([], { ...this._collapsedIdsOptions });\r\n\r\n private _selectByClickOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v);\r\n\r\n if (!valid) {\r\n console.error('The \"selectByClick\" parameter must be of type `boolean`.');\r\n return DEFAULT_SELECT_BY_CLICK;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * If `false`, the element is selected using the api.select method passed to the template; \r\n * if `true`, the element is selected by clicking on it. The default value is `true`.\r\n */\r\n selectByClick = input<boolean>(DEFAULT_SELECT_BY_CLICK, { ...this._selectByClickOptions });\r\n\r\n private _collapseByClickOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v);\r\n\r\n if (!valid) {\r\n console.error('The \"collapseByClick\" parameter must be of type `boolean`.');\r\n return DEFAULT_COLLAPSE_BY_CLICK;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * If `false`, the element is collapsed using the config.collapse method passed to the template; \r\n * if `true`, the element is collapsed by clicking on it. The default value is `true`.\r\n */\r\n collapseByClick = input<boolean>(DEFAULT_COLLAPSE_BY_CLICK, { ...this._collapseByClickOptions });\r\n\r\n private _snapOptions = {\r\n transform: (v: boolean) => {\r\n throw Error(`Property snap is deprecated. Use the \\`stickyEnabled\\` property instead.`);\r\n },\r\n } as any;\r\n\r\n /**\r\n * @deprecated\r\n * Use the `stickyEnabled` property instead.\r\n */\r\n snap = input<boolean>(false, { ...this._snapOptions });\r\n\r\n private _stickyEnabledOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v);\r\n\r\n if (!valid) {\r\n console.error('The \"stickyEnabled\" parameter must be of type `boolean`.');\r\n return DEFAULT_STICKY_ENABLED;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines whether items with the given `sticky` in `itemConfigMap` will stick to the edges. Default value is \"true\".\r\n */\r\n stickyEnabled = input<boolean>(DEFAULT_STICKY_ENABLED, { ...this._stickyEnabledOptions });\r\n\r\n private _snapToEndTransitionInstantOffsetOptions = {\r\n transform: (v: number) => {\r\n const valid = validateFloat(v, true);\r\n\r\n if (!valid) {\r\n console.error('The \"snapToEndTransitionInstantOffset\" parameter must be of type `number`.');\r\n return DEFAULT_SNAP_TO_END_TRANSITION_INSTANT_OFFSET;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Sets the offset value; if the scroll area value is exceeded, the scroll animation will be disabled. Default value is \"0\".\r\n */\r\n snapToEndTransitionInstantOffset = input<number>(DEFAULT_SNAP_TO_END_TRANSITION_INSTANT_OFFSET, { ...this._snapToEndTransitionInstantOffsetOptions });\r\n\r\n private _scrollStartOffsetOptions = {\r\n transform: (v: number) => {\r\n const valid = validateFloat(v, true) || isPercentageValue(v);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollStartOffset\" parameter must be one of type `number` or `string`.');\r\n return 0;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Sets the scroll start offset value. Can be specified in absolute or percentage values.\r\n * Supports arithmetic expressions of addition `50% + 25` or subtraction `50% - 25`. Default value is \"0\".\r\n */\r\n scrollStartOffset = input<ArithmeticExpression>(0, { ...this._scrollStartOffsetOptions });\r\n\r\n private _scrollEndOffsetOptions = {\r\n transform: (v: number) => {\r\n const valid = validateFloat(v, true) || isPercentageValue(v);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollEndOffset\" parameter must be one of type `number` or `string`.');\r\n return 0;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Sets the scroll end offset value. Can be specified in absolute or percentage values.\r\n * Supports arithmetic expressions of addition `50% + 25` or subtraction `50% - 25`. Default value is \"0\".\r\n */\r\n scrollEndOffset = input<ArithmeticExpression>(0, { ...this._scrollEndOffsetOptions });\r\n\r\n private _snapScrollToStartOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v, true);\r\n\r\n if (!valid) {\r\n console.error('The \"snapScrollToStart\" parameter must be of type `boolean`.');\r\n return DEFAULT_SNAP_SCROLLTO_START;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines whether the scroll will be anchored to the start of the list. Default value is \"true\".\r\n * This property takes precedence over the snapScrollToEnd property.\r\n * That is, if snapScrollToStart and snapScrollToEnd are enabled, the list will initially snap \r\n * to the beginning; if you move the scroll bar to the end, the list will snap to the end. \r\n * If snapScrollToStart is disabled and snapScrollToEnd is enabled, the list will snap to the end; \r\n * if you move the scroll bar to the beginning, the list will snap to the beginning. \r\n * If both snapScrollToStart and snapScrollToEnd are disabled, the list will never snap to the beginning or end.\r\n * In the `spreadingMode=SpreadingModes.INFINITY` mode, the `snapScrollToStart` property is automatically disabled, since the list has no beginning or end.\r\n */\r\n snapScrollToStart = input<boolean>(DEFAULT_SNAP_SCROLLTO_START, { ...this._snapScrollToStartOptions });\r\n\r\n private _snapScrollToEndOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v, true);\r\n\r\n if (!valid) {\r\n console.error('The \"snapScrollToEnd\" parameter must be of type `boolean`.');\r\n return DEFAULT_SNAP_SCROLLTO_END;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines whether the scroll will be anchored to the утв of the list. Default value is \"true\".\r\n * That is, if snapScrollToStart and snapScrollToEnd are enabled, the list will initially snap \r\n * to the beginning; if you move the scroll bar to the end, the list will snap to the end. \r\n * If snapScrollToStart is disabled and snapScrollToEnd is enabled, the list will snap to the end; \r\n * if you move the scroll bar to the beginning, the list will snap to the beginning. \r\n * If both snapScrollToStart and snapScrollToEnd are disabled, the list will never snap to the beginning or end.\r\n * In the `spreadingMode=SpreadingModes.INFINITY` mode, the `snapScrollToEnd` property is automatically disabled, since the list has no beginning or end.\r\n */\r\n snapScrollToEnd = input<boolean>(DEFAULT_SNAP_SCROLLTO_END, { ...this._snapScrollToEndOptions });\r\n\r\n private _snapScrollToBottomOptions = {\r\n transform: () => {\r\n throw Error('The stopSnappingScrollToEnd property is deprecated. Use the snapScrollToEnd property.');\r\n },\r\n } as any;\r\n\r\n /**\r\n * @deprecated\r\n * The stopSnappingScrollToEnd property is deprecated. Use the snapScrollToEnd property.\r\n */\r\n snapScrollToBottom = input<boolean>('deprecated' as any, { ...this._snapScrollToBottomOptions });\r\n\r\n private _scrollbarEnabledOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v, true);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollbarEnabled\" parameter must be of type `boolean`.');\r\n return DEFAULT_SCROLLBAR_ENABLED;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines whether the scrollbar is shown or not. The default value is \"true\".\r\n */\r\n scrollbarEnabled = input<boolean>(DEFAULT_SCROLLBAR_ENABLED, { ...this._scrollbarEnabledOptions });\r\n\r\n private _scrollbarInteractiveOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v, true);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollbarInteractive\" parameter must be of type `boolean`.');\r\n return DEFAULT_SCROLLBAR_INTERACTIVE;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines whether scrolling using the scrollbar will be possible. The default value is \"true\".\r\n */\r\n scrollbarInteractive = input<boolean>(DEFAULT_SCROLLBAR_INTERACTIVE, { ...this._scrollbarInteractiveOptions });\r\n\r\n private _overlappingScrollbarOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v, true);\r\n\r\n if (!valid) {\r\n console.error('The \"overlappingScrollbar\" parameter must be of type `boolean`.');\r\n return DEFAULT_OVERLAPPING_SCROLLBAR;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines whether the scroll bar will overlap the list. The default value is \"false\".\r\n */\r\n overlappingScrollbar = input<boolean>(DEFAULT_OVERLAPPING_SCROLLBAR, { ...this._overlappingScrollbarOptions });\r\n\r\n private _scrollBehaviorOptions = {\r\n transform: (v: ScrollBehavior) => {\r\n const valid = validateString(v, true, true);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollBehavior\" parameter must be of type `boolean`.');\r\n return DEFAULT_SCROLL_BEHAVIOR;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Defines the scrolling behavior for any element on the page. The default value is \"smooth\".\r\n */\r\n scrollBehavior = input<ScrollBehavior>(DEFAULT_SCROLL_BEHAVIOR, { ...this._scrollBehaviorOptions });\r\n\r\n private _scrollingSettingsOptions = {\r\n transform: (v: IScrollingSettings): IScrollingSettings | null => {\r\n let valid = validateObject(v, true, true);\r\n if (valid && !!v) {\r\n const { frictionalForce, mass, maxDistance, maxDuration, speedScale, optimization } = v;\r\n valid = validateFloat(frictionalForce, true);\r\n if (!valid) {\r\n console.error('The \"frictionalForce\" parameter must be of type `number` or `undefined`.');\r\n return DEFAULT_SCROLLING_SETTINGS;\r\n }\r\n valid = validateFloat(mass, true);\r\n if (!valid) {\r\n console.error('The \"mass\" parameter must be of type `number` or `undefined`.');\r\n return DEFAULT_SCROLLING_SETTINGS;\r\n }\r\n valid = validateFloat(maxDistance, true);\r\n if (!valid) {\r\n console.error('The \"maxDistance\" parameter must be of type `number` or `undefined`.');\r\n return DEFAULT_SCROLLING_SETTINGS;\r\n }\r\n valid = validateFloat(maxDuration, true);\r\n if (!valid) {\r\n console.error('The \"maxDuration\" parameter must be of type `number` or `undefined`.');\r\n return DEFAULT_SCROLLING_SETTINGS;\r\n }\r\n valid = validateFloat(speedScale, true);\r\n if (!valid) {\r\n console.error('The \"speedScale\" parameter must be of type `number` or `undefined`.');\r\n return DEFAULT_SCROLLING_SETTINGS;\r\n }\r\n valid = validateBoolean(optimization, true);\r\n if (!valid) {\r\n console.error('The \"optimization\" parameter must be of type `boolean` or `undefined`.');\r\n return DEFAULT_SCROLLING_SETTINGS;\r\n }\r\n }\r\n if (!valid) {\r\n console.error('The \"scrollingSettings\" parameter must be of type `object` or null.');\r\n return DEFAULT_SCROLLING_SETTINGS;\r\n }\r\n return {\r\n frictionalForce: v.frictionalForce !== undefined && v.frictionalForce > 0 ? v.frictionalForce : DEFAULT_SCROLLING_SETTINGS.frictionalForce,\r\n mass: v.mass !== undefined && v.mass > 0 ? v.mass : DEFAULT_SCROLLING_SETTINGS.mass,\r\n maxDistance: v.maxDistance !== undefined && v.maxDistance > 0 ? v.maxDistance : DEFAULT_SCROLLING_SETTINGS.maxDistance,\r\n maxDuration: v.maxDuration !== undefined && v.maxDuration > 0 ? v.maxDuration : DEFAULT_SCROLLING_SETTINGS.maxDuration,\r\n speedScale: v.speedScale !== undefined && v.speedScale > 0 ? v.speedScale : DEFAULT_SCROLLING_SETTINGS.speedScale,\r\n optimization: v.optimization ?? DEFAULT_SCROLLING_SETTINGS.optimization,\r\n };\r\n },\r\n } as any;\r\n\r\n /**\r\n * Scrolling settings.\r\n * - frictionalForce - Frictional force. Default value is 0.035.\r\n * - mass - Mass. Default value is 0.005.\r\n * - maxDistance - Maximum scrolling distance. Default value is 100000.\r\n * - maxDuration - Maximum animation duration. Default value is 4000.\r\n * - speedScale - Speed scale. Default value is 10.\r\n * - optimization - Enables scrolling performance optimization. Default value is `true`.\r\n */\r\n scrollingSettings = input<IScrollingSettings>(DEFAULT_SCROLLING_SETTINGS, { ...this._scrollingSettingsOptions });\r\n\r\n private _itemTransformOptions = {\r\n transform: (v: any) => {\r\n let valid = validateFunction(v, true, true);\r\n if (!valid) {\r\n console.error('The \"itemTransform\" parameter must be of type `ItemTransform` or `null`.');\r\n return null;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Custom transformation of element's position, rotation, scale, opacity and zIndex. The default value is `null`.\r\n */\r\n itemTransform = input<ItemTransform | null>(null, { ...this._itemTransformOptions });\r\n\r\n private _snapToItemOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v);\r\n\r\n if (!valid) {\r\n console.error('The \"snapToItem\" parameter must be of type `boolean`.');\r\n return DEFAULT_SNAP_TO_ITEM;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Snap to an item. The default value is `false`.\r\n */\r\n snapToItem = input<boolean>(DEFAULT_SNAP_TO_ITEM, { ...this._snapToItemOptions });\r\n\r\n private _snapToItemAlignOptions = {\r\n transform: (v: SnapToItemAlign) => {\r\n const valid = validateString(v) && (v === 'start' || v === 'center' || v === 'end');\r\n\r\n if (!valid) {\r\n console.error('The \"snapToItemAlign\" parameter must be one of `start`, `center` or `end`.');\r\n return DEFAULT_SNAP_TO_ITEM_ALIGN;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Alignment for snapToItem. Available values ​​are `start`, `center`, and `end`. The default value is `center`.\r\n */\r\n snapToItemAlign = input<SnapToItemAlign>(DEFAULT_SNAP_TO_ITEM_ALIGN, { ...this._snapToItemAlignOptions });\r\n\r\n private _snappingDistanceOptions = {\r\n transform: (v: SnappingDistance | any) => {\r\n const valid = validateString(v) || validateFloat(v);\r\n\r\n if (!valid) {\r\n console.error('The \"snappingDistance\" parameter must be of type `number` or `string`.');\r\n return DEFAULT_SNAPPING_DISTANCE;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Snapping activation distance. Can be specified as a percentage of the element size or in absolute values.\r\n * The default value is `25%`.\r\n */\r\n snappingDistance = input<SnappingDistance>(DEFAULT_SNAPPING_DISTANCE, { ...this._snappingDistanceOptions });\r\n\r\n private _scrollingOneByOneOptions = {\r\n transform: (v: any) => {\r\n const valid = validateBoolean(v);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollingOneByOne\" parameter must be of type `boolean`.');\r\n return DEFAULT_SCROLLING_ONE_BY_ONE;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Specifies whether to scroll one item at a time if true and the scrollToItem property is set. The default value is `false`.\r\n */\r\n scrollingOneByOne = input<boolean>(DEFAULT_SCROLLING_ONE_BY_ONE, { ...this._scrollingOneByOneOptions });\r\n\r\n private _alignmentOptions = {\r\n transform: (v: Alignment) => {\r\n const valid = validateString(v) && (v === 'none' || v === 'center');\r\n\r\n if (!valid) {\r\n console.error('The \"alignment\" parameter must be one of `none` or `centert`.');\r\n return DEFAULT_ALIGNMENT;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines the alignment of the list. Two modes are available: `none` and `center`. The `center` mode aligns the list items to the center of the viewport, ideal for use with the `itemTransform` property.\r\n * The `none` mode means no alignment. The default value is `none`.\r\n */\r\n alignment = input<Alignment>(DEFAULT_ALIGNMENT, { ...this._alignmentOptions });\r\n\r\n private _zIndexWhenSelectingOptions = {\r\n transform: (v: string | null) => {\r\n const valid = validateString(v, true, true);\r\n\r\n if (!valid) {\r\n console.error('The \"zIndexWhenSelecting\" parameter must be of type `number` or `null`.');\r\n return DEFAULT_ZINDEX_WHEN_SELECTING;\r\n }\r\n return v ?? null;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Defines the zIndex when a list item is selected. The default value is `null`.\r\n */\r\n zIndexWhenSelecting = input<string | null>(DEFAULT_ZINDEX_WHEN_SELECTING, { ...this._zIndexWhenSelectingOptions });\r\n\r\n private _spreadingModeOptions = {\r\n transform: (v: SpreadingMode) => {\r\n const valid = validateString(v) && (v === 'normal' || v === 'infinity');\r\n\r\n if (!valid) {\r\n console.error('The \"spreadingMode\" parameter must be one of `normal` or `infinity`.');\r\n return DEFAULT_SPREADING_MODE;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * The order of list elements. Available values ​​are `standard` and `infinity`.\r\n * `normal` — list elements are ordered according to the collection sequence.\r\n * `infinity` — list elements are ordered cyclically, forming an infinite list.\r\n * When set to `infinity`, the `alignment` property is forced to the value `Alignments.CENTER`, the `scrollbarEnabled` property is forced to the `false`\r\n * The default value is `standard`.\r\n */\r\n spreadingMode = input<SpreadingMode>(DEFAULT_SPREADING_MODE, { ...this._spreadingModeOptions });\r\n\r\n private _dividesOptions = {\r\n transform: (v: number) => {\r\n const valid = validateFloat(v);\r\n\r\n if (!valid) {\r\n console.error('The \"divides\" parameter must be of type `number`.');\r\n return DEFAULT_DIVIDES;\r\n }\r\n return v <= 0 ? DEFAULT_DIVIDES : v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Column or row numbers. The default value is `1`.\r\n */\r\n divides = input<number>(DEFAULT_DIVIDES, { ...this._dividesOptions });\r\n\r\n private _motionBlurOptions = {\r\n transform: (v: number) => {\r\n const valid = validateFloat(v);\r\n\r\n if (!valid) {\r\n console.error('The \"motionBlur\" parameter must be of type `number`.');\r\n return DEFAULT_MOTION_BLUR;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Motion blur effect. The default value is `0.15`.\r\n */\r\n motionBlur = input<number>(DEFAULT_MOTION_BLUR, { ...this._motionBlurOptions });\r\n\r\n private _maxMotionBlurOptions = {\r\n transform: (v: number) => {\r\n const valid = validateFloat(v);\r\n\r\n if (!valid) {\r\n console.error('The \"maxMotionBlur\" parameter must be of type `number`.');\r\n return DEFAULT_MAX_MOTION_BLUR;\r\n }\r\n return v <= 0 ? DEFAULT_MAX_MOTION_BLUR : v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Maximum motion blur effect. The default value is `0.5`.\r\n */\r\n maxMotionBlur = input<number>(DEFAULT_MAX_MOTION_BLUR, { ...this._maxMotionBlurOptions });\r\n\r\n private _motionBlurEnabledOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v);\r\n\r\n if (!valid) {\r\n console.error('The \"motionBlurEnabled\" parameter must be of type `boolean`.');\r\n return DEFAULT_MOTION_BLUR_ENABLED;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines whether to apply motion blur or not. The default value is `false`.\r\n */\r\n motionBlurEnabled = input<boolean>(DEFAULT_MOTION_BLUR_ENABLED, { ...this._motionBlurEnabledOptions });\r\n\r\n private _animationParamsOptions = {\r\n transform: (v: IAnimationParams) => {\r\n const valid = validateObject(v, true, true);\r\n\r\n if (!validateFloat(v.scrollToItem)) {\r\n console.error('The \"scrollToItem\" parameter must be of type `number`.');\r\n return DEFAULT_ANIMATION_PARAMS;\r\n }\r\n if (!validateFloat(v.snapToItem)) {\r\n console.error('The \"snapToItem\" parameter must be of type `number`.');\r\n return DEFAULT_ANIMATION_PARAMS;\r\n }\r\n if (!validateFloat(v.navigateByKeyboard)) {\r\n console.error('The \"navigateByKeyboard\" parameter must be of type `number`.');\r\n return DEFAULT_ANIMATION_PARAMS;\r\n }\r\n if (!validateFloat(v.navigateToItem)) {\r\n console.error('The \"navigateToItem\" parameter must be of type `number`.');\r\n return DEFAULT_ANIMATION_PARAMS;\r\n }\r\n if (!valid) {\r\n console.error('The \"animationParams\" parameter must be of type `object`.');\r\n return DEFAULT_ANIMATION_PARAMS;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Animation parameters. The default value is \"{ scrollToItem: 150, snapToItem: 150, navigateToItem: 150, navigateByKeyboard: 50 }\".\r\n */\r\n animationParams = input<IAnimationParams>(DEFAULT_ANIMATION_PARAMS, { ...this._animationParamsOptions });\r\n\r\n private _overscrollEnabledOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v, true);\r\n\r\n if (!valid) {\r\n console.error('The \"overscrollEnabled\" parameter must be of type `boolean`.');\r\n return DEFAULT_OVERSCROLL_ENABLED;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines whether the overscroll (re-scroll) feature will work. The default value is \"true\".\r\n */\r\n overscrollEnabled = input<boolean>(DEFAULT_OVERSCROLL_ENABLED, { ...this._overscrollEnabledOptions });\r\n\r\n private _enabledBufferOptimizationOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v);\r\n\r\n if (!valid) {\r\n console.error('The \"enabledBufferOptimization\" parameter must be of type `boolean`.');\r\n return DEFAULT_ENABLED_BUFFER_OPTIMIZATION;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Experimental!\r\n * Enables buffer optimization.\r\n * Can only be used if items in the collection are not added or updated. Otherwise, artifacts in the form of twitching of the scroll area are possible.\r\n * Works only if the property dynamic = true\r\n */\r\n enabledBufferOptimization = input<boolean>(DEFAULT_ENABLED_BUFFER_OPTIMIZATION, { ...this._enabledBufferOptimizationOptions });\r\n\r\n private _itemRendererOptions = {\r\n transform: (v: TemplateRef<any>) => {\r\n let valid = validateObject(v);\r\n if (v && !(typeof v.elementRef === 'object' && typeof v.createEmbeddedView === 'function')) {\r\n valid = false;\r\n }\r\n\r\n if (!valid) {\r\n throw Error('The \"itemRenderer\" parameter must be of type `TemplateRef`.');\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Rendering element template.\r\n */\r\n itemRenderer = input.required<TemplateRef<any>>({ ...this._itemRendererOptions });\r\n\r\n private _itemRenderer = signal<TemplateRef<any> | undefined>(undefined);\r\n\r\n private _itemConfigMapOptions = {\r\n transform: (v: IVirtualListItemConfigMap) => {\r\n let valid = validateObject(v);\r\n if (valid) {\r\n if (v) {\r\n for (let id in v) {\r\n const item = v[id];\r\n if (!item ||\r\n !validateBoolean(item.collapsable, true) ||\r\n !validateBoolean(item.selectable, true) ||\r\n !(item.sticky === undefined || item.sticky === 0 || item.sticky === 1 || item.sticky === 2)\r\n ) {\r\n valid = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if (!valid) {\r\n console.error('The \"itemConfigMap\" parameter must be of type `IVirtualListItemConfigMap`.');\r\n return {};\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Sets `sticky` position, `fullSize`, `collapsable` and `selectable` for the list item element. If `sticky` position is greater than `0`, then `sticky` position is applied. \r\n * If the `sticky` value is greater than `0`, then the `sticky` position mode is enabled for the element. `1` - position start, `2` - position end.\r\n * Default value is `0`.\r\n * `selectable` determines whether an element can be selected or not. Default value is `true`.\r\n * `collapsable` determines whether an element with a `sticky` property greater than zero can collapse and\r\n * collapse elements in front that do not have a `sticky` property.\r\n * `fullSize` determines the size of an element when rendering lists with cell divisions. If sticky is 1 or 2, fullSize automatically becomes true. The default value is false.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/models/item-config-map.model.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n itemConfigMap = input<IVirtualListItemConfigMap>({}, { ...this._itemConfigMapOptions });\r\n\r\n private _itemSizeOptions = {\r\n transform: (v: any) => {\r\n const valid = validateFloat(v) || v === VIEWPORT;\r\n if (!valid) {\r\n console.error('The \"itemSize\" parameter must be one of `number`, `viewport` or `undefined`.');\r\n return DEFAULT_ITEM_SIZE;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * If direction = 'vertical', then the height of a typical element. If direction = 'horizontal', then the width of a typical element.\r\n * If the `dynamicSize` property is true, the items in the list can have different sizes, and you must specify the `itemSize` property \r\n * to adjust the sizes of the items in the unallocated area.\r\n * If the value is 'viewport', the sizes of elements are automatically resized to fit the viewport size.\r\n */\r\n itemSize = input<number | 'viewport'>(DEFAULT_ITEM_SIZE, { ...this._itemSizeOptions });\r\n\r\n private _minItemSizeOptions = {\r\n transform: (v: any) => {\r\n const valid = validateFloat(v) || v === VIEWPORT;\r\n if (!valid) {\r\n console.error('The \"minItemSize\" parameter must be one of `number`, `viewport` or `undefined`.');\r\n return DEFAULT_ITEM_SIZE;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * If the `dynamicSize` property is enabled, the minimum size of the element is set.\r\n * If the value is 'viewport', the sizes of elements are automatically resized to fit the viewport size.\r\n */\r\n minItemSize = input<number | 'viewport'>(DEFAULT_MIN_ITEM_SIZE, { ...this._minItemSizeOptions });\r\n\r\n private _maxItemSizeOptions = {\r\n transform: (v: any) => {\r\n const valid = validateFloat(v) || v === VIEWPORT;\r\n if (!valid) {\r\n console.error('The \"maxItemSize\" parameter must be one of `number`, `viewport` or `undefined`.');\r\n return DEFAULT_ITEM_SIZE;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * If the `dynamicSize` property is enabled, the maximum size of the element is set.\r\n * If the value is 'viewport', the sizes of elements are automatically resized to fit the viewport size.\r\n */\r\n maxItemSize = input<number | 'viewport'>(DEFAULT_MAX_ITEM_SIZE, { ...this._maxItemSizeOptions });\r\n\r\n private _dynamicSizeOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v);\r\n if (!valid) {\r\n console.error('The \"dynamicSize\" parameter must be of type `boolean`.');\r\n return DEFAULT_DYNAMIC_SIZE;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * If true, items in the list may have different sizes, and the itemSize property must be specified to adjust\r\n * the sizes of items in the unallocated area.\r\n * If false then the items in the list have a fixed size specified by the itemSize property. The default value is true.\r\n */\r\n dynamicSize = input(DEFAULT_DYNAMIC_SIZE, { ...this._dynamicSizeOptions });\r\n\r\n private _directionOptions = {\r\n transform: (v: Direction) => {\r\n const valid = validateString(v) && (v === 'horizontal' || v === 'vertical');\r\n if (!valid) {\r\n console.error('The \"direction\" parameter must be one of `horizontal` or `vertical`.');\r\n return DEFAULT_DIRECTION;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines the direction in which elements are placed. Default value is \"vertical\".\r\n */\r\n direction = input<Direction>(DEFAULT_DIRECTION, { ...this._directionOptions });\r\n\r\n private _collectionModeOptions = {\r\n transform: (v: CollectionMode) => {\r\n const valid = validateString(v) && (v === 'normal' || v === 'lazy');\r\n if (!valid) {\r\n console.error('The \"direction\" parameter must be one of `normal` or `lazy`.');\r\n return DEFAULT_COLLECTION_MODE;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines the action modes for collection elements. Default value is \"normal\".\r\n */\r\n collectionMode = input<CollectionMode>(DEFAULT_COLLECTION_MODE, { ...this._collectionModeOptions });\r\n\r\n private _bufferSizeOptions = {\r\n transform: (v: number) => {\r\n const valid = validateInt(v);\r\n if (!valid) {\r\n console.error('The \"bufferSize\" parameter must be of type `number`.');\r\n return DEFAULT_BUFFER_SIZE;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Number of elements outside the scope of visibility. Default value is 2.\r\n */\r\n bufferSize = input<number>(DEFAULT_BUFFER_SIZE, { ...this._bufferSizeOptions });\r\n\r\n private _maxBufferSizeTransform = {\r\n transform: (v: number | undefined) => {\r\n let val = v;\r\n const valid = validateInt(v, true);\r\n if (!valid) {\r\n console.error('The \"maxBufferSize\" parameter must be of type `number`.');\r\n val = DEFAULT_MAX_BUFFER_SIZE;\r\n }\r\n\r\n const bufferSize = this.bufferSize();\r\n if (val === undefined || val <= bufferSize) {\r\n return bufferSize;\r\n }\r\n return val;\r\n }\r\n } as any;\r\n\r\n /**\r\n * Maximum number of elements outside the scope of visibility. Default value is 100.\r\n * If maxBufferSize is set to be greater than bufferSize, then adaptive buffer mode is enabled.\r\n * The greater the scroll size, the more elements are allocated for rendering.\r\n */\r\n maxBufferSize = input<number>(DEFAULT_MAX_BUFFER_SIZE, { ...this._maxBufferSizeTransform });\r\n\r\n private _snappingMethodOptions = {\r\n transform: (v: SnappingMethod) => {\r\n const valid = validateString(v) && (v === SnappingMethods.ADVANCED || v === SnappingMethods.STANDART);\r\n if (!valid) {\r\n console.error(`The \"snappingMethod\" parameter must have the value '${SnappingMethods.ADVANCED}' or '${SnappingMethods.STANDART}'.`);\r\n return DEFAULT_SNAPPING_METHOD;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Snapping method. Default value is 'standart'.\r\n * 'standart' - Classic group visualization.\r\n * 'advanced' - A mask is applied to the viewport area so that the background is displayed underneath the attached group.\r\n */\r\n snappingMethod = input<SnappingMethod>(DEFAULT_SNAPPING_METHOD, { ...this._snappingMethodOptions });\r\n\r\n private _collapsingModeOptions = {\r\n transform: (v: CollapsingMode) => {\r\n const valid = validateString(v) && (v === CollapsingModes.NONE || v === CollapsingModes.MULTI_COLLAPSE || v === CollapsingModes.ACCORDION);\r\n if (!valid) {\r\n console.error(`The \"collapsingMode\" parameter must have the value '${SnappingMethods.ADVANCED}' or '${SnappingMethods.STANDART}'.`);\r\n return DEFAULT_COLLAPSING_MODES;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Mode for collapsing list items. \r\n * `none` - List items are not selectable.\r\n * `multi-collapse` - List items are collapsed one by one.\r\n * 'accordion' - Accordion collapsible list items.\r\n * Default value is `multi-collapse\r\n */\r\n collapsingMode = input<CollapsingMode>(DEFAULT_COLLAPSING_MODES, { ...this._collapsingModeOptions });\r\n\r\n private _methodForSelectingOptions = {\r\n transform: (v: SelectingMode) => {\r\n throw new Error('The \"methodForSelecting\" property is deprecated. Use the \"selectMode\" property instead.');\r\n },\r\n } as any;\r\n\r\n /**\r\n * @deprecated\r\n * The \"methodForSelecting\" property is deprecated. Use the \"selectMode\" property.\r\n */\r\n methodForSelecting = input<SelectingMode>(DEFAULT_SELECTING_MODES, { ...this._methodForSelectingOptions });\r\n\r\n private _selectingModeOptions = {\r\n transform: (v: SelectingMode) => {\r\n const valid = validateString(v) && (v === 'none' || v === 'select' || v === 'multi-select');\r\n if (!valid) {\r\n console.error('The \"selectingMode\" parameter must be one of `none`, `select` or `multi-select`.');\r\n return DEFAULT_SELECTING_MODES;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Method for selecting list items. Default value is 'none'.\r\n * 'select' - List items are selected one by one.\r\n * 'multi-select' - Multiple selection of list items.\r\n * 'none' - List items are not selectable.\r\n */\r\n selectingMode = input<SelectingMode>(DEFAULT_SELECTING_MODES, { ...this._selectingModeOptions });\r\n\r\n private _trackByOptions = {\r\n transform: (v: string) => {\r\n const valid = validateString(v);\r\n if (!valid) {\r\n console.error('The \"trackBy\" parameter must be of type `string`.');\r\n return TRACK_BY_PROPERTY_NAME;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * The name of the property by which tracking is performed\r\n */\r\n trackBy = input<string>(TRACK_BY_PROPERTY_NAME, { ...this._trackByOptions });\r\n\r\n private _screenReaderMessageOptions = {\r\n transform: (v: string) => {\r\n const valid = validateString(v);\r\n if (!valid) {\r\n console.error('The \"screenReaderMessage\" parameter must be of type `string`.');\r\n return DEFAULT_SCREEN_READER_MESSAGE;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Message for screen reader.\r\n * The message format is: \"some text $1 some text $2\",\r\n * where $1 is the number of the first element of the screen collection,\r\n * $2 is the number of the last element of the screen collection.\r\n */\r\n screenReaderMessage = input<string>(DEFAULT_SCREEN_READER_MESSAGE, { ...this._screenReaderMessageOptions });\r\n\r\n protected readonly screenReaderFormattedMessage = signal<string>(this.screenReaderMessage());\r\n\r\n private _langTextDir = {\r\n transform: (v: TextDirection) => {\r\n const valid = validateString(v);\r\n if (!valid) {\r\n console.error('The \"langTextDir\" parameter must be of type `string`.');\r\n return DEFAULT_LANG_TEXT_DIR;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * A string indicating the direction of text for the locale.\r\n * Can be either \"ltr\" (left-to-right) or \"rtl\" (right-to-left).\r\n */\r\n langTextDir = input<TextDirection>(DEFAULT_LANG_TEXT_DIR, { ...this._langTextDir });\r\n\r\n private _isSingleSelection = this.getIsSingleSelection();\r\n\r\n private _isMultiSelection = this.getIsMultiSelection();\r\n\r\n private _isMultipleCollapse = this.getIsMultipleCollapse();\r\n\r\n private _isAccordionCollapse = this.getIsAccordionCollapse();\r\n\r\n private _isSnappingMethodAdvanced: boolean = this.getIsSnappingMethodAdvanced();\r\n\r\n protected _isInfinity: Signal<boolean>;\r\n\r\n private _isVertical = this.getIsVertical();\r\n protected get isVertical() {\r\n return this._isVertical;\r\n }\r\n\r\n protected readonly focusedElement = signal<Id | null>(null);\r\n\r\n protected readonly classes = signal<{ [cName: string]: boolean }>({});\r\n\r\n private _actualItems = signal<IVirtualListCollection>([]);\r\n\r\n private _collapsedItemIds = signal<Array<Id>>([]);\r\n\r\n private _displayComponents: Array<ComponentRef<BaseVirtualListItemComponent>> = [];\r\n\r\n private _snappedDisplayComponents: Array<ComponentRef<BaseVirtualListItemComponent>> = [];\r\n\r\n private _bounds = signal<ISize | null>(null);\r\n protected get bounds() { return this._bounds; }\r\n\r\n protected _actualScrollbarEnabled: Signal<boolean>;\r\n\r\n private _actualAlignment: Signal<Alignment>;\r\n protected get actualAlignment() { return this._actualAlignment; }\r\n\r\n private _actualItemSize = signal<number>(DEFAULT_ITEM_SIZE);\r\n protected get actualItemSize() { return this._actualItemSize; }\r\n\r\n private _actualMinItemSize = signal<number>(DEFAULT_MIN_ITEM_SIZE);\r\n protected get actualMinItemSize() { return this._actualMinItemSize; }\r\n\r\n private _actualMaxItemSize = signal<number>(DEFAULT_MAX_ITEM_SIZE);\r\n protected get actualMaxItemSize() { return this._actualMaxItemSize; }\r\n\r\n private _totalSize = signal<number>(0);\r\n\r\n private _listBounds = signal<ISize | null>(null);\r\n\r\n private _$scrollSize = new BehaviorSubject<number>(0);\r\n\r\n private _isScrollStart = signal<boolean>(true);\r\n\r\n private _isScrollEnd = signal<boolean>(false);\r\n\r\n protected _precalculatedScrollStartOffset = signal<number>(0);\r\n\r\n protected _precalculatedScrollEndOffset = signal<number>(0);\r\n\r\n protected _actualScrollStartOffset = signal<number>(0);\r\n\r\n protected _actualScrollEndOffset = signal<number>(0);\r\n\r\n protected _actualSnapScrollToStart: Signal<boolean>;\r\n\r\n protected _actualSnapScrollToEnd: Signal<boolean>;\r\n\r\n protected _alignmentScrollStartOffset = signal<number>(0);\r\n\r\n protected _alignmentScrollEndOffset = signal<number>(0);\r\n\r\n private _resizeSnappedComponentHandler = () => {\r\n const list = this._list(), scroller = this._scroller(), bounds = this._bounds(), snappedComponents = this._snappedDisplayComponents;\r\n if (!!list && !!scroller && snappedComponents.length > 0) {\r\n const isVertical = this._isVertical, listBounds = list.nativeElement.getBoundingClientRect();\r\n\r\n for (const comp of snappedComponents) {\r\n if (!!comp) {\r\n comp.instance.regularLength = `${isVertical ? listBounds.width : listBounds.height}${PX}`;\r\n }\r\n }\r\n\r\n const snappingMethod = this.snappingMethod();\r\n if (snappingMethod === SnappingMethods.ADVANCED) {\r\n const snappedComponent = snappedComponents?.[0]?.instance;\r\n if (!!snappedComponent) {\r\n const { width, height } = bounds ?? { width: 0, height: 0 }, langTextDir = this.langTextDir();\r\n\r\n snappedComponent.element.style.clipPath = `path(\"M 0 0 L 0 ${snappedComponent.element.offsetHeight} L ${snappedComponent.element.offsetWidth} ${snappedComponent.element.offsetHeight} L ${snappedComponent.element.offsetWidth} 0 Z\")`;\r\n\r\n const { width: sWidth, height: sHeight } = snappedComponent.getBounds() ?? { width: 0, height: 0 },\r\n scrollerElement = scroller.nativeElement, delta = snappedComponent.item?.measures.delta ?? 0,\r\n scrollBarSize = this.scrollbarThickness();\r\n\r\n let right: number, top: number, bottom: number;\r\n if (isVertical) {\r\n right = width - scrollBarSize + 2;\r\n top = sHeight;\r\n bottom = height;\r\n if (langTextDir === TextDirections.RTL) {\r\n scrollerElement.style.clipPath = `path(\"M 0 0 L 0 ${height} L ${width} ${height} L ${width} ${top + delta} L ${scrollBarSize} ${top + delta} L ${scrollBarSize} 0 Z\")`;\r\n } else {\r\n scrollerElement.style.clipPath = `path(\"M 0 ${top + delta} L 0 ${height} L ${width} ${height} L ${width} 0 L ${right} 0 L ${right} ${top + delta} Z\")`;\r\n }\r\n } else {\r\n right = width;\r\n top = 0;\r\n bottom = height - scrollBarSize;\r\n scrollerElement.style.clipPath = `path(\"M ${width} 0 L ${width} ${bottom} L 0 ${bottom} L 0 0 L ${width} 0 Z\")`;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n private _resizeSnappedObserver: ResizeObserver | null = null;\r\n\r\n private focusItem = (element: HTMLElement, position: number, align: FocusAlignment = FocusAlignments.CENTER,\r\n behavior: ScrollBehavior = BEHAVIOR_AUTO) => {\r\n if (!this._readyForShow) {\r\n return;\r\n }\r\n const scroller = this._scrollerComponent();\r\n if (!!scroller) {\r\n const { width, height } = this._bounds()!, { width: elementWidth, height: elementHeight } = element.getBoundingClientRect(),\r\n isVertical = this._isVertical,\r\n viewportSize = isVertical ? height : width,\r\n maxPosition = isVertical ? scroller.scrollHeight : scroller.scrollWidth,\r\n elementSize = isVertical ? elementHeight : elementWidth;\r\n let pos: number = Number.NaN;\r\n switch (align) {\r\n case FocusAlignments.START: {\r\n const p = position + scroller.startLayoutOffset;\r\n pos = scroller.inverted ? (maxPosition - p) : p;\r\n break;\r\n }\r\n case FocusAlignments.CENTER: {\r\n const p = position - (viewportSize - elementSize) * .5 + scroller.startLayoutOffset;\r\n pos = scroller.inverted ? (maxPosition - p) : p;\r\n break;\r\n }\r\n case FocusAlignments.END: {\r\n const p = position - (viewportSize - elementSize) + scroller.startLayoutOffset;\r\n pos = scroller.inverted ? (maxPosition - p) : p;\r\n break;\r\n }\r\n case FocusAlignments.NONE:\r\n default: {\r\n break;\r\n }\r\n }\r\n if (!Number.isNaN(pos)) {\r\n this._trackBox.preventScrollSnapping(true);\r\n const params: IScrollToParams = {\r\n [this._isVertical ? TOP_PROP_NAME : LEFT_PROP_NAME]: pos, behavior, snap: false, normalize: true,\r\n fireUpdate: true, blending: false, userAction: false,\r\n duration: this.snapToItem() ? Math.max(this.animationParams().scrollToItem, this.animationParams().navigateToItem) : this.animationParams().navigateToItem,\r\n };\r\n scroller.scrollTo(params);\r\n }\r\n }\r\n }\r\n\r\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n /**\r\n * Base class of the element component\r\n */\r\n private _itemComponentClass: Component$1<BaseVirtualListItemComponent> = CnVirtualListItemComponent;\r\n protected get itemComponentClass() { return this._itemComponentClass; }\r\n\r\n /**\r\n * Base class trackBox\r\n */\r\n private _trackBoxClass: Component$1<TrackBox> = TrackBox;\r\n\r\n /**\r\n * Dictionary of element sizes by their id\r\n */\r\n private _trackBox: TrackBox = new this._trackBoxClass(this.trackBy());\r\n\r\n private _$update = new Subject<string>();\r\n protected readonly $update = this._$update.asObservable();\r\n\r\n private _$scrollTo = new Subject<IScrollParams>();\r\n protected $scrollTo = this._$scrollTo.asObservable();\r\n\r\n private _$scrollToExecutor = new Subject<IScrollParams>();\r\n protected readonly $scrollToExecutor = this._$scrollToExecutor.asObservable();\r\n\r\n private _$scrollingTo = new BehaviorSubject<boolean>(false);\r\n\r\n private _$scroll = new Subject<IScrollEvent>();\r\n readonly $scroll = this._$scroll.asObservable();\r\n\r\n private _$tick = new Subject<void>();\r\n readonly $tick = this._$tick.asObservable();\r\n\r\n private _$fireUpdate = new Subject<boolean>();\r\n protected readonly $fireUpdate = this._$fireUpdate.asObservable();\r\n\r\n private _$fireUpdateNextFrame = new Subject<boolean>();\r\n protected readonly $fireUpdateNextFrame = this._$fireUpdateNextFrame.asObservable();\r\n\r\n private _$preventScrollSnapping = new BehaviorSubject<boolean>(false);\r\n protected readonly $preventScrollSnapping = this._$preventScrollSnapping.asObservable();\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _updateId: number | undefined;\r\n\r\n private _readyForShow = false;\r\n\r\n private _cached = false;\r\n\r\n private _isLoading = false;\r\n\r\n private _animationId: number = -1;\r\n\r\n protected get cachable() {\r\n return this._prerender()?.active ?? false;\r\n }\r\n\r\n protected get prerenderable() {\r\n return this.dynamicSize() && (this._trackBox?.isSnappedToEnd ?? false);\r\n }\r\n\r\n private _$viewInit = new BehaviorSubject<boolean>(false);\r\n private readonly $viewInit = this._$viewInit.asObservable();\r\n\r\n private _$destroy = new Subject<void>();\r\n private readonly $destroy = this._$destroy.asObservable();\r\n\r\n constructor() {\r\n CnVirtualListComponent.__nextId = CnVirtualListComponent.__nextId + 1 === Number.MAX_SAFE_INTEGER\r\n ? 0 : CnVirtualListComponent.__nextId + 1;\r\n this._id = CnVirtualListComponent.__nextId;\r\n\r\n let readyForAnimations = false;\r\n\r\n const _$created = new BehaviorSubject<boolean>(false),\r\n $created = _$created.asObservable(),\r\n $scrollerComponent = toObservable(this._scrollerComponent),\r\n $resizeViewport = $scrollerComponent.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n switchMap(scroller => scroller.$resizeViewport),\r\n ),\r\n $resizeContent = $scrollerComponent.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n switchMap(scroller => scroller.$resizeContent),\r\n );\r\n\r\n combineLatest([$created, this.$show, $resizeContent, $resizeViewport]).pipe(\r\n takeUntilDestroyed(),\r\n debounceTime(1),\r\n filter(([created, shown]) => created && shown),\r\n tap(v => {\r\n this._$initialized.next(true);\r\n }),\r\n ).subscribe();\r\n\r\n this._service.initialize(this._id, this._trackBox);\r\n\r\n const $animationParams = toObservable(this.animationParams);\r\n $animationParams.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.animationParams = v;\r\n }),\r\n ).subscribe();\r\n\r\n this._isInfinity = computed(() => {\r\n const mode = this.spreadingMode();\r\n return isSpreadingMode(mode, SpreadingModes.INFINITY);\r\n });\r\n\r\n const $isInfinity = toObservable(this._isInfinity);\r\n $isInfinity.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._trackBox.isInfinity = this._service.isInfinity = v;\r\n }),\r\n ).subscribe();\r\n\r\n const $zIndexWhenSelecting = toObservable(this.zIndexWhenSelecting);\r\n $zIndexWhenSelecting.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.zIndexWhenSelecting = v;\r\n }),\r\n ).subscribe();\r\n\r\n const $bounds = toObservable(this._bounds).pipe(\r\n filter(b => !!b),\r\n ),\r\n $rawScrollStartOffset = toObservable(this.scrollStartOffset),\r\n $rawScrollEndOffset = toObservable(this.scrollEndOffset);\r\n\r\n combineLatest([$bounds, $rawScrollStartOffset]).pipe(\r\n takeUntilDestroyed(),\r\n tap(([bounds, value]) => {\r\n const val = parseArithmeticExpression(value, this.isVertical ? bounds.height : bounds.width);\r\n this._precalculatedScrollStartOffset.set(val);\r\n }),\r\n ).subscribe();\r\n\r\n combineLatest([$bounds, $rawScrollEndOffset]).pipe(\r\n takeUntilDestroyed(),\r\n tap(([bounds, value]) => {\r\n const val = parseArithmeticExpression(value, this.isVertical ? bounds.height : bounds.width);\r\n this._precalculatedScrollEndOffset.set(val);\r\n }),\r\n ).subscribe();\r\n\r\n this._service.$intersectionElementBySnapToItemAlign.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => v !== null),\r\n tap(id => {\r\n this.onSnapItem.emit(id);\r\n }),\r\n ).subscribe();\r\n\r\n this._service.$tick.pipe(\r\n takeUntilDestroyed(),\r\n tap(() => {\r\n if (this.dynamicSize() === true) {\r\n this.checkBoundsOfElements();\r\n }\r\n this._scrollerComponent()?.tick();\r\n }),\r\n ).subscribe();\r\n\r\n $scrollerComponent.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n switchMap(scroller => scroller.$scrollDirection),\r\n tap(v => {\r\n this._trackBox.scrollDirection = v;\r\n }),\r\n ).subscribe();\r\n\r\n $resizeViewport.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n tap(v => {\r\n this._bounds.set(v);\r\n this.onAfterResize(true);\r\n }),\r\n ).subscribe();\r\n\r\n $resizeContent.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n tap(v => {\r\n this._listBounds.set(v);\r\n this.onAfterResize();\r\n }),\r\n ).subscribe();\r\n\r\n const $trackBy = toObservable(this.trackBy);\r\n $trackBy.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.trackBy = this._trackBox.trackBy = v;\r\n }),\r\n ).subscribe();\r\n\r\n this._trackBox.displayComponents = this._displayComponents;\r\n\r\n let hasUserAction = false;\r\n\r\n const $itemSize = toObservable(this.itemSize).pipe(\r\n map(v => typeof v === 'number' && v <= 0 ? DEFAULT_ITEM_SIZE : v),\r\n ),\r\n $minItemSize = toObservable(this.minItemSize).pipe(\r\n map(v => typeof v === 'number' && v <= 0 ? DEFAULT_MIN_ITEM_SIZE : v),\r\n ),\r\n $maxItemSize = toObservable(this.maxItemSize).pipe(\r\n map(v => typeof v === 'number' && v <= 0 ? DEFAULT_MAX_ITEM_SIZE : v),\r\n ),\r\n $scrollStartOffset = toObservable(this._actualScrollStartOffset).pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n ),\r\n $scrollEndOffset = toObservable(this._actualScrollEndOffset).pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n );\r\n\r\n combineLatest([$minItemSize, $bounds, $scrollStartOffset, $scrollEndOffset]).pipe(\r\n takeUntilDestroyed(),\r\n switchMap(([v, bounds, startOffset, endOffset]) => {\r\n if (v === VIEWPORT) {\r\n const isVertical = this.isVertical, viewportBounds = bounds,\r\n result = (isVertical ? (viewportBounds?.height ?? 0) : (viewportBounds?.width ?? 0)) - startOffset - endOffset;\r\n return of(result <= 0 ? 1 : result);\r\n }\r\n return of(v);\r\n }),\r\n tap(v => {\r\n this._actualMinItemSize.set(v);\r\n }),\r\n ).subscribe();\r\n\r\n combineLatest([$maxItemSize, $bounds, $scrollStartOffset, $scrollEndOffset]).pipe(\r\n takeUntilDestroyed(),\r\n switchMap(([v, bounds, startOffset, endOffset]) => {\r\n if (v === VIEWPORT) {\r\n const isVertical = this.isVertical, viewportBounds = bounds,\r\n result = (isVertical ? (viewportBounds?.height ?? 0) : (viewportBounds?.width ?? 0)) - startOffset - endOffset;\r\n return of(result <= 0 ? 1 : result);\r\n }\r\n return of(v);\r\n }),\r\n tap(v => {\r\n this._actualMaxItemSize.set(v);\r\n }),\r\n ).subscribe();\r\n\r\n const $actualMinItemSize = toObservable(this._actualMinItemSize),\r\n $actualMaxItemSize = toObservable(this._actualMaxItemSize);\r\n\r\n combineLatest([$itemSize, $bounds, $actualMinItemSize, $actualMaxItemSize, $scrollStartOffset, $scrollEndOffset]).pipe(\r\n takeUntilDestroyed(),\r\n switchMap(([v, bounds, min, max, startOffset, endOffset]) => {\r\n if (v === VIEWPORT) {\r\n const isVertical = this.isVertical, viewportBounds = bounds,\r\n result = (isVertical ? (viewportBounds?.height ?? 0) : (viewportBounds?.width ?? 0)) - startOffset - endOffset;\r\n return of(result < min ? min : (result > max ? max : result));\r\n }\r\n return of(v < min ? min : (v > max ? max : v));\r\n }),\r\n tap(v => {\r\n this._actualItemSize.set(v);\r\n this._service.itemSize = v;\r\n }),\r\n ).subscribe();\r\n\r\n const $actualItemSize = toObservable(this._actualItemSize),\r\n $actualItems = toObservable(this._actualItems).pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n );\r\n\r\n this._scroller = computed(() => {\r\n return this._scrollerComponent()?.scrollViewport();\r\n });\r\n\r\n this._list = computed(() => {\r\n return this._scrollerComponent()?.scrollContent();\r\n });\r\n\r\n this._service.$focusItem.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(params => {\r\n const { element, position, align, behavior } = params;\r\n this.focusItem(element, position, align, behavior);\r\n }),\r\n ).subscribe();\r\n\r\n const $list = toObservable(this._list).pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n map(v => v.nativeElement),\r\n take(1),\r\n );\r\n\r\n const preventKeyboardEvent = (event: KeyboardEvent, isVertical: boolean) => {\r\n const scroller = this._scrollerComponent();\r\n if (!!scroller) {\r\n const scrollStartOffset = this._actualScrollStartOffset(), scrollable = scroller.scrollable ?? false,\r\n scrollSize = isVertical ? scroller.scrollTop : scroller.scrollLeft,\r\n scrollWeight = isVertical ? scroller.scrollHeight : scroller.scrollWidth;\r\n if (scrollable || scrollSize <= scrollStartOffset || scrollSize >= scrollWeight) {\r\n if (!!event && event.cancelable) {\r\n event.stopImmediatePropagation();\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n };\r\n\r\n $list.pipe(\r\n takeUntilDestroyed(),\r\n filter(element => !!element),\r\n switchMap(element => {\r\n return fromEvent<KeyboardEvent>(element, EVENT_KEY_DOWN).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n switchMap(e => {\r\n switch (e.key) {\r\n case KEY_ARR_LEFT:\r\n if (!this.isVertical) {\r\n preventKeyboardEvent(e, this.isVertical);\r\n }\r\n break;\r\n case KEY_ARR_UP:\r\n if (this.isVertical) {\r\n preventKeyboardEvent(e, this.isVertical);\r\n }\r\n break;\r\n case KEY_ARR_RIGHT:\r\n if (!this.isVertical) {\r\n preventKeyboardEvent(e, this.isVertical);\r\n }\r\n break;\r\n case KEY_ARR_DOWN:\r\n if (this.isVertical) {\r\n preventKeyboardEvent(e, this.isVertical);\r\n }\r\n break;\r\n }\r\n return of(null);\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n const $scrollbarThickness = toObservable(this.scrollbarThickness);\r\n $scrollbarThickness.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n tap(scrollbarThickness => {\r\n this._service.scrollBarSize = scrollbarThickness;\r\n }),\r\n ).subscribe();\r\n\r\n this.$fireUpdateNextFrame.pipe(\r\n takeUntilDestroyed(),\r\n debounceTime(0),\r\n tap(userAction => {\r\n this._$fireUpdate.next(userAction);\r\n }),\r\n ).subscribe();\r\n\r\n const $scrollToItem = this.$scrollTo.pipe(takeUntilDestroyed()),\r\n $mouseDown = fromEvent(this._elementRef.nativeElement, MOUSE_DOWN).pipe(takeUntilDestroyed()),\r\n $touchStart = fromEvent(this._elementRef.nativeElement, TOUCH_START).pipe(takeUntilDestroyed());\r\n\r\n fromEvent<KeyboardEvent>(document, KEY_DOWN).pipe(\r\n takeUntilDestroyed(),\r\n filter(e => e.key === KEY_TAB),\r\n switchMap(e => {\r\n return fromEvent(this._elementRef.nativeElement, FOCUS).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n delay(0),\r\n takeUntil($scrollToItem),\r\n takeUntil($mouseDown),\r\n takeUntil($touchStart),\r\n tap(e => {\r\n this._service.focusFirstElement();\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n this._service.$scrollToStart.pipe(\r\n takeUntilDestroyed(),\r\n tap(options => {\r\n this.scrollToStart(null, options);\r\n }),\r\n ).subscribe();\r\n\r\n this._service.$scrollTo.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n tap(params => {\r\n const { id, cb, options } = params\r\n this.scrollTo(id, cb, options);\r\n }),\r\n ).subscribe();\r\n\r\n this._service.$scrollToEnd.pipe(\r\n takeUntilDestroyed(),\r\n tap(options => {\r\n this.scrollToEnd(null, options);\r\n }),\r\n ).subscribe();\r\n\r\n effect(() => {\r\n const dir = this.langTextDir() as TextDirection;\r\n this._service.langTextDir = dir;\r\n });\r\n\r\n effect(() => {\r\n const dist = this.clickDistance();\r\n this._service.clickDistance = dist;\r\n });\r\n\r\n this._actualSnapScrollToStart = computed(() => {\r\n const snapScrollToStart = this.snapScrollToStart(), spreadingMode = this.spreadingMode(),\r\n isInfinity = isSpreadingMode(spreadingMode, SpreadingModes.INFINITY);\r\n return isInfinity ? false : snapScrollToStart;\r\n });\r\n\r\n this._actualSnapScrollToEnd = computed(() => {\r\n const snapScrollToEnd = this.snapScrollToEnd(), spreadingMode = this.spreadingMode(),\r\n isInfinity = isSpreadingMode(spreadingMode, SpreadingModes.INFINITY);\r\n return isInfinity ? false : snapScrollToEnd;\r\n });\r\n\r\n const $viewInit = this.$viewInit,\r\n $prerenderContainer = toObservable(this._prerender);\r\n\r\n const $prerender = $viewInit.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n switchMap(v => {\r\n return $prerenderContainer.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n filter(v => !!v),\r\n switchMap(v => v.$render),\r\n );\r\n }),\r\n );\r\n\r\n const $fireUpdate = this.$fireUpdate;\r\n $fireUpdate.pipe(\r\n takeUntilDestroyed(),\r\n tap(userAction => {\r\n hasUserAction = userAction;\r\n }),\r\n ).subscribe();\r\n\r\n const $update = this.$update,\r\n renderStabilizer = (options?: IRenderStabilizerOptions) => {\r\n let renderStabilizerPrevScrollStateVersion = EMPTY_SCROLL_STATE_VERSION,\r\n renderStabilizerUpdateIterations = 0;\r\n const prepareIterations = options?.prepareIterations ?? PREPARE_ITERATIONS,\r\n prepareReupdateLength = options?.prepareReupdateLength ?? PREPARATION_REUPDATE_LENGTH;\r\n return of(null).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n switchMap(() => {\r\n renderStabilizerPrevScrollStateVersion = EMPTY_SCROLL_STATE_VERSION;\r\n renderStabilizerUpdateIterations = 0;\r\n this._cached = false;\r\n return $update.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n debounceTime(0),\r\n switchMap(v => {\r\n if (((renderStabilizerPrevScrollStateVersion === EMPTY_SCROLL_STATE_VERSION) || (renderStabilizerPrevScrollStateVersion !== v)) &&\r\n (renderStabilizerUpdateIterations < prepareIterations)) {\r\n if (v !== EMPTY_SCROLL_STATE_VERSION) {\r\n renderStabilizerPrevScrollStateVersion = v;\r\n }\r\n this._$fireUpdate.next(false);\r\n return of(false);\r\n }\r\n if (renderStabilizerPrevScrollStateVersion === v) {\r\n if (renderStabilizerUpdateIterations < prepareReupdateLength) {\r\n renderStabilizerUpdateIterations++;\r\n this._$fireUpdate.next(false);\r\n return of(false);\r\n }\r\n }\r\n renderStabilizerPrevScrollStateVersion = v;\r\n return of(true);\r\n }),\r\n filter(v => !!v),\r\n distinctUntilChanged(),\r\n )\r\n }),\r\n )\r\n };\r\n const $initialRenderStabilizer = renderStabilizer({\r\n prepareIterations: PREPARE_ITERATIONS,\r\n prepareReupdateLength: PREPARATION_REUPDATE_LENGTH,\r\n }),\r\n $updateItemsRenderStabilizer = renderStabilizer({\r\n prepareIterations: PREPARE_ITERATIONS_FOR_UPDATE_ITEMS,\r\n prepareReupdateLength: PREPARATION_REUPDATE_LENGTH_FOR_UPDATE_ITEMS,\r\n }),\r\n $chunkLoadingRenderStabilizer = renderStabilizer({\r\n prepareIterations: PREPARE_ITERATIONS_FOR_UPDATE_ITEMS,\r\n prepareReupdateLength: PREPARATION_REUPDATE_LENGTH_FOR_UPDATE_ITEMS,\r\n }),\r\n $collapseItemsRenderStabilizer = renderStabilizer({\r\n prepareIterations: PREPARE_ITERATIONS_FOR_COLLAPSE_ITEMS,\r\n prepareReupdateLength: PREPARATION_REUPDATE_LENGTH_FOR_COLLAPSE_ITEMS,\r\n }),\r\n $itemConfigMap = toObservable(this.itemConfigMap).pipe(\r\n map(v => !v ? {} : v),\r\n ),\r\n $divides = toObservable(this.divides),\r\n $dynamicSize = toObservable(this.dynamicSize),\r\n $snapScrollToStart = toObservable(this._actualSnapScrollToStart),\r\n $snapScrollToEnd = toObservable(this._actualSnapScrollToEnd),\r\n $waitForPreparation = toObservable(this.waitForPreparation),\r\n $items = toObservable(this.items);\r\n\r\n combineLatest([$viewInit, $prerenderContainer, $divides, $dynamicSize, $snapScrollToStart, $snapScrollToEnd, $waitForPreparation]).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n distinctUntilChanged(),\r\n filter(([init, prerenderContainer]) => !!init && !!prerenderContainer),\r\n debounceTime(0),\r\n switchMap(([, prerenderContainer, divides, dynamicSize, snapScrollToStart, snapScrollToEnd, waitForPreparation]) => {\r\n if (!!dynamicSize && !snapScrollToStart && !!snapScrollToEnd && !!waitForPreparation) {\r\n const $collection = (divides > 1 ? $actualItems : $items);\r\n return $collection.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n distinctUntilChanged((p, c) => {\r\n const pLength = p?.length ?? 0, cLength = c?.length ?? 0;\r\n return !((cLength > 0) || (pLength !== cLength && (pLength === 0 || cLength === 0)));\r\n }),\r\n tap(items => {\r\n this._trackBox.resetCollection(items, this._actualItemSize());\r\n }),\r\n switchMap(i => of((i ?? []).length > 0)),\r\n distinctUntilChanged(),\r\n tap(v => {\r\n readyForAnimations = false;\r\n if (!v) {\r\n this.cacheClean();\r\n this.cleanup();\r\n this._readyForShow = false;\r\n if (!snapScrollToStart && snapScrollToEnd) {\r\n this._trackBox.isScrollEnd = true;\r\n }\r\n const scrollerComponent = this._scrollerComponent();\r\n if (!!scrollerComponent) {\r\n scrollerComponent.prepared = false;\r\n scrollerComponent.stopScrolling();\r\n scrollerComponent.refresh();\r\n }\r\n this.classes.set({ prepared: true });\r\n this._$show.next(true);\r\n } else {\r\n this._trackBox.isScrollEnd = true;\r\n const waitForPreparation = this.waitForPreparation();\r\n if (waitForPreparation) {\r\n if (this.prerenderable) {\r\n this._cached = false;\r\n prerenderContainer!.on(this.items());\r\n }\r\n }\r\n this.classes.set({ prepared: false });\r\n this._$show.next(false);\r\n }\r\n }),\r\n switchMap(v => {\r\n if (!v) {\r\n if (this.prerenderable) {\r\n prerenderContainer!.off();\r\n }\r\n return of(false);\r\n }\r\n const waitForPreparation = this.waitForPreparation();\r\n if (waitForPreparation) {\r\n this._trackBox.isScrollEnd = true;\r\n if (this.prerenderable) {\r\n this._cached = false;\r\n prerenderContainer!.on(this.items());\r\n }\r\n return $initialRenderStabilizer.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n take(1),\r\n tap(() => {\r\n this._trackBox.isScrollEnd = true;\r\n if (this.prerenderable) {\r\n prerenderContainer!.off();\r\n }\r\n this._readyForShow = true;\r\n const scrollerComponent = this._scrollerComponent();\r\n if (!!scrollerComponent) {\r\n scrollerComponent.prepared = true;\r\n scrollerComponent.refresh();\r\n }\r\n this.classes.set({ prepared: true });\r\n this._$show.next(true);\r\n }),\r\n );\r\n }\r\n if (this.prerenderable) {\r\n prerenderContainer!.off();\r\n }\r\n this._readyForShow = true;\r\n if (!snapScrollToStart && snapScrollToEnd) {\r\n this._trackBox.isScrollEnd = true;\r\n }\r\n const scrollerComponent = this._scrollerComponent();\r\n if (!!scrollerComponent) {\r\n scrollerComponent.prepared = true;\r\n scrollerComponent.refresh();\r\n }\r\n this.classes.set({ prepared: true });\r\n this._$show.next(true);\r\n return of(false);\r\n }),\r\n );\r\n } else {\r\n prerenderContainer!.off();\r\n const $collection = (divides > 1 ? $actualItems : $items);\r\n return $collection.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(items => {\r\n if (!items || items.length === 0) {\r\n this.cacheClean();\r\n const scrollerComponent = this._scrollerComponent();\r\n if (!!scrollerComponent) {\r\n scrollerComponent.prepared = false;\r\n }\r\n this.classes.set({ prepared: false });\r\n this._$show.next(false);\r\n }\r\n this._trackBox.resetCollection(items, this._actualItemSize());\r\n }),\r\n switchMap(i => of((i ?? []).length > 0)),\r\n distinctUntilChanged(),\r\n filter(v => !!v),\r\n tap(() => {\r\n this._readyForShow = true;\r\n if (snapScrollToStart) {\r\n this._trackBox.isScrollStart = true;\r\n } else if (snapScrollToEnd) {\r\n this._trackBox.isScrollEnd = true;\r\n }\r\n const scrollerComponent = this._scrollerComponent();\r\n if (!!scrollerComponent) {\r\n scrollerComponent.prepared = true;\r\n scrollerComponent.refresh();\r\n }\r\n this.classes.set({ prepared: true });\r\n this._$show.next(true);\r\n this._$fireUpdate.next(false);\r\n }),\r\n );\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n $items.pipe(\r\n map(v => v?.length > 0),\r\n distinctUntilChanged(),\r\n takeUntilDestroyed(this._destroyRef),\r\n filter(v => !!v),\r\n tap(() => {\r\n this._cached = false;\r\n }),\r\n switchMap(() => {\r\n return $prerender.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n debounceTime(0),\r\n take(1),\r\n tap(cache => {\r\n if (!this._readyForShow) {\r\n this._trackBox.refreshCache(cache);\r\n this._cached = true;\r\n this._$fireUpdate.next(true);\r\n }\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n this._service.$focusedId.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this.focusedElement.set(v ?? null);\r\n }),\r\n ).subscribe();\r\n\r\n $list.pipe(\r\n takeUntilDestroyed(),\r\n filter(element => !!element),\r\n tap(element => {\r\n this._service.listElement = element;\r\n }),\r\n ).subscribe();\r\n\r\n const $defaultItemValue = toObservable(this.defaultItemValue),\r\n $selectByClick = toObservable(this.selectByClick),\r\n $collapseByClick = toObservable(this.collapseByClick),\r\n $isScrollStart = toObservable(this._isScrollStart),\r\n $isScrollFinished = toObservable(this._isScrollEnd),\r\n $isVertical = toObservable(this.direction).pipe(\r\n map(v => this.getIsVertical(v || DEFAULT_DIRECTION)),\r\n );\r\n\r\n $snapScrollToStart.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.snapScrollToStart = v;\r\n }),\r\n ).subscribe();\r\n\r\n $snapScrollToEnd.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.snapScrollToEnd = v;\r\n }),\r\n ).subscribe();\r\n\r\n $isVertical.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.isVertical = v;\r\n }),\r\n ).subscribe();\r\n\r\n $dynamicSize.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.dynamic = v;\r\n }),\r\n ).subscribe();\r\n\r\n $defaultItemValue.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.defaultItemValue = v;\r\n }),\r\n ).subscribe();\r\n\r\n $scrollStartOffset.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n tap(v => {\r\n this._trackBox.scrollStartOffset = this._service.scrollStartOffset = v;\r\n }),\r\n ).subscribe();\r\n\r\n $scrollEndOffset.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n tap(v => {\r\n this._trackBox.scrollEndOffset = this._service.scrollEndOffset = v;\r\n }),\r\n ).subscribe();\r\n\r\n $isScrollStart.pipe(\r\n takeUntilDestroyed(),\r\n skip(1),\r\n distinctUntilChanged(),\r\n debounceTime(0),\r\n filter(v => !!v && this._readyForShow),\r\n tap(() => {\r\n if (this._scrollerComponent()?.scrollable) {\r\n this.onScrollReachStart.emit();\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n $isScrollFinished.pipe(\r\n takeUntilDestroyed(),\r\n skip(1),\r\n distinctUntilChanged(),\r\n debounceTime(0),\r\n filter(v => !!v && this._readyForShow),\r\n tap(v => {\r\n if (this._scrollerComponent()?.scrollable) {\r\n this.onScrollReachEnd.emit();\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n $selectByClick.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.selectByClick = v;\r\n }),\r\n ).subscribe();\r\n\r\n $collapseByClick.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.collapseByClick = v;\r\n }),\r\n ).subscribe();\r\n\r\n $trackBy.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._trackBox.trackingPropertyName = v;\r\n }),\r\n ).subscribe();\r\n\r\n $divides.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._trackBox.divides = v;\r\n }),\r\n ).subscribe();\r\n\r\n this._actualAlignment = computed(() => {\r\n const alignment = this.alignment(), spreadingMode = this.spreadingMode();\r\n return isSpreadingMode(spreadingMode, SpreadingModes.INFINITY) ? Alignments.CENTER : alignment;\r\n });\r\n\r\n this._actualScrollbarEnabled = computed(() => {\r\n const scrollbarEnabled = this.scrollbarEnabled(), spreadingMode = this.spreadingMode();\r\n return isSpreadingMode(spreadingMode, SpreadingModes.INFINITY) ? false : scrollbarEnabled;\r\n });\r\n\r\n const $alignment = toObservable(this._actualAlignment),\r\n $precalculatedScrollStartOffset = toObservable(this._precalculatedScrollStartOffset),\r\n $precalculatedScrollEndOffset = toObservable(this._precalculatedScrollEndOffset),\r\n $listBounds = toObservable(this._listBounds).pipe(\r\n filter(b => !!b),\r\n ), $scrollSize = this._$scrollSize.asObservable(),\r\n $bufferSize = toObservable(this.bufferSize).pipe(\r\n map(v => v < 0 ? DEFAULT_BUFFER_SIZE : v),\r\n ),\r\n $maxBufferSize = toObservable(this.maxBufferSize).pipe(\r\n map(v => v < 0 ? DEFAULT_BUFFER_SIZE : v),\r\n ),\r\n $snapToItem = toObservable(this.snapToItem),\r\n $snapToItemAlign = toObservable(this.snapToItemAlign),\r\n $stickyEnabled = toObservable(this.stickyEnabled),\r\n $isLazy = toObservable(this.collectionMode).pipe(\r\n map(v => this.getIsLazy(v || DEFAULT_COLLECTION_MODE)),\r\n ),\r\n $enabledBufferOptimization = toObservable(this.enabledBufferOptimization),\r\n $snappingMethod = toObservable(this.snappingMethod).pipe(\r\n map(v => this.getIsSnappingMethodAdvanced(v || DEFAULT_SNAPPING_METHOD)),\r\n ),\r\n $collapsingMode = toObservable(this.collapsingMode),\r\n $selectingMode = toObservable(this.selectingMode),\r\n $selectedIds = toObservable(this.selectedIds),\r\n $collapsedIds = toObservable(this.collapsedIds).pipe(\r\n distinctUntilChanged(),\r\n map(v => Array.isArray(v) ? v : []),\r\n ),\r\n $collapsedItemIds = toObservable(this._collapsedItemIds).pipe(\r\n distinctUntilChanged(),\r\n map(v => Array.isArray(v) ? v : []),\r\n ),\r\n $langTextDir = toObservable(this.langTextDir),\r\n $itemTransform = toObservable(this.itemTransform),\r\n $screenReaderMessage = toObservable(this.screenReaderMessage),\r\n $displayItems = this._service.$displayItems,\r\n $cacheVersion = this._service.$cacheVersion;\r\n\r\n combineLatest([$isVertical, $langTextDir, $itemTransform]).pipe(\r\n takeUntilDestroyed(),\r\n debounceTime(0),\r\n tap(([isVertical, langTextDir, itemTransform]) => {\r\n if (langTextDir === TextDirections.RTL && !isVertical && itemTransform) {\r\n throw Error('Currently, converting right-to-left items in horizontal lists is not possible.');\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n $snapToItem.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.snapToItem = v;\r\n }),\r\n ).subscribe();\r\n\r\n $actualItems.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.items = v;\r\n }),\r\n ).subscribe();\r\n\r\n combineLatest([$actualItems, $scrollerComponent, this.$initialized]).pipe(\r\n takeUntilDestroyed(),\r\n takeUntil(this.$scrollTo),\r\n filter(([, c, i]) => !!c && !!i),\r\n debounceTime(0),\r\n tap(() => {\r\n this._scrollerComponent()?.snapIfNeed(false, false);\r\n }),\r\n ).subscribe();\r\n\r\n $itemConfigMap.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.itemConfigMap = v;\r\n }),\r\n ).subscribe();\r\n\r\n $collapsedIds.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.collapsedIds = v;\r\n }),\r\n ).subscribe();\r\n\r\n combineLatest([$displayItems, $screenReaderMessage, $isVertical, $scrollSize, $bounds]).pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n debounceTime(100),\r\n takeUntilDestroyed(),\r\n tap(([items, screenReaderMessage, isVertical, scrollSize, bounds]) => {\r\n this.screenReaderFormattedMessage.set(\r\n formatScreenReaderMessage(items, screenReaderMessage, scrollSize, isVertical, bounds)\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n $isLazy.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._trackBox.isLazy = v;\r\n }),\r\n ).subscribe();\r\n\r\n const $itemsComposition = $items.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n switchMap(items => {\r\n return combineLatest([$collapsedItemIds, $itemConfigMap, $trackBy, $divides]).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n debounceTime(0),\r\n switchMap(([collapsedIds, itemConfigMap, trackBy, divides]) => {\r\n return of({ items, collapsedIds, itemConfigMap, trackBy, divides });\r\n }),\r\n );\r\n }),\r\n );\r\n\r\n $itemsComposition.pipe(\r\n takeUntilDestroyed(),\r\n switchMap(({ items, collapsedIds, itemConfigMap, trackBy, divides }) => {\r\n if (items.length === 0 || !this._readyForShow || !(this.cachable && !this._cached &&\r\n !this._trackBox.isSnappedToStart && this._trackBox.isSnappedToEnd)) {\r\n return of({ items, collapsedIds, itemConfigMap, trackBy, divides });\r\n }\r\n return $updateItemsRenderStabilizer.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n take(1),\r\n debounceTime(0),\r\n switchMap(() => {\r\n return of({ items, collapsedIds, itemConfigMap, trackBy, divides });\r\n }),\r\n );\r\n }),\r\n tap(({ items, collapsedIds, itemConfigMap, trackBy, divides }) => {\r\n const hiddenItems = new CMap<Id, boolean>();\r\n\r\n let isCollapsed = false;\r\n for (let i = 0, l = items.length; i < l; i++) {\r\n const item = items[i], id = item?.[trackBy];\r\n if (!!item) {\r\n const group = (itemConfigMap[id]?.sticky ?? 0) > 0, collapsed = collapsedIds.includes(id);\r\n if (!!group) {\r\n isCollapsed = collapsed;\r\n } else {\r\n if (isCollapsed) {\r\n hiddenItems.set(id, true);\r\n }\r\n }\r\n }\r\n }\r\n\r\n const actualItems: IVirtualListCollection = [];\r\n for (let i = 0, l = items.length; i < l; i++) {\r\n const item = items[i], id = item?.[trackBy];\r\n if (!!item && hiddenItems.has(id)) {\r\n continue;\r\n }\r\n actualItems.push(item);\r\n }\r\n\r\n const normalizedCollection = normalizeCollection(actualItems, itemConfigMap, trackBy, divides);\r\n\r\n if (this._scrollerComponent()?.inverted) {\r\n normalizedCollection.reverse();\r\n }\r\n\r\n this._actualItems.set(normalizedCollection);\r\n }),\r\n ).subscribe();\r\n\r\n $isVertical.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._isVertical = v;\r\n const el: HTMLElement = this._elementRef.nativeElement;\r\n toggleClassName(el, v ? CLASS_LIST_VERTICAL : CLASS_LIST_HORIZONTAL, [v ? CLASS_LIST_HORIZONTAL : CLASS_LIST_VERTICAL]);\r\n }),\r\n ).subscribe();\r\n\r\n $snappingMethod.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._isSnappingMethodAdvanced = this._trackBox.isSnappingMethodAdvanced = v;\r\n }),\r\n ).subscribe();\r\n\r\n $selectingMode.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n const el = this._list()?.nativeElement;\r\n if (this.getIsMultiSelection(v || DEFAULT_SNAPPING_METHOD)) {\r\n this._isMultiSelection = true;\r\n this._isSingleSelection = false;\r\n if (!!el) {\r\n el.role = ROLE_LIST_BOX;\r\n }\r\n this._service.selectingMode = SelectingModesTypes.MULTI_SELECT;\r\n } else if (this.getIsSingleSelection(v || DEFAULT_SNAPPING_METHOD)) {\r\n this._isSingleSelection = true;\r\n this._isMultiSelection = false;\r\n if (!!el) {\r\n el.role = ROLE_LIST_BOX;\r\n }\r\n this._service.selectingMode = SelectingModesTypes.SELECT;\r\n } else if (this.getIsNoneSelection(v || DEFAULT_SNAPPING_METHOD)) {\r\n this._isSingleSelection = this._isMultiSelection = false;\r\n if (!!el) {\r\n el.role = ROLE_LIST;\r\n }\r\n this._service.selectingMode = SelectingModesTypes.NONE;\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n $collapsingMode.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n if (this.getIsNoneCollapse()) {\r\n this._service.isNoneCollapse = true;\r\n this._service.isAccordionCollapse = this._service.isMultipleCollapse = this._isAccordionCollapse = this._isMultipleCollapse = false;\r\n } else if (this.getIsMultipleCollapse()) {\r\n this._service.isMultipleCollapse = this._isMultipleCollapse = true;\r\n this._service.isAccordionCollapse = this._service.isNoneCollapse = this._isAccordionCollapse = false;\r\n } else if (this.getIsAccordionCollapse()) {\r\n this._service.isAccordionCollapse = this._isAccordionCollapse = true;\r\n this._service.isMultipleCollapse = this._service.isNoneCollapse = this._isMultipleCollapse = false;\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n const $preventScrollSnapping = this.$preventScrollSnapping;\r\n\r\n $preventScrollSnapping.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n tap(() => {\r\n if (this._readyForShow) {\r\n this._trackBox.isScrollEnd;\r\n this._trackBox.isScrollStart = this._trackBox.isScrollEnd = false;\r\n this._isScrollStart.set(false);\r\n this._isScrollEnd.set(false);\r\n const scroller = this._scrollerComponent();\r\n if (!!scroller) {\r\n this._trackBox.preventScrollSnapping(true);\r\n }\r\n }\r\n }),\r\n tap(() => {\r\n if (this._readyForShow) {\r\n this._$preventScrollSnapping.next(false);\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n $collapsedItemIds.pipe(\r\n takeUntilDestroyed(),\r\n filter(() => this._readyForShow),\r\n switchMap(() => {\r\n return $collapseItemsRenderStabilizer.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n take(1),\r\n tap(() => {\r\n this._$fireUpdate.next(true);\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n let isChunkLoading = false;\r\n const $loading = toObservable(this.loading);\r\n $loading.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n skip(1),\r\n filter(v => !v),\r\n switchMap(() => {\r\n isChunkLoading = true;\r\n const scrollbar = this._scrollerComponent();\r\n if (!!scrollbar) {\r\n scrollbar.stopScrollbar();\r\n scrollbar.refreshScrollbar();\r\n }\r\n return $actualItems.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n take(1),\r\n tap(() => {\r\n this._$fireUpdateNextFrame.next(true);\r\n }),\r\n switchMap(() => $chunkLoadingRenderStabilizer.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n take(1),\r\n tap(() => {\r\n isChunkLoading = false;\r\n this._trackBox.resetCacheChunkInfo();\r\n const scrollbar = this._scrollerComponent();\r\n if (!!scrollbar) {\r\n scrollbar.stopScrollbar();\r\n scrollbar.refreshScrollbar();\r\n }\r\n }),\r\n )),\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n $loading.pipe(\r\n takeUntilDestroyed(),\r\n skip(1),\r\n distinctUntilChanged(),\r\n tap(v => {\r\n if (v) {\r\n this._isLoading = true;\r\n }\r\n }),\r\n filter(v => !v),\r\n tap(() => {\r\n if (this._readyForShow) {\r\n this._$preventScrollSnapping.next(true);\r\n }\r\n }),\r\n debounceTime(100),\r\n tap(() => {\r\n this._isLoading = false;\r\n }),\r\n ).subscribe();\r\n\r\n let prevCacheVersion: number = -1, prevScrollable = false;\r\n\r\n $viewInit.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n switchMap(() => {\r\n return this.$show.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n debounceTime(Math.max(500, this.animationParams().scrollToItem)),\r\n tap(() => {\r\n if (this._readyForShow || (this.cachable && this._cached)) {\r\n readyForAnimations = true;\r\n }\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n const update = (params: {\r\n alignment: Alignment; precalculatedScrollStartOffset: number; precalculatedScrollEndOffset: number; trackBy: string; isInfinity: boolean;\r\n snapScrollToStart: boolean, snapScrollToEnd: boolean; bounds: ISize; listBounds: ISize;\r\n items: IVirtualListCollection<Object>; itemConfigMap: IVirtualListItemConfigMap; scrollSize: number; itemSize: number;\r\n minItemSize: number; maxItemSize: number; bufferSize: number; maxBufferSize: number; stickyEnabled: boolean; isVertical: boolean;\r\n dynamicSize: boolean; divides: number; enabledBufferOptimization: boolean; cacheVersion: number; userAction: boolean;\r\n snapToItem: boolean, snapToItemAlign: SnapToItemAlign, collapsedIds: Array<Id>; itemTransform: ItemTransform | null;\r\n }) => {\r\n const {\r\n alignment, snapScrollToStart, snapScrollToEnd, bounds, items, itemConfigMap, scrollSize, itemSize, minItemSize,\r\n maxItemSize, bufferSize, maxBufferSize, stickyEnabled, isVertical, dynamicSize, enabledBufferOptimization, snapToItem,\r\n snapToItemAlign, userAction, collapsedIds, cacheVersion, itemTransform,\r\n } = params;\r\n const cacheChanged = prevCacheVersion !== cacheVersion;\r\n prevCacheVersion = cacheVersion;\r\n const scroller = this._scrollerComponent();\r\n let totalSize = 0;\r\n if (!!scroller) {\r\n const isInfinity = this._isInfinity(), collapsable = collapsedIds.length > 0, cachable = this.cachable, cached = this._cached, waitingCache = cachable && !cached,\r\n emitUpdate = !this._readyForShow || waitingCache || collapsable || isChunkLoading,\r\n fireUpdate = !this._readyForShow || this._$scrollingTo.getValue(),\r\n fireUpdateAtEdges = fireUpdate || !isInfinity,\r\n useAnimations = !isInfinity && readyForAnimations && prevScrollable;\r\n if (this._readyForShow || (cachable && cached)) {\r\n const inverted = scroller.inverted,\r\n currentScrollSize = (isVertical ? scroller.scrollTop : scroller.scrollLeft), maCnScrollSize = (isVertical ? scroller.scrollHeight : scroller.scrollWidth);\r\n let actualScrollSize = !this._readyForShow && snapScrollToEnd ? maCnScrollSize :\r\n (isVertical ? scroller.scrollTop : scroller.scrollLeft),\r\n leftLayoutOffset = 0,\r\n displayItems: IRenderVirtualListCollection;\r\n\r\n const { width, height } = bounds,\r\n opts: IUpdateCollectionOptions<IVirtualListItem, IVirtualListCollection> = {\r\n alignment, bounds: { width, height }, dynamicSize, isVertical, itemSize, minItemSize, maxItemSize, bufferSize, maxBufferSize,\r\n scrollSize: inverted ? maCnScrollSize - actualScrollSize : actualScrollSize, stickyEnabled, enabledBufferOptimization,\r\n snapToItem, snapToItemAlign, inverted, itemTransform,\r\n };\r\n\r\n if (snapScrollToEnd && !this._readyForShow) {\r\n const { displayItems: calculatedDisplayItems, totalSize: calculatedTotalSize1, leftLayoutOffset: leftLayoutOffset1 } =\r\n this._trackBox.updateCollection(items, itemConfigMap, { ...opts, scrollSize: inverted ? maCnScrollSize - actualScrollSize : actualScrollSize });\r\n displayItems = calculatedDisplayItems;\r\n totalSize = calculatedTotalSize1;\r\n leftLayoutOffset = leftLayoutOffset1;\r\n\r\n if (!!itemTransform && dynamicSize && this._trackBox.delta !== 0) {\r\n const { displayItems: calculatedDisplayItems, totalSize: calculatedTotalSize1, leftLayoutOffset: leftLayoutOffset1 } =\r\n this._trackBox.updateCollection(items, itemConfigMap, { ...opts, scrollSize: inverted ? (maCnScrollSize - actualScrollSize + this._trackBox.delta) : (actualScrollSize + this._trackBox.delta) });\r\n displayItems = calculatedDisplayItems;\r\n totalSize = calculatedTotalSize1;\r\n leftLayoutOffset = leftLayoutOffset1;\r\n }\r\n } else {\r\n const { displayItems: calculatedDisplayItems, totalSize: calculatedTotalSize, leftLayoutOffset: leftLayoutOffset1 } = this._trackBox.updateCollection(items, itemConfigMap, opts);\r\n displayItems = calculatedDisplayItems;\r\n totalSize = calculatedTotalSize;\r\n leftLayoutOffset = leftLayoutOffset1;\r\n\r\n if (!!itemTransform && dynamicSize && this._trackBox.delta !== 0) {\r\n const { displayItems: calculatedDisplayItems, totalSize: calculatedTotalSize, leftLayoutOffset: leftLayoutOffset1 } = this._trackBox.updateCollection(items, itemConfigMap,\r\n { ...opts, scrollSize: inverted ? (maCnScrollSize - actualScrollSize + this._trackBox.delta) : (actualScrollSize + this._trackBox.delta) });\r\n displayItems = calculatedDisplayItems;\r\n totalSize = calculatedTotalSize;\r\n leftLayoutOffset = leftLayoutOffset1;\r\n }\r\n }\r\n\r\n scroller.totalSize = totalSize;\r\n\r\n scroller.startLayoutOffset = leftLayoutOffset;\r\n\r\n this._totalSize.set(totalSize);\r\n\r\n this._service.collection = displayItems;\r\n\r\n this.resetBoundsSize(isVertical, totalSize);\r\n\r\n this.createDisplayComponentsIfNeed(displayItems);\r\n\r\n this.tracking();\r\n\r\n this.snappingHandler();\r\n\r\n const delta = this._trackBox.delta,\r\n scrollPositionAfterUpdate = actualScrollSize + delta,\r\n roundedScrollPositionAfterUpdate = scrollPositionAfterUpdate,\r\n roundedMaxPositionAfterUpdate = isVertical ? scroller.actualScrollHeight : scroller.actualScrollWidth;\r\n\r\n if (this._isSnappingMethodAdvanced) {\r\n this.updateRegularRenderer();\r\n }\r\n\r\n this.updateOffsetsByAllignment();\r\n\r\n scroller.delta = delta;\r\n\r\n prevScrollable = scroller.scrollable;\r\n\r\n if (!scroller.grabbing()) {\r\n if ((snapScrollToStart && this._trackBox.isSnappedToStart && scroller.scrollable) ||\r\n (snapScrollToStart && currentScrollSize <= MIN_PIXELS_FOR_PREVENT_SNAPPING)) {\r\n if (currentScrollSize !== roundedScrollPositionAfterUpdate) {\r\n this._trackBox.clearDelta();\r\n\r\n if (this._readyForShow) {\r\n this.emitScrollEvent(true, false, userAction);\r\n }\r\n this._trackBox.isScrollEnd;\r\n const params: IScrollToParams = {\r\n [isVertical ? TOP_PROP_NAME : LEFT_PROP_NAME]: 0, userAction,\r\n fireUpdate: fireUpdateAtEdges, behavior: !useAnimations ? BEHAVIOR_INSTANT : ((this.animationParams().scrollToItem > 0 && this.scrollBehavior() !== BEHAVIOR_INSTANT) ? BEHAVIOR_AUTO : BEHAVIOR_INSTANT),\r\n blending: useAnimations && scroller.hasAnimation(this._animationId), duration: this.animationParams().scrollToItem,\r\n };\r\n const animationId = scroller?.scrollTo?.(params);\r\n if (animationId > -1) {\r\n this._animationId = animationId;\r\n } else {\r\n scroller.stopAnimation(this._animationId);\r\n }\r\n if (emitUpdate) {\r\n this._$update.next(getScrollStateVersion(totalSize, this._isVertical ? scroller.scrollTop : scroller.scrollLeft));\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if ((snapScrollToEnd && this._trackBox.isSnappedToEnd) || (snapScrollToEnd && !scroller.scrollable) ||\r\n (scrollPositionAfterUpdate + MIN_PIXELS_FOR_PREVENT_SNAPPING >= roundedMaxPositionAfterUpdate) ||\r\n (roundedScrollPositionAfterUpdate >= scrollPositionAfterUpdate + MIN_PIXELS_FOR_PREVENT_SNAPPING)) {\r\n this._trackBox.clearDelta();\r\n\r\n if (!this._trackBox.isSnappedToEnd) {\r\n this._trackBox.isScrollEnd = true;\r\n this._trackBox.isScrollStart = false;\r\n }\r\n\r\n if (this._readyForShow) {\r\n this.emitScrollEvent(true, false, false);\r\n }\r\n const params: IScrollToParams = {\r\n [isVertical ? TOP_PROP_NAME : LEFT_PROP_NAME]: roundedMaxPositionAfterUpdate,\r\n fireUpdate: fireUpdateAtEdges, behavior: !useAnimations ? BEHAVIOR_INSTANT : ((this.animationParams().scrollToItem > 0 && this.scrollBehavior() !== BEHAVIOR_INSTANT) ? BEHAVIOR_AUTO : BEHAVIOR_INSTANT), userAction: false,\r\n blending: useAnimations && scroller.hasAnimation(this._animationId) || cacheChanged, duration: this.animationParams().scrollToItem,\r\n };\r\n const animationId = scroller?.scrollTo?.(params);\r\n if (animationId > -1) {\r\n this._animationId = animationId;\r\n } else {\r\n scroller.stopAnimation(this._animationId);\r\n }\r\n if (emitUpdate) {\r\n this._$update.next(getScrollStateVersion(totalSize, this._isVertical ? scroller.scrollTop : scroller.scrollLeft));\r\n }\r\n return;\r\n }\r\n }\r\n\r\n if (scrollSize !== scrollPositionAfterUpdate &&\r\n ((scrollPositionAfterUpdate >= 0 && scrollPositionAfterUpdate < roundedMaxPositionAfterUpdate) ||\r\n (scrollSize !== roundedMaxPositionAfterUpdate || currentScrollSize !== scrollPositionAfterUpdate))) {\r\n this._trackBox.clearDelta();\r\n\r\n if (this._readyForShow) {\r\n this.emitScrollEvent(true, false, userAction);\r\n }\r\n if (this._animationId > -1) {\r\n scroller.stopAnimation(this._animationId);\r\n this._animationId = -1;\r\n }\r\n const params: IScrollToParams = {\r\n [isVertical ? TOP_PROP_NAME : LEFT_PROP_NAME]: scrollPositionAfterUpdate, blending: true, userAction,\r\n fireUpdate, behavior: BEHAVIOR_INSTANT, duration: 0,\r\n };\r\n scroller.scrollTo(params);\r\n if (emitUpdate) {\r\n this._$update.next(getScrollStateVersion(totalSize, this._isVertical ? scroller.scrollTop : scroller.scrollLeft));\r\n }\r\n return;\r\n }\r\n }\r\n if (emitUpdate) {\r\n this._$update.next(getScrollStateVersion(totalSize, this._isVertical ? scroller.scrollTop : scroller.scrollLeft));\r\n }\r\n }\r\n };\r\n\r\n let prevItems: IVirtualListCollection = [];\r\n const debouncedUpdate = debounce(update, 0, MAX_NUMBERS_OF_SKIPS_FOR_QUALITY_OPTIMIZATION_LVL1);\r\n $viewInit.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n switchMap(() => {\r\n return combineLatest([$trackBy, $isInfinity, $snapScrollToStart, $snapScrollToEnd, $bounds, $listBounds, $actualItems, $itemConfigMap, $scrollSize,\r\n $actualItemSize, $actualMinItemSize, $actualMaxItemSize, $collapsedItemIds, $bufferSize, $maxBufferSize, $stickyEnabled, $isVertical,\r\n $dynamicSize, $divides, $snapToItem, $snapToItemAlign, $enabledBufferOptimization, $itemTransform, $alignment,\r\n $precalculatedScrollStartOffset, $precalculatedScrollEndOffset, $cacheVersion, this.$fireUpdate,\r\n ]).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(([\r\n trackBy, isInfinity, snapScrollToStart, snapScrollToEnd, bounds, listBounds, items, itemConfigMap, scrollSize, itemSize, minItemSize,\r\n maxItemSize, collapsedIds, bufferSize, maxBufferSize, stickyEnabled, isVertical, dynamicSize, divides, snapToItem, snapToItemAlign,\r\n enabledBufferOptimization, itemTransform, alignment, precalculatedScrollStartOffset, precalculatedScrollEndOffset, cacheVersion,\r\n ]) => {\r\n if (!_$created.getValue()) {\r\n _$created.next(true);\r\n }\r\n\r\n let itemsChanged = false;\r\n if (prevItems !== items) {\r\n itemsChanged = true;\r\n prevItems = items;\r\n }\r\n const enabledOptimization = this.scrollingSettings()?.optimization ?? DEFAULT_SCROLLING_SETTINGS.optimization,\r\n velocity = this._scrollerComponent()?.averageVelocity ?? 0,\r\n isScrolling = this._$scrollingTo.getValue(),\r\n useDebouncedUpdate = (dynamicSize && !itemTransform) && !(snapScrollToEnd && this._trackBox.isSnappedToEnd) && !itemsChanged && hasUserAction && !isScrolling &&\r\n (velocity > 0 && velocity < MAX_VELOCITY_FOR_SCROLL_QUALITY_OPTIMIZATION_LVL1);\r\n if (enabledOptimization) {\r\n if (useDebouncedUpdate) {\r\n debouncedUpdate.execute({\r\n trackBy, isInfinity, snapScrollToStart, snapScrollToEnd, bounds, listBounds, items, itemConfigMap, scrollSize, itemSize, minItemSize,\r\n maxItemSize, collapsedIds, bufferSize, maxBufferSize, stickyEnabled, isVertical, dynamicSize, divides, enabledBufferOptimization, itemTransform,\r\n snapToItem, snapToItemAlign, alignment, precalculatedScrollStartOffset, precalculatedScrollEndOffset, cacheVersion, userAction: hasUserAction,\r\n });\r\n return;\r\n }\r\n\r\n debouncedUpdate.dispose();\r\n }\r\n\r\n if (!isScrolling) {\r\n update({\r\n trackBy, isInfinity, snapScrollToStart, snapScrollToEnd, bounds, listBounds, items, itemConfigMap, scrollSize, itemSize, minItemSize,\r\n maxItemSize, collapsedIds, bufferSize, maxBufferSize, stickyEnabled, isVertical, dynamicSize, divides, enabledBufferOptimization, itemTransform,\r\n snapToItem, snapToItemAlign, alignment, precalculatedScrollStartOffset, precalculatedScrollEndOffset, cacheVersion, userAction: hasUserAction,\r\n });\r\n }\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n const $scroller = toObservable(this._scroller).pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n map(v => v.nativeElement),\r\n take(1),\r\n ),\r\n $scrollerScroll = $scrollerComponent.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n take(1),\r\n switchMap(scroller => scroller.$scroll),\r\n ),\r\n $scrollerScrollEnd = $scrollerComponent.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n take(1),\r\n switchMap(scroller => scroller.$scrollEnd),\r\n ),\r\n $scrollbarScroll = $scrollerComponent.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n take(1),\r\n switchMap(scroller => scroller.$scrollbarScroll),\r\n );\r\n\r\n const scrollHandler = (userAction: boolean = false) => {\r\n const scroller = this._scrollerComponent();\r\n if (!!scroller) {\r\n const isVertical = this._isVertical,\r\n scrollSize = (isVertical ? scroller.scrollTop : scroller.scrollLeft),\r\n actualScrollSize = scrollSize;\r\n\r\n if (this._readyForShow) {\r\n if (userAction) {\r\n this._$preventScrollSnapping.next(true);\r\n }\r\n }\r\n\r\n this._$scrollSize.next(actualScrollSize);\r\n }\r\n };\r\n\r\n $scroller.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n switchMap(scroller => {\r\n return $scrollbarScroll.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(userAction => {\r\n const scrollerEl = this._scroller()?.nativeElement, scrollerComponent = this._scrollerComponent();\r\n if (!!scrollerEl && !!scrollerComponent) {\r\n this.emitScrollEvent(false, this._readyForShow, hasUserAction);\r\n }\r\n if (this._readyForShow) {\r\n if (userAction) {\r\n if (this._trackBox.isSnappedToStart) {\r\n this._$preventScrollSnapping.next(true);\r\n }\r\n if (this._trackBox.isSnappedToEnd) {\r\n this._$preventScrollSnapping.next(true);\r\n }\r\n }\r\n }\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n $scroller.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n switchMap(scroller => {\r\n return $scrollerScroll.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n );\r\n }),\r\n tap(userAction => {\r\n hasUserAction = userAction;\r\n const scrollerEl = this._scroller()?.nativeElement, scrollerComponent = this._scrollerComponent();\r\n if (!!scrollerEl && !!scrollerComponent) {\r\n this.emitScrollEvent(false, this._readyForShow, userAction);\r\n }\r\n scrollHandler(userAction);\r\n }),\r\n ).subscribe();\r\n\r\n $scroller.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n switchMap(scroller => {\r\n return $scrollerScrollEnd.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n );\r\n }),\r\n tap(userAction => {\r\n hasUserAction = userAction;\r\n const scrollerEl = this._scroller()?.nativeElement, scrollerComponent = this._scrollerComponent();\r\n if (!!scrollerEl && !!scrollerComponent) {\r\n this.emitScrollEvent(true, this._readyForShow, userAction);\r\n }\r\n scrollHandler(userAction);\r\n }),\r\n ).subscribe();\r\n\r\n const $scrollTo = this.$scrollTo,\r\n $scrollToExecutor = this.$scrollToExecutor;\r\n\r\n combineLatest([$scroller, $trackBy, $scrollTo]).pipe(\r\n filter(([scroller, , event]) => !!scroller && !!event),\r\n map(([scroller, trackBy, event]) => ({ scroller: scroller, trackBy, event })),\r\n switchMap(({ event }) => {\r\n const d = event?.delay ?? 0;\r\n if (d > 0) {\r\n return of(event).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n delay(d),\r\n );\r\n }\r\n return of(event);\r\n }),\r\n tap(event => {\r\n this._$scrollingTo.next(true);\r\n this._$scrollToExecutor.next(event);\r\n }),\r\n ).subscribe();\r\n\r\n combineLatest([this.$initialized, $scrollerComponent, $scrollToExecutor]).pipe(\r\n takeUntilDestroyed(),\r\n filter(([i, c, e]) => !!i && !!c && !!e),\r\n debounceTime(0),\r\n switchMap(([, , e]) => {\r\n const event = e!;\r\n const trackBy = this.trackBy(), scrollerComponent = this._scrollerComponent(),\r\n { id, iteration = 0, blending = false, isLastIteration = false, cb } = event;\r\n const nextIteration = iteration + 1, finished = nextIteration >= MAX_SCROLL_TO_ITERATIONS, fireUpdate = false;\r\n\r\n if (!this._readyForShow) {\r\n return of([finished, { id, iteration: nextIteration, blending, cb }]).pipe(delay(0));\r\n }\r\n\r\n debouncedUpdate.dispose();\r\n this._$preventScrollSnapping.next(true);\r\n\r\n if (!!scrollerComponent) {\r\n scrollerComponent.startScrollTo();\r\n\r\n const items = this._actualItems();\r\n if (!!items && items.length) {\r\n const dynamicSize = this.dynamicSize(), itemSize = this._actualItemSize(), minItemSize = this._actualMinItemSize(),\r\n maxItemSize = this._actualMaxItemSize(), snapScrollToEnd = this.snapScrollToEnd();\r\n\r\n if (dynamicSize) {\r\n const { width, height } = this._bounds() || { width: DEFAULT_LIST_SIZE, height: DEFAULT_LIST_SIZE },\r\n itemConfigMap = this.itemConfigMap(), isVertical = this._isVertical,\r\n inverted = scrollerComponent.inverted,\r\n maCnScrollSize = isVertical ? scrollerComponent.scrollHeight : scrollerComponent.scrollWidth,\r\n currentScrollSize = isVertical ? scrollerComponent.scrollTop : scrollerComponent.scrollLeft,\r\n opts: IGetItemPositionOptions<IVirtualListItem, IVirtualListCollection> = {\r\n alignment: this.actualAlignment(), inverted,\r\n bounds: { width, height }, collection: items, dynamicSize, isVertical: this._isVertical, itemSize, minItemSize, maxItemSize,\r\n bufferSize: this.bufferSize(), maxBufferSize: this.maxBufferSize(), itemTransform: this.itemTransform(),\r\n scrollSize: (inverted ? (maCnScrollSize - currentScrollSize) : currentScrollSize),\r\n snapToItem: this.snapToItem(), snapToItemAlign: this.snapToItemAlign(),\r\n stickyEnabled: this.stickyEnabled(), fromItemId: id, enabledBufferOptimization: this.enabledBufferOptimization(),\r\n };\r\n\r\n let scrollSize = snapScrollToEnd && this._trackBox.isSnappedToEnd ?\r\n maCnScrollSize :\r\n this._trackBox.getItemPosition(id, itemConfigMap, opts);\r\n\r\n if (scrollSize === -1) {\r\n return of([finished, { id, blending, iteration: nextIteration, cb }]).pipe(delay(0));\r\n }\r\n\r\n this._trackBox.clearDelta();\r\n\r\n const viewportSize = (isVertical ? height : width),\r\n { displayItems, totalSize, leftLayoutOffset } = this._trackBox.updateCollection(items, itemConfigMap, {\r\n ...opts, scrollSize: (inverted ? (maCnScrollSize - scrollSize) : scrollSize), fromItemId: isLastIteration ? undefined : id,\r\n }), delta1 = this._trackBox.delta;\r\n\r\n const normalizedTotalSize = totalSize < viewportSize ? viewportSize : totalSize;\r\n\r\n scrollerComponent.startLayoutOffset = leftLayoutOffset;\r\n\r\n scrollerComponent.totalSize = normalizedTotalSize;\r\n\r\n this._service.collection = displayItems;\r\n\r\n let actualScrollSize = scrollSize + delta1;\r\n\r\n this.resetBoundsSize(isVertical, normalizedTotalSize);\r\n\r\n this.createDisplayComponentsIfNeed(displayItems);\r\n\r\n this.tracking();\r\n\r\n this.snappingHandler();\r\n\r\n this.updateOffsetsByAllignment();\r\n\r\n scrollSize = this._trackBox.getItemPosition(id, itemConfigMap, { ...opts, scrollSize: (inverted ? (maCnScrollSize - actualScrollSize) : actualScrollSize), fromItemId: id });\r\n\r\n if (scrollSize === -1) {\r\n return of([finished, { id, blending, iteration: nextIteration, cb }]).pipe(delay(0));\r\n }\r\n const notChanged = scrollSize === currentScrollSize;\r\n if (!notChanged && iteration < MAX_SCROLL_TO_ITERATIONS) {\r\n this._trackBox.clearDelta();\r\n const params: IScrollToParams = {\r\n [isVertical ? TOP_PROP_NAME : LEFT_PROP_NAME]: scrollSize, behavior: BEHAVIOR_INSTANT as ScrollBehavior,\r\n fireUpdate, blending, force: true, snap: false, normalize: false,\r\n };\r\n scrollerComponent?.scrollTo?.(params);\r\n return of([finished, {\r\n id, iteration: nextIteration, blending,\r\n isLastIteration: nextIteration < MAX_SCROLL_TO_ITERATIONS, cb\r\n }]).pipe(delay(0));\r\n } else {\r\n this._$scrollSize.next(actualScrollSize);\r\n return of([true, { id, blending, iteration: nextIteration, cb }]).pipe(delay(0));\r\n }\r\n } else {\r\n const index = items.findIndex(item => item[trackBy] === id);\r\n if (index > -1) {\r\n const isVertical = this._isVertical, itemSize = this._actualItemSize(), isInfinity = this._isInfinity(), snapToItem = this.snapToItem(),\r\n snapToItemAlign = this.snapToItemAlign();\r\n let scrollSize = index * itemSize;\r\n\r\n if (isInfinity) {\r\n if (snapToItem) {\r\n switch (snapToItemAlign) {\r\n case SnapToItemAligns.CENTER: {\r\n scrollSize += itemSize * .5;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n const { width, height } = this._bounds() || { width: DEFAULT_LIST_SIZE, height: DEFAULT_LIST_SIZE },\r\n itemConfigMap = this.itemConfigMap(), items = this._actualItems(),\r\n inverted = scrollerComponent.inverted,\r\n maCnScrollSize = (isVertical ? scrollerComponent.scrollHeight : scrollerComponent.scrollWidth),\r\n actualScrollSize = (isVertical ? scrollerComponent.scrollTop : scrollerComponent.scrollLeft),\r\n opts: IGetItemPositionOptions<IVirtualListItem, IVirtualListCollection> = {\r\n alignment: this._actualAlignment(), inverted,\r\n bounds: { width, height }, collection: items, dynamicSize, isVertical: this._isVertical, itemSize, minItemSize, maxItemSize,\r\n bufferSize: this.bufferSize(), maxBufferSize: this.maxBufferSize(), itemTransform: this.itemTransform(),\r\n scrollSize: (inverted ? (maCnScrollSize - actualScrollSize) : actualScrollSize),\r\n snapToItem, snapToItemAlign, stickyEnabled: this.stickyEnabled(), fromItemId: id,\r\n enabledBufferOptimization: this.enabledBufferOptimization(),\r\n };\r\n\r\n this._trackBox.clearDelta();\r\n\r\n const viewportSize = (isVertical ? height : width),\r\n { displayItems, totalSize, leftLayoutOffset } = this._trackBox.updateCollection(items, itemConfigMap, {\r\n ...opts, scrollSize: (inverted ? (maCnScrollSize - scrollSize) : scrollSize),\r\n fromItemId: isLastIteration ? undefined : id,\r\n });\r\n\r\n const actualTotalSize = this._isInfinity() ? (totalSize + viewportSize) : totalSize;\r\n\r\n const normalizedTotalSize = actualTotalSize < viewportSize ? viewportSize : actualTotalSize;\r\n\r\n scrollerComponent.startLayoutOffset = leftLayoutOffset;\r\n\r\n scrollerComponent.totalSize = normalizedTotalSize;\r\n\r\n this._service.collection = displayItems;\r\n\r\n this.resetBoundsSize(isVertical, normalizedTotalSize);\r\n\r\n this.createDisplayComponentsIfNeed(displayItems);\r\n\r\n this.tracking();\r\n\r\n this.snappingHandler();\r\n\r\n this.updateOffsetsByAllignment();\r\n\r\n this._$preventScrollSnapping.next(true);\r\n\r\n const params: IScrollToParams = {\r\n [this._isVertical ? TOP_PROP_NAME : LEFT_PROP_NAME]: scrollSize, fireUpdate: false,\r\n behavior: BEHAVIOR_INSTANT as ScrollBehavior, blending, force: true, snap: false, normalize: false,\r\n };\r\n scrollerComponent?.scrollTo?.(params);\r\n return of([true, { id, blending, iteration: nextIteration, cb }]);\r\n }\r\n }\r\n }\r\n }\r\n return of([finished, { id, iteration: nextIteration, blending, cb }]);\r\n }),\r\n takeUntilDestroyed(),\r\n tap(([finished, params]) => {\r\n if (!finished) {\r\n this._$scrollToExecutor.next(params as IScrollParams);\r\n return;\r\n }\r\n\r\n if (this._readyForShow) {\r\n this._trackBox.preventScrollSnapping(true);\r\n }\r\n\r\n this._$scrollingTo.next(false);\r\n this._scrollerComponent()?.finishedScrollTo();\r\n this._$fireUpdate.next(true);\r\n this.emitScrollEvent(true, false, true);\r\n const scrollParams = params as IScrollParams & { scrollCalled: boolean; };\r\n scrollParams?.cb?.();\r\n }),\r\n delay(0),\r\n tap(([finished]) => {\r\n if (finished) {\r\n this._scrollerComponent()?.snapIfNeed();\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n const $itemRenderer = toObservable(this.itemRenderer);\r\n\r\n $itemRenderer.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n filter(v => !!v),\r\n tap(v => {\r\n this._itemRenderer.set(v);\r\n }),\r\n ).subscribe();\r\n\r\n $bounds.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n tap(value => {\r\n const size: ISize = { width: value.width, height: value.height };\r\n this.onViewportChange.emit(objectAsReadonly(size));\r\n }),\r\n ).subscribe();\r\n\r\n this._service.$virtualClick.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this.onItemClick.emit(objectAsReadonly(v));\r\n }),\r\n ).subscribe();\r\n\r\n let isSelectedIdsFirstEmit = 0;\r\n\r\n this._service.$selectedIds.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n tap(v => {\r\n if (this._isSingleSelection || (this._isMultiSelection && isSelectedIdsFirstEmit >= 2)) {\r\n const curr = this.selectedIds();\r\n if ((this._isSingleSelection && JSON.stringify(v) !== JSON.stringify(curr)) ||\r\n (isSelectedIdsFirstEmit === 2 && JSON.stringify(v) !== JSON.stringify(curr)) || isSelectedIdsFirstEmit > 2) {\r\n this.onSelect.emit(copyValueAsReadonly(v));\r\n }\r\n }\r\n if (isSelectedIdsFirstEmit < 3) {\r\n isSelectedIdsFirstEmit++;\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n $selectedIds.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n tap(v => {\r\n this._service.selectedIds = v;\r\n }),\r\n ).subscribe();\r\n\r\n $viewInit.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n switchMap(() => {\r\n return this._service.$collapsedIds.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n distinctUntilChanged(),\r\n tap(v => {\r\n const curr = this._collapsedItemIds();\r\n if ((this._isAccordionCollapse || this._isMultipleCollapse) && (JSON.stringify(v) !== JSON.stringify(curr))) {\r\n this._collapsedItemIds.set(v);\r\n this.onCollapse.emit(copyValueAsReadonly(v));\r\n }\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n combineLatest([$itemConfigMap, $dynamicSize, $divides]).pipe(\r\n takeUntilDestroyed(),\r\n filter(([itemConfigMap, dynamicSize, divides]) => !!itemConfigMap && !dynamicSize && divides > 1),\r\n tap(([itemConfigMap]) => {\r\n for (const id in itemConfigMap) {\r\n const metaData = itemConfigMap[id];\r\n if (metaData?.fullSize || metaData?.sticky === 1 || metaData?.sticky === 2) {\r\n throw Error('The accelerated rendering algorithm `[dynamicSize]=\"false\"` cannot correctly handle non-uniform lists (the itemConfigMap specifies full-size elements). For correct rendering, specify `[dynamicSize]=\"true\"`.');\r\n }\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n combineLatest([$collapsingMode, $items, $itemConfigMap, $trackBy]).pipe(\r\n takeUntilDestroyed(),\r\n tap(([collapsingMode, items, itemConfigMap, trackBy]) => {\r\n const isAccordion = isCollapseMode(collapsingMode, CollapsingModes.ACCORDION);\r\n if (isAccordion) {\r\n const allGroups: Array<Id> = [];\r\n if (this._isAccordionCollapse) {\r\n for (let i = 0, l = items.length; i < l; i++) {\r\n const item = items[i], id = item[trackBy], collapsable = itemConfigMap?.[id]?.collapsable === true;\r\n if (!collapsable) {\r\n continue;\r\n }\r\n allGroups.push(id);\r\n }\r\n }\r\n if ((this._isAccordionCollapse || this._isMultipleCollapse) && (JSON.stringify(this._collapsedItemIds()) !== JSON.stringify(allGroups))) {\r\n this._collapsedItemIds.set(allGroups);\r\n this.onCollapse.emit(copyValueAsReadonly(allGroups));\r\n }\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n $collapsedItemIds.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n tap(v => {\r\n this._service.collapsedIds = v;\r\n }),\r\n ).subscribe();\r\n\r\n this.$destroy.pipe(\r\n takeUntilDestroyed(),\r\n tap(() => {\r\n debouncedUpdate.dispose();\r\n }),\r\n ).subscribe();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this._$viewInit.next(true);\r\n\r\n this._$fireUpdate.next(false);\r\n }\r\n\r\n private onAfterResize(update = false) {\r\n this.snappingHandler();\r\n\r\n if (this._isSnappingMethodAdvanced) {\r\n this.updateRegularRenderer();\r\n }\r\n\r\n if (this._readyForShow && update) {\r\n const scroller = this._scrollerComponent();\r\n if (!!scroller) {\r\n const updatebale = this._readyForShow;\r\n if (updatebale) {\r\n this._$fireUpdate.next(false);\r\n }\r\n scroller.refresh(updatebale, updatebale);\r\n }\r\n }\r\n }\r\n\r\n private checkBoundsOfElements() {\r\n const changed = this._trackBox.checkBoundsOfElements();\r\n if (changed) {\r\n const readyForShow = this._readyForShow,\r\n isScrolling = this._$scrollingTo.getValue();\r\n this._trackBox.changes(true, readyForShow && !isScrolling);\r\n }\r\n }\r\n\r\n private snappingHandler() {\r\n const scroller = this._scrollerComponent();\r\n if (!!scroller) {\r\n const isVertical = this.isVertical,\r\n maCnScrollSize = Math.round(isVertical ? scroller.scrollHeight ?? 0 : scroller.scrollWidth ?? 0),\r\n scrollSize = isVertical ? scroller.scrollTop ?? 0 : scroller.scrollLeft ?? 0,\r\n actualScrollSize = Math.round(scrollSize);\r\n if (this._readyForShow && !this._isLoading) {\r\n const isScrollEnd = (actualScrollSize >= (maCnScrollSize - MIN_PIXELS_FOR_PREVENT_SNAPPING)) || !scroller.scrollable || this._trackBox.isScrollEnd;\r\n if (isScrollEnd) {\r\n this._isScrollStart.set(false);\r\n this._isScrollEnd.set(true);\r\n this._trackBox.isScrollStart = false;\r\n this._trackBox.isScrollEnd = true;\r\n } else {\r\n const isScrollStart = (actualScrollSize <= MIN_PIXELS_FOR_PREVENT_SNAPPING);\r\n this._isScrollStart.set(isScrollStart);\r\n this._isScrollEnd.set(false);\r\n this._trackBox.isScrollStart = isScrollStart;\r\n this._trackBox.isScrollEnd = false;\r\n }\r\n } else if (!this._readyForShow) {\r\n const snapScrollToStart = this._actualSnapScrollToStart(), snapScrollToEnd = this._actualSnapScrollToEnd();\r\n if (!snapScrollToStart && snapScrollToEnd) {\r\n this._isScrollStart.set(false);\r\n this._isScrollEnd.set(true);\r\n this._trackBox.isScrollStart = false;\r\n this._trackBox.isScrollEnd = true;\r\n } else if (snapScrollToStart && snapScrollToEnd) {\r\n this._isScrollStart.set(true);\r\n this._isScrollEnd.set(false);\r\n this._trackBox.isScrollStart = true;\r\n this._trackBox.isScrollEnd = false;\r\n } else {\r\n this._isScrollStart.set(false);\r\n this._isScrollEnd.set(false);\r\n this._trackBox.isScrollStart = false;\r\n this._trackBox.isScrollEnd = false;\r\n }\r\n }\r\n }\r\n };\r\n\r\n private emitScrollEvent(isScrollEnd: boolean = false, update: boolean = true, userAction: boolean = false) {\r\n if (!this._readyForShow) {\r\n return;\r\n }\r\n const scrollerEl = this._scroller()?.nativeElement, scrollerComponent = this._scrollerComponent();\r\n if (scrollerEl && scrollerComponent) {\r\n const isVertical = this._isVertical, scrollSize = (isVertical ? scrollerComponent.scrollTop : scrollerComponent.scrollLeft),\r\n maCnScrollSize = (isVertical ? scrollerComponent.scrollHeight : scrollerComponent.scrollWidth),\r\n bounds = this._bounds() || { x: 0, y: 0, width: DEFAULT_LIST_SIZE, height: DEFAULT_LIST_SIZE };\r\n const itemsRange = formatActualDisplayItems(this._service.displayItems, this._actualScrollStartOffset(), this._actualScrollEndOffset(),\r\n scrollSize, isVertical, bounds),\r\n event = new ScrollEvent({\r\n direction: this._scrollerComponent()?.scrollDirection ?? 0, container: scrollerEl,\r\n list: this._list()!.nativeElement, delta: this._trackBox.delta,\r\n deltaOfNewItems: this._trackBox.deltaOfNewItems, isVertical,\r\n scrollSize,\r\n itemsRange,\r\n isEnd: !scrollerComponent.scrollable || this._trackBox.isSnappedToEnd || (Math.round(scrollSize) === Math.round(maCnScrollSize)),\r\n userAction,\r\n });\r\n if (update) {\r\n this._$scroll.next(event);\r\n }\r\n\r\n if (isScrollEnd) {\r\n this.onScrollEnd.emit(event);\r\n } else {\r\n this.onScroll.emit(event);\r\n }\r\n }\r\n }\r\n\r\n private getIsSnappingMethodAdvanced(m?: SnappingMethod) {\r\n const method = m || this.snappingMethod();\r\n return isSnappingMethodAdvenced(method);\r\n }\r\n\r\n private getIsNoneSelection(m?: SelectingMode) {\r\n const mode = m || this.selectingMode();\r\n return isSelectMode(mode, SelectingModes.NONE);\r\n }\r\n\r\n private getIsSingleSelection(m?: SelectingMode) {\r\n const mode = m || this.selectingMode();\r\n return isSelectMode(mode, SelectingModes.SELECT);\r\n }\r\n\r\n private getIsMultiSelection(m?: SelectingMode) {\r\n const mode = m || this.selectingMode();\r\n return isSelectMode(mode, SelectingModes.MULTI_SELECT);\r\n }\r\n\r\n private getIsNoneCollapse(m?: CollapsingMode) {\r\n const mode = m || this.collapsingMode();\r\n return isCollapseMode(mode, CollapsingModes.NONE);\r\n }\r\n\r\n private getIsMultipleCollapse(m?: CollapsingMode) {\r\n const mode = m || this.collapsingMode();\r\n return isCollapseMode(mode, CollapsingModes.MULTI_COLLAPSE);\r\n }\r\n\r\n private getIsAccordionCollapse(m?: CollapsingMode) {\r\n const mode = m || this.collapsingMode();\r\n return isCollapseMode(mode, CollapsingModes.ACCORDION);\r\n }\r\n\r\n private getIsVertical(d?: Direction) {\r\n const dir = d || this.direction();\r\n return isDirection(dir, Directions.VERTICAL);\r\n }\r\n\r\n private getIsLazy(m?: CollectionMode) {\r\n const mode = m || this.collectionMode();\r\n return isCollectionMode(mode, CollectionModes.LAZY);\r\n }\r\n\r\n private createDisplayComponentsIfNeed(displayItems: IRenderVirtualListCollection | null) {\r\n if (!displayItems || !this._listContainerRef) {\r\n this._trackBox.setDisplayObjectIndexMapById({});\r\n return;\r\n }\r\n\r\n if (this._isSnappingMethodAdvanced && this.stickyEnabled()) {\r\n if (this._snappedDisplayComponents.length < MAX_REGULAR_SNAPED_COMPONENTS && !!this._snapContainerRef) {\r\n while (this._snappedDisplayComponents.length < MAX_REGULAR_SNAPED_COMPONENTS) {\r\n const comp = this._snapContainerRef.createComponent(this._itemComponentClass);\r\n comp.instance.renderer = this._itemRenderer();\r\n comp.instance.regular = true;\r\n this._snappedDisplayComponents.push(comp);\r\n this._trackBox.snappedDisplayComponents = this._snappedDisplayComponents;\r\n this._resizeSnappedObserver = new ResizeObserver(this._resizeSnappedComponentHandler);\r\n this._resizeSnappedObserver.observe(comp.instance.element);\r\n }\r\n }\r\n }\r\n\r\n this._trackBox.items = displayItems;\r\n\r\n const listContainerRef = this._listContainerRef;\r\n\r\n const maxLength = displayItems.length, components = this._displayComponents;\r\n\r\n if (!!listContainerRef) {\r\n const doMap: { [id: number]: number } = {};\r\n let i = 0;\r\n for (let l = components.length; i < l; i++) {\r\n const item = components[i];\r\n if (!!item) {\r\n const id = item.instance.id;\r\n item.instance.renderer = this._itemRenderer();\r\n doMap[id] = i;\r\n }\r\n }\r\n while (components.length < maxLength) {\r\n const comp = listContainerRef.createComponent(this._itemComponentClass);\r\n const id = comp.instance.id;\r\n comp.instance.renderer = this._itemRenderer();\r\n doMap[id] = i;\r\n components.push(comp);\r\n i++;\r\n }\r\n this._trackBox.setDisplayObjectIndexMapById(doMap);\r\n }\r\n }\r\n\r\n private updateOffsetsByAllignment() {\r\n const alignment = this._actualAlignment(), items = this._actualItems(), trackBy = this.trackBy(),\r\n isInfinity = this._isInfinity(), isVertical = this._isVertical,\r\n { width, height } = this._bounds() || { width: DEFAULT_LIST_SIZE, height: DEFAULT_LIST_SIZE },\r\n viewportSize = isVertical ? height : width,\r\n precalculatedScrollStartOffset = this._precalculatedScrollStartOffset(),\r\n precalculatedScrollEndOffset = this._precalculatedScrollEndOffset();\r\n switch (alignment) {\r\n case Alignments.NONE: {\r\n this._actualScrollStartOffset.set(precalculatedScrollStartOffset);\r\n this._actualScrollEndOffset.set(precalculatedScrollEndOffset);\r\n break;\r\n }\r\n case Alignments.CENTER: {\r\n const firstItemId: Id | null = items.length > 0 ? (items[0]?.[trackBy] ?? null) : null,\r\n endItemId: Id | null = items.length > 0 ? (items?.[items.length - 1]?.[trackBy] ?? null) : null,\r\n alignmentStartOffset = viewportSize * .5 - (firstItemId !== null ? (isVertical ? (this._service.getItemBounds(firstItemId)?.height ?? 0) :\r\n (this._service.getItemBounds(firstItemId)?.width ?? 0)) : 0) * (isInfinity ? 0 : .5),\r\n alignmentEndOffset = viewportSize * .5 - (endItemId !== null ? (isVertical ? (this._service.getItemBounds(endItemId)?.height ?? 0) :\r\n (this._service.getItemBounds(endItemId)?.width ?? 0)) : 0) * (isInfinity ? 0 : .5);\r\n\r\n this._alignmentScrollStartOffset.set(alignmentStartOffset);\r\n this._alignmentScrollEndOffset.set(alignmentEndOffset);\r\n this._actualScrollStartOffset.set(precalculatedScrollStartOffset + alignmentStartOffset);\r\n this._actualScrollEndOffset.set(precalculatedScrollEndOffset + alignmentEndOffset);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private updateRegularRenderer() {\r\n this._resizeSnappedComponentHandler();\r\n }\r\n\r\n /**\r\n * Tracking by id\r\n */\r\n private tracking() {\r\n this._trackBox.track();\r\n }\r\n\r\n private resetBoundsSize(isVertical: boolean, totalSize: number) {\r\n const l = this._list(), prop = isVertical ? HEIGHT_PROP_NAME : WIDTH_PROP_NAME,\r\n size = totalSize;\r\n if (!!l && parseInt(l.nativeElement.style[prop]) !== size) {\r\n l.nativeElement.style[prop] = `${size}${PX}`;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the bounds of an element with a given id\r\n */\r\n getItemBounds(id: Id): ISize | null {\r\n return this._service.getItemBounds(id);\r\n }\r\n\r\n /**\r\n * Focus an list item by a given id.\r\n */\r\n focus(id: Id, align: FocusAlignment = FocusAlignments.NONE) {\r\n this._elementRef.nativeElement.focus();\r\n this._service.focusById(id, align, this.scrollBehavior());\r\n }\r\n\r\n /**\r\n * The method scrolls the list to the element with the given `id` and returns the value of the scrolled area.\r\n */\r\n scrollTo(id: Id, cb: (() => void) | null = null, options: IScrollOptions | null = null) {\r\n const behavior = options?.behavior ?? BEHAVIOR_INSTANT,\r\n blending = options?.blending ?? false,\r\n focused = options?.focused ?? true,\r\n delay = options?.delay ?? 0,\r\n iteration = options?.iteration ?? 0;\r\n validateId(id);\r\n validateScrollBehavior(behavior);\r\n validateIteration(iteration);\r\n const actualIteration = validateScrollIteration(iteration);\r\n this._elementRef.nativeElement.focus();\r\n this._$scrollTo.next({\r\n id, behavior, blending, delay, iteration: actualIteration, isLastIteration: actualIteration === MAX_SCROLL_TO_ITERATIONS, cb: () => {\r\n this.scrollToFinalize(id, focused, cb);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Scrolls the scroll area to the first item in the collection.\r\n */\r\n scrollToStart(cb: (() => void) | null = null, options: IScrollOptions | null = null) {\r\n const scroller = this._scrollerComponent();\r\n if (!!scroller) {\r\n const scrollSize = this.isVertical ? scroller.scrollTop : scroller.scrollLeft;\r\n if (scrollSize === 0) {\r\n return;\r\n }\r\n scroller.stopScrolling();\r\n }\r\n const behavior = options?.behavior ?? BEHAVIOR_INSTANT,\r\n blending = options?.blending ?? false,\r\n focused = options?.focused ?? true,\r\n delay = options?.delay ?? 0,\r\n iteration = options?.iteration ?? 0;\r\n validateScrollBehavior(behavior);\r\n validateIteration(iteration);\r\n const trackBy = this.trackBy(), items = this._actualItems(), firstItem = items.length > 0 ? items[0] ?? null : null, id = firstItem?.[trackBy] ?? null,\r\n actualIteration = validateScrollIteration(iteration);\r\n if (!!firstItem) {\r\n this._elementRef.nativeElement.focus();\r\n this._$scrollTo.next({\r\n id, behavior, blending, delay, iteration: actualIteration, isLastIteration: actualIteration === MAX_SCROLL_TO_ITERATIONS, cb: () => {\r\n this._isScrollStart.set(true);\r\n this._trackBox.isScrollStart = true;\r\n this._trackBox.isScrollEnd = false;\r\n this._$fireUpdate.next(true);\r\n this.scrollToFinalize(id, focused, cb);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @deprecated\r\n * The scrollToEndItem method is deprecated. Use the scrollToEnd method.\r\n */\r\n scrollToEndItem(cb?: () => void, options?: IScrollOptions) {\r\n throw Error('The scrollToEndItem method is deprecated. Use the scrollToEnd method.');\r\n }\r\n\r\n /**\r\n * Scrolls the list to the end of the content size.\r\n */\r\n scrollToEnd(cb: (() => void) | null = null, options: IScrollOptions | null = null) {\r\n const scroller = this._scrollerComponent();\r\n if (!!scroller) {\r\n const isVertical = this.isVertical,\r\n scrollSize = isVertical ? scroller.scrollTop : scroller.scrollLeft,\r\n maCnScrollSize = isVertical ? scroller.scrollHeight : scroller.scrollTop;\r\n if (scrollSize === maCnScrollSize) {\r\n return;\r\n }\r\n scroller.stopScrolling();\r\n }\r\n const behavior = options?.behavior ?? BEHAVIOR_INSTANT,\r\n blending = options?.blending ?? false,\r\n focused = options?.focused ?? true,\r\n delay = options?.delay ?? 0,\r\n iteration = options?.iteration ?? 0;\r\n validateScrollBehavior(behavior);\r\n validateIteration(iteration);\r\n const trackBy = this.trackBy(), items = this._actualItems(), latItem = items[items.length > 0 ? items.length - 1 : 0], id = latItem?.[trackBy] ?? null,\r\n actualIteration = validateScrollIteration(iteration);\r\n if (latItem === null) {\r\n return;\r\n }\r\n this._elementRef.nativeElement.focus();\r\n if (!this._scrollerComponent()?.scrollable) {\r\n this.scrollToFinalize(id, focused, cb);\r\n return;\r\n }\r\n this._$scrollTo.next({\r\n id, behavior, blending, delay, iteration: actualIteration, isLastIteration: actualIteration === MAX_SCROLL_TO_ITERATIONS, cb: () => {\r\n this._isScrollEnd.set(true);\r\n this._trackBox.isScrollStart = false;\r\n this._trackBox.isScrollEnd = true;\r\n this._$fireUpdate.next(true);\r\n this.scrollToFinalize(id, focused, cb);\r\n }\r\n });\r\n }\r\n\r\n private scrollToFinalize(id: Id, focused: boolean, cb: (() => void) | null) {\r\n if (focused) {\r\n const el = this._service.getFocusedElementById(id);\r\n if (!!el) {\r\n this._service.focus(el, FocusAlignments.NONE);\r\n }\r\n }\r\n if (typeof cb === 'function') {\r\n cb?.();\r\n }\r\n }\r\n\r\n protected cleanup() {\r\n const displayItems: IRenderVirtualListCollection = [];\r\n this._service.collection = displayItems;\r\n this.createDisplayComponentsIfNeed(displayItems);\r\n this.tracking();\r\n this.emitScrollEvent(true, false, false);\r\n }\r\n\r\n /**\r\n * Force clearing the cache.\r\n */\r\n protected cacheClean() {\r\n this._cached = false;\r\n if (this.dynamicSize()) {\r\n this._trackBox.cacheClean();\r\n }\r\n const prerenderContainer = this._prerender();\r\n if (!!prerenderContainer) {\r\n prerenderContainer.clear();\r\n prerenderContainer.off();\r\n }\r\n this._collapsedItemIds.set([]);\r\n this._isScrollStart.set(true);\r\n this._isScrollEnd.set(false);\r\n this._totalSize.set(0);\r\n this._$scrollSize.next(0);\r\n const scroller = this._scrollerComponent();\r\n if (!!scroller) {\r\n scroller.reset();\r\n }\r\n }\r\n\r\n /**\r\n * @deprecated\r\n * The stopSnappingScrollToEnd method is deprecated. Use the preventSnapping method.\r\n */\r\n stopSnappingScrollToEnd() {\r\n throw Error('The stopSnappingScrollToEnd method is deprecated. Use the preventSnapping method.');\r\n }\r\n\r\n /**\r\n * Prevents the list from snapping to its start or end edge.\r\n */\r\n preventSnapping() {\r\n if (!this._readyForShow) {\r\n return;\r\n }\r\n const scroller = this._scrollerComponent();\r\n this._isScrollStart.set(false);\r\n this._isScrollEnd.set(false);\r\n this._trackBox.preventScrollSnapping(true);\r\n if (!!scroller) {\r\n scroller.stopScrolling();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.dispose();\r\n }\r\n\r\n private dispose() {\r\n this._$destroy.next();\r\n\r\n const updateId = this._updateId;\r\n if (updateId !== undefined) {\r\n cancelAnimationFrame(updateId);\r\n this._updateId = undefined;\r\n }\r\n\r\n if (!!this._trackBox) {\r\n this._trackBox.dispose();\r\n }\r\n\r\n if (!!this._resizeSnappedObserver) {\r\n this._resizeSnappedObserver.disconnect();\r\n }\r\n\r\n if (!!this._snappedDisplayComponents) {\r\n while (this._snappedDisplayComponents.length > 0) {\r\n const comp = this._snappedDisplayComponents.shift();\r\n comp?.destroy();\r\n }\r\n }\r\n\r\n if (!!this._displayComponents) {\r\n while (this._displayComponents.length > 0) {\r\n const comp = this._displayComponents.shift();\r\n comp?.destroy();\r\n }\r\n }\r\n }\r\n}\r\n","@let scrollStartOffset = _actualScrollStartOffset();\r\n@let scrollEndOffset = _actualScrollEndOffset();\r\n@let alignmentScrollStartOffset = _alignmentScrollStartOffset();\r\n@let alignmentScrollEndOffset = _alignmentScrollEndOffset();\r\n@let textDir = langTextDir();\r\n@let class = classes();\r\n\r\n<div aria-live=\"polite\" aria-atomic=\"true\" class=\"cnvl__screen-reader\">\r\n {{ screenReaderFormattedMessage() }}\r\n</div>\r\n\r\n<cn-prerender-container #prerender [bounds]=\"bounds()!\" [direction]=\"direction()\" [dynamic]=\"dynamicSize()\"\r\n [divides]=\"divides()\" [isVertical]=\"isVertical\" [itemSize]=\"actualItemSize()\" [trackBy]=\"trackBy()\"\r\n [itemRenderer]=\"itemRenderer()\" [startOffset]=\"scrollStartOffset\" [endOffset]=\"scrollEndOffset\"\r\n [scrollbarEnabled]=\"scroller.scrollbarShow()\" [enabled]=\"dynamicSize() && snapScrollToEnd()\" />\r\n\r\n@if (stickyEnabled()) {\r\n <div localeSensitive [langTextDir]=\"textDir\" #snappedContainer class=\"cnvl__snapped-container\"\r\n [ngClass]=\"class\">\r\n <div #snapped part=\"snapped-item\" class=\"cnvl__list-snapper\">\r\n <ng-container #snapRendererContainer></ng-container>\r\n </div>\r\n </div>\r\n}\r\n\r\n<cn-scroller #scroller class=\"cnvl__list-scroller\" [langTextDir]=\"textDir\" [classes]=\"class\" [startOffset]=\"scrollStartOffset\"\r\n [endOffset]=\"scrollEndOffset\" [alignmentStartOffset]=\"alignmentScrollStartOffset\" [alignmentEndOffset]=\"alignmentScrollEndOffset\"\r\n [direction]=\"direction()\" [scrollbarThumbRenderer]=\"scrollbarThumbRenderer()\" [isInfinity]=\"_isInfinity()\"\r\n [scrollbarThickness]=\"scrollbarThickness()\" [scrollbarThumbParams]=\"scrollbarThumbParams()\"\r\n [animationParams]=\"animationParams()\" [focusedElement]=\"focusedElement()\" [loading]=\"loading()\"\r\n [overscrollEnabled]=\"overscrollEnabled()\" [snappingDistance]=\"snappingDistance()\" [overlappingScrollbar]=\"overlappingScrollbar()\"\r\n [scrollbarEnabled]=\"_actualScrollbarEnabled()\" [scrollbarInteractive]=\"scrollbarInteractive()\" [snapToItem]=\"snapToItem()\"\r\n [snapToItemAlign]=\"snapToItemAlign()\" [scrollbarMinSize]=\"scrollbarMinSize()\" [scrollBehavior]=\"scrollBehavior()\"\r\n [scrollingSettings]=\"scrollingSettings()\" [scrollingOneByOne]=\"scrollingOneByOne()\" [motionBlur]=\"motionBlur()\"\r\n [maxMotionBlur]=\"maxMotionBlur()\" [motionBlurEnabled]=\"motionBlurEnabled()\">\r\n <ng-container #renderersContainer></ng-container>\r\n</cn-scroller>","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CnVirtualListItemComponent } from './cn-virtual-list-item.component';\r\nimport { CnVirtualClickModule } from '../../../common/directives';\r\n\r\n@NgModule({\r\n declarations: [CnVirtualListItemComponent],\r\n exports: [CnVirtualListItemComponent],\r\n imports: [CommonModule, CnVirtualClickModule],\r\n schemas: [NO_ERRORS_SCHEMA],\r\n})\r\nexport class CnVirtualListItemModule { }\r\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CnScrollBarComponent } from './cn-scroll-bar.component';\r\n\r\n@NgModule({\r\n declarations: [CnScrollBarComponent],\r\n exports: [CnScrollBarComponent],\r\n imports: [CommonModule],\r\n schemas: [NO_ERRORS_SCHEMA],\r\n})\r\nexport class CnScrollBarModule { }\r\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CnScrollerComponent } from './cn-scroller.component';\r\nimport { CnLocaleSensitiveModule } from '../../../common/directives';\r\nimport { CnScrollBarModule } from '../cn-scroll-bar/cn-scroll-bar.module';\r\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\r\n\r\n@NgModule({\r\n declarations: [CnScrollerComponent],\r\n exports: [CnScrollerComponent],\r\n imports: [CommonModule, CnScrollBarModule, CnLocaleSensitiveModule, CdkScrollableModule],\r\n schemas: [NO_ERRORS_SCHEMA],\r\n})\r\nexport class CnScrollerModule { }\r\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CnVirtualClickModule } from '../../../../../common/directives';\r\nimport { CnPrerenderVirtualListItemComponent } from './cn-prerender-list-item.component';\r\n\r\n@NgModule({\r\n declarations: [CnPrerenderVirtualListItemComponent],\r\n exports: [CnPrerenderVirtualListItemComponent],\r\n imports: [CommonModule, CnVirtualClickModule],\r\n schemas: [NO_ERRORS_SCHEMA],\r\n})\r\nexport class CnPrerenderVirtualListItemModule { }\r\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CnPrerenderScrollerComponent } from './cn-prerender-scroller.component';\r\nimport { CnLocaleSensitiveModule } from '../../../../../common/directives';\r\n\r\n@NgModule({\r\n declarations: [CnPrerenderScrollerComponent],\r\n exports: [CnPrerenderScrollerComponent],\r\n imports: [CommonModule, CnLocaleSensitiveModule],\r\n schemas: [NO_ERRORS_SCHEMA],\r\n})\r\nexport class CnPrerenderScrollerModule { }\r\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CnPrerenderVirtualListItemModule } from '../cn-prerender-list-item/cn-prerender-list-item.module';\r\nimport { CnPrerenderScrollerModule } from '../cn-prerender-scroller/cn-prerender-scroller.module';\r\nimport { CnPrerenderList } from './cn-prerender-list.component';\r\n\r\n@NgModule({\r\n declarations: [CnPrerenderList],\r\n exports: [CnPrerenderList],\r\n imports: [CommonModule, CnPrerenderVirtualListItemModule, CnPrerenderScrollerModule],\r\n schemas: [NO_ERRORS_SCHEMA],\r\n})\r\nexport class CnPrerenderListModule { }\r\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CnPrerenderContainer } from './cn-prerender-container.component';\r\nimport { CnPrerenderListModule } from './components/cn-prerender-list/cn-prerender-list.module';\r\n\r\n@NgModule({\r\n declarations: [CnPrerenderContainer],\r\n exports: [CnPrerenderContainer],\r\n imports: [CommonModule, CnPrerenderListModule],\r\n schemas: [NO_ERRORS_SCHEMA],\r\n})\r\nexport class CnPrerenderContainerModule { }\r\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CnVirtualListComponent } from './cn-virtual-list.component';\r\nimport { CnLocaleSensitiveModule } from '../common/directives';\r\nimport { CnVirtualListItemModule } from './components/cn-list-item/cn-virtual-list-item.module';\r\nimport { CnScrollerModule } from './components/cn-scroller/cn-scroller.module';\r\nimport { CnPrerenderContainerModule } from './components/cn-prerender-container/cn-prerender-container.module';\r\n\r\n@NgModule({\r\n declarations: [CnVirtualListComponent],\r\n exports: [CnVirtualListComponent],\r\n imports: [CommonModule, CnVirtualListItemModule, CnScrollerModule, CnPrerenderContainerModule, CnLocaleSensitiveModule],\r\n schemas: [NO_ERRORS_SCHEMA],\r\n})\r\nexport class CnVirtualListModule { }\r\n","import { Color } from '../../common';\r\nimport { PX } from '../const';\r\nimport { IItemTransformation } from '../interfaces';\r\nimport { IRenderVirtualListItemConfig, IRenderVirtualListItemMeasures } from '../models';\r\nimport { ItemTransform } from '../types';\r\n\r\nconst UNSET = 'unset';\r\n\r\nexport interface ILintearOptions {\r\n /**\r\n * Depth Of Field. Default value is `null`.\r\n */\r\n dof?: number;\r\n /**\r\n * Fog color. Default value is `null`.\r\n */\r\n fogColor?: Color;\r\n /**\r\n * Fog weight. Default value is `null`.\r\n */\r\n fogWeight?: number;\r\n /**\r\n * Spacing between items. Default value is `0.5`.\r\n */\r\n spacingBetweenItems?: number;\r\n}\r\n\r\n/**\r\n * linear\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/transformations/linear.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const linear = (options?: ILintearOptions): ItemTransform => {\r\n const dof = options?.dof ?? null,\r\n fogColor = options?.fogColor ?? null,\r\n fogWeight = options?.fogWeight ?? null,\r\n spacingBetweenItems = options?.spacingBetweenItems ?? .5;\r\n return (index: number, measures: IRenderVirtualListItemMeasures,\r\n config: IRenderVirtualListItemConfig): IItemTransformation => {\r\n const result: IItemTransformation = {\r\n x: 0,\r\n y: 0,\r\n z: 0,\r\n rotationX: 0,\r\n rotationY: 0,\r\n rotationZ: 0,\r\n scaleX: 1,\r\n scaleY: 1,\r\n scaleZ: 1,\r\n opacity: 1,\r\n zIndex: 1,\r\n },\r\n isVertical = config.isVertical,\r\n boundsSize = measures.boundsSize,\r\n scrollSize = measures.scrollSize,\r\n itemSize = isVertical ? measures.height : measures.width,\r\n itemSizeHalf = itemSize * .5,\r\n boundsSizeHalf = boundsSize * .5,\r\n xx = isVertical ? measures.x : (measures.x + config.layoutOffset + itemSizeHalf - boundsSizeHalf - scrollSize),\r\n yy = isVertical ? (measures.y + config.layoutOffset + itemSizeHalf - boundsSizeHalf - scrollSize) : measures.y,\r\n pxOffset = isVertical ? boundsSizeHalf : xx, px = isVertical ? 1 : (pxOffset / boundsSizeHalf),\r\n pyOffset = isVertical ? yy : boundsSizeHalf, py = isVertical ? (pyOffset / boundsSizeHalf) : 1;\r\n\r\n if (config.snapped || config.snappedOut) {\r\n result.x = measures.x;\r\n result.y = measures.y;\r\n result.zIndex = config.zIndex;\r\n } else {\r\n result.x = isVertical ? xx : (scrollSize - config.layoutOffset + boundsSizeHalf - itemSizeHalf + (xx * spacingBetweenItems));\r\n result.y = isVertical ? (scrollSize - config.layoutOffset + boundsSizeHalf - itemSizeHalf + (yy * spacingBetweenItems)) : yy;\r\n const s = (isVertical ? Math.abs(yy) : Math.abs(xx)) / boundsSize, scale = Math.pow(1 - s * .15, 4);\r\n result.zIndex = 100 - Math.floor(Math.abs(isVertical ? py : px) * 100);\r\n if (!!dof) {\r\n const blur = (s * dof) - 1,\r\n actualBlur = blur > 0 ? blur : 0;\r\n result.filter = actualBlur ? `blur(${actualBlur}${PX})` : UNSET;\r\n }\r\n if (!!fogColor) {\r\n result.opacity = fogWeight ? Math.pow(scale, fogWeight) : scale;\r\n result.blendColor = fogColor;\r\n }\r\n }\r\n return result;\r\n }\r\n}","import { Color } from '../../common';\r\nimport { PX } from '../const';\r\nimport { IItemTransformation } from '../interfaces';\r\nimport { IRenderVirtualListItemConfig, IRenderVirtualListItemMeasures } from '../models';\r\nimport { ItemTransform } from '../types';\r\n\r\nconst UNSET = 'unset';\r\n\r\nexport interface IEventHorizonOptions {\r\n /**\r\n * Depth Of Field. Default value is `null`.\r\n */\r\n dof?: number;\r\n /**\r\n * Fog color. Default value is `null`.\r\n */\r\n fogColor?: Color;\r\n /**\r\n * Fog weight. Default value is `null`.\r\n */\r\n fogWeight?: number;\r\n /**\r\n * Spacing between items. Default value is `0.5`.\r\n */\r\n spacingBetweenItems?: number;\r\n}\r\n\r\n/**\r\n * eventHorizon\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/transformations/event-horizon.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const eventHorizon = (options?: IEventHorizonOptions): ItemTransform => {\r\n const dof = options?.dof ?? null,\r\n fogColor = options?.fogColor ?? null,\r\n fogWeight = options?.fogWeight ?? null,\r\n spacingBetweenItems = options?.spacingBetweenItems ?? .025;\r\n return (index: number, measures: IRenderVirtualListItemMeasures,\r\n config: IRenderVirtualListItemConfig): IItemTransformation => {\r\n const result: IItemTransformation = {\r\n x: 0,\r\n y: 0,\r\n z: 0,\r\n rotationX: 0,\r\n rotationY: 0,\r\n rotationZ: 0,\r\n scaleX: 1,\r\n scaleY: 1,\r\n scaleZ: 1,\r\n opacity: 1,\r\n zIndex: 1,\r\n },\r\n isVertical = config.isVertical,\r\n boundsSize = measures.boundsSize,\r\n scrollSize = measures.scrollSize,\r\n itemSize = isVertical ? measures.height : measures.width,\r\n itemSizeHalf = itemSize * .5,\r\n boundsSizeHalf = boundsSize * .5,\r\n xx = isVertical ? measures.x : (measures.x + config.layoutOffset + itemSizeHalf - boundsSizeHalf - scrollSize),\r\n yy = isVertical ? (measures.y + config.layoutOffset + itemSizeHalf - boundsSizeHalf - scrollSize) : measures.y,\r\n pxOffset = isVertical ? boundsSizeHalf : xx, px = isVertical ? 1 : (pxOffset / boundsSizeHalf),\r\n pyOffset = isVertical ? yy : boundsSizeHalf, py = isVertical ? (pyOffset / boundsSizeHalf) : 1;\r\n\r\n if (config.snapped || config.snappedOut) {\r\n result.x = measures.x;\r\n result.y = measures.y;\r\n result.zIndex = config.zIndex;\r\n } else {\r\n result.x = isVertical ? xx : (scrollSize - config.layoutOffset + boundsSizeHalf - itemSizeHalf + (xx * Math.pow(px, 2) * spacingBetweenItems));\r\n result.y = isVertical ? (scrollSize - config.layoutOffset + boundsSizeHalf - itemSizeHalf + (yy * Math.pow(py, 2) * spacingBetweenItems)) : yy;\r\n const s = (isVertical ? Math.abs(yy) : Math.abs(xx)) / boundsSize, scale = Math.pow(1 - s * .15, 4);\r\n result.zIndex = 100 - Math.floor(Math.abs(isVertical ? py : px) * 100);\r\n if (!!dof) {\r\n const blur = (s * dof) - 1,\r\n actualBlur = blur > 0 ? blur : 0;\r\n result.filter = actualBlur ? `blur(${actualBlur}${PX})` : UNSET;\r\n }\r\n if (!!fogColor) {\r\n result.opacity = fogWeight ? Math.pow(scale, fogWeight) : scale;\r\n result.blendColor = fogColor;\r\n }\r\n }\r\n return result;\r\n }\r\n}","import { Color } from '../../common';\r\nimport { PX } from '../const';\r\nimport { IItemTransformation } from '../interfaces';\r\nimport { IRenderVirtualListItemConfig, IRenderVirtualListItemMeasures } from '../models';\r\nimport { ItemTransform } from '../types';\r\n\r\nconst UNSET = 'unset',\r\n B_LIMIT = 0.5;\r\n\r\nexport interface IDeckOfCardsOptions {\r\n /**\r\n * Depth Of Field. Default value is `null`.\r\n */\r\n dof?: number;\r\n /**\r\n * Fog color. Default value is `null`.\r\n */\r\n fogColor?: Color;\r\n /**\r\n * Fog weight. Default value is `null`.\r\n */\r\n fogWeight?: number;\r\n /**\r\n * Spacing between items. Default value is `0.5`.\r\n */\r\n spacingBetweenItems?: number;\r\n /**\r\n * Depth. Default value is `0.15`.\r\n */\r\n depth?: number;\r\n /**\r\n * Scale. Default value is `0.15`.\r\n */\r\n scale?: number;\r\n /**\r\n * Scale X. Default value is `null`.\r\n */\r\n scaleX?: number | null;\r\n /**\r\n * Scale Y. Default value is `null`.\r\n */\r\n scaleY?: number | null;\r\n /**\r\n * Depth exponent. Default value is `4`.\r\n */\r\n depthPow?: number;\r\n /**\r\n * Sinusoidal distribution. Default value is `false`.\r\n */\r\n sineWave?: boolean;\r\n}\r\n\r\n/**\r\n * deckOfCards\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/transformations/deck-of-cards.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const deckOfCards = (options?: IDeckOfCardsOptions): ItemTransform => {\r\n const dof = options?.dof ?? null,\r\n fogColor = options?.fogColor ?? null,\r\n fogWeight = options?.fogWeight ?? null,\r\n spacingBetweenItems = options?.spacingBetweenItems ?? .5,\r\n depth = options?.depth ?? .15,\r\n scaleValue = options?.scale ?? .15,\r\n scaleXValue = options?.scaleX ?? null,\r\n scaleYValue = options?.scaleY ?? null,\r\n depthPow = options?.depthPow ?? 4,\r\n sineWave = options?.sineWave ?? false;\r\n return (index: number, measures: IRenderVirtualListItemMeasures,\r\n config: IRenderVirtualListItemConfig): IItemTransformation => {\r\n const result: IItemTransformation = {\r\n x: 0,\r\n y: 0,\r\n z: 0,\r\n rotationX: 0,\r\n rotationY: 0,\r\n rotationZ: 0,\r\n scaleX: 1,\r\n scaleY: 1,\r\n scaleZ: 1,\r\n opacity: 1,\r\n zIndex: 1,\r\n },\r\n isVertical = config.isVertical,\r\n boundsSize = measures.boundsSize,\r\n scrollSize = measures.scrollSize,\r\n itemSize = isVertical ? measures.height : measures.width,\r\n itemSizeHalf = itemSize * .5,\r\n boundsSizeHalf = boundsSize * .5,\r\n xx = isVertical ? measures.x : (measures.x + config.layoutOffset + itemSizeHalf - boundsSizeHalf - scrollSize),\r\n yy = isVertical ? (measures.y + config.layoutOffset + itemSizeHalf - boundsSizeHalf - scrollSize) : measures.y,\r\n pxOffset = isVertical ? boundsSizeHalf : xx, px = isVertical ? 1 : (pxOffset / boundsSizeHalf),\r\n pyOffset = isVertical ? yy : boundsSizeHalf, py = isVertical ? (pyOffset / boundsSizeHalf) : 1;\r\n\r\n if (config.snapped || config.snappedOut) {\r\n result.x = measures.x;\r\n result.y = measures.y;\r\n result.zIndex = config.zIndex;\r\n } else {\r\n result.x = isVertical ? xx : (scrollSize - config.layoutOffset + boundsSizeHalf - itemSizeHalf + (xx * spacingBetweenItems * (sineWave ? Math.abs(Math.sin(px)) : 1)));\r\n result.y = isVertical ? (scrollSize - config.layoutOffset + boundsSizeHalf - itemSizeHalf + (yy * spacingBetweenItems * (sineWave ? Math.abs(Math.sin(py)) : 1))) : yy;\r\n const s = (isVertical ? Math.abs(yy) : Math.abs(xx)) / boundsSize, scale = Math.pow(1 - s * scaleValue, depthPow),\r\n scaleX = scaleXValue !== null ? Math.pow(1 - s * scaleXValue, depthPow) : null,\r\n scaleY = scaleYValue !== null ? Math.pow(1 - s * scaleYValue, depthPow) : null,\r\n dofScale = Math.pow(1 - s * depth, depthPow);\r\n if (scaleXValue === null && scaleYValue === null) {\r\n result.scaleX = result.scaleY = scale;\r\n } else {\r\n result.scaleX = scaleX !== null ? scaleX : 1;\r\n result.scaleY = scaleY !== null ? scaleY : 1;\r\n }\r\n result.zIndex = 100 - Math.floor(Math.abs(isVertical ? py : px) * 100);\r\n if (!!dof) {\r\n const blur = (s * dof) - B_LIMIT,\r\n actualBlur = blur > 0 ? blur : 0;\r\n result.filter = actualBlur ? `blur(${actualBlur}${PX})` : UNSET;\r\n }\r\n if (!!fogColor) {\r\n result.opacity = fogWeight ? Math.pow(dofScale, fogWeight) : scale;\r\n result.blendColor = fogColor;\r\n }\r\n }\r\n return result;\r\n }\r\n}","import { Color } from '../../common';\r\nimport { PX } from '../const';\r\nimport { IItemTransformation } from '../interfaces';\r\nimport { IRenderVirtualListItemConfig, IRenderVirtualListItemMeasures } from '../models';\r\nimport { ItemTransform } from '../types';\r\n\r\nconst UNSET = 'unset',\r\n B_LIMIT = 0.5;\r\n\r\nexport interface IDeckOfCards3DOptions {\r\n /**\r\n * Depth Of Field. Default value is `null`.\r\n */\r\n dof?: number;\r\n /**\r\n * Fog color. Default value is `null`.\r\n */\r\n fogColor?: Color;\r\n /**\r\n * Fog weight. Default value is `null`.\r\n */\r\n fogWeight?: number;\r\n /**\r\n * Spacing between items. Default value is `0.5`.\r\n */\r\n spacingBetweenItems?: number;\r\n /**\r\n * Angle of inclination. Default value is `1`.\r\n */\r\n angle?: number;\r\n /**\r\n * Depth. Default value is `0.15`.\r\n */\r\n depth?: number;\r\n /**\r\n * Scale. Default value is `0.15`.\r\n */\r\n scale?: number;\r\n /**\r\n * Scale X. Default value is `null`.\r\n */\r\n scaleX?: number | null;\r\n /**\r\n * Scale Y. Default value is `null`.\r\n */\r\n scaleY?: number | null;\r\n /**\r\n * Depth exponent. Default value is `4`.\r\n */\r\n depthPow?: number;\r\n /**\r\n * Sinusoidal distribution. Default value is `false`.\r\n */\r\n sineWave?: boolean;\r\n}\r\n\r\n/**\r\n * deckOfCards3D\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/transformations/deck-of-cards-3d.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const deckOfCards3D = (options?: IDeckOfCards3DOptions): ItemTransform => {\r\n const dof = options?.dof ?? null,\r\n fogColor = options?.fogColor ?? null,\r\n fogWeight = options?.fogWeight ?? null,\r\n spacingBetweenItems = options?.spacingBetweenItems ?? .5,\r\n angle = options?.angle ?? 1,\r\n depth = options?.depth ?? .15,\r\n scaleValue = options?.scale ?? .15,\r\n scaleXValue = options?.scaleX ?? null,\r\n scaleYValue = options?.scaleY ?? null,\r\n depthPow = options?.depthPow ?? 4,\r\n sineWave = options?.sineWave ?? false;\r\n return (index: number, measures: IRenderVirtualListItemMeasures,\r\n config: IRenderVirtualListItemConfig): IItemTransformation => {\r\n const result: IItemTransformation = {\r\n x: 0,\r\n y: 0,\r\n z: 0,\r\n rotationX: 0,\r\n rotationY: 0,\r\n rotationZ: 0,\r\n scaleX: 1,\r\n scaleY: 1,\r\n scaleZ: 1,\r\n opacity: 1,\r\n zIndex: 1,\r\n },\r\n isVertical = config.isVertical,\r\n boundsSize = measures.boundsSize,\r\n scrollSize = measures.scrollSize,\r\n itemSize = isVertical ? measures.height : measures.width,\r\n itemSizeHalf = itemSize * .5,\r\n boundsSizeHalf = boundsSize * .5,\r\n xx = isVertical ? measures.x : (measures.x + config.layoutOffset + itemSizeHalf - boundsSizeHalf - scrollSize),\r\n yy = isVertical ? (measures.y + config.layoutOffset + itemSizeHalf - boundsSizeHalf - scrollSize) : measures.y,\r\n pxOffset = isVertical ? boundsSizeHalf : xx, px = isVertical ? 1 : (pxOffset / boundsSizeHalf),\r\n pyOffset = isVertical ? yy : boundsSizeHalf, py = isVertical ? (pyOffset / boundsSizeHalf) : 1;\r\n if (config.snapped || config.snappedOut) {\r\n result.x = measures.x;\r\n result.y = measures.y;\r\n result.zIndex = config.zIndex;\r\n } else {\r\n result.x = isVertical ? xx : (scrollSize - config.layoutOffset + boundsSizeHalf - itemSizeHalf + (xx * spacingBetweenItems * (sineWave ? Math.abs(Math.sin(px)) : 1)));\r\n result.y = isVertical ? (scrollSize - config.layoutOffset + boundsSizeHalf - itemSizeHalf + (yy * spacingBetweenItems * (sineWave ? Math.abs(Math.sin(py)) : 1))) : yy;\r\n const s = (isVertical ? Math.abs(yy) : Math.abs(xx)) / boundsSize, scale = Math.pow(1 - s * scaleValue, depthPow),\r\n scaleX = scaleXValue !== null ? Math.pow(1 - s * scaleXValue, depthPow) : null,\r\n scaleY = scaleYValue !== null ? Math.pow(1 - s * scaleYValue, depthPow) : null,\r\n dofScale = Math.pow(1 - s * depth, depthPow);\r\n if (scaleXValue === null && scaleYValue === null) {\r\n const z = scale + .1;\r\n result.z = z > 1 ? 1 : z;\r\n result.scaleX = result.scaleY = scale;\r\n } else {\r\n result.scaleX = scaleX !== null ? scaleX : 1;\r\n result.scaleY = scaleY !== null ? scaleY : 1;\r\n }\r\n result.rotationX = (isVertical ? py : px) * 200 * angle;\r\n result.zIndex = 100 - Math.floor(Math.abs(isVertical ? py : px) * 100);\r\n if (!!dof) {\r\n const blur = (s * dof) - B_LIMIT,\r\n actualBlur = blur > 0 ? blur : 0;\r\n result.filter = actualBlur ? `blur(${actualBlur}${PX})` : UNSET;\r\n }\r\n if (!!fogColor) {\r\n result.opacity = fogWeight ? Math.pow(dofScale, fogWeight) : scale;\r\n result.blendColor = fogColor;\r\n }\r\n }\r\n return result;\r\n }\r\n}","import { Color } from '../../common';\r\nimport { PX } from '../const';\r\nimport { IItemTransformation } from '../interfaces';\r\nimport { IRenderVirtualListItemConfig, IRenderVirtualListItemMeasures } from '../models';\r\nimport { ItemTransform } from '../types';\r\n\r\nconst UNSET = 'unset',\r\n B_LIMIT = 0.5;\r\n\r\nexport interface ISwipe3DOptions {\r\n /**\r\n * Depth Of Field. Default value is `null`.\r\n */\r\n dof?: number;\r\n /**\r\n * Fog color. Default value is `null`.\r\n */\r\n fogColor?: Color;\r\n /**\r\n * Fog weight. Default value is `null`.\r\n */\r\n fogWeight?: number;\r\n /**\r\n * Spacing between items. Default value is `0.5`.\r\n */\r\n spacingBetweenItems?: number;\r\n /**\r\n * Angle of inclination. Default value is `1`.\r\n */\r\n angle?: number;\r\n /**\r\n * Depth. Default value is `1.5`.\r\n */\r\n depth?: number;\r\n /**\r\n * Depth exponent. Default value is `4`.\r\n */\r\n depthPow?: number;\r\n}\r\n\r\n/**\r\n * swipe3D\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/transformations/swipe-3d.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const swipe3D = (options?: ISwipe3DOptions): ItemTransform => {\r\n const dof = options?.dof ?? null,\r\n fogColor = options?.fogColor ?? null,\r\n fogWeight = options?.fogWeight ?? null,\r\n spacingBetweenItems = options?.spacingBetweenItems ?? .35,\r\n angle = options?.angle ?? 25,\r\n depth = options?.depth ?? .15,\r\n depthPow = options?.depthPow ?? 4;\r\n return (index: number, measures: IRenderVirtualListItemMeasures,\r\n config: IRenderVirtualListItemConfig): IItemTransformation => {\r\n const result: IItemTransformation = {\r\n x: 0,\r\n y: 0,\r\n z: 0,\r\n rotationX: 0,\r\n rotationY: 0,\r\n rotationZ: 0,\r\n scaleX: 1,\r\n scaleY: 1,\r\n scaleZ: 1,\r\n opacity: 1,\r\n zIndex: 1,\r\n },\r\n isVertical = config.isVertical,\r\n boundsSize = measures.boundsSize,\r\n scrollSize = measures.scrollSize,\r\n itemSize = isVertical ? measures.height : measures.width,\r\n itemSizeHalf = itemSize * .5,\r\n boundsSizeHalf = boundsSize * .5,\r\n xx = isVertical ? measures.x : (measures.x + config.layoutOffset + itemSizeHalf - boundsSizeHalf - scrollSize),\r\n yy = isVertical ? (measures.y + config.layoutOffset + itemSizeHalf - boundsSizeHalf - scrollSize) : measures.y,\r\n pxOffset = isVertical ? boundsSizeHalf : xx, px = isVertical ? 1 : (pxOffset / boundsSizeHalf),\r\n pyOffset = isVertical ? yy : boundsSizeHalf, py = isVertical ? (pyOffset / boundsSizeHalf) : 1;\r\n if (config.snapped || config.snappedOut) {\r\n result.x = measures.x;\r\n result.y = measures.y;\r\n result.zIndex = config.zIndex;\r\n } else {\r\n const rx = isVertical ? xx : (scrollSize - config.layoutOffset + boundsSizeHalf - itemSizeHalf + xx * Math.pow(px, 2) * spacingBetweenItems),\r\n ry = isVertical ? (scrollSize - config.layoutOffset + boundsSizeHalf - itemSizeHalf + yy * Math.pow(py, 2) * spacingBetweenItems) : yy;\r\n result.x = rx;\r\n result.y = ry;\r\n const s = (isVertical ? Math.abs(yy) : Math.abs(xx)) / boundsSize, scale = Math.pow(1 - s * depth, depthPow);\r\n const z = scale + .1;\r\n result.z = z > 1 ? 1 : z;\r\n result.rotationZ = (Math.pow(s, 4) * -angle);\r\n result.zIndex = -index;\r\n if (!!dof) {\r\n const blur = (s * dof) - B_LIMIT,\r\n actualBlur = blur > 0 ? blur : 0;\r\n result.filter = actualBlur ? `blur(${actualBlur}${PX})` : UNSET;\r\n }\r\n if (!!fogColor) {\r\n result.opacity = fogWeight ? Math.pow(scale, fogWeight) : scale;\r\n result.blendColor = fogColor;\r\n }\r\n }\r\n return result;\r\n }\r\n}","import { linear } from \"./linear\";\r\nimport { eventHorizon } from \"./event-horizon\";\r\nimport { deckOfCards } from \"./deck-of-cards\";\r\nimport { deckOfCards3D } from \"./deck-of-cards-3d\";\r\nimport { swipe3D } from \"./swipe-3d\";\r\n\r\nexport const ItemTransformations = {\r\n EVENT_HORIZON: eventHorizon,\r\n LINEAR: linear,\r\n DECK_OF_CARDS: deckOfCards,\r\n DECK_OF_CARDS_3D: deckOfCards3D,\r\n SWIPE_3D: swipe3D,\r\n};\r\n","/*\r\n * Public API Surface of cn-virtual-list\r\n */\r\nexport * from './components/cn-scroll-bar/cn-scroll-bar-public.service';\r\nexport * from './components/cn-scroll-bar/types/scrollbar-state';\r\nexport * from './components/cn-scroll-bar/enums/scrollbar-states';\r\nexport * from './components/cn-list-item/cn-virtual-list-item.component';\r\nexport * from './cn-virtual-list-public.service';\r\nexport * from './cn-virtual-list.service';\r\nexport * from './cn-virtual-list.component';\r\nexport * from './cn-virtual-list.module';\r\nexport * from '../common/directives/cn-virtual-click/cn-virtual-click.directive';\r\nexport * from '../common/directives/cn-virtual-click/cn-virtual-click.module';\r\nexport * from './transformations';\r\nexport * from './interfaces';\r\nexport * from './enums';\r\nexport * from './models';\r\nexport * from './types';\r\nexport * from './utils';","/**\r\n * ScrollerDirection\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/cn-scroll-view/enums/scroller-direction.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport enum ScrollerDirection {\r\n HORIZONTAL = 'horizontal',\r\n VERTICAL = 'vertical',\r\n BOTH = 'both',\r\n}","/**\r\n * Axis of the arrangement of virtual list elements.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/enums/directions.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport enum Directions {\r\n /**\r\n * Horizontal axis.\r\n */\r\n HORIZONTAL = 'horizontal',\r\n /**\r\n * Vertical axis.\r\n */\r\n VERTICAL = 'vertical',\r\n /**\r\n * Horizontal and vertical axes.\r\n */\r\n BOTH = 'both',\r\n}","import { TextDirections } from \"../../common\";\r\nimport { Directions } from \"../enums/directions\";\r\nimport { IAnimationParams, IScrollingSettings } from '../interfaces';\r\n\r\nexport const DEFAULT_LIST_SIZE = 400;\r\n\r\nexport const DEFAULT_CLICK_DISTANCE = 40;\r\n\r\nexport const DEFAULT_SCROLLABLE = true;\r\n\r\nexport const DEFAULT_SCROLLBAR_ENABLED = true;\r\n\r\nexport const DEFAULT_SCROLLBAR_INTERACTIVE = true;\r\n\r\nexport const DEFAULT_OVERLAPPING_SCROLLBAR = false;\r\n\r\nexport const DEFAULT_SCROLL_BEHAVIOR: ScrollBehavior = 'smooth';\r\n\r\nexport const DEFAULT_MOTION_BLUR = 0.15;\r\n\r\nexport const DEFAULT_MOTION_BLUR_ENABLED = false;\r\n\r\nexport const DEFAULT_MAX_MOTION_BLUR = 0.5;\r\n\r\nexport const DEFAULT_ANIMATION_PARAMS: IAnimationParams = {\r\n scrollToItem: 0,\r\n};\r\n\r\nexport const DEFAULT_SCROLLING_SETTINGS: IScrollingSettings = {\r\n frictionalForce: 0.035,\r\n mass: 0.005,\r\n maxDistance: 100000,\r\n maxDuration: 4000,\r\n speedScale: 10,\r\n optimization: false,\r\n};\r\n\r\nexport const DEFAULT_OVERSCROLL_ENABLED = true;\r\n\r\nexport const DEFAULT_SNAP_SCROLLTO_LEFT = true;\r\n\r\nexport const DEFAULT_SNAP_SCROLLTO_TOP = true;\r\n\r\nexport const DEFAULT_SNAP_SCROLLTO_RIGHT = true;\r\n\r\nexport const DEFAULT_SNAP_SCROLLTO_BOTTOM = true;\r\n\r\nexport const DEFAULT_DIRECTION = Directions.BOTH;\r\n\r\nexport const DISPLAY_OBJECTS_LENGTH_MESUREMENT_ERROR = 1;\r\n\r\nexport const DEFAULT_LANG_TEXT_DIR = TextDirections.LTR;\r\n\r\nexport const DEFAULT_SCROLLBAR_THICKNESS: number = 6;\r\n\r\nexport const DEFAULT_SCROLLBAR_MIN_SIZE: number = 80;\r\n\r\n// presets\r\n\r\nexport const BEHAVIOR_AUTO: ScrollBehavior = 'auto';\r\n\r\nexport const BEHAVIOR_INSTANT: ScrollBehavior = 'instant';\r\n\r\nexport const BEHAVIOR_SMOOTH: ScrollBehavior = 'smooth';\r\n\r\nexport const DISABLED = 'disabled';\r\n\r\nexport const VIEWPORT = 'viewport';\r\n\r\nexport const DISPLAY_BLOCK = 'block';\r\n\r\nexport const DISPLAY_NONE = 'none';\r\n\r\nexport const OPACITY_0 = '0';\r\n\r\nexport const OPACITY_100 = '100';\r\n\r\nexport const VISIBILITY_VISIBLE = 'visible';\r\n\r\nexport const VISIBILITY_HIDDEN = 'hidden';\r\n\r\nexport const SIZE_100_PERSENT = '100%';\r\n\r\nexport const SIZE_AUTO = 'auto';\r\n\r\nexport const UNSET = 'unset';\r\n\r\nexport const LEFT = 'left';\r\n\r\nexport const RIGHT = 'right';\r\n\r\nexport const TOP = 'top';\r\n\r\nexport const BOTTOM = 'bottom';\r\n\r\nexport const POSITION = 'position';\r\n\r\nexport const POSITION_RELATIVE = 'relative';\r\n\r\nexport const POSITION_ABSOLUTE = 'absolute';\r\n\r\nexport const TRANSLATE_3D = 'translate3d';\r\n\r\nexport const HIDDEN_ZINDEX = '-1';\r\n\r\nexport const DEFAULT_ZINDEX = '0';\r\n\r\nexport const ZERO_PX = '0';\r\n\r\nexport const TOP_PROP_NAME = 'top';\r\n\r\nexport const LEFT_PROP_NAME = 'left';\r\n\r\nexport const X_PROP_NAME = 'x';\r\n\r\nexport const Y_PROP_NAME = 'y';\r\n\r\nexport const TRANSFORMED_X_PROP_NAME = 'transformedX';\r\n\r\nexport const TRANSFORMED_Y_PROP_NAME = 'transformedY';\r\n\r\nexport const WIDTH_PROP_NAME = 'width';\r\n\r\nexport const HEIGHT_PROP_NAME = 'height';\r\n\r\nexport const MARGIN_TOP = 'marginTop';\r\n\r\nexport const MARGIN_LEFT = 'marginLeft';\r\n\r\nexport const PX = 'px';\r\n\r\nexport const INTERACTIVE = 'interactive';\r\n\r\nexport const WHEEL = 'wheel';\r\n\r\nexport const SCROLLER_WHEEL = 'wheel';\r\n\r\nexport const TOUCH_MOVE = 'touchmove';\r\n\r\nexport const TOUCH_START = 'touchstart';\r\n\r\nexport const TOUCH_END = 'touchend';\r\n\r\nexport const TOUCH_LEAVE = 'touchleave';\r\n\r\nexport const TOUCH_OUT = 'touchout';\r\n\r\nexport const MOUSE_MOVE = 'mousemove';\r\n\r\nexport const MOUSE_UP = 'mouseup';\r\n\r\nexport const MOUSE_DOWN = 'mousedown';\r\n\r\nexport const MOUSE_LEAVE = 'mouseleave';\r\n\r\nexport const MOUSE_OUT = 'mouseout';\r\n\r\nexport const POINTER_MOVE = 'pointermove';\r\n\r\nexport const POINTER_UP = 'pointerup';\r\n\r\nexport const POINTER_DOWN = 'pointerdown';\r\n\r\nexport const POINTER_LEAVE = 'pointerleave';\r\n\r\nexport const POINTER_OUT = 'pointerout';\r\n\r\nexport const CLICK = 'click';\r\n\r\nexport const KEY_DOWN = 'keydown';\r\n\r\nexport const KEY_TAB = 'Tab';\r\n\r\nexport const SCROLL = 'scroll';\r\n\r\nexport const SCROLLER_SCROLL = 'scroll';\r\n\r\nexport const SCROLL_END = 'scrollend';\r\n\r\nexport const CLASS_SCROLL_VIEW_VERTICAL = 'vertical';\r\n\r\nexport const CLASS_SCROLL_VIEW_HORIZONTAL = 'horizontal';\r\n\r\nexport const CLASS_SCROLL_VIEW_BOTH = 'both';\r\n\r\n// styles\r\n\r\nexport const MIN_PIXELS_FOR_PREVENT_SNAPPING = 10;\r\n\r\nexport const RANGE_DISPLAY_ITEMS_END_OFFSET = 20;\r\n\r\nexport const ROLE_LIST = 'list';\r\n\r\nexport const ROLE_LIST_BOX = 'listbox';\r\n\r\nexport const PERCENTAGE_VALUE_PATTERN = /^([\\d]+%)$/;\r\n\r\nexport const Z_INDEX_NONE = '-1',\r\n Z_INDEX_0 = '0',\r\n Z_INDEX_1 = '1',\r\n Z_INDEX_2 = '2',\r\n Z_INDEX_3 = '3';","import { InjectionToken } from \"@angular/core\";\r\nimport { SCROLLER_SCROLL } from \"../../../const\";\r\nimport { IScrollViewService } from \"../../../interfaces\";\r\n\r\nexport const SCROLL_VIEW_INVERSION = new InjectionToken<boolean>('ScrollViewInversion');\r\n\r\nexport const SCROLL_VIEW_OVERSCROLL_ENABLED = new InjectionToken<boolean>('ScrollViewOverscrollEnabled');\r\n\r\nexport const SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO = new InjectionToken<boolean>('ScrollViewNormalizeValueFromZero');\r\n\r\nexport const SCROLL_VIEW_SERVICE = new InjectionToken<IScrollViewService>('ScrollViewService');\r\n\r\nexport const TOP = 'top',\r\n LEFT = 'left',\r\n INSTANT = 'instant',\r\n AUTO = 'auto',\r\n SMOOTH = 'smooth',\r\n DURATION = 2000,\r\n FRICTION_FORCE = .035,\r\n MAX_DURATION = 4000,\r\n ANIMATION_DURATION = 50,\r\n MASS = .005,\r\n ACCELERATION_SCALE = 40,\r\n MAX_DIST = 12500,\r\n MIN_DELTA = 0.1,\r\n MAX_VELOCITY_TIMESTAMP = 100,\r\n MAX_VELOCITIES_LENGTH = 10,\r\n MIN_ACCELERATION = 0.001,\r\n SPEED_SCALE = 15,\r\n OVERSCROLL_START_ITERATION = 2;\r\n\r\nexport const MAX_ITERATIONS_FOR_AVERAGE_CALCULATIONS = 5,\r\n INSTANT_VELOCITY_SCALE = 1000;\r\n\r\nexport const SCROLL_EVENT = new Event(SCROLLER_SCROLL);\r\n","import {\r\n Component, DestroyRef, ElementRef, inject, input, signal, viewChild,\r\n} from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { ScrollerDirection, ScrollerDirections } from '../enums';\r\nimport { SCROLL_VIEW_INVERSION, SCROLL_VIEW_OVERSCROLL_ENABLED, SCROLL_VIEW_SERVICE } from '../const';\r\nimport { ISize, TextDirection, TextDirections } from '../../../../common';\r\n\r\n/**\r\n * BaseScrollView\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/cn-scroll-view/base/base-scroll-view.component.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Component({\r\n selector: 'base-scroll-view',\r\n template: '',\r\n})\r\nexport class BaseScrollView {\r\n readonly scrollContent = viewChild<ElementRef<HTMLDivElement>>('scrollContent');\r\n\r\n readonly scrollViewport = viewChild<ElementRef<HTMLDivElement>>('scrollViewport');\r\n\r\n readonly direction = input<ScrollerDirections>(ScrollerDirection.BOTH);\r\n\r\n readonly langTextDir = input<TextDirection>(TextDirections.LTR);\r\n\r\n readonly leftOffset = input<number>(0);\r\n\r\n readonly topOffset = input<number>(0);\r\n\r\n readonly rightOffset = input<number>(0);\r\n\r\n readonly bottomOffset = input<number>(0);\r\n\r\n readonly grabbing = signal<boolean>(false);\r\n\r\n protected _inversion = inject(SCROLL_VIEW_INVERSION);\r\n\r\n protected _overscrollEnabled = inject(SCROLL_VIEW_OVERSCROLL_ENABLED);\r\n\r\n protected _$updateScrollBarHorizontal = new Subject<void>();\r\n protected $updateScrollBarHorizontal = this._$updateScrollBarHorizontal.asObservable();\r\n\r\n protected _$updateScrollBarVertical = new Subject<void>();\r\n protected $updateScrollBarVertical = this._$updateScrollBarVertical.asObservable();\r\n\r\n get scrollableX() {\r\n const { width } = this.viewportBounds(),\r\n viewportSize = width,\r\n totalSize = this._totalWidth;\r\n return this._inversion ? (totalSize < viewportSize) : (totalSize > viewportSize);\r\n }\r\n\r\n get scrollableY() {\r\n const { height } = this.viewportBounds(),\r\n viewportSize = height,\r\n totalSize = this._totalHeight;\r\n return this._inversion ? (totalSize < viewportSize) : (totalSize > viewportSize);\r\n }\r\n\r\n protected _destroyRef = inject(DestroyRef);\r\n\r\n protected _service = inject(SCROLL_VIEW_SERVICE);\r\n\r\n protected _isMoving = false;\r\n get isMoving() {\r\n return this._isMoving;\r\n }\r\n\r\n protected _x: number = 0;\r\n set x(v: number) {\r\n this._x = this._actualX = v;\r\n\r\n this.normalizeScrollSize();\r\n }\r\n get x() { return this._x; }\r\n\r\n protected _y: number = 0;\r\n set y(v: number) {\r\n this._y = this._actualY = v;\r\n\r\n this.normalizeScrollSize();\r\n }\r\n get y() { return this._y; }\r\n\r\n protected _actualTotalWidth: number = 0;\r\n protected _totalWidth: number = 0;\r\n set totalWidth(v: number) {\r\n if (this._totalWidth !== v) {\r\n this._totalWidth = v;\r\n const startOffset = this.leftOffset();\r\n this._actualTotalWidth = v + startOffset;\r\n\r\n this.normalizeScrollWidth();\r\n }\r\n }\r\n get totalWidth() {\r\n return this._totalWidth;\r\n }\r\n\r\n protected _actualTotalHeight: number = 0;\r\n protected _totalHeight: number = 0;\r\n set totalHeight(v: number) {\r\n if (this._totalHeight !== v) {\r\n this._totalHeight = v;\r\n const startOffset = this.topOffset();\r\n this._actualTotalHeight = v + startOffset;\r\n\r\n this.normalizeScrollHeight();\r\n }\r\n }\r\n get totalHeight() {\r\n return this._totalHeight;\r\n }\r\n\r\n protected _startLayoutOffsetX: number = 0;\r\n set startLayoutOffsetX(v: number) {\r\n if (this._startLayoutOffsetX !== v) {\r\n this._startLayoutOffsetX = v;\r\n }\r\n }\r\n get startLayoutOffsetX() { return this._startLayoutOffsetX; }\r\n\r\n protected _startLayoutOffsetY: number = 0;\r\n set startLayoutOffsetY(v: number) {\r\n if (this._startLayoutOffsetY !== v) {\r\n this._startLayoutOffsetY = v;\r\n }\r\n }\r\n get startLayoutOffsetY() { return this._startLayoutOffsetY; }\r\n\r\n get actualScrollHeight() {\r\n const { height: viewportHeight } = this.viewportBounds(),\r\n totalSize = this._actualTotalHeight,\r\n startOffset = this.topOffset(),\r\n endOffset = this.bottomOffset();\r\n if (this._inversion) {\r\n return totalSize > viewportHeight ? endOffset : viewportHeight - totalSize;\r\n }\r\n return totalSize < viewportHeight ? startOffset : totalSize - viewportHeight;\r\n }\r\n\r\n get actualScrollWidth() {\r\n const { width: viewportWidth } = this.viewportBounds(),\r\n totalSize = this._actualTotalWidth,\r\n startOffset = this.leftOffset(),\r\n endOffset = this.rightOffset();\r\n if (this._inversion) {\r\n return totalSize > viewportWidth ? endOffset : viewportWidth - totalSize;\r\n }\r\n return totalSize < viewportWidth ? startOffset : totalSize - viewportWidth;\r\n }\r\n\r\n protected _actualX: number = 0;\r\n get actualScrollLeft() {\r\n return this._actualX;\r\n }\r\n\r\n protected _actualY: number = 0;\r\n get actualScrollTop() {\r\n return this._actualY;\r\n }\r\n\r\n get scrollLeft() {\r\n return this._x;\r\n }\r\n\r\n get scrollTop() {\r\n return this._y;\r\n }\r\n\r\n get scrollWidth() {\r\n const { width: viewportWidth } = this.viewportBounds(),\r\n { width: contentWidth } = this.contentBounds(),\r\n startOffset = this.leftOffset(),\r\n endOffset = this.rightOffset();\r\n if (this._inversion) {\r\n return contentWidth > viewportWidth ? endOffset : (viewportWidth - contentWidth);\r\n }\r\n return contentWidth < viewportWidth ? startOffset : (contentWidth - viewportWidth);\r\n }\r\n\r\n get scrollHeight() {\r\n const { height: viewportHeight } = this.viewportBounds(),\r\n { height: contentHeight } = this.contentBounds(),\r\n startOffset = this.topOffset(),\r\n endOffset = this.bottomOffset();\r\n if (this._inversion) {\r\n return contentHeight > viewportHeight ? endOffset : (viewportHeight - contentHeight);\r\n }\r\n return contentHeight < viewportHeight ? startOffset : (contentHeight - viewportHeight);\r\n }\r\n\r\n readonly viewportBounds = signal<ISize>({ width: 0, height: 0 });\r\n\r\n readonly contentBounds = signal<ISize>({ width: 0, height: 0 });\r\n\r\n tick() {\r\n this.onResizeContent();\r\n this.onResizeViewport();\r\n }\r\n\r\n protected overrideCoordinates(x: number, y: number) { }\r\n\r\n protected normalizeScrollWidth() {\r\n return false;\r\n }\r\n\r\n protected normalizeScrollHeight() {\r\n return false;\r\n }\r\n\r\n protected normalizeScrollSize() {\r\n this.normalizeScrollWidth();\r\n this.normalizeScrollHeight();\r\n }\r\n\r\n protected onResizeViewport() {\r\n const viewport = this.scrollViewport()?.nativeElement;\r\n if (!!viewport) {\r\n const leftOffset = this.leftOffset(),\r\n rightOffset = this.rightOffset(),\r\n topOffset = this.topOffset(),\r\n bottomOffset = this.bottomOffset(),\r\n w = viewport.offsetWidth,\r\n h = viewport.offsetHeight,\r\n width = w - leftOffset - rightOffset,\r\n height = h - topOffset - bottomOffset,\r\n bounds = this.viewportBounds();\r\n if (bounds.width === width && bounds.height === height) {\r\n return;\r\n }\r\n this.viewportBounds.set({ width, height });\r\n }\r\n }\r\n\r\n protected onResizeContent(valueWidth: number | null = null, valueHeight: number | null = null) {\r\n const content = this.scrollContent()?.nativeElement;\r\n if (!!content) {\r\n const leftOffset = this.leftOffset(),\r\n topOffset = this.topOffset(),\r\n w = content.offsetWidth,\r\n h = content.offsetHeight,\r\n width = valueWidth ?? (w - leftOffset),\r\n height = valueHeight ?? (h - topOffset),\r\n bounds = this.contentBounds();\r\n if (bounds.width === width && bounds.height === height) {\r\n return;\r\n }\r\n this.contentBounds.set({ width, height });\r\n }\r\n }\r\n}","/**\r\n * calculateDirection\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/cn-scroll-view/utils/calculate-direction.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const calculateDirection = (buffer: Array<[number, number]>) => {\r\n for (let i = buffer.length - 1, l = 0; i >= l; i--) {\r\n const v = buffer[i];\r\n if (v[0] === 0) {\r\n continue;\r\n }\r\n return Math.sign(v[0]);\r\n }\r\n return 1;\r\n};\r\n","import { GradientColorPositions } from \"../../../../common\";\r\nimport { ScrollerDirection, ScrollerDirections } from \"../enums\";\r\n\r\ninterface ICalculateScrollParams {\r\n direction: ScrollerDirections;\r\n viewportWidth: number;\r\n viewportHeight: number;\r\n contentWidth: number;\r\n contentHeight: number;\r\n startOffset: number;\r\n endOffset: number;\r\n positionX: number;\r\n positionY: number;\r\n minSize: number;\r\n}\r\n\r\ninterface ICalculateScrollPositionParams {\r\n scrollSize: number;\r\n position: number;\r\n}\r\n\r\n/**\r\n * ScrollBox\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/cn-scroll-view/utils/scroll-box.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport class ScrollBox {\r\n calculateScroll({\r\n direction,\r\n viewportWidth,\r\n viewportHeight,\r\n contentWidth,\r\n contentHeight,\r\n startOffset,\r\n endOffset,\r\n positionX,\r\n positionY,\r\n minSize,\r\n }: ICalculateScrollParams) {\r\n const isVertical = direction === ScrollerDirection.VERTICAL;\r\n let x = 0, y = 0, thumbPosition = 0, thumbSize = 0, thumbGradientPositions: GradientColorPositions = [0, 0];\r\n if (isVertical) {\r\n y = positionY;\r\n const vh = viewportHeight - startOffset - endOffset, ch = contentHeight - startOffset - endOffset,\r\n ratio = ch > 0 ? vh / ch : 1, ts = vh * ratio, ats = Math.max(ts, minSize), atsDelta = ats - ts, rh = (ch !== 0 ? (y / ch) : 0),\r\n pos = startOffset + ((vh - atsDelta) * rh),\r\n size = ats, asp = pos, bRatio = size !== 0 ? vh / size : 0,\r\n aspp = -(vh !== 0 ? asp / vh : 0) * bRatio, aep = vh - (aspp + size),\r\n aepp = (aspp + (vh !== 0 ? (aep + size) / vh : 0) * bRatio);\r\n thumbGradientPositions[0] = aspp;\r\n thumbGradientPositions[1] = aepp;\r\n thumbSize = ats;\r\n thumbPosition = pos;\r\n } else {\r\n x = positionX;\r\n const vw = viewportWidth - startOffset - endOffset, cw = contentWidth - startOffset - endOffset,\r\n ratio = cw > 0 ? vw / cw : 1, ts = vw * ratio, ats = Math.max(ts, minSize), atsDelta = ats - ts, rw = (cw !== 0 ? (x / cw) : 0),\r\n pos = startOffset + ((vw - atsDelta) * rw),\r\n size = ats, asp = pos, bRatio = size !== 0 ? vw / size : 0,\r\n aspp = -(vw !== 0 ? asp / vw : 0) * bRatio, aep = vw - (aspp + size),\r\n aepp = (aspp + (vw !== 0 ? (aep + size) / vw : 0) * bRatio);\r\n thumbGradientPositions[0] = aspp;\r\n thumbGradientPositions[1] = aepp;\r\n thumbSize = ats;\r\n thumbPosition = pos;\r\n }\r\n return {\r\n x,\r\n y,\r\n thumbSize,\r\n thumbPosition,\r\n thumbGradientPositions,\r\n };\r\n }\r\n\r\n getScrollPositionByScrollBar({\r\n scrollSize,\r\n position,\r\n }: ICalculateScrollPositionParams) {\r\n const pos = (position * scrollSize);\r\n return {\r\n position: pos,\r\n };\r\n }\r\n}","/**\r\n * matrix3d\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/cn-scroll-view/utils/matrix-3d.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const matrix3d = (x: number, y: number) => {\r\n return `matrix3d(\r\n 1, 0, 0, 0,\r\n 0, 1, 0, 0,\r\n 0, 0, 1, 0,\r\n ${x}, ${y}, 0, 1\r\n )`;\r\n};\r\n","/**\r\n * getDir\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/cn-scroll-view/utils/get-dir.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const getDir = (p: number, c: number) => {\r\n return p < c ? 1 : p > c ? -1 : 0;\r\n}","import { INSTANT_VELOCITY_SCALE } from \"../const\";\r\n\r\n/**\r\n * calculateVelocity\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/cn-scroll-view/utils/calculate-velocity.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const calculateVelocity = (startPosition: number, currentPosition: number, timestamp: number) => {\r\n const s = currentPosition - startPosition, t = timestamp;\r\n return t !== 0 ? (s / t) * INSTANT_VELOCITY_SCALE : 0;\r\n}","import {\r\n Component, computed, inject, input, Signal, ViewChild,\r\n} from '@angular/core';\r\nimport { CdkScrollable } from '@angular/cdk/scrolling';\r\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\r\nimport { BehaviorSubject, combineLatest, debounceTime, delay, filter, fromEvent, map, of, race, startWith, Subject, switchMap, takeUntil, tap } from 'rxjs';\r\nimport { ANIMATOR_MIN_TIMESTAMP, Animator, Easing, easeOutQuad } from '../../../common/utils/animator';\r\nimport {\r\n BEHAVIOR_INSTANT, DEFAULT_ANIMATION_PARAMS, DEFAULT_OVERSCROLL_ENABLED, DEFAULT_SCROLL_BEHAVIOR, DEFAULT_SCROLLABLE,\r\n DEFAULT_SCROLLING_SETTINGS, INTERACTIVE, MOUSE_DOWN, MOUSE_MOVE, MOUSE_UP, TOUCH_END, TOUCH_MOVE, TOUCH_START, WHEEL,\r\n} from '../../const';\r\nimport { IScrollToParams, IWheelEvent } from './interfaces';\r\nimport {\r\n ACCELERATION_SCALE, ANIMATION_DURATION, AUTO, DURATION, FRICTION_FORCE, INSTANT, LEFT, MASS, MAX_DIST, MAX_DURATION, MAX_ITERATIONS_FOR_AVERAGE_CALCULATIONS,\r\n MAX_VELOCITY_TIMESTAMP, MAX_VELOCITIES_LENGTH, OVERSCROLL_START_ITERATION, SCROLL_EVENT, SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, SMOOTH, SPEED_SCALE, TOP,\r\n MIN_ACCELERATION, MIN_DELTA,\r\n} from './const';\r\nimport { calculateDirection, matrix3d } from './utils';\r\nimport { BaseScrollView } from './base';\r\nimport { IAnimationParams, IScrollingSettings } from '../../interfaces';\r\nimport { ScrollDirection } from '../../types';\r\nimport { calculateVelocity } from './utils/calculate-velocity';\r\nimport { ScrollerDirection } from './enums';\r\nimport { Id, TextDirections } from '../../../common';\r\n\r\n/**\r\n * CnScrollView\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/cn-scroll-view/cn-scroll-view.component.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Component({\r\n selector: 'cn-scroll-view',\r\n template: '',\r\n})\r\nexport class CnScrollView extends BaseScrollView {\r\n @ViewChild('scrollViewport', { read: CdkScrollable })\r\n readonly cdkScrollable: CdkScrollable | undefined;\r\n\r\n readonly scrollable = input<boolean>(DEFAULT_SCROLLABLE);\r\n\r\n readonly scrollBehavior = input<ScrollBehavior>(DEFAULT_SCROLL_BEHAVIOR);\r\n\r\n readonly overscrollEnabled = input<boolean>(DEFAULT_OVERSCROLL_ENABLED);\r\n\r\n readonly scrollingSettings = input<IScrollingSettings>(DEFAULT_SCROLLING_SETTINGS);\r\n\r\n readonly animationParams = input<IAnimationParams>(DEFAULT_ANIMATION_PARAMS);\r\n\r\n protected _normalizeValueFromZero = inject(SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO);\r\n\r\n protected _isScrollsTo: boolean = false;\r\n\r\n private _scrollDirectionValueX: number = 0;\r\n\r\n private _scrollDirectionValueY: number = 0;\r\n\r\n private _$scrollDirectionX = new BehaviorSubject<ScrollDirection>(0);\r\n readonly $scrollDirectionX = this._$scrollDirectionX.asObservable();\r\n set scrollDirectionX(v: ScrollDirection) {\r\n if (this.scrollDirectionX !== v) {\r\n this._$scrollDirectionX.next(v);\r\n }\r\n }\r\n get scrollDirectionX() {\r\n return this._$scrollDirectionX.getValue();\r\n }\r\n\r\n private _$scrollDirectionY = new BehaviorSubject<ScrollDirection>(0);\r\n readonly $scrollDirectionY = this._$scrollDirectionY.asObservable();\r\n set scrollDirectionY(v: ScrollDirection) {\r\n if (this.scrollDirectionY !== v) {\r\n this._$scrollDirectionY.next(v);\r\n }\r\n }\r\n get scrollDirectionY() {\r\n return this._$scrollDirectionY.getValue();\r\n }\r\n\r\n protected _$wheel = new Subject<IWheelEvent>();\r\n readonly $wheel = this._$wheel.asObservable();\r\n\r\n protected _$scroll = new Subject<boolean>();\r\n readonly $scroll = this._$scroll.asObservable();\r\n\r\n protected _$scrollEnd = new Subject<boolean>();\r\n readonly $scrollEnd = this._$scrollEnd.asObservable();\r\n\r\n protected _velocitiesX: Array<number> = [];\r\n\r\n protected _velocitiesY: Array<number> = [];\r\n\r\n protected _$velocityX = new BehaviorSubject<number>(0);\r\n protected $velocityX = this._$velocityX.asObservable();\r\n get velocityX() { return this._$velocityX.getValue(); }\r\n\r\n protected _$velocityY = new BehaviorSubject<number>(0);\r\n protected $velocityY = this._$velocityY.asObservable();\r\n get velocityY() { return this._$velocityY.getValue(); }\r\n\r\n protected _$averageVelocityX = new BehaviorSubject<number>(0);\r\n protected $averageVelocityX = this._$averageVelocityX.asObservable();\r\n get averageVelocityX() { return this._$averageVelocityX.getValue(); }\r\n\r\n protected _$averageVelocityY = new BehaviorSubject<number>(0);\r\n protected $averageVelocityY = this._$averageVelocityY.asObservable();\r\n get averageVelocityY() { return this._$averageVelocityY.getValue(); }\r\n\r\n private _measureVelocityTimestampX: number = Date.now();\r\n\r\n private _measureVelocityTimestampY: number = Date.now();\r\n\r\n private _measureVelocityLastPositionX: number = this._x;\r\n\r\n private _measureVelocityLastPositionY: number = this._y;\r\n\r\n private _startPositionX = 0;\r\n\r\n private _startPositionY = 0;\r\n\r\n private _touchId = -1;\r\n\r\n protected _animatorX = new Animator();\r\n\r\n protected _animatorY = new Animator();\r\n\r\n protected _interactive = true;\r\n\r\n private _overscrollIteration: number = 0;\r\n\r\n override set x(v: number) {\r\n this.setX(v);\r\n }\r\n override get x() { return this._x; }\r\n\r\n protected setX(x: number, normalize: boolean = true) {\r\n if (x !== undefined && !Number.isNaN(x)) {\r\n this._x = this._actualY = x;\r\n\r\n if (normalize) {\r\n this.normalizeScrollSize();\r\n }\r\n\r\n this.updateDirectionX(x, this._x);\r\n\r\n this.refreshCoordinate(this._x, this._y);\r\n\r\n this.measureVelocity();\r\n }\r\n }\r\n\r\n override set y(v: number) {\r\n this.setY(v);\r\n }\r\n override get y() { return this._y; }\r\n\r\n protected setY(y: number, normalize: boolean = true) {\r\n if (y !== undefined && !Number.isNaN(y)) {\r\n this._y = this._actualY = y;\r\n\r\n if (normalize) {\r\n this.normalizeScrollSize();\r\n }\r\n\r\n this.updateDirectionY(y, this._y);\r\n\r\n this.refreshCoordinate(this._x, this._y);\r\n\r\n this.measureVelocity();\r\n }\r\n }\r\n\r\n protected _deltaX: number = 0;\r\n set deltaX(v: number) {\r\n this._deltaX = v;\r\n this._startPositionX += v;\r\n }\r\n\r\n protected _deltaY: number = 0;\r\n set deltaY(v: number) {\r\n this._deltaY = v;\r\n this._startPositionY += v;\r\n }\r\n\r\n override set startLayoutOffsetX(v: number) {\r\n if (this._startLayoutOffsetX !== v) {\r\n this._startLayoutOffsetX = v;\r\n\r\n this.refreshCoordinate(this._x, this._y);\r\n }\r\n }\r\n override get startLayoutOffsetX() { return this._startLayoutOffsetX; }\r\n\r\n override set startLayoutOffsetY(v: number) {\r\n if (this._startLayoutOffsetY !== v) {\r\n this._startLayoutOffsetY = v;\r\n\r\n this.refreshCoordinate(this._x, this._y);\r\n }\r\n }\r\n override get startLayoutOffsetY() { return this._startLayoutOffsetY; }\r\n\r\n protected _intersectionComponentId: Id | null = null;\r\n\r\n get animatedX() { return this._animatorX?.isAnimated ?? false; }\r\n\r\n get animatedY() { return this._animatorY?.isAnimated ?? false; }\r\n\r\n get animated() { return this.animatedX || this.animatedY; }\r\n\r\n protected _horizontalAxisInvertion: Signal<boolean>;\r\n\r\n protected _horizontalAxisEnabled: Signal<boolean>;\r\n\r\n protected _verticalAxisEnabled: Signal<boolean>;\r\n\r\n protected _horizontalScrollRatio = 0;\r\n get horizontalScrollRatio() { return this._horizontalScrollRatio; }\r\n\r\n protected _verticalScrollRatio = 0;\r\n get verticalScrollRatio() { return this._verticalScrollRatio; }\r\n\r\n constructor() {\r\n super();\r\n\r\n let mouseCanceled = false,\r\n touchCanceled = false;\r\n\r\n this._horizontalAxisEnabled = computed(() => {\r\n const direction = this.direction();\r\n return direction === ScrollerDirection.BOTH || direction === ScrollerDirection.HORIZONTAL;\r\n });\r\n\r\n this._horizontalAxisInvertion = computed(() => {\r\n const horizontalAxisEnabled = this._horizontalAxisEnabled(), langTextDir = this.langTextDir();\r\n return horizontalAxisEnabled && langTextDir === TextDirections.RTL;\r\n });\r\n\r\n this._verticalAxisEnabled = computed(() => {\r\n const direction = this.direction();\r\n return direction === ScrollerDirection.BOTH || direction === ScrollerDirection.VERTICAL;\r\n });\r\n\r\n const $viewportBounds = toObservable(this.viewportBounds);\r\n $viewportBounds.pipe(\r\n takeUntilDestroyed(),\r\n debounceTime(0),\r\n tap(() => {\r\n this._isMoving = false;\r\n this.grabbing.set(false);\r\n if (!mouseCanceled || !touchCanceled) {\r\n this.stopMoving();\r\n }\r\n mouseCanceled = touchCanceled = true;\r\n this._$scrollEnd.next(false);\r\n }),\r\n ).subscribe();\r\n\r\n const $wheel = this.$wheel;\r\n $wheel.pipe(\r\n takeUntilDestroyed(),\r\n switchMap(v => of({ v0X: this.averageVelocityX, v0Y: this.averageVelocityY })),\r\n debounceTime(100),\r\n tap(({ v0X, v0Y }) => {\r\n this._overscrollIteration = 0;\r\n this.scrollDirectionX = this.scrollDirectionY = this._scrollDirectionValueX = this._scrollDirectionValueY = 0;\r\n }),\r\n ).subscribe();\r\n\r\n const $viewport = toObservable(this.scrollViewport).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n filter(v => !!v),\r\n map(v => v.nativeElement),\r\n ), $content = toObservable(this.scrollContent).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n filter(v => !!v),\r\n map(v => v.nativeElement),\r\n ),\r\n $scrollDisabled = toObservable(this.scrollable).pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !v),\r\n ),\r\n $wheelEmitter = this._inversion ? $viewport : $content;\r\n\r\n $wheelEmitter.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n switchMap(content => {\r\n return fromEvent<WheelEvent>(content, WHEEL, { passive: false }).pipe(\r\n filter(() => this._interactive),\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(e => {\r\n if (!this.scrollable()) {\r\n return;\r\n }\r\n this.emitScrollableEvent();\r\n this.checkOverscroll(e, true);\r\n this.stopScrolling();\r\n const scrollWidth = this.scrollWidth,\r\n scrollHeight = this.scrollHeight,\r\n startPosX = this._x,\r\n startPosY = this._y,\r\n deltaX = e.deltaX, dpX = (startPosX + deltaX),\r\n deltaY = e.deltaY, dpY = (startPosY + deltaY);\r\n let positionX = 0, positionY = 0;\r\n positionX = dpX < 0 ? 0 : dpX > scrollWidth ? scrollWidth : dpX;\r\n positionY = dpY < 0 ? 0 : dpY > scrollHeight ? scrollHeight : dpY;\r\n this.scroll({ [LEFT]: positionX, [TOP]: positionY, behavior: INSTANT, userAction: true, blending: false, fireUpdate: true });\r\n this._$wheel.next({ deltaX, deltaY });\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n const $mouseUp = race([\r\n fromEvent<MouseEvent>(window, MOUSE_UP, { passive: true }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n ),\r\n $content.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n switchMap(content => fromEvent<MouseEvent>(content, MOUSE_UP, { passive: true }))\r\n ),\r\n ]),\r\n $mouseDragCancel = $mouseUp.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n delay(0),\r\n tap(() => {\r\n this._isMoving = false;\r\n this.grabbing.set(false);\r\n if (!mouseCanceled) {\r\n this.stopMoving();\r\n }\r\n mouseCanceled = true;\r\n this._$scrollEnd.next(true);\r\n }),\r\n );\r\n\r\n $content.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n switchMap(content => {\r\n return fromEvent<MouseEvent>(content, MOUSE_DOWN, { passive: false }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n filter(() => this._interactive),\r\n switchMap(e => {\r\n return race([fromEvent<MouseEvent>(window, MOUSE_UP, { passive: false }), fromEvent<MouseEvent>(content, MOUSE_UP, { passive: false })]).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n takeUntil(fromEvent<MouseEvent>(window, MOUSE_MOVE, { passive: false })),\r\n takeUntil($scrollDisabled),\r\n tap(e => {\r\n this._isMoving = false;\r\n this.grabbing.set(false);\r\n if (!mouseCanceled) {\r\n this.stopMoving();\r\n }\r\n mouseCanceled = true;\r\n this._$scrollEnd.next(true);\r\n }),\r\n );\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n $content.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n switchMap(content => {\r\n return fromEvent<MouseEvent>(content, MOUSE_DOWN, { passive: false }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n filter(v => this._interactive),\r\n switchMap(e => {\r\n mouseCanceled = false;\r\n this.scrollDirectionX = this.scrollDirectionY = this._scrollDirectionValueX = this._scrollDirectionValueY = 0;\r\n this.cancelOverscroll();\r\n this.onDragStart();\r\n this.stopScrolling();\r\n this.stopMoving();\r\n const target = e.target as HTMLElement;\r\n if (target.classList.contains(INTERACTIVE)) {\r\n return of(undefined);\r\n }\r\n const inversion = this._inversion, dt = Date.now();\r\n this._isMoving = true;\r\n this.grabbing.set(true);\r\n this._startPositionX = this.x;\r\n this._startPositionY = this.y;\r\n this._touchId = -1;\r\n let prevClientPositionX: number | null = e.clientX * (this._horizontalAxisInvertion() ? -1 : 1),\r\n prevClientPositionY: number | null = e.clientY,\r\n startClientPosX = prevClientPositionX,\r\n startClientPosY = prevClientPositionY,\r\n offsetsX = new Array<[number, number]>(),\r\n offsetsY = new Array<[number, number]>(),\r\n velocitiesX = new Array<[number, number]>(),\r\n velocitiesY = new Array<[number, number]>(),\r\n startTimeX = dt,\r\n startTimeY = dt;\r\n return fromEvent<MouseEvent>(window, MOUSE_MOVE, { passive: false }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n takeUntil($mouseDragCancel),\r\n takeUntil($scrollDisabled),\r\n tap(e => {\r\n this.checkOverscroll(e);\r\n }),\r\n switchMap(e => {\r\n const { position: positionX, currentPos: currentPosX, endTime: endTimeX, scrollDelta: scrollDeltaX } =\r\n this.calculatePosition(false, this._horizontalAxisEnabled(), this._horizontalAxisInvertion(), e, inversion, startClientPosX, startTimeX, prevClientPositionX, offsetsX, velocitiesX),\r\n { position: positionY, currentPos: currentPosY, endTime: endTimeY, scrollDelta: scrollDeltaY } =\r\n this.calculatePosition(true, this._verticalAxisEnabled(), false, e, inversion, startClientPosY, startTimeY, prevClientPositionY, offsetsY, velocitiesY);\r\n prevClientPositionX = currentPosX;\r\n prevClientPositionY = currentPosY;\r\n this._scrollDirectionValueX += Math.abs(scrollDeltaX);\r\n this._scrollDirectionValueY += Math.abs(scrollDeltaY);\r\n this.move(positionX, positionY, true, true, true);\r\n startTimeX = endTimeX;\r\n startTimeY = endTimeY;\r\n return race([fromEvent<MouseEvent>(window, MOUSE_UP, { passive: false }), fromEvent<MouseEvent>(content, MOUSE_UP, { passive: false })]).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n takeUntil($mouseDragCancel),\r\n takeUntil($scrollDisabled),\r\n tap(e => {\r\n mouseCanceled = true;\r\n this.cancelOverscroll();\r\n const endTime = Date.now(),\r\n horizontalAxisEnabled = this._horizontalAxisEnabled(),\r\n verticalAxisEnabled = this._verticalAxisEnabled(),\r\n timestampX = endTime - startTimeX,\r\n timestampY = endTime - startTimeY,\r\n { v0: v0X } = this.calculateVelocity(horizontalAxisEnabled, offsetsX, scrollDeltaX, timestampX),\r\n { v0: v0Y } = this.calculateVelocity(verticalAxisEnabled, offsetsY, scrollDeltaY, timestampY),\r\n { a0: a0X } = this.calculateAcceleration(horizontalAxisEnabled, velocitiesX, v0X, timestampX),\r\n { a0: a0Y } = this.calculateAcceleration(verticalAxisEnabled, velocitiesY, v0Y, timestampY);\r\n this._isMoving = false;\r\n this.grabbing.set(false);\r\n if (this.scrollBehavior() !== BEHAVIOR_INSTANT) {\r\n this.moveWithAcceleration(\r\n positionX, v0X, a0X, timestampX,\r\n positionY, v0Y, a0Y, timestampY,\r\n );\r\n } else {\r\n this._$scrollEnd.next(true);\r\n }\r\n }),\r\n );\r\n }),\r\n );\r\n })\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n const $touchUp = race(\r\n [\r\n fromEvent<TouchEvent>(window, TOUCH_END, { passive: false }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n ),\r\n $content.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n switchMap(content => fromEvent<TouchEvent>(content, TOUCH_END, { passive: false })),\r\n ),\r\n ]\r\n ),\r\n $touchMove = fromEvent<TouchEvent>(window, TOUCH_MOVE, { passive: false }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n ),\r\n $touchCanceler = race([$touchUp.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n tap((e) => {\r\n if (this._touchId > -1) {\r\n e.stopImmediatePropagation();\r\n }\r\n }),\r\n delay(0),\r\n filter(e => Array.from(e.targetTouches).findIndex(({ identifier }) => identifier === this._touchId) === -1),\r\n tap(() => {\r\n this._touchId = -1;\r\n this._isMoving = false;\r\n this.grabbing.set(false);\r\n if (!touchCanceled) {\r\n this.stopMoving();\r\n }\r\n touchCanceled = true;\r\n this._$scrollEnd.next(true);\r\n }),\r\n ), $touchMove.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n delay(0),\r\n filter(e => Array.from(e.targetTouches).findIndex(({ identifier }) => identifier === this._touchId) === -1),\r\n tap(() => {\r\n this._touchId = -1;\r\n }),\r\n )]);\r\n\r\n $content.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n switchMap(content => {\r\n return fromEvent<TouchEvent>(content, TOUCH_START, { passive: false }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n filter(() => this._interactive),\r\n switchMap(e => {\r\n return race([fromEvent<TouchEvent>(window, TOUCH_END, { passive: false }), fromEvent<TouchEvent>(content, TOUCH_END, { passive: false })]).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n takeUntil(fromEvent<TouchEvent>(window, TOUCH_MOVE, { passive: false })),\r\n takeUntil($scrollDisabled),\r\n tap(e => {\r\n this._touchId = -1;\r\n this._isMoving = false;\r\n this.grabbing.set(false);\r\n if (!touchCanceled) {\r\n this.stopMoving();\r\n }\r\n touchCanceled = true;\r\n this._$scrollEnd.next(true);\r\n }),\r\n );\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n $content.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n switchMap(content => {\r\n return fromEvent<TouchEvent>(content, TOUCH_START, { passive: false }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n filter(v => this._interactive),\r\n switchMap(e => {\r\n touchCanceled = false;\r\n this.scrollDirectionX = this.scrollDirectionY = this._scrollDirectionValueX = this._scrollDirectionValueY = 0;\r\n this.cancelOverscroll();\r\n this.onDragStart();\r\n this.stopScrolling();\r\n this.stopMoving();\r\n const target = e.target as HTMLElement;\r\n if (target.classList.contains(INTERACTIVE)) {\r\n return of(undefined);\r\n }\r\n const inversion = this._inversion, dt = Date.now(),\r\n touch = (e.targetTouches?.length ?? 0) > 0 ? e.targetTouches[e.targetTouches.length - 1] : null;\r\n if (!touch) {\r\n return of(null);\r\n }\r\n this._isMoving = true;\r\n this.grabbing.set(true);\r\n this._startPositionX = this.x;\r\n this._startPositionY = this.y;\r\n this._touchId = touch.identifier;\r\n let prevClientPositionX: number | null = (touch.clientX) * (this._horizontalAxisInvertion() ? -1 : 1),\r\n prevClientPositionY: number | null = touch.clientY,\r\n startClientPosX = prevClientPositionX,\r\n startClientPosY = prevClientPositionY,\r\n offsetsX = new Array<[number, number]>(),\r\n offsetsY = new Array<[number, number]>(),\r\n velocitiesX = new Array<[number, number]>(),\r\n velocitiesY = new Array<[number, number]>(),\r\n startTimeX = dt,\r\n startTimeY = dt;\r\n return combineLatest([fromEvent<TouchEvent>(window, TOUCH_MOVE, { passive: false }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n startWith(null),\r\n ), fromEvent<TouchEvent>(content, TOUCH_MOVE, { passive: false }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n startWith(null),\r\n )]).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n takeUntil($touchCanceler),\r\n map(([e1, e2]) => e1 ?? e2),\r\n filter(e => !!e),\r\n tap(e => {\r\n this.checkOverscroll(e);\r\n }),\r\n switchMap(e => {\r\n const { position: positionX, currentPos: currentPosX, endTime: endTimeX, scrollDelta: scrollDeltaX } =\r\n this.calculatePosition(false, this._horizontalAxisEnabled(), this._horizontalAxisInvertion(), e, inversion, startClientPosX, startTimeX, prevClientPositionX, offsetsX, velocitiesX, this._touchId),\r\n { position: positionY, currentPos: currentPosY, endTime: endTimeY, scrollDelta: scrollDeltaY } =\r\n this.calculatePosition(true, this._verticalAxisEnabled(), false, e, inversion, startClientPosY, startTimeY, prevClientPositionY, offsetsY, velocitiesY, this._touchId);\r\n prevClientPositionX = currentPosX;\r\n prevClientPositionY = currentPosY;\r\n this._scrollDirectionValueX += Math.abs(scrollDeltaX);\r\n this._scrollDirectionValueY += Math.abs(scrollDeltaY);\r\n this.move(positionX, positionY, true, true, true);\r\n startTimeX = endTimeX;\r\n startTimeY = endTimeY;\r\n return race([fromEvent<TouchEvent>(window, TOUCH_END, { passive: false }), fromEvent<TouchEvent>(content, TOUCH_END, { passive: false })]).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n takeUntil($touchCanceler),\r\n takeUntil($scrollDisabled),\r\n tap(e => {\r\n this._touchId = -1;\r\n touchCanceled = true;\r\n this.cancelOverscroll();\r\n const endTime = Date.now(),\r\n timestampX = endTime - startTimeX,\r\n timestampY = endTime - startTimeY,\r\n horizontalAxisEnabled = this._horizontalAxisEnabled(),\r\n verticalAxisEnabled = this._verticalAxisEnabled(),\r\n { v0: v0X } = this.calculateVelocity(horizontalAxisEnabled, offsetsX, scrollDeltaX, timestampX),\r\n { v0: v0Y } = this.calculateVelocity(verticalAxisEnabled, offsetsY, scrollDeltaY, timestampY),\r\n { a0: a0X } = this.calculateAcceleration(horizontalAxisEnabled, velocitiesX, v0X, timestampX),\r\n { a0: a0Y } = this.calculateAcceleration(verticalAxisEnabled, velocitiesY, v0Y, timestampY);\r\n this._isMoving = false;\r\n this.grabbing.set(false);\r\n if (this.scrollBehavior() !== BEHAVIOR_INSTANT) {\r\n this.moveWithAcceleration(\r\n positionX, v0X, a0X, timestampX,\r\n positionY, v0Y, a0Y, timestampY,\r\n );\r\n } else {\r\n this._$scrollEnd.next(true);\r\n }\r\n }),\r\n );\r\n }),\r\n );\r\n })\r\n );\r\n }),\r\n ).subscribe();\r\n }\r\n\r\n hasAnimationX(...ids: Array<number>) { return this._animatorX?.hasAnimation(...ids) ?? false; }\r\n\r\n hasAnimationY(...ids: Array<number>) { return this._animatorY?.hasAnimation(...ids) ?? false; }\r\n\r\n hasAnimation(...ids: Array<number>) { return this.hasAnimationX(...ids) || this.hasAnimationY(...ids); }\r\n\r\n protected updateDirectionX(position: number, prePosition: number) {\r\n const delta = (position - this._deltaX) - prePosition;\r\n this.scrollDirectionX = Math.sign(delta) as ScrollDirection;\r\n }\r\n\r\n protected updateDirectionY(position: number, prePosition: number) {\r\n const delta = (position - this._deltaY) - prePosition;\r\n this.scrollDirectionY = Math.sign(delta) as ScrollDirection;\r\n }\r\n\r\n protected override overrideCoordinates(x: number, y: number) {\r\n super.overrideCoordinates(x, y);\r\n const time = Date.now(), positionX = Math.abs(x),\r\n positionY = Math.abs(y);\r\n this._measureVelocityTimestampX = this._measureVelocityTimestampY = time;\r\n this._measureVelocityLastPositionX = positionX;\r\n this._measureVelocityLastPositionY = positionY;\r\n this.refreshCoordinate(x, y);\r\n }\r\n\r\n protected measureVelocity() {\r\n const time = Date.now();\r\n if (time === this._measureVelocityTimestampX || time === this._measureVelocityTimestampY) {\r\n return;\r\n }\r\n const positionX = this._x,\r\n positionY = this._y;\r\n let reseted = false;\r\n if (this._horizontalAxisEnabled() && (positionX <= 0 || positionX >= this.scrollWidth)) {\r\n this._velocitiesX = [0];\r\n this._$averageVelocityX.next(0);\r\n this._measureVelocityLastPositionX = positionX;\r\n this._measureVelocityTimestampX = time;\r\n reseted = true;\r\n }\r\n if (this._verticalAxisEnabled() && (positionY <= 0 || positionY >= this.scrollHeight)) {\r\n this._velocitiesY = [0];\r\n this._$averageVelocityY.next(0);\r\n this._measureVelocityLastPositionY = positionY;\r\n this._measureVelocityTimestampY = time;\r\n reseted = true;\r\n }\r\n if (reseted) {\r\n return;\r\n }\r\n if (this._deltaX === 0) {\r\n const timeDelta = time - this._measureVelocityTimestampX,\r\n positionDelta = Math.abs(positionX - this._measureVelocityLastPositionX),\r\n velocity = timeDelta > 0 ? positionDelta / timeDelta : 0;\r\n let avgVelocityX = this._velocitiesX.length > 0 ? this._velocitiesX.reduce((p, c) => p + c) : 0;\r\n if (this._velocitiesX.length >= MAX_ITERATIONS_FOR_AVERAGE_CALCULATIONS) {\r\n this._velocitiesX.shift();\r\n }\r\n avgVelocityX += velocity;\r\n this._$velocityX.next(velocity);\r\n this._velocitiesX.push(velocity);\r\n this._$averageVelocityX.next(avgVelocityX / MAX_ITERATIONS_FOR_AVERAGE_CALCULATIONS);\r\n this._measureVelocityLastPositionX = positionX;\r\n this._measureVelocityTimestampX = time;\r\n }\r\n if (this._deltaY === 0) {\r\n const timeDelta = time - this._measureVelocityTimestampY,\r\n positionDelta = Math.abs(positionY - this._measureVelocityLastPositionY),\r\n velocity = timeDelta > 0 ? positionDelta / timeDelta : 0;\r\n let avgVelocityY = this._velocitiesY.length > 0 ? this._velocitiesY.reduce((p, c) => p + c) : 0;\r\n if (this._velocitiesY.length >= MAX_ITERATIONS_FOR_AVERAGE_CALCULATIONS) {\r\n this._velocitiesY.shift();\r\n }\r\n avgVelocityY += velocity;\r\n this._$velocityY.next(velocity);\r\n this._velocitiesY.push(velocity);\r\n this._$averageVelocityY.next(avgVelocityY / MAX_ITERATIONS_FOR_AVERAGE_CALCULATIONS);\r\n this._measureVelocityLastPositionY = positionY;\r\n this._measureVelocityTimestampY = time;\r\n }\r\n }\r\n\r\n protected stopMoving() { }\r\n\r\n private calculatePosition(isVertical: boolean, enabled: boolean, axisInversion: boolean, e: MouseEvent | TouchEvent | any, inversion: boolean, startClientPos: number, startTime: number,\r\n prevClientPosition: number | null, offsets: Array<[number, number]>, velocities: Array<[number, number]>, touchId: number = -1,\r\n ) {\r\n if (!enabled) {\r\n return { position: isVertical ? this._y : this._x, currentPos: null, endTime: Date.now(), scrollDelta: 0 };\r\n }\r\n const coord = (isVertical ? (e instanceof TouchEvent) ? Array.from(e.targetTouches)?.find(({ identifier }) => identifier === touchId)?.clientY : e.clientY :\r\n (e instanceof TouchEvent) ? Array.from(e.targetTouches)?.find(({ identifier }) => identifier === touchId)?.clientX : e.clientX),\r\n currentPos = coord * (axisInversion ? -1 : 1),\r\n scrollSize = isVertical ? this.scrollHeight : this.scrollWidth, delta = (inversion ? -1 : 1) * (startClientPos - currentPos),\r\n dp = (isVertical ? this._startPositionY : this._startPositionX) + delta, position = dp < 0 ? 0 : dp > scrollSize ? scrollSize : dp,\r\n endTime = Date.now(), timestamp = endTime - startTime, scrollDelta = (prevClientPosition === 0 || prevClientPosition === null) ? 0 : prevClientPosition - currentPos,\r\n { v0 } = this.calculateVelocity(true, offsets, scrollDelta, timestamp);\r\n this.calculateAcceleration(true, velocities, v0, timestamp);\r\n\r\n return { position, currentPos, endTime, scrollDelta };\r\n }\r\n\r\n private cancelOverscroll() {\r\n if (!this.overscrollEnabled()) {\r\n return;\r\n }\r\n this._overscrollIteration = 0;\r\n }\r\n\r\n private checkOverscrollByAxis(e: Event, pos: number, limit: number): boolean {\r\n const p = Math.abs(pos);\r\n if (p > 0 && p < limit) {\r\n if (e.cancelable) {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n return true;\r\n }\r\n this._overscrollIteration = 0;\r\n } else {\r\n if (this._overscrollIteration < OVERSCROLL_START_ITERATION) {\r\n this._overscrollIteration++;\r\n if (e.cancelable) {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private _overscrollXIteration = 0;\r\n\r\n private _overscrollYIteration = 0;\r\n\r\n private checkOverscroll(e: Event, wheel: boolean = false) {\r\n if (!this._overscrollEnabled || !this.overscrollEnabled()) {\r\n if (e.cancelable) {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n }\r\n return;\r\n }\r\n if (this._overscrollEnabled) {\r\n if (this._scrollDirectionValueX > this._scrollDirectionValueY) {\r\n if (wheel || (this._horizontalScrollRatio > 0 && this._horizontalScrollRatio < 1) || !this.scrollableX) {\r\n this.checkOverscrollByAxis(e, this._x, this.scrollWidth);\r\n this._overscrollXIteration = 0;\r\n } else {\r\n if (this._overscrollXIteration < OVERSCROLL_START_ITERATION) {\r\n this._overscrollXIteration++;\r\n this.checkOverscrollByAxis(e, this._x, this.scrollWidth);\r\n }\r\n }\r\n } else {\r\n if (wheel || (this._verticalScrollRatio > 0 && this._verticalScrollRatio < 1) || !this.scrollableY) {\r\n this.checkOverscrollByAxis(e, this._y, this.scrollHeight);\r\n this._overscrollYIteration = 0;\r\n } else {\r\n if (this._overscrollXIteration < OVERSCROLL_START_ITERATION) {\r\n this._overscrollYIteration++;\r\n this.checkOverscrollByAxis(e, this._y, this.scrollHeight);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private calculateVelocity(enabled: boolean, offsets: Array<[number, number]>, delta: number, timestamp: number, indexOffset: number = 10) {\r\n if (!enabled) {\r\n return { v0: 0 };\r\n }\r\n if (offsets.length > MAX_VELOCITIES_LENGTH) {\r\n offsets.shift();\r\n }\r\n offsets.push([delta, timestamp < ANIMATOR_MIN_TIMESTAMP ? ANIMATOR_MIN_TIMESTAMP : timestamp]);\r\n\r\n const len = offsets.length, startIndex = len > indexOffset ? len - indexOffset : 0, lastVSign = calculateDirection(offsets),\r\n speedScale = this.scrollingSettings()?.speedScale ?? SPEED_SCALE;\r\n let vSum = 0;\r\n for (let i = startIndex, l = offsets.length; i < l; i++) {\r\n const p0 = offsets[i];\r\n if (lastVSign !== Math.sign(p0[0])) {\r\n continue;\r\n }\r\n\r\n const v0 = (p0[1] !== 0 ? lastVSign * Math.abs(p0[0] / p0[1]) * speedScale : 0);\r\n vSum += Math.sign(v0) * Math.pow(v0, 4) * .003;\r\n }\r\n\r\n const l = Math.min(offsets.length, indexOffset), v0 = Math.abs(l > 0 ? (vSum / l) : 0) * Math.sign(vSum);\r\n return { v0 };\r\n }\r\n\r\n private calculateAcceleration(enabled: boolean, velocities: Array<[number, number]>, delta: number, timestamp: number, indexOffset: number = 10) {\r\n if (!enabled) {\r\n return { a0: 0 };\r\n }\r\n if (velocities.length > MAX_VELOCITIES_LENGTH) {\r\n velocities.shift();\r\n }\r\n velocities.push([Math.abs(delta) < MIN_DELTA ? 0 : delta, timestamp < ANIMATOR_MIN_TIMESTAMP ? ANIMATOR_MIN_TIMESTAMP : timestamp]);\r\n const len = velocities.length, startIndex = len > indexOffset ? len - indexOffset : 0;\r\n let aSum = 0, prevV0: [number, number] | undefined, iteration = 0, lastVSign = calculateDirection(velocities);\r\n const mass = this.scrollingSettings()?.mass ?? MASS;\r\n for (let i = startIndex, l = velocities.length; i < l; i++) {\r\n const v00 = prevV0, v01 = velocities[i];\r\n if (lastVSign !== Math.sign(v01[0])) {\r\n continue;\r\n }\r\n if (v00) {\r\n const a0 = timestamp < MAX_VELOCITY_TIMESTAMP ? (v00[1] !== 0 ? (lastVSign * Math.abs(Math.abs(v01[0]) - Math.abs(v00[0]))) / Math.abs(v00[1]) : 0) : .1;\r\n aSum = Math.abs((aSum * mass)) + Math.abs(a0);\r\n prevV0 = v01;\r\n }\r\n prevV0 = v01;\r\n iteration++;\r\n }\r\n\r\n const a0 = aSum * (this.scrollingSettings()?.frictionalForce ?? FRICTION_FORCE);\r\n return { a0: Math.abs(a0) < MIN_ACCELERATION ? 0 : a0 };\r\n }\r\n\r\n stopScrolling() {\r\n this._animatorX.stop();\r\n this._animatorY.stop();\r\n }\r\n\r\n protected move(x: number | null, y: number | null, blending: boolean = false, userAction: boolean = false, fireUpdate: boolean = true) {\r\n this.scroll({ [LEFT]: x, [TOP]: y, behavior: INSTANT, blending, userAction, fireUpdate });\r\n }\r\n\r\n private calculateParamsWithVelocity(position: number, v: number, a0: number, startPosition: number): {\r\n startPosition: number;\r\n endPosition: number;\r\n duration: number;\r\n } {\r\n const dvSign = Math.sign(v) || 1,\r\n mass = this.scrollingSettings()?.mass ?? MASS,\r\n duration = DURATION, maxDuration = this.scrollingSettings()?.maxDuration ?? MAX_DURATION,\r\n maxDist = this.scrollingSettings()?.maxDistance ?? MAX_DIST,\r\n maxDistance = dvSign * maxDist, s = (dvSign * Math.abs((a0 * Math.pow(duration, 2)) * .5) / 10000) / mass,\r\n distance = Math.abs(s) < maxDist ? s : maxDistance, positionWithVelocity = position + (this._inversion ? -1 : 1) * distance,\r\n ad = Math.abs(a0 !== 0 ? Math.sqrt(a0) : 0) * ACCELERATION_SCALE / mass,\r\n aDuration = ad < maxDuration ? ad : maxDuration;\r\n return {\r\n startPosition,\r\n endPosition: positionWithVelocity,\r\n duration: aDuration,\r\n };\r\n }\r\n\r\n protected moveWithAcceleration(positionX: number, vX: number, a0X: number, timestampX: number,\r\n positionY: number, vY: number, a0Y: number, timestampY: number\r\n ) {\r\n const animateX = a0X !== 0 && timestampX < MAX_VELOCITY_TIMESTAMP,\r\n animateY = a0Y !== 0 && timestampY < MAX_VELOCITY_TIMESTAMP;\r\n if (animateX || animateY) {\r\n if (animateX && animateY) {\r\n const { startPosition: startPositionX, endPosition: endPositionX, duration: durationX } = this.calculateParamsWithVelocity(positionX, vX, a0X, this.x),\r\n { startPosition: startPositionY, endPosition: endPositionY, duration: durationY } = this.calculateParamsWithVelocity(positionY, vY, a0Y, this.y),\r\n duration = Math.max(durationX, durationY);\r\n this.animate('x', startPositionX, endPositionX, duration, easeOutQuad, false, true);\r\n this.animate('y', startPositionY, endPositionY, duration, easeOutQuad, false, true);\r\n } else if (animateX) {\r\n const { startPosition, endPosition, duration } = this.calculateParamsWithVelocity(positionX, vX, a0X, this.x);\r\n this.animate('x', startPosition, endPosition, duration, easeOutQuad, false, true);\r\n } else if (animateY) {\r\n const { startPosition, endPosition, duration } = this.calculateParamsWithVelocity(positionY, vY, a0Y, this.y);\r\n this.animate('y', startPosition, endPosition, duration, easeOutQuad, false, true);\r\n }\r\n }\r\n }\r\n\r\n protected normalizeValueX(value: number) {\r\n const startOffset = this._normalizeValueFromZero ? 0 : this.leftOffset(),\r\n scrollable = this.scrollableX,\r\n scrollSize = scrollable ? this.scrollWidth : 0,\r\n result = scrollable ? (value <= startOffset ? startOffset : value > scrollSize ? scrollSize : value) : startOffset;\r\n return result;\r\n }\r\n\r\n protected normalizeValueY(value: number) {\r\n const startOffset = this._normalizeValueFromZero ? 0 : this.topOffset(),\r\n scrollable = this.scrollableY,\r\n scrollSize = scrollable ? this.scrollHeight : 0,\r\n result = scrollable ? (value <= startOffset ? startOffset : value > scrollSize ? scrollSize : value) : startOffset;\r\n return result;\r\n }\r\n\r\n protected animate(axis: 'x' | 'y', startValue: number, endValue: number, duration = ANIMATION_DURATION, easingFunction: Easing = easeOutQuad, blending: boolean = false,\r\n userAction: boolean = false): number {\r\n const isVertical = axis === 'y', animator = isVertical ? this._animatorY : this._animatorX;\r\n let position = startValue;\r\n\r\n if (this.hasAnimation() && blending) {\r\n const updatable = animator.updateTo(endValue);\r\n if (updatable) {\r\n return animator.id;\r\n }\r\n }\r\n return animator.animate({\r\n withDelta: true,\r\n startValue,\r\n endValue,\r\n duration,\r\n easingFunction,\r\n getPropValue: () => {\r\n return isVertical ? this._y : this._x;\r\n }, onUpdate: ({ value, timestamp, elapsed }) => {\r\n calculateVelocity(position, value - (isVertical ? this._deltaY : this._deltaX), timestamp) ?? (isVertical ? this.averageVelocityY : this.averageVelocityX);\r\n position = value;\r\n this.move(isVertical ? null : value, isVertical ? value : null, false, userAction);\r\n this._service.update(true);\r\n }, onComplete: ({ value, timestamp }) => {\r\n calculateVelocity(position, value, timestamp);\r\n this.move(isVertical ? null : value, isVertical ? value : null, false, userAction);\r\n this._$scrollEnd.next(userAction);\r\n this._service.update(true);\r\n this.onAnimationComplete(value);\r\n },\r\n });\r\n }\r\n\r\n protected override normalizeScrollWidth() {\r\n const result = super.normalizeScrollWidth();\r\n this.scrollLimits();\r\n return result;\r\n }\r\n\r\n protected override normalizeScrollHeight() {\r\n const result = super.normalizeScrollHeight();\r\n this.scrollLimits();\r\n return result;\r\n }\r\n\r\n protected onAnimationComplete(position: number) { }\r\n\r\n fireScroll(userAction: boolean = false) {\r\n this._$updateScrollBarHorizontal.next();\r\n this._$updateScrollBarVertical.next();\r\n this.emitScrollableEvent();\r\n this.fireScrollEvent(userAction);\r\n }\r\n\r\n scrollLimits(value?: number | undefined, silent: boolean = false): boolean {\r\n const x = value !== undefined ? value : this._x, y = value !== undefined ? value : this._y,\r\n yy = this.normalizeValueY(y), xx = this.normalizeValueX(x);\r\n if (y !== yy) {\r\n if (silent) {\r\n this._y = yy;\r\n this.refreshCoordinate(this._x, this._y);\r\n } else {\r\n this.y = yy;\r\n }\r\n return true;\r\n }\r\n if (x !== xx) {\r\n if (silent) {\r\n this._x = xx;\r\n this.refreshCoordinate(this._x, this._y);\r\n } else {\r\n this.x = xx;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n scroll(params: IScrollToParams): Array<number> | null {\r\n const animationIds = new Array<number>(),\r\n posX = params.x ?? params.left ?? null,\r\n posY = params.y ?? params.top ?? null,\r\n userAction = params.userAction ?? false,\r\n normalize = params.normalize ?? true,\r\n ease = params.ease || easeOutQuad,\r\n fireUpdate = params.fireUpdate ?? true,\r\n behavior = params.behavior ?? INSTANT,\r\n blending = params.blending ?? true,\r\n force = params.force ?? false,\r\n duration = params.duration ?? ANIMATION_DURATION,\r\n horizontalAxisEnabled = this._horizontalAxisEnabled(),\r\n verticalAxisEnabled = this._verticalAxisEnabled();\r\n\r\n const x = posX !== null ? this.normalizeValueX(posX) : null,\r\n y = posY !== null ? this.normalizeValueY(posY) : null,\r\n prevX = this._x,\r\n prevY = this._y;\r\n if (behavior === AUTO || behavior === SMOOTH) {\r\n if (horizontalAxisEnabled && x !== null && prevX !== x) {\r\n const id = this.animate('x', prevX, x, duration, ease, blending, userAction);\r\n animationIds.push(id);\r\n }\r\n if (verticalAxisEnabled && y !== null && prevY !== y) {\r\n const id = this.animate('y', prevY, y, duration, ease, blending, userAction);\r\n animationIds.push(id);\r\n }\r\n return animationIds;\r\n } else {\r\n if (horizontalAxisEnabled && x !== null && (x !== prevX || force)) {\r\n if (x !== null) {\r\n this.setX(x, normalize);\r\n if (userAction) {\r\n const scrollWidth = Math.abs(this.scrollWidth),\r\n xx = Math.abs(this._x);\r\n this._horizontalScrollRatio = scrollWidth !== 0 ? (xx / scrollWidth) : 0;\r\n }\r\n this.emitScrollableEvent();\r\n if (fireUpdate) {\r\n this.fireScrollEvent(userAction);\r\n }\r\n }\r\n } else if (horizontalAxisEnabled && x !== null) {\r\n this.updateDirectionX(x, this._x);\r\n }\r\n if (verticalAxisEnabled && y !== null && (y !== prevY || force)) {\r\n if (y !== null) {\r\n this.setY(y, normalize);\r\n if (userAction) {\r\n const scrollHeight = Math.abs(this.scrollHeight),\r\n yy = Math.abs(this._y);\r\n this._verticalScrollRatio = scrollHeight !== 0 ? yy / scrollHeight : 0;\r\n }\r\n this.emitScrollableEvent();\r\n if (fireUpdate) {\r\n this.fireScrollEvent(userAction);\r\n }\r\n }\r\n } else if (verticalAxisEnabled && y !== null) {\r\n this.updateDirectionY(y, this._y);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n protected emitScrollableEvent() {\r\n if (!!this.cdkScrollable) {\r\n this.cdkScrollable.getElementRef()?.nativeElement?.dispatchEvent(SCROLL_EVENT);\r\n }\r\n }\r\n\r\n refreshCoordinate(x: number, y: number) {\r\n const scrollContent = this.scrollContent()?.nativeElement as HTMLDivElement;\r\n scrollContent.style.transform = matrix3d((this._inversion ? 1 : -1) * x * (this._horizontalAxisInvertion() ? -1 : 1) + this._startLayoutOffsetX,\r\n (this._inversion ? 1 : -1) * y + this._startLayoutOffsetY);\r\n }\r\n\r\n protected fireScrollEvent(userAction: boolean) {\r\n this._$scroll.next(userAction);\r\n }\r\n\r\n protected onDragStart() { }\r\n\r\n reset(x: number = 0, y: number = 0) {\r\n this.stopScrolling();\r\n this.move(x, y);\r\n }\r\n\r\n stopAnimation(...ids: Array<number>) {\r\n if (!ids) {\r\n return;\r\n }\r\n for (const id of ids) {\r\n this._animatorX.stop(id);\r\n this._animatorY.stop(id);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._animatorX) {\r\n this._animatorX.dispose();\r\n }\r\n if (this._animatorY) {\r\n this._animatorY.dispose();\r\n }\r\n }\r\n}","export const DEFAULT_THICKNESS = 6,\r\n DEFAULT_SIZE = 6,\r\n PX = 'px',\r\n WIDTH = 'width',\r\n HEIGHT = 'height',\r\n OPACITY = 'opacity',\r\n OPACITY_0 = '0',\r\n OPACITY_1 = '1',\r\n TRANSITION = 'transition',\r\n NONE = 'none',\r\n TRANSITION_FADE_IN = `${OPACITY} 500ms ease-out`;\r\n","export enum ScrollbarStates {\r\n NORMAL,\r\n PRESSED,\r\n HOVER,\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { ScrollbarState } from './types';\r\nimport { ScrollbarStates } from './enums';\r\n\r\n/**\r\n * CnScrollBarService\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/ng-scroll-bar/ng-scroll-bar.service.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CnScrollBarService {\r\n private _$click = new Subject<PointerEvent | MouseEvent>();\r\n readonly $click = this._$click.asObservable();\r\n\r\n private _$state = new BehaviorSubject<ScrollbarState>(ScrollbarStates.NORMAL);\r\n readonly $state = this._$state.asObservable();\r\n\r\n set state(v: ScrollbarState) {\r\n if (this._$state.getValue() !== v) {\r\n this._$state.next(v);\r\n }\r\n }\r\n get state() { return this._$state.getValue(); }\r\n\r\n click(event: PointerEvent | MouseEvent) {\r\n this._$click.next(event);\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { CnScrollBarService } from './cn-scroll-bar.service';\r\n\r\n/**\r\n * CnScrollBarService\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/cn-scroll-bar/cn-scroll-bar-public.service.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CnScrollBarPublicService {\r\n private _internalService = inject(CnScrollBarService);\r\n\r\n get $click() { return this._internalService.$click; }\r\n\r\n get $state() { return this._internalService.$state; }\r\n}\r\n","import { Component, computed, effect, ElementRef, inject, input, output, Signal, signal, TemplateRef, viewChild } from '@angular/core';\r\nimport { combineLatest, debounceTime, filter, fromEvent, of, startWith, Subject, switchMap, tap } from 'rxjs';\r\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\r\nimport { CnScrollView, SCROLL_VIEW_INVERSION } from '../cn-scroll-view';\r\nimport { IScrollBarDragEvent, IScrollBarTemplateContext } from './interfaces';\r\nimport {\r\n DEFAULT_OVERLAPPING_SCROLLBAR, DEFAULT_SCROLLBAR_INTERACTIVE, LEFT, POSITION, POSITION_ABSOLUTE,\r\n POSITION_RELATIVE, RIGHT, SIZE_100_PERSENT, SIZE_AUTO, TOP, UNSET, BOTTOM, ZERO_PX,\r\n} from '../../const';\r\nimport {\r\n DEFAULT_SIZE, DEFAULT_THICKNESS, HEIGHT, NONE, OPACITY, OPACITY_0, OPACITY_1, PX, TRANSITION, TRANSITION_FADE_IN, WIDTH,\r\n} from './const';\r\nimport { SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, SCROLL_VIEW_OVERSCROLL_ENABLED } from '../cn-scroll-view/const';\r\nimport { CnScrollBarService } from './cn-scroll-bar.service';\r\nimport { CnScrollBarPublicService } from './cn-scroll-bar-public.service';\r\nimport { ScrollbarStates } from './enums';\r\nimport { ScrollerDirection } from '../cn-scroll-view/enums';\r\nimport { GradientColorPositions, TextDirections } from '../../../common';\r\n\r\n/**\r\n * ScrollBar component.\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/cn-scroll-bar/cn-scroll-bar.component.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Component({\r\n selector: 'cn-scroll-bar',\r\n providers: [\r\n { provide: SCROLL_VIEW_INVERSION, useValue: true },\r\n { provide: SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, useValue: false },\r\n { provide: SCROLL_VIEW_OVERSCROLL_ENABLED, useValue: false },\r\n CnScrollBarService,\r\n CnScrollBarPublicService,\r\n ],\r\n standalone: false,\r\n templateUrl: './cn-scroll-bar.component.html',\r\n styleUrl: './cn-scroll-bar.component.scss'\r\n})\r\nexport class CnScrollBarComponent extends CnScrollView {\r\n protected _defaultRenderer = viewChild<TemplateRef<any>>('defaultRenderer');\r\n\r\n protected _scrollBarService = inject(CnScrollBarService);\r\n\r\n private _apiService = inject(CnScrollBarPublicService);\r\n\r\n readonly loading = input<boolean>(false);\r\n\r\n readonly onDrag = output<IScrollBarDragEvent>();\r\n\r\n readonly onDragEnd = output<IScrollBarDragEvent>();\r\n\r\n readonly thumbGradientPositions = input<GradientColorPositions>([0, 0]);\r\n\r\n readonly size = input<number>(DEFAULT_SIZE);\r\n\r\n readonly thickness = input<number>(DEFAULT_THICKNESS);\r\n\r\n readonly scrollbarMinSize = input<number>(0);\r\n\r\n readonly prepared = input<boolean>(false);\r\n\r\n readonly interactive = input<boolean>(DEFAULT_SCROLLBAR_INTERACTIVE);\r\n\r\n readonly overlapping = input<boolean>(DEFAULT_OVERLAPPING_SCROLLBAR);\r\n\r\n readonly show = input<boolean>(false);\r\n\r\n readonly params = input<{ [propName: string]: any } | null>({});\r\n\r\n readonly renderer = input<TemplateRef<any> | null>(null);\r\n\r\n readonly thumbRenderer = signal<TemplateRef<any> | null>(this._defaultRenderer() ?? null);\r\n\r\n protected readonly hoverState = signal<boolean>(false);\r\n\r\n protected readonly pressedState = signal<boolean>(false);\r\n\r\n protected readonly templateContext!: Signal<IScrollBarTemplateContext>;\r\n\r\n protected readonly styles: Signal<{ [sName: string]: any }>;\r\n\r\n protected readonly thumbWidth: Signal<number>;\r\n\r\n protected readonly thumbHeight: Signal<number>;\r\n\r\n protected readonly isVertical: Signal<boolean>;\r\n\r\n private _$scrollingCancel = new Subject<void>();\r\n protected readonly $scrollingCancel = this._$scrollingCancel.asObservable();\r\n\r\n private _elementRef = inject(ElementRef);\r\n\r\n constructor() {\r\n super();\r\n\r\n this.isVertical = computed(() => {\r\n return this.direction() === ScrollerDirection.VERTICAL;\r\n });\r\n\r\n this.templateContext = computed(() => {\r\n const context: IScrollBarTemplateContext = {\r\n api: this._apiService,\r\n width: this.thumbWidth(),\r\n height: this.thumbHeight(),\r\n fillPositions: this.thumbGradientPositions(),\r\n params: this.params() ?? {},\r\n };\r\n return context;\r\n });\r\n\r\n const $renderer = toObservable(this.renderer).pipe(\r\n startWith(null),\r\n ),\r\n $defaultRenderer = toObservable(this._defaultRenderer);\r\n\r\n combineLatest([$renderer, $defaultRenderer]).pipe(\r\n takeUntilDestroyed(),\r\n switchMap(([renderer, defaultRenderer]) => {\r\n return of((renderer ?? defaultRenderer) ?? null);\r\n }),\r\n tap(v => {\r\n this.thumbRenderer.set(v);\r\n }),\r\n ).subscribe();\r\n\r\n const $prepared = toObservable(this.prepared);\r\n $prepared.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n tap(() => {\r\n this.scrollLimits();\r\n this.refreshCoordinate(this._x, this._y);\r\n this.fireScrollEvent(false);\r\n }),\r\n ).subscribe();\r\n\r\n this.thumbWidth = computed(() => {\r\n return this.isVertical() ? this.thickness() : this.size();\r\n });\r\n\r\n this.thumbHeight = computed(() => {\r\n return this.isVertical() ? this.size() : this.thickness();\r\n });\r\n\r\n const $wheel = this.$wheel;\r\n $wheel.pipe(\r\n takeUntilDestroyed(),\r\n debounceTime(100),\r\n tap(() => {\r\n const event = this.createDragEvent(true);\r\n if (!!event) {\r\n this.onDragEnd.emit(event);\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n const $pointerDown = fromEvent<PointerEvent>(this._elementRef.nativeElement, 'pointerdown').pipe(\r\n takeUntilDestroyed(),\r\n ), $pointerUp = fromEvent<PointerEvent>(this._elementRef.nativeElement, 'pointerup').pipe(\r\n takeUntilDestroyed(),\r\n ), $docPointerUp = fromEvent<PointerEvent>(document, 'pointerup').pipe(\r\n takeUntilDestroyed()\r\n ), $pointerEnter = fromEvent<PointerEvent>(this._elementRef.nativeElement, 'pointerenter').pipe(\r\n takeUntilDestroyed(),\r\n ), $pointerLeave = fromEvent<PointerEvent>(this._elementRef.nativeElement, 'pointerleave').pipe(\r\n takeUntilDestroyed(),\r\n );\r\n\r\n $pointerDown.pipe(\r\n takeUntilDestroyed(),\r\n tap(e => {\r\n this.pressedState.set(this.thumbHit(e.clientX, e.clientY));\r\n }),\r\n ).subscribe();\r\n\r\n combineLatest([$docPointerUp, $pointerUp]).pipe(\r\n takeUntilDestroyed(),\r\n tap(() => {\r\n this.pressedState.set(false);\r\n }),\r\n ).subscribe();\r\n\r\n $pointerEnter.pipe(\r\n takeUntilDestroyed(),\r\n tap(() => {\r\n this.hoverState.set(true);\r\n }),\r\n ).subscribe();\r\n\r\n $pointerLeave.pipe(\r\n takeUntilDestroyed(),\r\n tap(() => {\r\n this.hoverState.set(false);\r\n }),\r\n ).subscribe();\r\n\r\n effect(() => {\r\n const pressed = this.pressedState(), hover = this.hoverState();\r\n if (pressed) {\r\n this._scrollBarService.state = ScrollbarStates.PRESSED;\r\n return;\r\n } else if (hover) {\r\n this._scrollBarService.state = ScrollbarStates.HOVER;\r\n return;\r\n }\r\n this._scrollBarService.state = ScrollbarStates.NORMAL;\r\n return;\r\n });\r\n\r\n effect(() => {\r\n const isVertical = this.isVertical(), size = this.size();\r\n this.totalWidth = !isVertical ? size : 0;\r\n this.totalHeight = isVertical ? size : 0;\r\n });\r\n\r\n effect(() => {\r\n this._interactive = this.interactive();\r\n });\r\n\r\n this.styles = computed(() => {\r\n const show = this.show(), sizePropName = this.isVertical() ? WIDTH : HEIGHT;\r\n return {\r\n [sizePropName]: `${show ? this.thickness() : 0}${PX}`,\r\n [OPACITY]: show ? OPACITY_1 : OPACITY_0, [TRANSITION]: show ? TRANSITION_FADE_IN : NONE,\r\n };\r\n });\r\n\r\n effect(() => {\r\n const el = this._elementRef.nativeElement;\r\n if (!!el) {\r\n const overlapping = this.overlapping(), langTextDir = this.langTextDir(), isVertical = this.isVertical();\r\n el.style[POSITION] = overlapping ? POSITION_ABSOLUTE : POSITION_RELATIVE;\r\n el.style[LEFT] = overlapping && langTextDir === TextDirections.RTL ? ZERO_PX : UNSET;\r\n el.style[RIGHT] = overlapping && langTextDir === TextDirections.LTR ? ZERO_PX : UNSET;\r\n if (isVertical) {\r\n el.style[TOP] = ZERO_PX;\r\n el.style[WIDTH] = overlapping ? SIZE_AUTO : SIZE_100_PERSENT;\r\n el.style[BOTTOM] = UNSET;\r\n } else {\r\n el.style[TOP] = UNSET;\r\n el.style[BOTTOM] = ZERO_PX;\r\n el.style[HEIGHT] = overlapping ? SIZE_AUTO : SIZE_100_PERSENT;\r\n }\r\n }\r\n });\r\n\r\n this.$scroll.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n const event = this.createDragEvent(v);\r\n if (!!event) {\r\n this.onDrag.emit(event);\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n const $scrollEnd = this.$scrollEnd;\r\n $scrollEnd.pipe(\r\n takeUntilDestroyed(),\r\n tap(userAction => {\r\n const event = this.createDragEvent(userAction);\r\n if (!!event) {\r\n this.onDragEnd.emit(event);\r\n }\r\n }),\r\n ).subscribe();\r\n }\r\n\r\n private createDragEvent(userAction: boolean) {\r\n const isVertical = this.isVertical(), scrollSize = isVertical ? this.scrollHeight : this.scrollWidth,\r\n scrollPosition = isVertical ? this.scrollTop : this.scrollLeft,\r\n startOffset = isVertical ? this.topOffset() : this.leftOffset(),\r\n endOffset = isVertical ? this.bottomOffset() : this.rightOffset(),\r\n scrollContent = this.scrollContent()?.nativeElement as HTMLElement,\r\n scrollViewport = this.scrollViewport()?.nativeElement as HTMLDivElement;\r\n if (!!scrollViewport && !!scrollContent) {\r\n const contentSize = isVertical ? scrollContent.offsetHeight : scrollContent.offsetWidth,\r\n viewportSize = isVertical ? scrollViewport.offsetHeight : scrollViewport.offsetWidth,\r\n offsetSize = (scrollSize !== 0 ? (startOffset / scrollSize) : 0),\r\n positionSize = (scrollSize !== 0 ? (scrollPosition / scrollSize) : 0),\r\n maxSize = 1 - offsetSize,\r\n pos = (positionSize - offsetSize);\r\n const event: IScrollBarDragEvent = {\r\n position: pos / maxSize,\r\n min: scrollSize !== 0 ? (startOffset / scrollSize) : 0,\r\n max: scrollSize !== 0 ? ((viewportSize - endOffset - contentSize) / scrollSize) : 0,\r\n animation: !this._isMoving,\r\n isVertical,\r\n userAction,\r\n };\r\n return event;\r\n }\r\n return null;\r\n }\r\n\r\n private thumbHit(x: number, y: number): boolean {\r\n const thumb = this.scrollContent()?.nativeElement;\r\n if (!!thumb) {\r\n const { x: tX, y: tY, width: tWidth, height: tHeight } = thumb.getBoundingClientRect();\r\n if ((x >= tX && x <= tX + tWidth) && (y >= tY && y <= tY + tHeight)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n click(event: PointerEvent | MouseEvent) {\r\n this._scrollBarService.click(event);\r\n }\r\n}\r\n","@let grab = grabbing();\r\n<div #scrollViewport class=\"track\" part=\"scrollbar-track\" [ngStyle]=\"styles()\" [ngClass]=\"{grabbing: grab}\">\r\n <div #scrollContent class=\"thumb\" part=\"scrollbar-thumb\" [class.horizontal]=\"!isVertical()\"\r\n (pointerdown)=\"click($event)\">\r\n <ng-container [ngTemplateOutlet]=\"thumbRenderer()\" [ngTemplateOutletContext]=\"templateContext()\" />\r\n </div>\r\n</div>\r\n\r\n<ng-template #defaultRenderer let-api=\"api\" let-width=\"width\" let-height=\"height\" let-fillPositions=\"fillPositions\"\r\n let-params=\"params\">\r\n <div class=\"shape\" part=\"scrollbar-thumb__shape\" [style.width.px]=\"width\" [style.height.px]=\"height\"></div>\r\n</ng-template>","import { GradientColorPositions } from \"../../../../common\";\r\nimport { ScrollerDirection } from \"../../cn-scroll-view/enums\";\r\nimport { ICalculateScrollParams, ICalculateScrollPositionParams, ICalculateScrollMetrics } from \"./interfaces\";\r\n\r\n/**\r\n * ScrollBox\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/scroller/utils/scroll-box.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport class ScrollBox {\r\n calculateScroll({\r\n direction,\r\n viewportWidth,\r\n viewportHeight,\r\n contentWidth,\r\n contentHeight,\r\n startOffset,\r\n endOffset,\r\n positionX,\r\n positionY,\r\n minSize,\r\n }: ICalculateScrollParams) {\r\n const isVertical = direction === ScrollerDirection.VERTICAL;\r\n let x = 0, y = 0, thumbPosition = 0, thumbSize = 0, thumbGradientPositions: GradientColorPositions = [0, 0];\r\n if (isVertical) {\r\n const { gradientPos, size, pos, } = this.getMetrics(positionY, viewportHeight, contentHeight, startOffset, endOffset, minSize);\r\n thumbGradientPositions = gradientPos;\r\n thumbSize = size;\r\n thumbPosition = pos;\r\n } else {\r\n const { gradientPos, size, pos, } = this.getMetrics(positionX, viewportWidth, contentWidth, startOffset, endOffset, minSize);\r\n thumbGradientPositions = gradientPos;\r\n thumbSize = size;\r\n thumbPosition = pos;\r\n }\r\n return {\r\n x,\r\n y,\r\n thumbSize,\r\n thumbPosition,\r\n thumbGradientPositions,\r\n };\r\n }\r\n\r\n private getMetrics(inputPosition: number, viewportSize: number, contentSize: number, startOffset: number, endOffset: number,\r\n minSize: number): ICalculateScrollMetrics {\r\n let thumbPosition = 0, thumbSize = 0;\r\n const vh = viewportSize - startOffset - endOffset, ch = contentSize - startOffset - endOffset,\r\n ratio = ch > 0 ? vh / ch : 1, ts = vh * ratio, ats = Math.max(ts, minSize), atsDelta = ats - ts,\r\n rh = (ch !== 0 ? (inputPosition / ch) : 0),\r\n pos = startOffset + ((vh - atsDelta) * rh),\r\n size = ats, asp = pos, bRatio = size !== 0 ? vh / size : 0,\r\n aspp = -(vh !== 0 ? asp / vh : 0) * bRatio, aep = vh - (aspp + size),\r\n aepp = (aspp + (vh !== 0 ? (aep + size) / vh : 0) * bRatio);\r\n thumbSize = ats;\r\n thumbPosition = pos;\r\n return {\r\n gradientPos: [aspp, aepp],\r\n size,\r\n pos,\r\n };\r\n }\r\n\r\n getScrollPositionByScrollBar({\r\n scrollSize,\r\n position,\r\n }: ICalculateScrollPositionParams) {\r\n const pos = (position * scrollSize);\r\n return {\r\n position: pos,\r\n };\r\n }\r\n}","import { Directive, ElementRef, inject, input } from '@angular/core';\r\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\r\nimport { combineLatest, tap } from 'rxjs';\r\nimport { ScrollerDirection, ScrollerDirections } from '../../components/cn-scroll-view/enums';\r\nimport { LEFT } from '../../const';\r\nimport { TextDirection, TextDirections } from '../../../common';\r\n\r\nconst RIGHT = 'right',\r\n DIR = 'dir';\r\n\r\n/**\r\n * LocaleSensitiveDirective\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/directives/locale-sensitive/locale-sensitive.directive.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Directive({\r\n selector: '[localeSensitive]',\r\n standalone: false,\r\n})\r\nexport class LocaleSensitiveDirective {\r\n langTextDir = input<TextDirection>(TextDirections.LTR);\r\n\r\n listDir = input<ScrollerDirections>(ScrollerDirection.VERTICAL);\r\n\r\n private _elementRef = inject(ElementRef<HTMLElement>);\r\n\r\n constructor() {\r\n const $langTextDir = toObservable(this.langTextDir),\r\n $listDir = toObservable(this.listDir);\r\n\r\n combineLatest([$langTextDir, $listDir]).pipe(\r\n takeUntilDestroyed(),\r\n tap(([dir, listDir]) => {\r\n const element = this._elementRef.nativeElement as HTMLElement;\r\n element.setAttribute(DIR, dir);\r\n if (dir === TextDirections.RTL) {\r\n element.style.textAlign = RIGHT;\r\n element.classList.add(TextDirections.RTL);\r\n element.classList.remove(TextDirections.LTR);\r\n } else {\r\n element.style.textAlign = LEFT;\r\n element.classList.add(TextDirections.LTR);\r\n element.classList.remove(TextDirections.RTL);\r\n }\r\n }),\r\n ).subscribe();\r\n }\r\n}\r\n","import { Component, computed, effect, ElementRef, input, output, Signal, signal, TemplateRef, viewChild, ViewChild } from '@angular/core';\r\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\r\nimport { combineLatest, debounceTime, filter, from, Subject, tap } from 'rxjs';\r\nimport { ScrollBox } from './utils';\r\nimport { CnScrollBarComponent } from \"../cn-scroll-bar/cn-scroll-bar.component\";\r\nimport {\r\n BEHAVIOR_INSTANT, DEFAULT_MAX_MOTION_BLUR, DEFAULT_MOTION_BLUR, DEFAULT_MOTION_BLUR_ENABLED, DEFAULT_OVERLAPPING_SCROLLBAR,\r\n DEFAULT_SCROLLBAR_ENABLED, DEFAULT_SCROLLBAR_INTERACTIVE, DEFAULT_SCROLLBAR_MIN_SIZE, DEFAULT_SCROLLBAR_THICKNESS, LEFT_PROP_NAME,\r\n PX, SCROLLER_SCROLL, TOP_PROP_NAME,\r\n} from '../../const';\r\nimport { IScrollToParams, CnScrollView, SCROLL_VIEW_INVERSION } from '../cn-scroll-view';\r\nimport { IScrollBarDragEvent } from '../cn-scroll-bar/interfaces';\r\nimport { SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, SCROLL_VIEW_OVERSCROLL_ENABLED } from '../cn-scroll-view/const';\r\nimport { ScrollerDirection } from '../cn-scroll-view/enums';\r\nimport { GradientColorPositions, Id, ISize } from '../../../common';\r\n\r\nconst TOP = 'top',\r\n LEFT = 'left',\r\n INSTANT = 'instant',\r\n MOTION_BLUR = 'motion-blur';\r\n\r\nexport const SCROLL_EVENT = new Event(SCROLLER_SCROLL);\r\n\r\n/**\r\n * The scroller for the CnVirtualScrollView item component\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/scroller/cn-scroller.component.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Component({\r\n selector: 'cn-scroller',\r\n providers: [\r\n { provide: SCROLL_VIEW_INVERSION, useValue: false },\r\n { provide: SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, useValue: true },\r\n { provide: SCROLL_VIEW_OVERSCROLL_ENABLED, useValue: true },\r\n ],\r\n standalone: false,\r\n templateUrl: './cn-scroller.component.html',\r\n styleUrl: './cn-scroller.component.scss'\r\n})\r\nexport class CnScrollerComponent extends CnScrollView {\r\n @ViewChild('scrollBarHorizontal', { read: CnScrollBarComponent })\r\n readonly scrollBarHorizontal: CnScrollBarComponent | undefined;\r\n\r\n @ViewChild('scrollBarVertical', { read: CnScrollBarComponent })\r\n readonly scrollBarVertical: CnScrollBarComponent | undefined;\r\n\r\n readonly filter = viewChild<ElementRef<SVGFEGaussianBlurElement>>('filter');\r\n\r\n readonly onScrollbarVisible = output<boolean>();\r\n\r\n readonly scrollbarEnabled = input<boolean>(DEFAULT_SCROLLBAR_ENABLED);\r\n\r\n readonly scrollbarInteractive = input<boolean>(DEFAULT_SCROLLBAR_INTERACTIVE);\r\n\r\n readonly focusedElement = input<Id | null>(null);\r\n\r\n readonly overlappingScrollbar = input<boolean>(DEFAULT_OVERLAPPING_SCROLLBAR);\r\n\r\n readonly content = input<HTMLElement>();\r\n\r\n readonly loading = input<boolean>(false);\r\n\r\n readonly classes = input<{ [cName: string]: boolean }>({});\r\n\r\n readonly scrollbarMinSize = input<number>(DEFAULT_SCROLLBAR_MIN_SIZE);\r\n\r\n readonly scrollbarThickness = input<number>(DEFAULT_SCROLLBAR_THICKNESS);\r\n\r\n readonly scrollbarThumbRenderer = input<TemplateRef<any> | null>(null);\r\n\r\n readonly scrollbarThumbParams = input<{ [propName: string]: any } | null>(null);\r\n\r\n readonly motionBlur = input<number | 'disabled'>(DEFAULT_MOTION_BLUR);\r\n\r\n readonly maxMotionBlur = input<number>(DEFAULT_MAX_MOTION_BLUR);\r\n\r\n readonly motionBlurEnabled = input<boolean>(DEFAULT_MOTION_BLUR_ENABLED);\r\n\r\n public readonly actualClasses: Signal<{ [cName: string]: boolean }>;\r\n\r\n public readonly containerClasses: Signal<{ [cName: string]: boolean }>;\r\n\r\n public readonly thumbGradientPositionsHorizontal = signal<GradientColorPositions>([0, 0]);\r\n\r\n public readonly thumbGradientPositionsVertical = signal<GradientColorPositions>([0, 0]);\r\n\r\n public readonly thumbSizeVertical = signal<number>(0);\r\n\r\n public readonly thumbSizeHorizontal = signal<number>(0);\r\n\r\n public readonly scrollbarHorizontalEnabled = signal<boolean>(this.scrollableX);\r\n\r\n public readonly scrollbarVerticalEnabled = signal<boolean>(this.scrollableY);\r\n\r\n public readonly preparedSignal = signal<boolean>(false);\r\n\r\n public readonly listStyles = signal<{ perspectiveOrigin: string }>({ perspectiveOrigin: 'center' });\r\n\r\n private _scrollBox = new ScrollBox();\r\n\r\n get host() {\r\n return this.scrollViewport()?.nativeElement;\r\n }\r\n\r\n private _$scrollbarScroll = new Subject<boolean>();\r\n readonly $scrollbarScroll = this._$scrollbarScroll.asObservable();\r\n\r\n private _prepared = false;\r\n set prepared(v: boolean) {\r\n if (this._prepared !== v) {\r\n this._prepared = v;\r\n this.preparedSignal.set(v);\r\n }\r\n }\r\n\r\n protected override setX(x: number, normalize: boolean = true) {\r\n if (x !== undefined && !Number.isNaN(x)) {\r\n this.updateDirectionX(x, this._x);\r\n\r\n this._x = this._actualX = x;\r\n\r\n const overridden = normalize ? this.normalizeScrollSize() : false;\r\n\r\n this.refreshCoordinate(this._x, this._y);\r\n\r\n if (!overridden) {\r\n this.measureVelocity();\r\n }\r\n\r\n this.updateScrollBar(false);\r\n\r\n this.recalculatePerspective();\r\n }\r\n }\r\n\r\n protected override setY(y: number, normalize: boolean = true) {\r\n if (y !== undefined && !Number.isNaN(y)) {\r\n this.updateDirectionY(y, this._y);\r\n\r\n this._y = this._actualY = y;\r\n\r\n const overridden = normalize ? this.normalizeScrollSize() : false;\r\n\r\n this.refreshCoordinate(this._x, this._y);\r\n\r\n if (!overridden) {\r\n this.measureVelocity();\r\n }\r\n\r\n this.updateScrollBar(true);\r\n\r\n this.recalculatePerspective();\r\n }\r\n }\r\n\r\n override set startLayoutOffsetX(v: number) {\r\n if (this._startLayoutOffsetX !== v) {\r\n this._startLayoutOffsetX = v;\r\n\r\n this.refreshCoordinate(this._x, this._y);\r\n\r\n this.recalculatePerspective();\r\n }\r\n }\r\n override get startLayoutOffsetX() { return this._startLayoutOffsetX; }\r\n\r\n override set startLayoutOffsetY(v: number) {\r\n if (this._startLayoutOffsetY !== v) {\r\n this._startLayoutOffsetY = v;\r\n\r\n this.refreshCoordinate(this._x, this._y);\r\n\r\n this.recalculatePerspective();\r\n }\r\n }\r\n override get startLayoutOffsetY() { return this._startLayoutOffsetY; }\r\n\r\n readonly viewInitialized = signal<boolean>(false);\r\n\r\n private _isScrollbarUserActionX: boolean = false;\r\n get isScrollbarUserActionX() {\r\n return this._isScrollbarUserActionX;\r\n }\r\n\r\n private _isScrollbarUserActionY: boolean = false;\r\n get isScrollbarUserActionY() {\r\n return this._isScrollbarUserActionY;\r\n }\r\n\r\n protected _$resizeViewport = new Subject<ISize>();\r\n readonly $resizeViewport = this._$resizeViewport.asObservable();\r\n\r\n protected _$resizeContent = new Subject<ISize>();\r\n readonly $resizeContent = this._$resizeContent.asObservable();\r\n\r\n protected _filterId: string;\r\n\r\n protected _filter: string;\r\n\r\n constructor() {\r\n super();\r\n\r\n this._filterId = `${this._service.id}-${MOTION_BLUR}`;\r\n this._filter = `url(#${this._filterId})`;\r\n\r\n const $filter = toObservable(this.filter),\r\n $motionBlur = toObservable(this.motionBlur),\r\n $maxMotionBlur = toObservable(this.maxMotionBlur),\r\n $motionBlurEnabled = toObservable(this.motionBlurEnabled);\r\n\r\n const $scrollbarScroll = this.$scrollbarScroll;\r\n $scrollbarScroll.pipe(\r\n takeUntilDestroyed(),\r\n debounceTime(50),\r\n tap(() => {\r\n this.dropVelocity();\r\n this.fireScrollEvent(false);\r\n }),\r\n ).subscribe();\r\n\r\n const $averageVelocityX = this.$averageVelocityX,\r\n $averageVelocityY = this.$averageVelocityY;\r\n combineLatest([$averageVelocityX, $averageVelocityY, $filter, $motionBlurEnabled, $motionBlur, $maxMotionBlur]).pipe(\r\n takeUntilDestroyed(),\r\n filter(([, , , f, e, mb]) => !!f && (!!e && mb !== 0)),\r\n tap(([x, y, filter, , mb, mbMax]) => {\r\n const _x = x * (mb as number), valueX = _x > mbMax ? mbMax : _x,\r\n _y = y * (mb as number), valueY = _y > mbMax ? mbMax : _y;\r\n filter!.nativeElement.setStdDeviation(x * valueX, y * valueY);\r\n }),\r\n debounceTime(50),\r\n tap(([, , filter, ,]) => {\r\n filter!.nativeElement.setStdDeviation(0, 0);\r\n }),\r\n ).subscribe();\r\n\r\n const $prepare = toObservable(this.preparedSignal);\r\n $prepare.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n tap(() => {\r\n this.updateScrollBarHandler(false, true, false, true);\r\n this.updateScrollBarHandler(true, true, false, true);\r\n }),\r\n ).subscribe();\r\n\r\n const $leftOffset = toObservable(this.leftOffset),\r\n $rightOffset = toObservable(this.rightOffset),\r\n $topOffset = toObservable(this.topOffset),\r\n $bottomOffset = toObservable(this.bottomOffset),\r\n $scrollbarMinSize = toObservable(this.scrollbarMinSize),\r\n $thumbSizeHorizontal = toObservable(this.thumbSizeHorizontal),\r\n $thumbSizeVertical = toObservable(this.thumbSizeVertical);\r\n\r\n from([$rightOffset, $leftOffset, $thumbSizeHorizontal, $scrollbarMinSize]).pipe(\r\n takeUntilDestroyed(),\r\n debounceTime(0),\r\n tap(() => {\r\n this.updateScrollBar(false);\r\n }),\r\n ).subscribe();\r\n\r\n from([$bottomOffset, $topOffset, $thumbSizeVertical, $scrollbarMinSize]).pipe(\r\n takeUntilDestroyed(),\r\n debounceTime(0),\r\n tap(() => {\r\n this.updateScrollBar(true);\r\n }),\r\n ).subscribe();\r\n\r\n const $updateScrollBarHorizontal = this.$updateScrollBarHorizontal,\r\n $updateScrollBarVertical = this.$updateScrollBarVertical;\r\n\r\n $updateScrollBarHorizontal.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n debounceTime(0),\r\n tap(() => {\r\n this.updateScrollBarHandler(false, !this._isScrollbarUserActionX);\r\n }),\r\n ).subscribe();\r\n\r\n $updateScrollBarVertical.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n debounceTime(0),\r\n tap(() => {\r\n this.updateScrollBarHandler(true, !this._isScrollbarUserActionY);\r\n }),\r\n ).subscribe();\r\n\r\n effect(() => {\r\n const grabbing = this.grabbing();\r\n this._service.grabbing = grabbing;\r\n });\r\n\r\n this.actualClasses = computed(() => {\r\n const classes = this.classes(), direction = this.direction(), filtered = this.motionBlurEnabled();\r\n return { ...classes, [direction]: true, grabbing: this.grabbing(), filtered };\r\n });\r\n\r\n this.containerClasses = computed(() => {\r\n const { width: contentWidth, height: contentHeight } = this.contentBounds(),\r\n scrollEnabled = this.scrollable(),\r\n { width, height } = this.viewportBounds(),\r\n overlappingScrollbar = this.overlappingScrollbar(),\r\n viewportWidth = width,\r\n viewportHeight = height,\r\n scrollableX = contentWidth > viewportWidth,\r\n scrollableY = contentHeight > viewportHeight,\r\n scrollable = scrollEnabled && (scrollableX || scrollableY);\r\n return {\r\n [this.direction()]: true, grabbing: this.grabbing(), enabled: this.scrollbarEnabled(),\r\n scrollable, scrollableX, scrollableY, overlapping: overlappingScrollbar,\r\n };\r\n });\r\n\r\n effect(() => {\r\n const viewInitialized = this.viewInitialized();\r\n if (viewInitialized) {\r\n this.updateScrollBarHandler(false);\r\n this.updateScrollBarHandler(true);\r\n }\r\n });\r\n }\r\n\r\n private recalculatePerspective() {\r\n const scrollWidth = this.scrollLeft - this._startLayoutOffsetX,\r\n scrollHeight = this.scrollTop - this._startLayoutOffsetX,\r\n { width, height } = this.viewportBounds();\r\n this.listStyles.set({\r\n perspectiveOrigin: `${scrollWidth + width * .5}${PX} ${scrollHeight + height * .5}${PX}`\r\n });\r\n }\r\n\r\n protected override onResizeViewport() {\r\n const viewport = this.scrollViewport()?.nativeElement;\r\n if (!!viewport) {\r\n const bounds: ISize = { width: viewport.offsetWidth, height: viewport.offsetHeight }, b = this.viewportBounds();\r\n if (bounds.width === b.width && bounds.height === b.height) {\r\n return;\r\n }\r\n this.viewportBounds.set(bounds);\r\n this.updateScrollBar(false);\r\n this.updateScrollBar(true);\r\n this._$resizeViewport.next(bounds);\r\n }\r\n }\r\n\r\n protected override onResizeContent(width: number | null = null, height: number | null = null) {\r\n const content = this.scrollContent()?.nativeElement;\r\n if (!!content) {\r\n const bounds: ISize = {\r\n width: width ?? content.offsetWidth,\r\n height: height ?? content.offsetHeight,\r\n }, b = this.contentBounds();\r\n if (width === null && height === null && bounds.width === b.width && bounds.height === b.height) {\r\n return;\r\n }\r\n this.contentBounds.set(bounds);\r\n this.updateScrollBar(false);\r\n this.updateScrollBar(true);\r\n this._$resizeContent.next(bounds);\r\n }\r\n }\r\n\r\n private updateScrollBarHandler(isVertical: boolean, update: boolean = false, blending: boolean = true, fireUpdate: boolean = false) {\r\n const viewportBounds = this.viewportBounds(),\r\n direction = this.direction(),\r\n horizontalEnabled = direction === ScrollerDirection.BOTH || direction === ScrollerDirection.HORIZONTAL,\r\n verticalEnabled = direction === ScrollerDirection.BOTH || direction === ScrollerDirection.VERTICAL;\r\n if ((isVertical && verticalEnabled) || (!isVertical && horizontalEnabled)) {\r\n const contentBounds = this.contentBounds(),\r\n startOffset = isVertical ? this.topOffset() : this.leftOffset(),\r\n endOffset = isVertical ? this.bottomOffset() : this.rightOffset(),\r\n {\r\n thumbSize,\r\n thumbPosition,\r\n thumbGradientPositions,\r\n } = this._scrollBox.calculateScroll({\r\n direction: isVertical ? ScrollerDirection.VERTICAL : ScrollerDirection.HORIZONTAL,\r\n viewportWidth: viewportBounds.width,\r\n viewportHeight: viewportBounds.height,\r\n contentWidth: contentBounds.width,\r\n contentHeight: contentBounds.height,\r\n startOffset,\r\n endOffset,\r\n positionX: this._x,\r\n positionY: this._y,\r\n minSize: this.scrollbarMinSize(),\r\n });\r\n\r\n if (isVertical) {\r\n this.thumbGradientPositionsVertical.set(thumbGradientPositions);\r\n this.thumbSizeVertical.set(thumbSize);\r\n } else {\r\n this.thumbGradientPositionsHorizontal.set(thumbGradientPositions);\r\n this.thumbSizeHorizontal.set(thumbSize);\r\n }\r\n const actualThumbPosition = thumbPosition < startOffset ? startOffset : thumbPosition;\r\n if (update) {\r\n (isVertical ? this.scrollBarVertical : this.scrollBarHorizontal)?.scroll({\r\n [isVertical ? TOP_PROP_NAME : LEFT_PROP_NAME]: actualThumbPosition, fireUpdate, behavior: BEHAVIOR_INSTANT,\r\n userAction: false, blending,\r\n });\r\n }\r\n }\r\n\r\n if (isVertical) {\r\n this.scrollbarVerticalEnabled.set(verticalEnabled && this.scrollableY && this.scrollbarEnabled());\r\n } else {\r\n this.scrollbarHorizontalEnabled.set(horizontalEnabled && this.scrollableX && this.scrollbarEnabled());\r\n }\r\n };\r\n\r\n ngAfterViewInit() {\r\n this.viewInitialized.set(true);\r\n }\r\n\r\n override tick() {\r\n super.tick();\r\n\r\n this.scrollBarHorizontal?.tick();\r\n this.scrollBarVertical?.tick();\r\n }\r\n\r\n private updateScrollBar(isVertical: boolean) {\r\n (isVertical ? this._$updateScrollBarVertical : this._$updateScrollBarHorizontal).next();\r\n }\r\n\r\n protected override normalizeScrollWidth() {\r\n const result = super.normalizeScrollWidth();\r\n this.scrollLimits();\r\n this.measureVelocity();\r\n return result;\r\n }\r\n\r\n protected override normalizeScrollHeight() {\r\n const result = super.normalizeScrollHeight();\r\n this.scrollLimits();\r\n this.measureVelocity();\r\n return result;\r\n }\r\n\r\n refreshScrollbar() {\r\n this.updateScrollBarHandler(true, true, false, false);\r\n this.updateScrollBarHandler(false, true, false, false);\r\n }\r\n\r\n protected onDragStartHorizontal() {\r\n this.onDragStart();\r\n\r\n this.stopScrollbar(false);\r\n\r\n this._isScrollbarUserActionX = false;\r\n\r\n this.updateScrollBar(false);\r\n }\r\n\r\n protected onDragStartVertical() {\r\n this.onDragStart();\r\n\r\n this.stopScrollbar(true);\r\n\r\n this._isScrollbarUserActionY = false;\r\n\r\n this.updateScrollBar(true);\r\n }\r\n\r\n override reset() {\r\n super.reset();\r\n this.totalWidth = this.totalHeight = 0;\r\n this.onResizeContent(0, 0);\r\n this.stopScrollbar(false);\r\n this.stopScrollbar(true);\r\n this.refresh(true, true);\r\n this.prepared = false;\r\n }\r\n\r\n refresh(fireUpdate: boolean = false, updateScrollbar: boolean = true) {\r\n if (updateScrollbar) {\r\n this.stopScrolling();\r\n }\r\n\r\n this.scrollLimits();\r\n\r\n this.refreshCoordinate(this._x, this._y);\r\n\r\n if (updateScrollbar) {\r\n this.updateScrollBarHandler(true, false);\r\n this.updateScrollBarHandler(false, false);\r\n this.emitScrollableEvent();\r\n }\r\n\r\n if (fireUpdate) {\r\n this.fireScrollEvent(false);\r\n }\r\n }\r\n\r\n startScrollTo() {\r\n this.stopScrollbar(false);\r\n this.stopScrollbar(true);\r\n this.stopScrolling();\r\n this.scrollDirectionX = this.scrollDirectionY = 0;\r\n this.dropVelocity();\r\n this._isScrollsTo = true;\r\n }\r\n\r\n finishedScrollTo() {\r\n this._isScrollsTo = false;\r\n this.scrollDirectionX = this.scrollDirectionY = 0;\r\n this.dropVelocity();\r\n this.fireScrollEvent(true);\r\n }\r\n\r\n scrollTo(params: IScrollToParams): Array<number> | null {\r\n const userAction = params?.userAction ?? true;\r\n if (userAction) {\r\n this._isScrollbarUserActionX = this._isScrollbarUserActionY = false;\r\n this.scrollBarHorizontal?.stopScrolling();\r\n this.scrollBarVertical?.stopScrolling();\r\n }\r\n return this.scroll({ ...params, userAction: userAction });\r\n }\r\n\r\n stopScrollbar(isVertical: boolean) {\r\n const scrollBar = isVertical ? this.scrollBarVertical : this.scrollBarHorizontal;\r\n if (!!scrollBar) {\r\n scrollBar.stopScrolling();\r\n this.dropVelocity();\r\n }\r\n }\r\n\r\n private dropVelocity() {\r\n this._velocitiesX = [0];\r\n this._$velocityX.next(0);\r\n this._$averageVelocityX.next(0);\r\n\r\n this._velocitiesY = [0];\r\n this._$velocityY.next(0);\r\n this._$averageVelocityY.next(0);\r\n }\r\n\r\n protected override stopMoving() {\r\n super.stopMoving();\r\n this.dropVelocity();\r\n }\r\n\r\n protected override onAnimationComplete(position: number) {\r\n this.dropVelocity();\r\n this._$scrollEnd.next(false);\r\n }\r\n\r\n onScrollBarDragHandler(event: IScrollBarDragEvent) {\r\n const { position, isVertical, min, max, userAction } = event;\r\n if (isVertical) {\r\n this._isScrollbarUserActionY = userAction;\r\n } else {\r\n this._isScrollbarUserActionX = userAction;\r\n }\r\n if (!userAction) {\r\n return;\r\n }\r\n this._$scrollbarScroll.next(true);\r\n this.stopScrolling();\r\n const {\r\n position: absolutePosition,\r\n } = this._scrollBox.getScrollPositionByScrollBar({\r\n scrollSize: isVertical ? this.scrollHeight : this.scrollWidth,\r\n position,\r\n });\r\n\r\n this.scrollTo({\r\n [isVertical ? TOP : LEFT]: absolutePosition, behavior: INSTANT,\r\n blending: false, userAction: true, fireUpdate: true,\r\n });\r\n this.emitScrollableEvent();\r\n this._service.update(false);\r\n }\r\n\r\n protected onScrollBarDragEndHandler(event: IScrollBarDragEvent) {\r\n const { position, min, max, isVertical, userAction } = event;\r\n if (isVertical) {\r\n this._isScrollbarUserActionY = userAction;\r\n } else {\r\n this._isScrollbarUserActionX = userAction;\r\n }\r\n if (!userAction) {\r\n return;\r\n }\r\n if (isVertical) {\r\n this._isScrollbarUserActionY = false;\r\n } else {\r\n this._isScrollbarUserActionX = false;\r\n }\r\n this.dropVelocity();\r\n this._service.update(false);\r\n this.fireUpdateIfEdgesDetected(isVertical, position, min, max, true, true);\r\n if (isVertical) {\r\n this.scrollDirectionY = 0;\r\n } else {\r\n this.scrollDirectionX = 0;\r\n }\r\n this._$scrollbarScroll.next(true);\r\n this.fireScrollEvent(true);\r\n }\r\n\r\n private fireUpdateIfEdgesDetected(isVertical: boolean, position: number, min: number = 0, max: number = 1, animation: boolean = false, userAction: boolean = false) {\r\n if (userAction && animation) {\r\n if (position <= min) {\r\n if (isVertical) {\r\n this._service.scrollToTop();\r\n } else {\r\n this._service.scrollToLeft();\r\n }\r\n return true;\r\n } else if (position >= max) {\r\n if (isVertical) {\r\n this._service.scrollToBottom();\r\n } else {\r\n this._service.scrollToRight();\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}","@let filtered = motionBlurEnabled();\r\n@let prepared = preparedSignal();\r\n@let textDir = langTextDir();\r\n<div localeSensitive [langTextDir]=\"textDir\" [listDir]=\"direction()\" class=\"cnvs__container\"\r\n [ngClass]=\"containerClasses()\">\r\n <svg part=\"viewport\" width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <filter [id]=\"_filterId\">\r\n <feGaussianBlur #filter></feGaussianBlur>\r\n </filter>\r\n <foreignObject xmlns=\"http://www.w3.org/1999/xhtml\" width=\"100%\" height=\"100%\" class=\"cnvs__viewport\">\r\n <div class=\"cnvs__scroller-wrapper\" [class.filtered]=\"filtered\"\r\n [style.filter]=\"filtered ? _filter : 'unset'\">\r\n <div cdkScrollable #scrollViewport part=\"scroller\" class=\"cnvs__scroller\">\r\n <div #scrollContent [attr.aria-orientation]=\"direction()\"\r\n [attr.aria-activedescendant]=\"focusedElement()\" tabindex=\"0\" part=\"content\"\r\n class=\"cnvs__content\" [ngClass]=\"actualClasses()\" [ngStyle]=\"listStyles()\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n </foreignObject>\r\n </svg>\r\n @if (scrollbarEnabled()) {\r\n @if (scrollbarVerticalEnabled()) {\r\n <cn-scroll-bar #scrollBarVertical direction=\"vertical\" [size]=\"thumbSizeVertical()\"\r\n [renderer]=\"scrollbarThumbRenderer()\" [thickness]=\"scrollbarThickness()\" [params]=\"scrollbarThumbParams()\"\r\n [loading]=\"loading()\" [overlapping]=\"overlappingScrollbar()\"\r\n [thumbGradientPositions]=\"thumbGradientPositionsVertical()\" [prepared]=\"prepared\"\r\n [interactive]=\"scrollbarInteractive()\" [show]=\"scrollbarVerticalEnabled() && scrollbarEnabled() && prepared\"\r\n [topOffset]=\"topOffset()\" [langTextDir]=\"textDir\" [bottomOffset]=\"bottomOffset()\"\r\n [overscrollEnabled]=\"overscrollEnabled()\" [scrollBehavior]=\"scrollBehavior()\"\r\n [scrollbarMinSize]=\"scrollbarMinSize()\" (onDrag)=\"onScrollBarDragHandler($event)\"\r\n (onDragEnd)=\"onScrollBarDragEndHandler($event)\"></cn-scroll-bar>\r\n }\r\n @if (scrollbarHorizontalEnabled()) {\r\n <cn-scroll-bar #scrollBarHorizontal direction=\"horizontal\" [size]=\"thumbSizeHorizontal()\"\r\n [renderer]=\"scrollbarThumbRenderer()\" [thickness]=\"scrollbarThickness()\" [params]=\"scrollbarThumbParams()\"\r\n [loading]=\"loading()\" [overlapping]=\"overlappingScrollbar()\"\r\n [thumbGradientPositions]=\"thumbGradientPositionsHorizontal()\" [prepared]=\"prepared\"\r\n [interactive]=\"scrollbarInteractive()\" [show]=\"scrollbarHorizontalEnabled() && scrollbarEnabled() && prepared\"\r\n [leftOffset]=\"leftOffset()\" [langTextDir]=\"textDir\" [rightOffset]=\"rightOffset()\"\r\n [overscrollEnabled]=\"overscrollEnabled()\" [scrollBehavior]=\"scrollBehavior()\"\r\n [scrollbarMinSize]=\"scrollbarMinSize()\" (onDrag)=\"onScrollBarDragHandler($event)\"\r\n (onDragEnd)=\"onScrollBarDragEndHandler($event)\"></cn-scroll-bar>\r\n }\r\n }\r\n</div>","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LocaleSensitiveDirective } from './locale-sensitive.directive';\r\n\r\n@NgModule({\r\n declarations: [LocaleSensitiveDirective],\r\n exports: [LocaleSensitiveDirective],\r\n imports: [CommonModule],\r\n schemas: [NO_ERRORS_SCHEMA],\r\n})\r\nexport class LocaleSensitiveModule { }\r\n","import { DestroyRef, Directive, ElementRef, inject, Input, output } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { BehaviorSubject, combineLatest, fromEvent, of, race } from 'rxjs';\r\nimport { filter, switchMap, takeUntil, tap } from 'rxjs/operators';\r\nimport { DEFAULT_CLICK_DISTANCE } from '../../const';\r\nimport { SCROLL_VIEW_SERVICE } from '../../components/cn-scroll-view/const';\r\n\r\n/**\r\n * VirtualClickDirective\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/directives/item-click/item-click.directive.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Directive({\r\n selector: '[virtualClick]',\r\n standalone: false,\r\n})\r\nexport class VirtualClickDirective {\r\n private _$maxDistance = new BehaviorSubject<number | null>(null);\r\n protected $maxDistance = this._$maxDistance.asObservable();\r\n\r\n private _maxDistance: number | null = null;\r\n\r\n @Input('maxClickDistance')\r\n set maxDistance(v: number | string) {\r\n const value = (v !== null || v !== undefined) ? Number(v) : null;\r\n this._maxDistance = value;\r\n this._$maxDistance.next(value);\r\n }\r\n\r\n onVirtualClick = output<PointerEvent | TouchEvent>();\r\n\r\n onVirtualClickPress = output<PointerEvent | TouchEvent>();\r\n\r\n onVirtualClickCancel = output<void>();\r\n\r\n private _service = inject(SCROLL_VIEW_SERVICE);\r\n\r\n private _elementRef = inject(ElementRef);\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n constructor() {\r\n let maxDistance = this._maxDistance ?? DEFAULT_CLICK_DISTANCE;\r\n combineLatest([this._service.$clickDistance, this.$maxDistance]).pipe(\r\n takeUntilDestroyed(),\r\n tap(([clickDistance, distance]) => {\r\n maxDistance = distance === null ? clickDistance : distance;\r\n }),\r\n ).subscribe();\r\n\r\n const $pointerPressed = fromEvent<PointerEvent>(this._elementRef.nativeElement, 'pointerdown'),\r\n $pointerCancel = race([\r\n fromEvent(window, 'pointerup').pipe(\r\n takeUntilDestroyed(),\r\n ),\r\n fromEvent<PointerEvent>(window, 'pointerleave').pipe(\r\n takeUntilDestroyed(),\r\n ),\r\n ]),\r\n $pointerRelease = fromEvent<PointerEvent>(this._elementRef.nativeElement, 'pointerup', { passive: false });\r\n\r\n $pointerPressed.pipe(\r\n takeUntilDestroyed(),\r\n switchMap(e => {\r\n const x = Math.abs(e.clientX),\r\n y = Math.abs(e.clientY);\r\n this.onVirtualClickPress.emit(e);\r\n return $pointerRelease.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n takeUntil(\r\n race([\r\n $pointerCancel.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(() => {\r\n this.onVirtualClickCancel.emit();\r\n }),\r\n ),\r\n fromEvent<PointerEvent>(window, 'pointermove').pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n switchMap(e => {\r\n const xx = x - Math.abs(e.clientX),\r\n yy = y - Math.abs(e.clientY),\r\n dist = Math.sqrt(Math.pow(xx, 2) + Math.pow(yy, 2));\r\n\r\n if (dist > maxDistance) {\r\n this.onVirtualClickCancel.emit();\r\n return of(true);\r\n }\r\n\r\n return of(false);\r\n }),\r\n filter(v => !!v),\r\n ),\r\n ]),\r\n ),\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(e => {\r\n if (e) {\r\n this.onVirtualClick.emit(e);\r\n }\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n }\r\n}\r\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { VirtualClickDirective } from './virtual-click.directive';\r\n\r\n@NgModule({\r\n declarations: [VirtualClickDirective],\r\n exports: [VirtualClickDirective],\r\n imports: [CommonModule],\r\n schemas: [NO_ERRORS_SCHEMA],\r\n})\r\nexport class VirtualClickModule { }\r\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CnScrollBarComponent } from './cn-scroll-bar.component';\r\n\r\n@NgModule({\r\n declarations: [CnScrollBarComponent],\r\n exports: [CnScrollBarComponent],\r\n imports: [CommonModule],\r\n schemas: [NO_ERRORS_SCHEMA],\r\n})\r\nexport class CnScrollBarModule { }\r\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CnScrollerComponent } from './cn-scroller.component';\r\nimport { LocaleSensitiveModule } from '../../directives';\r\nimport { CnScrollBarModule } from '../cn-scroll-bar/cn-scroll-bar.module';\r\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\r\n\r\n@NgModule({\r\n declarations: [CnScrollerComponent],\r\n exports: [CnScrollerComponent],\r\n imports: [CommonModule, CnScrollBarModule, LocaleSensitiveModule, CdkScrollableModule],\r\n schemas: [NO_ERRORS_SCHEMA],\r\n})\r\nexport class CnScrollerModule { }\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\r\nimport { combineLatest, distinctUntilChanged, Subject, tap } from 'rxjs';\r\nimport { IAnimationParams, IScrollOptions, IScrollViewService } from './interfaces';\r\nimport { Directions } from './enums';\r\nimport { Direction } from './types';\r\nimport { DEFAULT_ANIMATION_PARAMS, DEFAULT_CLICK_DISTANCE } from './const';\r\nimport { Id, IRect, TextDirection, TextDirections } from '../common';\r\n\r\n/**\r\n * CnVirtualScrollViewService\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/cn-virtual-scroll-view.service.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CnVirtualScrollViewService implements IScrollViewService, OnDestroy {\r\n private _id: number = 0;\r\n get id() { return this._id; }\r\n\r\n private _nextComponentId: number = 0;\r\n\r\n private _$tick = new Subject<void>();\r\n readonly $tick = this._$tick.asObservable();\r\n\r\n scrollLeftOffset: number = 0;\r\n\r\n scrollRightOffset: number = 0;\r\n\r\n scrollTopOffset: number = 0;\r\n\r\n scrollBottomOffset: number = 0;\r\n\r\n isInfinity: boolean = false;\r\n\r\n isVertical: boolean = true;\r\n\r\n snapScrollToLeft: boolean = false;\r\n\r\n snapScrollToRight: boolean = false;\r\n\r\n snapScrollToTop: boolean = false;\r\n\r\n snapScrollToBottom: boolean = false;\r\n\r\n animationParams: IAnimationParams = DEFAULT_ANIMATION_PARAMS;\r\n\r\n listElement: HTMLDivElement | null = null;\r\n\r\n direction: Direction = Directions.BOTH;\r\n\r\n private _$langTextDir = new BehaviorSubject<TextDirection>(TextDirections.LTR);\r\n readonly $langTextDir = this._$langTextDir.asObservable();\r\n get langTextDir() { return this._$langTextDir.getValue(); }\r\n\r\n set langTextDir(v: TextDirection) {\r\n if (this.langTextDir === v) {\r\n return;\r\n }\r\n\r\n this._$langTextDir.next(v);\r\n }\r\n\r\n private _$grabbing = new BehaviorSubject<boolean>(false);\r\n readonly $grabbing = this._$grabbing.asObservable();\r\n get grabbing() { return this._$grabbing.getValue(); }\r\n\r\n set grabbing(v: boolean) {\r\n if (this.grabbing === v) {\r\n return;\r\n }\r\n this._$grabbing.next(v);\r\n }\r\n\r\n private _$clickPressed = new BehaviorSubject<boolean>(false);\r\n readonly $clickPressed = this._$clickPressed.asObservable();\r\n get clickPressed() { return this._$clickPressed.getValue(); }\r\n\r\n set clickPressed(v: boolean) {\r\n if (this.clickPressed === v) {\r\n return;\r\n }\r\n\r\n this._$clickPressed.next(v);\r\n }\r\n\r\n private _$isGrabbing = new BehaviorSubject<boolean>(false);\r\n readonly $isGrabbing = this._$isGrabbing.asObservable();\r\n get isGrabbing() { return this._$isGrabbing.getValue(); }\r\n\r\n private _$scrollBarSize = new BehaviorSubject<number>(0);\r\n readonly $scrollBarSize = this._$scrollBarSize.asObservable();\r\n get scrollBarSize() { return this._$scrollBarSize.getValue(); }\r\n\r\n set scrollBarSize(v: number) {\r\n if (this.scrollBarSize === v) {\r\n return;\r\n }\r\n\r\n this._$scrollBarSize.next(v);\r\n }\r\n\r\n private _$intersectionElementBySnapToItemAlign = new BehaviorSubject<Id | null>(null);\r\n readonly $intersectionElementBySnapToItemAlign = this._$intersectionElementBySnapToItemAlign.asObservable();\r\n\r\n private _$clickDistance = new BehaviorSubject<number>(DEFAULT_CLICK_DISTANCE);\r\n readonly $clickDistance = this._$clickDistance.asObservable();\r\n get clickDistance() { return this._$clickDistance.getValue(); }\r\n\r\n set clickDistance(v: number) {\r\n if (this.clickDistance === v) {\r\n return;\r\n }\r\n\r\n this._$clickDistance.next(v);\r\n }\r\n\r\n private _tickerId: number | null = null;\r\n\r\n constructor() {\r\n const $grabbing = this.$grabbing.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n ), $clickPressed = this.$clickPressed.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n );\r\n combineLatest([$grabbing, $clickPressed]).pipe(\r\n takeUntilDestroyed(),\r\n tap(([grabbing, clickPressed]) => {\r\n this._$isGrabbing.next(grabbing && !clickPressed);\r\n }),\r\n ).subscribe();\r\n\r\n this.tick();\r\n }\r\n\r\n private tick() {\r\n this._$tick.next();\r\n\r\n this._tickerId = requestAnimationFrame(() => {\r\n this.tick();\r\n });\r\n }\r\n\r\n focusList() {\r\n const element = this.listElement;\r\n if (!!element) {\r\n element.focus({ preventScroll: true });\r\n }\r\n }\r\n\r\n initialize(id: number) {\r\n this._id = id;\r\n }\r\n\r\n generateComponentId() {\r\n return this._nextComponentId = this._nextComponentId === Number.MAX_SAFE_INTEGER\r\n ? 0 : this._nextComponentId + 1;\r\n }\r\n\r\n getComponentBoundsByIntersectionPosition(positionX: number, positionY: number, maxPositionX: number | null = null, maxPositionY: number | null = null):\r\n (IRect & { id: Id | null; isFirst: boolean; isLast: boolean; }) | null {\r\n return null;\r\n }\r\n\r\n setIntersectionElementBySnapToItemAlign(id: Id | null) {\r\n if (this._$intersectionElementBySnapToItemAlign.getValue() !== id) {\r\n this._$intersectionElementBySnapToItemAlign.next(id);\r\n }\r\n }\r\n\r\n update(immediately: boolean = false) { }\r\n\r\n /**\r\n * Scrolls the scroll area to the first item in the collection.\r\n */\r\n scrollToLeft(options?: IScrollOptions) { }\r\n\r\n /**\r\n * Scrolls the list to the end of the content size.\r\n */\r\n scrollToRight(options?: IScrollOptions) { }\r\n\r\n /**\r\n * Scrolls the scroll area to the first item in the collection.\r\n */\r\n scrollToTop(options?: IScrollOptions) { }\r\n\r\n /**\r\n * Scrolls the list to the end of the content size.\r\n */\r\n scrollToBottom(options?: IScrollOptions) { }\r\n\r\n ngOnDestroy() {\r\n if (this._tickerId !== null) {\r\n cancelAnimationFrame(this._tickerId);\r\n this._tickerId = null;\r\n }\r\n }\r\n}\r\n","import { ISize } from \"../../common\";\r\nimport { Directions } from \"../enums\";\r\nimport { IScrollEvent } from \"../interfaces\";\r\nimport { Direction, ScrollDirection } from '../types';\r\n\r\ninterface IScrollEventParams {\r\n bounds: ISize;\r\n directionX: ScrollDirection;\r\n directionY: ScrollDirection;\r\n scrollerDirection: Direction;\r\n scrollWidth: number;\r\n scrollHeight: number;\r\n isRight: boolean;\r\n isBottom: boolean;\r\n userAction: boolean;\r\n}\r\n\r\n/**\r\n * Scroll event.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/utils/scroll-event.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport class ScrollEvent implements IScrollEvent {\r\n private _scrollerDirection: Direction = Directions.BOTH;\r\n get scrollerDirection() { return this._scrollerDirection; }\r\n\r\n private _directionX: ScrollDirection = 0;\r\n get directionX() { return this._directionX; }\r\n\r\n private _directionY: ScrollDirection = 0;\r\n get directionY() { return this._directionY; }\r\n\r\n private _scrollWidth: number = 0;\r\n get scrollWidth() { return this._scrollWidth; }\r\n\r\n private _scrollHeight: number = 0;\r\n get scrollHeight() { return this._scrollHeight; }\r\n\r\n private _viewportWidth: number = 0;\r\n get viewportWidth() { return this._viewportWidth; }\r\n\r\n private _viewportHeight: number = 0;\r\n get viewportHeight() { return this._viewportHeight; }\r\n\r\n private _isLeft: boolean = true;\r\n get isLeft() { return this._isLeft; }\r\n\r\n private _isRight: boolean = false;\r\n get isRight() { return this._isRight; }\r\n\r\n private _isTop: boolean = true;\r\n get isTop() { return this._isTop; }\r\n\r\n private _isBottom: boolean = false;\r\n get isBottom() { return this._isBottom; }\r\n\r\n private _userAction: boolean;\r\n get userAction() { return this._userAction; }\r\n\r\n constructor(params: IScrollEventParams) {\r\n const { bounds, directionX, directionY, scrollerDirection, scrollWidth, scrollHeight, isRight, isBottom, userAction } = params;\r\n this._scrollerDirection = scrollerDirection;\r\n this._directionX = directionX;\r\n this._directionY = directionY;\r\n this._viewportWidth = bounds.width;\r\n this._viewportHeight = bounds.height;\r\n this._scrollWidth = scrollWidth;\r\n this._scrollHeight = scrollHeight;\r\n this._isLeft = this._scrollWidth === 0;\r\n this._isRight = isRight;\r\n this._isTop = this._scrollHeight === 0;\r\n this._isBottom = isBottom;\r\n this._userAction = userAction;\r\n }\r\n}","import { Directions } from \"../enums\";\r\nimport { Direction } from \"../types\";\r\n\r\nconst HORIZONTAL_ALIASES = [Directions.HORIZONTAL, 'horizontal'],\r\n VERTICAL_ALIASES = [Directions.VERTICAL, 'vertical'],\r\n BOTH_ALIASES = [Directions.BOTH, 'both'];\r\n\r\n/**\r\n * Determines the axis membership of a virtual list\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/utils/is-direction.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\nexport const isDirection = (src: Direction, expected: Direction): boolean => {\r\n if (BOTH_ALIASES.includes(expected)) {\r\n return BOTH_ALIASES.includes(src);\r\n }\r\n if (HORIZONTAL_ALIASES.includes(expected)) {\r\n return HORIZONTAL_ALIASES.includes(src);\r\n }\r\n return VERTICAL_ALIASES.includes(src);\r\n}","const isUndefinable = <T = any>(value: T) => {\r\n return value === undefined;\r\n}\r\n\r\nconst isNullable = <T = any>(value: T) => {\r\n return value === null;\r\n}\r\n\r\n/**\r\n * Int validator\r\n * @param value Int\r\n */\r\nexport const validateInt = (value: number | undefined, undefinable = false) => {\r\n return (undefinable && isUndefinable(value)) || !Number.isNaN(Number.parseInt(`${value}`));\r\n};\r\n\r\n/**\r\n * Float validator\r\n * @param value Float\r\n */\r\nexport const validateFloat = (value: number | undefined, undefinable = false) => {\r\n return (undefinable && isUndefinable(value)) || !Number.isNaN(Number.parseFloat(`${value}`));\r\n};\r\n\r\n/**\r\n * String validator\r\n * @param value String\r\n */\r\nexport const validateString = (value: string | undefined | null, undefinable = false, nullable = false) => {\r\n return (undefinable && isUndefinable(value)) || (nullable && isNullable(value)) || typeof value === 'string';\r\n};\r\n\r\n/**\r\n * Boolean validator\r\n * @param value Boolean\r\n */\r\nexport const validateBoolean = (value: boolean | undefined, undefinable = false) => {\r\n return (undefinable && isUndefinable(value)) || typeof value === 'boolean';\r\n};\r\n\r\n/**\r\n * Array validator\r\n * @param value Array\r\n */\r\nexport const validateArray = <T = any>(value: Array<T> | undefined | null, undefinable = false, nullable = false) => {\r\n return (undefinable && isUndefinable(value)) || (nullable && isNullable(value)) || Array.isArray(value);\r\n};\r\n\r\n/**\r\n * Object validator\r\n * @param value Object\r\n */\r\nexport const validateObject = <T = any>(value: Object & T | undefined | null, undefinable = false, nullable = false) => {\r\n return (undefinable && isUndefinable(value)) || (nullable && isNullable(value)) || typeof value === 'object';\r\n};\r\n\r\n/**\r\n * Function validator\r\n * @param value Function\r\n */\r\nexport const validateFunction = <T = any>(value: Object & T | undefined | null, undefinable = false, nullable = false) => {\r\n return (undefinable && isUndefinable(value)) || (nullable && isNullable(value)) || typeof value === 'function';\r\n};\r\n","import {\r\n ChangeDetectionStrategy, Component, computed, DestroyRef, effect, ElementRef, inject, Injector, input,\r\n OnDestroy, output, Signal, signal, TemplateRef, viewChild, ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\r\nimport {\r\n BehaviorSubject, combineLatest, debounceTime, distinctUntilChanged, filter, map, skip, Subject, switchMap, take, tap,\r\n} from 'rxjs';\r\nimport {\r\n BEHAVIOR_INSTANT, CLASS_SCROLL_VIEW_HORIZONTAL, CLASS_SCROLL_VIEW_VERTICAL, DEFAULT_DIRECTION, DEFAULT_LIST_SIZE, LEFT_PROP_NAME,\r\n TOP_PROP_NAME, MIN_PIXELS_FOR_PREVENT_SNAPPING, DEFAULT_LANG_TEXT_DIR, DEFAULT_CLICK_DISTANCE, DEFAULT_SCROLLBAR_THICKNESS,\r\n DEFAULT_SCROLLBAR_MIN_SIZE, BEHAVIOR_AUTO, DEFAULT_SCROLLBAR_ENABLED, DEFAULT_SCROLLBAR_INTERACTIVE, DEFAULT_OVERSCROLL_ENABLED,\r\n DEFAULT_ANIMATION_PARAMS, DEFAULT_SCROLL_BEHAVIOR, DEFAULT_SCROLLING_SETTINGS, DEFAULT_MOTION_BLUR, DEFAULT_MAX_MOTION_BLUR,\r\n DEFAULT_MOTION_BLUR_ENABLED, DEFAULT_OVERLAPPING_SCROLLBAR, DEFAULT_SNAP_SCROLLTO_LEFT, DEFAULT_SNAP_SCROLLTO_TOP,\r\n DEFAULT_SNAP_SCROLLTO_RIGHT, DEFAULT_SNAP_SCROLLTO_BOTTOM, CLASS_SCROLL_VIEW_BOTH, DEFAULT_SCROLLABLE,\r\n} from './const';\r\nimport {\r\n IScrollEvent, IAnimationParams, IScrollingSettings, IScrollOptions,\r\n} from './interfaces';\r\nimport {\r\n Direction,\r\n} from './types';\r\nimport {\r\n Directions,\r\n} from './enums';\r\nimport { ScrollEvent } from './utils';\r\nimport { isDirection } from './utils/is-direction';\r\nimport { CnVirtualScrollViewService } from './cn-virtual-scroll-view.service';\r\nimport {\r\n validateBoolean, validateFloat, validateInt, validateObject, validateString,\r\n} from './utils/validation';\r\nimport { objectAsReadonly } from '../common/utils/object';\r\nimport { CnScrollerComponent } from './components/cn-scroller/cn-scroller.component';\r\nimport { IScrollToParams } from './components/cn-scroll-view';\r\nimport { SCROLL_VIEW_SERVICE } from './components/cn-scroll-view/const';\r\nimport { ArithmeticExpression, Id, ISize, TextDirection, TextDirections } from '../common';\r\nimport { isPercentageValue, parseArithmeticExpression, toggleClassName } from '../common/utils';\r\n\r\n/**\r\n * Virtual list component.\r\n * Maximum performance for extremely large lists.\r\n * It is based on algorithms for virtualization of screen objects.\r\n * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/cn-virtual-scroll-view.component.ts\r\n * @author Evgenii Alexandrovich Grebennikov\r\n * @email djonnyx@gmail.com\r\n */\r\n@Component({\r\n selector: 'cn-virtual-scroll-view',\r\n templateUrl: './cn-virtual-scroll-view.component.html',\r\n styleUrl: './cn-virtual-scroll-view.component.scss',\r\n host: {\r\n 'style': 'position: relative;'\r\n },\r\n standalone: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.ShadowDom,\r\n providers: [\r\n { provide: SCROLL_VIEW_SERVICE, useClass: CnVirtualScrollViewService },\r\n ],\r\n})\r\nexport class CnVirtualScrollViewComponent implements OnDestroy {\r\n private static __nextId: number = 0;\r\n\r\n private _id: number = CnVirtualScrollViewComponent.__nextId;\r\n\r\n /**\r\n * Readonly. Returns the unique identifier of the component.\r\n */\r\n get id() { return this._id; }\r\n\r\n private _service = inject(SCROLL_VIEW_SERVICE);\r\n\r\n private _scrollerComponent = viewChild<CnScrollerComponent>('scroller');\r\n\r\n private _scroller: Signal<ElementRef<HTMLDivElement> | undefined>;\r\n\r\n /**\r\n * Fires when the list has been scrolled.\r\n */\r\n onScroll = output<IScrollEvent>();\r\n\r\n /**\r\n * Fires when the list has completed scrolling.\r\n */\r\n onScrollEnd = output<IScrollEvent>();\r\n\r\n /**\r\n * Fires when the viewport size is changed.\r\n */\r\n onViewportChange = output<ISize>();\r\n\r\n /**\r\n * Fires when the scroll reaches the left.\r\n */\r\n onScrollReachLeft = output<void>();\r\n\r\n /**\r\n * Fires when the scroll reaches the right.\r\n */\r\n onScrollReachRight = output<void>();\r\n\r\n /**\r\n * Fires when the scroll reaches the top.\r\n */\r\n onScrollReachTop = output<void>();\r\n\r\n /**\r\n * Fires when the scroll reaches the bottom.\r\n */\r\n onScrollReachBottom = output<void>();\r\n\r\n private _$show = new BehaviorSubject<boolean>(false);\r\n readonly $show = this._$show.asObservable();\r\n\r\n private _$initialized = new BehaviorSubject<boolean>(false);\r\n readonly $initialized = this._$initialized.asObservable();\r\n\r\n private _scrollbarThickness = {\r\n transform: (v: number) => {\r\n const valid = validateInt(v);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollbarThickness\" parameter must be of type `number`.');\r\n return DEFAULT_SCROLLBAR_THICKNESS;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Scrollbar thickness.\r\n */\r\n scrollbarThickness = input<number>(DEFAULT_SCROLLBAR_THICKNESS, { ...this._scrollbarThickness });\r\n\r\n private _scrollbarMinSize = {\r\n transform: (v: number) => {\r\n const valid = validateInt(v);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollbarMinSize\" parameter must be of type `number`.');\r\n return DEFAULT_SCROLLBAR_MIN_SIZE;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Minimum scrollbar size.\r\n */\r\n scrollbarMinSize = input<number>(DEFAULT_SCROLLBAR_MIN_SIZE, { ...this._scrollbarMinSize });\r\n\r\n private _scrollbarThumbRenderer = {\r\n transform: (v: TemplateRef<any> | null) => {\r\n const valid = validateObject(v, true, true);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollbarThumbRenderer\" parameter must be of type `object`.');\r\n return null;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Scrollbar customization template.\r\n */\r\n scrollbarThumbRenderer = input<TemplateRef<any> | null>(null, { ...this._scrollbarThumbRenderer });\r\n\r\n private _scrollbarThumbParams = {\r\n transform: (v: { [propName: string]: any } | null) => {\r\n const valid = validateObject(v, true, true);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollbarThumbParams\" parameter must be of type `object`.');\r\n return null;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Additional options for the scrollbar.\r\n */\r\n scrollbarThumbParams = input<{ [propName: string]: any } | null>({}, { ...this._scrollbarThumbParams });\r\n\r\n private _clickDistance = {\r\n transform: (v: number) => {\r\n const valid = validateInt(v);\r\n\r\n if (!valid) {\r\n console.error('The \"clickDistance\" parameter must be of type `number`.');\r\n return DEFAULT_CLICK_DISTANCE;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * The maximum scroll distance at which a click event is triggered.\r\n */\r\n clickDistance = input<number>(DEFAULT_CLICK_DISTANCE, { ...this._clickDistance });\r\n\r\n private _scrollLeftOffsetOptions = {\r\n transform: (v: number) => {\r\n const valid = validateFloat(v, true) || isPercentageValue(v);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollLeftOffset\" parameter must be one of type `number` or `string`.');\r\n return 0;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Sets the scroll left offset value. Can be specified in absolute or percentage values.\r\n * Supports arithmetic expressions of addition `50% + 25` or subtraction `50% - 25`. Default value is \"0\".\r\n */\r\n scrollLeftOffset = input<ArithmeticExpression>(0, { ...this._scrollLeftOffsetOptions });\r\n\r\n private _scrollTopOffsetOptions = {\r\n transform: (v: number) => {\r\n const valid = validateFloat(v, true) || isPercentageValue(v);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollTopOffset\" parameter must be one of type `number` or `string`.');\r\n return 0;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Sets the scroll top offset value. Can be specified in absolute or percentage values.\r\n * Supports arithmetic expressions of addition `50% + 25` or subtraction `50% - 25`. Default value is \"0\".\r\n */\r\n scrollTopOffset = input<ArithmeticExpression>(0, { ...this._scrollTopOffsetOptions });\r\n\r\n private _scrollRightOffsetOptions = {\r\n transform: (v: number) => {\r\n const valid = validateFloat(v, true) || isPercentageValue(v);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollRightOffset\" parameter must be one of type `number` or `string`.');\r\n return 0;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Sets the scroll right offset value. Can be specified in absolute or percentage values.\r\n * Supports arithmetic expressions of addition `50% + 25` or subtraction `50% - 25`. Default value is \"0\".\r\n */\r\n scrollRightOffset = input<ArithmeticExpression>(0, { ...this._scrollRightOffsetOptions });\r\n\r\n private _scrollBottomOffsetOptions = {\r\n transform: (v: number) => {\r\n const valid = validateFloat(v, true) || isPercentageValue(v);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollBottomOffset\" parameter must be one of type `number` or `string`.');\r\n return 0;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Sets the scroll bottom offset value. Can be specified in absolute or percentage values.\r\n * Supports arithmetic expressions of addition `50% + 25` or subtraction `50% - 25`. Default value is \"0\".\r\n */\r\n scrollBottomOffset = input<ArithmeticExpression>(0, { ...this._scrollBottomOffsetOptions });\r\n\r\n private _snapScrollToLeftOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v, true);\r\n\r\n if (!valid) {\r\n console.error('The \"snapScrollToLeft\" parameter must be of type `boolean`.');\r\n return DEFAULT_SNAP_SCROLLTO_LEFT;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines whether the scrollbar is snapped to the left of the scroller. The default value is \"true\".\r\n * That is, if snapScrollToLeft and snapScrollToRight are enabled, the scroller will initially snap\r\n * to the left; if you move the scrollbar right, the scroller will snap to the right.\r\n * If snapScrollToLeft is disabled and snapScrollToRight is enabled, the scroller will snap to the right;\r\n * If you move the scrollbar left, the scroller will snap to the left.\r\n * If both snapScrollToLeft and snapScrollToRight are disabled, the scroller will never snap to the left or right.\r\n */\r\n snapScrollToLeft = input<boolean>(DEFAULT_SNAP_SCROLLTO_LEFT, { ...this._snapScrollToLeftOptions });\r\n\r\n private _snapScrollToTopOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v, true);\r\n\r\n if (!valid) {\r\n console.error('The \"snapScrollToTop\" parameter must be of type `boolean`.');\r\n return DEFAULT_SNAP_SCROLLTO_TOP;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines whether the scrollbar is snapped to the top of the scroller. The default value is \"true\".\r\n * That is, if snapScrollToTop and snapScrollToBottom are enabled, the scroller will initially snap\r\n * to the top; if you move the scrollbar down, the scroller will snap to the bottom.\r\n * If snapScrollToTop is disabled and snapScrollToBottom is enabled, the scroller will snap to the bottom;\r\n * If you move the scrollbar up, the scroller will snap to the top.\r\n * If both snapScrollToTop and snapScrollToBottom are disabled, the scroller will never snap to the top or bottom.\r\n */\r\n snapScrollToTop = input<boolean>(DEFAULT_SNAP_SCROLLTO_TOP, { ...this._snapScrollToTopOptions });\r\n\r\n private _snapScrollToRightOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v, true);\r\n\r\n if (!valid) {\r\n console.error('The \"snapScrollToRight\" parameter must be of type `boolean`.');\r\n return DEFAULT_SNAP_SCROLLTO_RIGHT;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines whether the scrollbar is snapped to the right of the scroller. The default value is \"true\".\r\n * That is, if snapScrollToLeft and snapScrollToRight are enabled, the scroller will initially snap\r\n * to the left; if you move the scrollbar right, the scroller will snap to the right.\r\n * If snapScrollToLeft is disabled and snapScrollToRight is enabled, the scroller will snap to the right;\r\n * If you move the scrollbar left, the scroller will snap to the left.\r\n * If both snapScrollToLeft and snapScrollToRight are disabled, the scroller will never snap to the left or right.\r\n */\r\n snapScrollToRight = input<boolean>(DEFAULT_SNAP_SCROLLTO_RIGHT, { ...this._snapScrollToRightOptions });\r\n\r\n private _snapScrollToBottomOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v, true);\r\n\r\n if (!valid) {\r\n console.error('The \"snapScrollToBottom\" parameter must be of type `boolean`.');\r\n return DEFAULT_SNAP_SCROLLTO_BOTTOM;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines whether the scrollbar is snapped to the bottom of the scroller. The default value is \"true\".\r\n * That is, if snapScrollToTop and snapScrollToBottom are enabled, the scroller will initially snap\r\n * to the top; if you move the scrollbar down, the scroller will snap to the bottom.\r\n * If snapScrollToTop is disabled and snapScrollToBottom is enabled, the scroller will snap to the bottom;\r\n * If you move the scrollbar up, the scroller will snap to the top.\r\n * If both snapScrollToTop and snapScrollToBottom are disabled, the scroller will never snap to the top or bottom.\r\n */\r\n snapScrollToBottom = input<boolean>(DEFAULT_SNAP_SCROLLTO_BOTTOM, { ...this._snapScrollToBottomOptions });\r\n\r\n private _scrollableOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v, true);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollable\" parameter must be of type `boolean`.');\r\n return DEFAULT_SCROLLBAR_ENABLED;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines whether scrolling is enabled or disabled. The default value is \"true\".\r\n */\r\n scrollable = input<boolean>(DEFAULT_SCROLLABLE, { ...this._scrollableOptions });\r\n\r\n private _scrollbarEnabledOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v, true);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollbarEnabled\" parameter must be of type `boolean`.');\r\n return DEFAULT_SCROLLBAR_ENABLED;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines whether the scrollbar is shown or not. The default value is \"true\".\r\n */\r\n scrollbarEnabled = input<boolean>(DEFAULT_SCROLLBAR_ENABLED, { ...this._scrollbarEnabledOptions });\r\n\r\n private _scrollbarInteractiveOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v, true);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollbarInteractive\" parameter must be of type `boolean`.');\r\n return DEFAULT_SCROLLBAR_INTERACTIVE;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines whether scrolling using the scrollbar will be possible. The default value is \"true\".\r\n */\r\n scrollbarInteractive = input<boolean>(DEFAULT_SCROLLBAR_INTERACTIVE, { ...this._scrollbarInteractiveOptions });\r\n\r\n private _overlappingScrollbarOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v, true);\r\n\r\n if (!valid) {\r\n console.error('The \"overlappingScrollbar\" parameter must be of type `boolean`.');\r\n return DEFAULT_OVERLAPPING_SCROLLBAR;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines whether the scroll bar will overlap the list. The default value is \"false\".\r\n */\r\n overlappingScrollbar = input<boolean>(DEFAULT_OVERLAPPING_SCROLLBAR, { ...this._overlappingScrollbarOptions });\r\n\r\n private _scrollBehaviorOptions = {\r\n transform: (v: ScrollBehavior) => {\r\n const valid = validateString(v, true, true);\r\n\r\n if (!valid) {\r\n console.error('The \"scrollBehavior\" parameter must be of type `boolean`.');\r\n return DEFAULT_SCROLL_BEHAVIOR;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Defines the scrolling behavior for any element on the page. The default value is \"smooth\".\r\n */\r\n scrollBehavior = input<ScrollBehavior>(DEFAULT_SCROLL_BEHAVIOR, { ...this._scrollBehaviorOptions });\r\n\r\n private _scrollingSettingsOptions = {\r\n transform: (v: IScrollingSettings): IScrollingSettings | null => {\r\n let valid = validateObject(v, true, true);\r\n if (valid && !!v) {\r\n const { frictionalForce, mass, maxDistance, maxDuration, speedScale, optimization } = v;\r\n valid = validateFloat(frictionalForce, true);\r\n if (!valid) {\r\n console.error('The \"frictionalForce\" parameter must be of type `number` or `undefined`.');\r\n return DEFAULT_SCROLLING_SETTINGS;\r\n }\r\n valid = validateFloat(mass, true);\r\n if (!valid) {\r\n console.error('The \"mass\" parameter must be of type `number` or `undefined`.');\r\n return DEFAULT_SCROLLING_SETTINGS;\r\n }\r\n valid = validateFloat(maxDistance, true);\r\n if (!valid) {\r\n console.error('The \"maxDistance\" parameter must be of type `number` or `undefined`.');\r\n return DEFAULT_SCROLLING_SETTINGS;\r\n }\r\n valid = validateFloat(maxDuration, true);\r\n if (!valid) {\r\n console.error('The \"maxDuration\" parameter must be of type `number` or `undefined`.');\r\n return DEFAULT_SCROLLING_SETTINGS;\r\n }\r\n valid = validateFloat(speedScale, true);\r\n if (!valid) {\r\n console.error('The \"speedScale\" parameter must be of type `number` or `undefined`.');\r\n return DEFAULT_SCROLLING_SETTINGS;\r\n }\r\n valid = validateBoolean(optimization, true);\r\n if (!valid) {\r\n console.error('The \"optimization\" parameter must be of type `boolean` or `undefined`.');\r\n return DEFAULT_SCROLLING_SETTINGS;\r\n }\r\n }\r\n if (!valid) {\r\n console.error('The \"scrollingSettings\" parameter must be of type `object` or null.');\r\n return DEFAULT_SCROLLING_SETTINGS;\r\n }\r\n return {\r\n frictionalForce: v.frictionalForce !== undefined && v.frictionalForce > 0 ? v.frictionalForce : DEFAULT_SCROLLING_SETTINGS.frictionalForce,\r\n mass: v.mass !== undefined && v.mass > 0 ? v.mass : DEFAULT_SCROLLING_SETTINGS.mass,\r\n maxDistance: v.maxDistance !== undefined && v.maxDistance > 0 ? v.maxDistance : DEFAULT_SCROLLING_SETTINGS.maxDistance,\r\n maxDuration: v.maxDuration !== undefined && v.maxDuration > 0 ? v.maxDuration : DEFAULT_SCROLLING_SETTINGS.maxDuration,\r\n speedScale: v.speedScale !== undefined && v.speedScale > 0 ? v.speedScale : DEFAULT_SCROLLING_SETTINGS.speedScale,\r\n optimization: v.optimization ?? DEFAULT_SCROLLING_SETTINGS.optimization,\r\n };\r\n },\r\n } as any;\r\n\r\n /**\r\n * Scrolling settings.\r\n * - frictionalForce - Frictional force. Default value is 0.035.\r\n * - mass - Mass. Default value is 0.005.\r\n * - maxDistance - Maximum scrolling distance. Default value is 100000.\r\n * - maxDuration - Maximum animation duration. Default value is 4000.\r\n * - speedScale - Speed scale. Default value is 10.\r\n * - optimization - Enables scrolling performance optimization. Default value is `true`.\r\n */\r\n scrollingSettings = input<IScrollingSettings>(DEFAULT_SCROLLING_SETTINGS, { ...this._scrollingSettingsOptions });\r\n\r\n private _motionBlurOptions = {\r\n transform: (v: number) => {\r\n const valid = validateFloat(v);\r\n\r\n if (!valid) {\r\n console.error('The \"motionBlur\" parameter must be of type `number`.');\r\n return DEFAULT_MOTION_BLUR;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Motion blur effect. The default value is `0.15`.\r\n */\r\n motionBlur = input<number>(DEFAULT_MOTION_BLUR, { ...this._motionBlurOptions });\r\n\r\n private _maxMotionBlurOptions = {\r\n transform: (v: number) => {\r\n const valid = validateFloat(v);\r\n\r\n if (!valid) {\r\n console.error('The \"maxMotionBlur\" parameter must be of type `number`.');\r\n return DEFAULT_MAX_MOTION_BLUR;\r\n }\r\n return v <= 0 ? DEFAULT_MAX_MOTION_BLUR : v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Maximum motion blur effect. The default value is `0.5`.\r\n */\r\n maxMotionBlur = input<number>(DEFAULT_MAX_MOTION_BLUR, { ...this._maxMotionBlurOptions });\r\n\r\n private _motionBlurEnabledOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v);\r\n\r\n if (!valid) {\r\n console.error('The \"motionBlurEnabled\" parameter must be of type `boolean`.');\r\n return DEFAULT_MOTION_BLUR_ENABLED;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines whether to apply motion blur or not. The default value is `false`.\r\n */\r\n motionBlurEnabled = input<boolean>(DEFAULT_MOTION_BLUR_ENABLED, { ...this._motionBlurEnabledOptions });\r\n\r\n private _animationParamsOptions = {\r\n transform: (v: IAnimationParams) => {\r\n const valid = validateObject(v, true, true);\r\n\r\n if (!validateFloat(v.scrollToItem)) {\r\n console.error('The \"scrollToItem\" parameter must be of type `number`.');\r\n return DEFAULT_ANIMATION_PARAMS;\r\n }\r\n if (!valid) {\r\n console.error('The \"animationParams\" parameter must be of type `object`.');\r\n return DEFAULT_ANIMATION_PARAMS;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Animation parameters. The default value is \"{ scrollToItem: 0 }\".\r\n */\r\n animationParams = input<IAnimationParams>(DEFAULT_ANIMATION_PARAMS, { ...this._animationParamsOptions });\r\n\r\n private _overscrollEnabledOptions = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v, true);\r\n\r\n if (!valid) {\r\n console.error('The \"overscrollEnabled\" parameter must be of type `boolean`.');\r\n return DEFAULT_OVERSCROLL_ENABLED;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines whether the overscroll (re-scroll) feature will work. The default value is \"true\".\r\n */\r\n overscrollEnabled = input<boolean>(DEFAULT_OVERSCROLL_ENABLED, { ...this._overscrollEnabledOptions });\r\n\r\n private _directionOptions = {\r\n transform: (v: Direction) => {\r\n const valid = validateString(v) && (v === 'horizontal' || v === 'vertical' || v === 'both');\r\n if (!valid) {\r\n console.error('The \"direction\" parameter must be one of `horizontal`, `vertical` or `both`.');\r\n return DEFAULT_DIRECTION;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * Determines the direction in which elements are placed. Default value is \"both\".\r\n */\r\n direction = input<Direction>(DEFAULT_DIRECTION, { ...this._directionOptions });\r\n\r\n private _loading = {\r\n transform: (v: boolean) => {\r\n const valid = validateBoolean(v);\r\n\r\n if (!valid) {\r\n console.error('The \"loading\" parameter must be of type `boolean`.');\r\n return false;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * If `true`, the scrollBar goes into loading state. The default value is `false`.\r\n */\r\n loading = input<boolean>(false, { ...this._loading });\r\n\r\n private _langTextDir = {\r\n transform: (v: TextDirection) => {\r\n const valid = validateString(v) && (v === TextDirections.LTR || v === TextDirections.RTL);\r\n if (!valid) {\r\n console.error('The \"langTextDir\" parameter must be of type `string`.');\r\n return DEFAULT_LANG_TEXT_DIR;\r\n }\r\n return v;\r\n },\r\n } as any;\r\n\r\n /**\r\n * A string indicating the direction of text for the locale.\r\n * Can be either \"ltr\" (left-to-right) or \"rtl\" (right-to-left).\r\n */\r\n langTextDir = input<TextDirection>(DEFAULT_LANG_TEXT_DIR, { ...this._langTextDir });\r\n\r\n protected readonly focusedElement = signal<Id | null>(null);\r\n\r\n protected readonly classes = signal<{ [cName: string]: boolean }>({ prepared: true });\r\n\r\n private _bounds = signal<ISize | null>(null);\r\n protected get bounds() { return this._bounds; }\r\n\r\n private _scrollerBounds = signal<ISize | null>(null);\r\n\r\n private _$scrollSizeX = new BehaviorSubject<number>(0);\r\n\r\n private _$scrollSizeY = new BehaviorSubject<number>(0);\r\n\r\n private _isScrollLeft = signal<boolean>(true);\r\n\r\n private _isScrollRight = signal<boolean>(false);\r\n\r\n private _isScrollTop = signal<boolean>(true);\r\n\r\n private _isScrollBottom = signal<boolean>(false);\r\n\r\n protected _precalculatedScrollLeftOffset = signal<number>(0);\r\n\r\n protected _precalculatedScrollTopOffset = signal<number>(0);\r\n\r\n protected _precalculatedScrollRightOffset = signal<number>(0);\r\n\r\n protected _precalculatedScrollBottomOffset = signal<number>(0);\r\n\r\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n private _$scroll = new Subject<IScrollEvent>();\r\n readonly $scroll = this._$scroll.asObservable();\r\n\r\n get $grabbing() { return this._service.$grabbing };\r\n\r\n private _$fireUpdate = new Subject<boolean>();\r\n protected readonly $fireUpdate = this._$fireUpdate.asObservable();\r\n\r\n private _$fireUpdateNextFrame = new Subject<boolean>();\r\n protected readonly $fireUpdateNextFrame = this._$fireUpdateNextFrame.asObservable();\r\n\r\n private _$preventScrollSnapping = new BehaviorSubject<boolean>(false);\r\n protected readonly $preventScrollSnapping = this._$preventScrollSnapping.asObservable();\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _isLoading = false;\r\n\r\n private _animationIds: Array<number> | null = null;\r\n\r\n private _$viewInit = new BehaviorSubject<boolean>(false);\r\n private readonly $viewInit = this._$viewInit.asObservable();\r\n\r\n private _injector = inject(Injector);\r\n\r\n constructor() {\r\n CnVirtualScrollViewComponent.__nextId = CnVirtualScrollViewComponent.__nextId + 1 === Number.MAX_SAFE_INTEGER\r\n ? 0 : CnVirtualScrollViewComponent.__nextId + 1;\r\n this._id = CnVirtualScrollViewComponent.__nextId;\r\n\r\n let hasUserAction = false;\r\n\r\n const _$created = new BehaviorSubject<boolean>(false),\r\n $created = _$created.asObservable();\r\n\r\n combineLatest([$created, this.$show]).pipe(\r\n takeUntilDestroyed(),\r\n filter(([created, shown]) => created && shown),\r\n debounceTime(1),\r\n tap(v => {\r\n this._$initialized.next(true);\r\n }),\r\n ).subscribe();\r\n\r\n this._service.initialize(this._id);\r\n\r\n const $animationParams = toObservable(this.animationParams);\r\n $animationParams.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.animationParams = v;\r\n }),\r\n ).subscribe();\r\n\r\n const $bounds = toObservable(this._bounds).pipe(\r\n filter(b => !!b),\r\n ),\r\n $rawScrollLeftOffset = toObservable(this.scrollLeftOffset),\r\n $rawScrollRightOffset = toObservable(this.scrollRightOffset),\r\n $rawScrollTopOffset = toObservable(this.scrollTopOffset),\r\n $rawScrollBottomOffset = toObservable(this.scrollBottomOffset);\r\n\r\n combineLatest([$bounds, $rawScrollLeftOffset]).pipe(\r\n takeUntilDestroyed(),\r\n tap(([bounds, value]) => {\r\n const val = parseArithmeticExpression(value, bounds.width);\r\n this._precalculatedScrollLeftOffset.set(val);\r\n }),\r\n ).subscribe();\r\n\r\n combineLatest([$bounds, $rawScrollRightOffset]).pipe(\r\n takeUntilDestroyed(),\r\n tap(([bounds, value]) => {\r\n const val = parseArithmeticExpression(value, bounds.width);\r\n this._precalculatedScrollRightOffset.set(val);\r\n }),\r\n ).subscribe();\r\n\r\n combineLatest([$bounds, $rawScrollTopOffset]).pipe(\r\n takeUntilDestroyed(),\r\n tap(([bounds, value]) => {\r\n const val = parseArithmeticExpression(value, bounds.height);\r\n this._precalculatedScrollTopOffset.set(val);\r\n }),\r\n ).subscribe();\r\n\r\n combineLatest([$bounds, $rawScrollBottomOffset]).pipe(\r\n takeUntilDestroyed(),\r\n tap(([bounds, value]) => {\r\n const val = parseArithmeticExpression(value, bounds.height);\r\n this._precalculatedScrollBottomOffset.set(val);\r\n }),\r\n ).subscribe();\r\n\r\n this._service.$tick.pipe(\r\n takeUntilDestroyed(),\r\n tap(() => {\r\n this._scrollerComponent()?.tick();\r\n }),\r\n ).subscribe();\r\n\r\n const $scrollerComponent = toObservable(this._scrollerComponent),\r\n $resizeViewport = $scrollerComponent.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n switchMap(scroller => scroller.$resizeViewport),\r\n ),\r\n $resizeContent = $scrollerComponent.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n switchMap(scroller => scroller.$resizeContent),\r\n );\r\n\r\n $resizeViewport.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n tap(v => {\r\n this._bounds.set(v);\r\n this.onAfterResize(true);\r\n }),\r\n ).subscribe();\r\n\r\n $resizeContent.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n tap(v => {\r\n this._scrollerBounds.set(v);\r\n this.onAfterResize();\r\n }),\r\n ).subscribe();\r\n\r\n const $scrollLeftOffset = toObservable(this._precalculatedScrollLeftOffset).pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n ),\r\n $scrollRightOffset = toObservable(this._precalculatedScrollRightOffset).pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n ),\r\n $scrollTopOffset = toObservable(this._precalculatedScrollTopOffset).pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n ),\r\n $scrollBottomOffset = toObservable(this._precalculatedScrollBottomOffset).pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n );\r\n\r\n this._scroller = computed(() => {\r\n return this._scrollerComponent()?.scrollViewport();\r\n });\r\n\r\n const $scrollbarThickness = toObservable(this.scrollbarThickness);\r\n $scrollbarThickness.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n tap(scrollbarThickness => {\r\n this._service.scrollBarSize = scrollbarThickness;\r\n }),\r\n ).subscribe();\r\n\r\n this.$fireUpdateNextFrame.pipe(\r\n takeUntilDestroyed(),\r\n debounceTime(0),\r\n tap(userAction => {\r\n this._$fireUpdate.next(userAction);\r\n }),\r\n ).subscribe();\r\n\r\n const $langTextDir = toObservable(this.langTextDir);\r\n $langTextDir.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.langTextDir = v;\r\n }),\r\n ).subscribe();\r\n\r\n effect(() => {\r\n const dist = this.clickDistance();\r\n this._service.clickDistance = dist;\r\n });\r\n\r\n const $viewInit = this.$viewInit,\r\n $fireUpdate = this.$fireUpdate;\r\n\r\n $fireUpdate.pipe(\r\n takeUntilDestroyed(),\r\n tap(userAction => {\r\n hasUserAction = userAction;\r\n }),\r\n ).subscribe();\r\n\r\n $viewInit.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n switchMap(() => {\r\n return combineLatest([\r\n $scrollLeftOffset, $scrollRightOffset, $scrollTopOffset, $scrollRightOffset, $bounds, $precalculatedScrollLeftOffset,\r\n $precalculatedScrollRightOffset, $precalculatedScrollTopOffset, $precalculatedScrollBottomOffset,\r\n ]).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(() => {\r\n this._scrollerComponent()?.refreshScrollbar();\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n const $snapScrollToLeft = toObservable(this.snapScrollToLeft),\r\n $snapScrollToRight = toObservable(this.snapScrollToRight),\r\n $snapScrollToTop = toObservable(this.snapScrollToTop),\r\n $snapScrollToBottom = toObservable(this.snapScrollToBottom);\r\n\r\n const $isScrollLeft = toObservable(this._isScrollLeft),\r\n $isScrollRight = toObservable(this._isScrollRight),\r\n $isScrollTop = toObservable(this._isScrollTop),\r\n $isScrollBottom = toObservable(this._isScrollBottom),\r\n $direction = toObservable(this.direction);\r\n\r\n $snapScrollToLeft.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.snapScrollToLeft = v;\r\n }),\r\n ).subscribe();\r\n\r\n $snapScrollToRight.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.snapScrollToRight = v;\r\n }),\r\n ).subscribe();\r\n\r\n $snapScrollToTop.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.snapScrollToTop = v;\r\n }),\r\n ).subscribe();\r\n\r\n $snapScrollToBottom.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.snapScrollToBottom = v;\r\n }),\r\n ).subscribe();\r\n\r\n $direction.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n this._service.direction = v;\r\n }),\r\n ).subscribe();\r\n\r\n $scrollLeftOffset.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n tap(v => {\r\n this._service.scrollLeftOffset = v;\r\n }),\r\n ).subscribe();\r\n\r\n $scrollRightOffset.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n tap(v => {\r\n this._service.scrollRightOffset = v;\r\n }),\r\n ).subscribe();\r\n\r\n $scrollTopOffset.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n tap(v => {\r\n this._service.scrollTopOffset = v;\r\n }),\r\n ).subscribe();\r\n\r\n $scrollBottomOffset.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n tap(v => {\r\n this._service.scrollBottomOffset = v;\r\n }),\r\n ).subscribe();\r\n\r\n $isScrollLeft.pipe(\r\n takeUntilDestroyed(),\r\n skip(1),\r\n distinctUntilChanged(),\r\n debounceTime(0),\r\n filter(v => !!v),\r\n tap(() => {\r\n if (this._scrollerComponent()?.scrollableX) {\r\n this.onScrollReachLeft.emit();\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n $isScrollRight.pipe(\r\n takeUntilDestroyed(),\r\n skip(1),\r\n distinctUntilChanged(),\r\n debounceTime(0),\r\n filter(v => !!v),\r\n tap(v => {\r\n if (this._scrollerComponent()?.scrollableX) {\r\n this.onScrollReachRight.emit();\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n $isScrollTop.pipe(\r\n takeUntilDestroyed(),\r\n skip(1),\r\n distinctUntilChanged(),\r\n debounceTime(0),\r\n filter(v => !!v),\r\n tap(v => {\r\n if (this._scrollerComponent()?.scrollableY) {\r\n this.onScrollReachTop.emit();\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n $isScrollBottom.pipe(\r\n takeUntilDestroyed(),\r\n skip(1),\r\n distinctUntilChanged(),\r\n debounceTime(0),\r\n filter(v => !!v),\r\n tap(v => {\r\n if (this._scrollerComponent()?.scrollableY) {\r\n this.onScrollReachBottom.emit();\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n const $precalculatedScrollLeftOffset = toObservable(this._precalculatedScrollLeftOffset),\r\n $precalculatedScrollRightOffset = toObservable(this._precalculatedScrollRightOffset),\r\n $precalculatedScrollTopOffset = toObservable(this._precalculatedScrollTopOffset),\r\n $precalculatedScrollBottomOffset = toObservable(this._precalculatedScrollBottomOffset),\r\n $scrollerBounds = toObservable(this._scrollerBounds).pipe(\r\n filter(b => !!b),\r\n ),\r\n $scrollSizeX = this._$scrollSizeX.asObservable().pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n ),\r\n $scrollSizeY = this._$scrollSizeY.asObservable().pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n );\r\n\r\n $direction.pipe(\r\n takeUntilDestroyed(),\r\n tap(v => {\r\n const el: HTMLElement = this._elementRef.nativeElement;\r\n if (isDirection(Directions.BOTH, v)) {\r\n toggleClassName(el, CLASS_SCROLL_VIEW_BOTH, [CLASS_SCROLL_VIEW_HORIZONTAL, CLASS_SCROLL_VIEW_VERTICAL]);\r\n } else if (isDirection(Directions.HORIZONTAL, v)) {\r\n toggleClassName(el, CLASS_SCROLL_VIEW_HORIZONTAL, [CLASS_SCROLL_VIEW_BOTH, CLASS_SCROLL_VIEW_VERTICAL]);\r\n } else if (isDirection(Directions.VERTICAL, v)) {\r\n toggleClassName(el, CLASS_SCROLL_VIEW_VERTICAL, [CLASS_SCROLL_VIEW_BOTH, CLASS_SCROLL_VIEW_HORIZONTAL]);\r\n }\r\n }),\r\n ).subscribe();\r\n\r\n const $preventScrollSnapping = this.$preventScrollSnapping;\r\n\r\n $preventScrollSnapping.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n tap(() => {\r\n this._isScrollLeft.set(false);\r\n this._isScrollRight.set(false);\r\n }),\r\n tap(() => {\r\n this._$preventScrollSnapping.next(false);\r\n }),\r\n ).subscribe();\r\n\r\n const $loading = toObservable(this.loading);\r\n\r\n $loading.pipe(\r\n takeUntilDestroyed(),\r\n skip(1),\r\n distinctUntilChanged(),\r\n tap(v => {\r\n if (v) {\r\n this._isLoading = true;\r\n }\r\n }),\r\n filter(v => !v),\r\n tap(() => {\r\n this._$preventScrollSnapping.next(true);\r\n }),\r\n debounceTime(100),\r\n tap(() => {\r\n this._isLoading = false;\r\n }),\r\n ).subscribe();\r\n\r\n $viewInit.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n switchMap(() => {\r\n return combineLatest([$snapScrollToLeft, $snapScrollToRight, $snapScrollToTop, $snapScrollToBottom, $precalculatedScrollLeftOffset,\r\n $precalculatedScrollRightOffset, $precalculatedScrollTopOffset, $precalculatedScrollBottomOffset, $bounds, $scrollerBounds,\r\n $scrollLeftOffset, $scrollRightOffset, $scrollTopOffset, $scrollBottomOffset, $scrollSizeX, $scrollSizeY, $direction,\r\n this.$fireUpdate,\r\n ]).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(([\r\n snapScrollToLeft, snapScrollToRight, snapScrollToTop, snapScrollToBottom, precalculatedScrollLeftOffset, precalculatedScrollRightOffset,\r\n precalculatedScrollTopOffset, precalculatedScrollBottomOffset, bounds, scrollerBounds,\r\n scrollLeftOffset, scrollRightOffset, scrollTopOffset, scrollBottomOffset, scrollSizeX, scrollSizeY, direction,\r\n ]) => {\r\n const scroller = this._scrollerComponent();\r\n if (!!scroller) {\r\n const userAction = hasUserAction, ready = _$created.getValue();\r\n\r\n if (!_$created.getValue()) {\r\n _$created.next(true);\r\n }\r\n\r\n if (ready) {\r\n const currentScrollSizeX = scroller.scrollLeft,\r\n currentScrollSizeY = scroller.scrollTop;\r\n\r\n this.snappingHandler();\r\n\r\n const roundedMaxPositionAfterUpdateX = scroller.actualScrollWidth,\r\n roundedMaxPositionAfterUpdateY = scroller.actualScrollHeight;\r\n\r\n if (!scroller.grabbing()) {\r\n return;\r\n }\r\n\r\n let toStart = false,\r\n toEnd = false;\r\n\r\n if ((snapScrollToLeft && scroller.horizontalScrollRatio === 0 && currentScrollSizeX !== 0)) {\r\n this.emitScrollEvent(true, false, userAction);\r\n\r\n const params: IScrollToParams = {\r\n [LEFT_PROP_NAME]: 0, userAction,\r\n fireUpdate: true, behavior: (this.animationParams().scrollToItem > 0 && this.scrollBehavior() !== BEHAVIOR_INSTANT) ? BEHAVIOR_AUTO : BEHAVIOR_INSTANT,\r\n blending: !!this._animationIds ? scroller.hasAnimation(...this._animationIds) : false, duration: this.animationParams().scrollToItem,\r\n };\r\n const animationIds = scroller?.scrollTo?.(params);\r\n if (animationIds !== null) {\r\n this._animationIds = animationIds;\r\n } else if (this._animationIds !== null) {\r\n scroller.stopAnimation(...this._animationIds);\r\n }\r\n toStart = true;\r\n }\r\n\r\n if ((snapScrollToTop && scroller.verticalScrollRatio === 0 && currentScrollSizeY !== 0)) {\r\n this.emitScrollEvent(true, false, userAction);\r\n\r\n const params: IScrollToParams = {\r\n [TOP_PROP_NAME]: 0, userAction,\r\n fireUpdate: true, behavior: (this.animationParams().scrollToItem > 0 && this.scrollBehavior() !== BEHAVIOR_INSTANT) ? BEHAVIOR_AUTO : BEHAVIOR_INSTANT,\r\n blending: !!this._animationIds ? scroller.hasAnimation(...this._animationIds) : false, duration: this.animationParams().scrollToItem,\r\n };\r\n const animationIds = scroller?.scrollTo?.(params);\r\n if (animationIds !== null) {\r\n this._animationIds = animationIds;\r\n } else if (this._animationIds !== null) {\r\n scroller.stopAnimation(...this._animationIds);\r\n }\r\n toStart = true;\r\n }\r\n\r\n if (toStart) {\r\n return;\r\n }\r\n\r\n if ((snapScrollToRight && scroller.horizontalScrollRatio === 1 && currentScrollSizeX !== roundedMaxPositionAfterUpdateX)) {\r\n\r\n this.emitScrollEvent(true, false, false);\r\n\r\n const params: IScrollToParams = {\r\n [LEFT_PROP_NAME]: roundedMaxPositionAfterUpdateX,\r\n behavior: (this.animationParams().scrollToItem > 0 && this.scrollBehavior() !== BEHAVIOR_INSTANT) ? BEHAVIOR_AUTO : BEHAVIOR_INSTANT,\r\n userAction: false, blending: !!this._animationIds ? scroller.hasAnimation(...this._animationIds) : false, duration: this.animationParams().scrollToItem,\r\n };\r\n const animationIds = scroller?.scrollTo?.(params);\r\n if (animationIds !== null) {\r\n this._animationIds = animationIds;\r\n } else if (this._animationIds !== null) {\r\n scroller.stopAnimation(...this._animationIds);\r\n }\r\n toEnd = true;\r\n }\r\n\r\n if ((snapScrollToBottom && scroller.verticalScrollRatio === 1 && currentScrollSizeY !== roundedMaxPositionAfterUpdateY)) {\r\n\r\n this.emitScrollEvent(true, false, false);\r\n\r\n const params: IScrollToParams = {\r\n [TOP_PROP_NAME]: roundedMaxPositionAfterUpdateY,\r\n behavior: (this.animationParams().scrollToItem > 0 && this.scrollBehavior() !== BEHAVIOR_INSTANT) ? BEHAVIOR_AUTO : BEHAVIOR_INSTANT,\r\n userAction: false, blending: !!this._animationIds ? scroller.hasAnimation(...this._animationIds) : false, duration: this.animationParams().scrollToItem,\r\n };\r\n const animationIds = scroller?.scrollTo?.(params);\r\n if (animationIds !== null) {\r\n this._animationIds = animationIds;\r\n } else if (this._animationIds !== null) {\r\n scroller.stopAnimation(...this._animationIds);\r\n }\r\n toEnd = true;\r\n }\r\n\r\n if (toEnd) {\r\n return;\r\n }\r\n }\r\n }\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n const $scroller = toObservable(this._scroller).pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n map(v => v.nativeElement),\r\n take(1),\r\n ),\r\n $scrollerScroll = $scrollerComponent.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n take(1),\r\n switchMap(scroller => scroller.$scroll),\r\n ),\r\n $scrollerScrollEnd = $scrollerComponent.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n take(1),\r\n switchMap(scroller => scroller.$scrollEnd),\r\n ),\r\n $scrollbarScroll = $scrollerComponent.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n take(1),\r\n switchMap(scroller => scroller.$scrollbarScroll),\r\n );\r\n\r\n $scrollerComponent.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n switchMap(scroller => toObservable(scroller.contentBounds, { injector: this._injector }).pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(({ width, height }) => {\r\n scroller.totalWidth = width;\r\n scroller.totalHeight = height;\r\n })\r\n )),\r\n ).subscribe();\r\n\r\n $scrollerComponent.pipe(\r\n takeUntilDestroyed(),\r\n filter(v => !!v),\r\n take(1),\r\n tap(scroller => {\r\n scroller.prepared = true;\r\n }),\r\n ).subscribe();\r\n\r\n const scrollHandler = (userAction: boolean = false) => {\r\n const scroller = this._scrollerComponent();\r\n if (!!scroller) {\r\n const scrollSizeX = scroller.scrollLeft,\r\n scrollSizeY = scroller.scrollTop;\r\n\r\n if (userAction) {\r\n this._$preventScrollSnapping.next(true);\r\n }\r\n\r\n this._$scrollSizeX.next(scrollSizeX);\r\n this._$scrollSizeY.next(scrollSizeY);\r\n }\r\n };\r\n\r\n $scroller.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n switchMap(scroller => {\r\n return $scrollbarScroll.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n tap(userAction => {\r\n const scrollerEl = this._scroller()?.nativeElement, scrollerComponent = this._scrollerComponent();\r\n if (!!scrollerEl && !!scrollerComponent) {\r\n this.emitScrollEvent(false, true, hasUserAction);\r\n }\r\n if (userAction) {\r\n if (this._isScrollLeft() || this._isScrollRight() || this._isScrollTop() || this._isScrollBottom()) {\r\n this._$preventScrollSnapping.next(true);\r\n }\r\n this._$preventScrollSnapping.next(true);\r\n }\r\n }),\r\n );\r\n }),\r\n ).subscribe();\r\n\r\n $scroller.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n switchMap(scroller => {\r\n return $scrollerScroll.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n );\r\n }),\r\n tap(userAction => {\r\n hasUserAction = userAction;\r\n const scrollerEl = this._scroller()?.nativeElement, scrollerComponent = this._scrollerComponent();\r\n if (!!scrollerEl && !!scrollerComponent) {\r\n this.emitScrollEvent(false, true, userAction);\r\n }\r\n scrollHandler(userAction);\r\n }),\r\n ).subscribe();\r\n\r\n $scroller.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n switchMap(scroller => {\r\n return $scrollerScrollEnd.pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n );\r\n }),\r\n tap(userAction => {\r\n hasUserAction = userAction;\r\n const scrollerEl = this._scroller()?.nativeElement, scrollerComponent = this._scrollerComponent();\r\n if (!!scrollerEl && !!scrollerComponent) {\r\n this.emitScrollEvent(true, true, userAction);\r\n }\r\n scrollHandler(userAction);\r\n }),\r\n ).subscribe();\r\n\r\n $bounds.pipe(\r\n takeUntilDestroyed(),\r\n distinctUntilChanged(),\r\n tap(value => {\r\n const size: ISize = { width: value.width, height: value.height };\r\n this.onViewportChange.emit(objectAsReadonly(size));\r\n }),\r\n ).subscribe();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this._$viewInit.next(true);\r\n\r\n this._$fireUpdate.next(false);\r\n }\r\n\r\n private onAfterResize(update = false) {\r\n this.snappingHandler();\r\n\r\n if (update) {\r\n const scroller = this._scrollerComponent();\r\n if (!!scroller) {\r\n this._$fireUpdate.next(false);\r\n scroller.refresh(true, true);\r\n }\r\n }\r\n }\r\n\r\n private snappingHandler() {\r\n const scroller = this._scrollerComponent();\r\n if (!!scroller) {\r\n const maCnScrollWidth = Math.round(scroller.scrollWidth ?? 0),\r\n maCnScrollHeight = Math.round(scroller.scrollHeight),\r\n scrollWidth = scroller.scrollLeft ?? 0,\r\n scrollHeight = scroller.scrollTop ?? 0,\r\n actualScrollWidth = Math.round(scrollWidth),\r\n actualScrollHeight = Math.round(scrollHeight);\r\n if (!this._isLoading) {\r\n const _isScrollRight = (maCnScrollWidth >= (actualScrollWidth - MIN_PIXELS_FOR_PREVENT_SNAPPING)) || !scroller.scrollableX;\r\n if (_isScrollRight) {\r\n this._isScrollLeft.set(false);\r\n this._isScrollRight.set(true);\r\n } else {\r\n const isScrollStart = (maCnScrollWidth <= MIN_PIXELS_FOR_PREVENT_SNAPPING);\r\n this._isScrollLeft.set(isScrollStart);\r\n this._isScrollRight.set(false);\r\n }\r\n const _isScrollBottom = (maCnScrollHeight >= (actualScrollHeight - MIN_PIXELS_FOR_PREVENT_SNAPPING)) || !scroller.scrollableY;\r\n if (_isScrollBottom) {\r\n this._isScrollTop.set(false);\r\n this._isScrollBottom.set(true);\r\n } else {\r\n const isScrollTop = (maCnScrollHeight <= MIN_PIXELS_FOR_PREVENT_SNAPPING);\r\n this._isScrollTop.set(isScrollTop);\r\n this._isScrollBottom.set(false);\r\n }\r\n } else {\r\n const snapScrollToLeft = this.snapScrollToLeft(), snapScrollToRight = this.snapScrollToRight();\r\n if (!snapScrollToLeft && snapScrollToRight) {\r\n this._isScrollLeft.set(false);\r\n this._isScrollRight.set(true);\r\n } else if (snapScrollToLeft && snapScrollToRight) {\r\n this._isScrollLeft.set(true);\r\n this._isScrollRight.set(false);\r\n } else {\r\n this._isScrollLeft.set(false);\r\n this._isScrollRight.set(false);\r\n }\r\n const snapScrollToTop = this.snapScrollToTop(), snapScrollToBottom = this.snapScrollToBottom();\r\n if (!snapScrollToTop && snapScrollToBottom) {\r\n this._isScrollLeft.set(false);\r\n this._isScrollRight.set(true);\r\n } else if (snapScrollToTop && snapScrollToBottom) {\r\n this._isScrollLeft.set(true);\r\n this._isScrollRight.set(false);\r\n } else {\r\n this._isScrollLeft.set(false);\r\n this._isScrollRight.set(false);\r\n }\r\n }\r\n }\r\n };\r\n\r\n private emitScrollEvent(isScrollEnd: boolean = false, update: boolean = true, userAction: boolean = false) {\r\n const scrollerComponent = this._scrollerComponent();\r\n if (!!scrollerComponent) {\r\n const scrollWidth = scrollerComponent.scrollLeft,\r\n scrollHeight = scrollerComponent.scrollTop,\r\n maCnScrollWidth = scrollerComponent.scrollWidth,\r\n maCnScrollHeight = scrollerComponent.scrollHeight,\r\n bounds = this._bounds() || { x: 0, y: 0, width: DEFAULT_LIST_SIZE, height: DEFAULT_LIST_SIZE };\r\n\r\n const event = new ScrollEvent({\r\n directionX: scrollerComponent.scrollDirectionX,\r\n directionY: scrollerComponent.scrollDirectionY,\r\n bounds,\r\n scrollerDirection: this.direction(),\r\n scrollWidth,\r\n scrollHeight,\r\n isRight: !scrollerComponent.scrollableX || this._isScrollRight() || (Math.round(scrollWidth) === Math.round(maCnScrollWidth)),\r\n isBottom: !scrollerComponent.scrollableY || this._isScrollBottom() || (Math.round(scrollHeight) === Math.round(maCnScrollHeight)),\r\n userAction,\r\n });\r\n if (update) {\r\n this._$scroll.next(event);\r\n }\r\n\r\n if (isScrollEnd) {\r\n this.onScrollEnd.emit(event);\r\n } else {\r\n this.onScroll.emit(event);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * The method scrolls the scroll view and returns the animation ids if the behavior is set to smooth or null \r\n * if the behavior is set to auto, instant, or not set.\r\n */\r\n scrollTo(options: IScrollOptions) {\r\n const behavior = options?.behavior ?? BEHAVIOR_INSTANT,\r\n blending = options?.blending ?? false,\r\n x = options?.x,\r\n y = options?.y,\r\n left = options?.left,\r\n top = options?.top,\r\n ease = options?.ease,\r\n duration = options?.duration;\r\n const scroller = this._scrollerComponent();\r\n if (!!scroller) {\r\n scroller.stopScrolling();\r\n return scroller.scroll({ x, y, left, top, behavior, blending, ease, duration, userAction: true });\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Prevents the list from snapping to its start or end edge.\r\n */\r\n preventSnapping() {\r\n const scroller = this._scrollerComponent();\r\n this._isScrollLeft.set(false);\r\n this._isScrollRight.set(false);\r\n if (!!scroller) {\r\n scroller.stopScrolling();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n\r\n }\r\n}\r\n","@let scrollLeftOffset = _precalculatedScrollLeftOffset();\r\n@let scrollRightOffset = _precalculatedScrollRightOffset();\r\n@let scrollTopOffset = _precalculatedScrollTopOffset();\r\n@let scrollBottomOffset = _precalculatedScrollBottomOffset();\r\n\r\n<cn-scroller #scroller class=\"cnvs__scroller\" [classes]=\"classes()\" [scrollable]=\"scrollable()\"\r\n [langTextDir]=\"langTextDir()\" [leftOffset]=\"scrollLeftOffset\" [rightOffset]=\"scrollRightOffset\"\r\n [topOffset]=\"scrollTopOffset\" [bottomOffset]=\"scrollBottomOffset\" [direction]=\"direction()\"\r\n [scrollbarThumbRenderer]=\"scrollbarThumbRenderer()\" [scrollbarThickness]=\"scrollbarThickness()\"\r\n [scrollbarThumbParams]=\"scrollbarThumbParams()\" [animationParams]=\"animationParams()\"\r\n [focusedElement]=\"focusedElement()\" [loading]=\"loading()\" [overscrollEnabled]=\"overscrollEnabled()\"\r\n [overlappingScrollbar]=\"overlappingScrollbar()\" [scrollbarEnabled]=\"scrollbarEnabled()\"\r\n [scrollbarInteractive]=\"scrollbarInteractive()\" [scrollbarMinSize]=\"scrollbarMinSize()\"\r\n [scrollBehavior]=\"scrollBehavior()\" [scrollingSettings]=\"scrollingSettings()\" [motionBlur]=\"motionBlur()\"\r\n [maxMotionBlur]=\"maxMotionBlur()\" [motionBlurEnabled]=\"motionBlurEnabled()\">\r\n <ng-container #renderersContainer>\r\n <ng-content></ng-content>\r\n </ng-container>\r\n</cn-scroller>","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CnVirtualScrollViewComponent } from './cn-virtual-scroll-view.component';\r\nimport { LocaleSensitiveModule } from './directives';\r\nimport { CnScrollerModule } from './components/cn-scroller/cn-scroller.module';\r\nimport { SCROLL_VIEW_SERVICE } from './components/cn-scroll-view/const';\r\nimport { CnVirtualScrollViewService } from './cn-virtual-scroll-view.service';\r\n\r\n@NgModule({\r\n declarations: [CnVirtualScrollViewComponent],\r\n exports: [CnVirtualScrollViewComponent],\r\n imports: [CommonModule, CnScrollerModule, LocaleSensitiveModule],\r\n providers: [{ provide: SCROLL_VIEW_SERVICE, useClass: CnVirtualScrollViewService }],\r\n schemas: [NO_ERRORS_SCHEMA],\r\n})\r\nexport class CnVirtualScrollViewModule { }\r\n","/*\r\n * Public API Surface of cn-virtual-scroll-view\r\n */\r\nexport * from './components/cn-scroll-view/interfaces/scroll-to-params'\r\nexport * from './components/cn-scroll-view/base';\r\nexport {\r\n SCROLL_VIEW_INVERSION, SCROLL_VIEW_OVERSCROLL_ENABLED, SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, SCROLL_VIEW_SERVICE,\r\n} from './components/cn-scroll-view/const';\r\nexport * from './components/cn-scroll-bar/cn-scroll-bar.component';\r\nexport * from './components/cn-scroll-bar/cn-scroll-bar-public.service';\r\nexport * from './components/cn-scroll-bar/types/scrollbar-state';\r\nexport * from './components/cn-scroll-bar/enums/scrollbar-states';\r\nexport * from './components/cn-scroll-view/cn-scroll-view.component';\r\nexport * from './components/cn-scroll-view/enums';\r\nexport * from './components/cn-scroller/cn-scroller.component';\r\nexport * from './components/cn-scroller/cn-scroller.module';\r\nexport * from './components/cn-scroller/utils';\r\nexport * from './cn-virtual-scroll-view.service';\r\nexport * from './cn-virtual-scroll-view.component';\r\nexport * from './cn-virtual-scroll-view.module';\r\nexport * from './directives';\r\nexport * from './interfaces';\r\nexport * from './enums';\r\nexport * from './types';\r\nexport * from './utils';\r\n","/*\r\n * Public API Surface of list\r\n */\r\nexport {\r\n CnVirtualClickModule,\r\n CnVirtualListModule,\r\n CnVirtualListComponent,\r\n CnVirtualListPublicService,\r\n CnVirtualListService,\r\n} from './lib/list';\r\n/*\r\n * Public API Surface of scroll-view\r\n */\r\nexport {\r\n CnScrollBarPublicService,\r\n CnScrollerModule,\r\n CnScrollerComponent,\r\n CnVirtualScrollViewModule,\r\n CnVirtualScrollViewComponent,\r\n CnVirtualScrollViewService\r\n} from './lib/scroll-view';\r\n/*\r\n * Public API Surface of common\r\n */\r\nexport * from './lib/common';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ScrollbarStates","CnScrollBarService","CnScrollBarPublicService","ScrollerDirection","LEFT","RIGHT","DIR","Directions","matrix3d","isUndefinable","isNullable","validateInt","validateFloat","validateString","validateBoolean","validateArray","validateObject","validateFunction","ITEM_ID","BehaviorSubject","DEFAULT_ANIMATION_PARAMS","DEFAULT_CLICK_DISTANCE","BEHAVIOR_AUTO","BEHAVIOR_INSTANT","tap","DEFAULT_LIST_SIZE","DEFAULT_SCROLLBAR_ENABLED","DEFAULT_SCROLLBAR_INTERACTIVE","DEFAULT_OVERLAPPING_SCROLLBAR","DEFAULT_SCROLL_BEHAVIOR","DEFAULT_MOTION_BLUR","DEFAULT_MOTION_BLUR_ENABLED","DEFAULT_MAX_MOTION_BLUR","DEFAULT_SCROLLING_SETTINGS","DEFAULT_OVERSCROLL_ENABLED","DEFAULT_DIRECTION","DISPLAY_OBJECTS_LENGTH_MESUREMENT_ERROR","DEFAULT_LANG_TEXT_DIR","DEFAULT_SCROLLBAR_THICKNESS","DEFAULT_SCROLLBAR_MIN_SIZE","BEHAVIOR_SMOOTH","DISABLED","VIEWPORT","DISPLAY_BLOCK","DISPLAY_NONE","OPACITY_0","OPACITY_100","VISIBILITY_VISIBLE","VISIBILITY_HIDDEN","SIZE_100_PERSENT","SIZE_AUTO","UNSET","POSITION","POSITION_RELATIVE","POSITION_ABSOLUTE","TRANSLATE_3D","HIDDEN_ZINDEX","DEFAULT_ZINDEX","TOP_PROP_NAME","LEFT_PROP_NAME","X_PROP_NAME","Y_PROP_NAME","TRANSFORMED_X_PROP_NAME","TRANSFORMED_Y_PROP_NAME","WIDTH_PROP_NAME","HEIGHT_PROP_NAME","MARGIN_TOP","MARGIN_LEFT","PX","INTERACTIVE","WHEEL","SCROLLER_WHEEL","TOUCH_MOVE","TOUCH_START","TOUCH_END","TOUCH_LEAVE","TOUCH_OUT","MOUSE_MOVE","MOUSE_UP","MOUSE_DOWN","MOUSE_LEAVE","MOUSE_OUT","POINTER_MOVE","POINTER_UP","POINTER_DOWN","POINTER_LEAVE","POINTER_OUT","CLICK","KEY_DOWN","KEY_TAB","SCROLL","SCROLLER_SCROLL","SCROLL_END","MIN_PIXELS_FOR_PREVENT_SNAPPING","RANGE_DISPLAY_ITEMS_END_OFFSET","ROLE_LIST","ROLE_LIST_BOX","Z_INDEX_NONE","Z_INDEX_0","Z_INDEX_1","Z_INDEX_2","Z_INDEX_3","switchMap","i2.CnVirtualClickDirective","PERCENTAGE_VALUE_PATTERN","HORIZONTAL_ALIASES","VERTICAL_ALIASES","isDirection","NONE_ALIASES","NORMAL_ALIASES","SCROLL_VIEW_INVERSION","SCROLL_VIEW_OVERSCROLL_ENABLED","SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO","TOP","INSTANT","AUTO","SMOOTH","DURATION","FRICTION_FORCE","MAX_DURATION","ANIMATION_DURATION","MASS","ACCELERATION_SCALE","MAX_DIST","MIN_DELTA","MAX_VELOCITY_TIMESTAMP","MAX_VELOCITIES_LENGTH","MIN_ACCELERATION","SPEED_SCALE","OVERSCROLL_START_ITERATION","MAX_ITERATIONS_FOR_AVERAGE_CALCULATIONS","INSTANT_VELOCITY_SCALE","SCROLL_EVENT","calculateDirection","getDir","BaseScrollView","calculateVelocity","filter","takeUntil","CnScrollView","DEFAULT_THICKNESS","DEFAULT_SIZE","WIDTH","HEIGHT","OPACITY","OPACITY_1","TRANSITION","NONE","TRANSITION_FADE_IN","CnScrollBarComponent","MOTION_BLUR","ScrollBox","i2.CnScrollBarComponent","i3.CnLocaleSensitiveDirective","CnScrollerComponent","i2.CnLocaleSensitiveDirective","i1.CnPrerenderScrollerComponent","i1.CnPrerenderList","ScrollEvent","i2.CnScrollerComponent","i3.CnPrerenderContainer","i4.CnLocaleSensitiveDirective","CnScrollBarModule","CnScrollerModule","B_LIMIT","i3.LocaleSensitiveDirective","i1.CnScrollerComponent"],"mappings":"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"}