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.
package/index.d.ts ADDED
@@ -0,0 +1,4337 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { ComponentRef, TemplateRef, Signal, ElementRef, DestroyRef, OnInit, Injector, OnDestroy } from '@angular/core';
3
+ import * as i2 from '@angular/common';
4
+ import * as rxjs from 'rxjs';
5
+ import { Observable, Subject, BehaviorSubject } from 'rxjs';
6
+ import * as centrifugal from 'centrifugal';
7
+ import * as i5 from '@angular/cdk/scrolling';
8
+ import { CdkScrollable } from '@angular/cdk/scrolling';
9
+
10
+ declare enum ScrollbarStates$1 {
11
+ NORMAL = 0,
12
+ PRESSED = 1,
13
+ HOVER = 2
14
+ }
15
+
16
+ /**
17
+ * CnScrollBarService
18
+ * Maximum performance for extremely large lists.
19
+ * It is based on algorithms for virtualization of screen objects.
20
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroll-bar/cn-scroll-bar-public.service.ts
21
+ * @author Evgenii Alexandrovich Grebennikov
22
+ * @email djonnyx@gmail.com
23
+ */
24
+ declare class CnScrollBarPublicService$1 {
25
+ private _internalService;
26
+ get $click(): rxjs.Observable<PointerEvent | MouseEvent>;
27
+ get $state(): rxjs.Observable<ScrollbarStates$1>;
28
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnScrollBarPublicService$1, never>;
29
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CnScrollBarPublicService$1>;
30
+ }
31
+
32
+ type ScrollbarState$1 = ScrollbarStates$1;
33
+
34
+ declare enum ScrollerDirection$2 {
35
+ HORIZONTAL = "horizontal",
36
+ VERTICAL = "vertical"
37
+ }
38
+
39
+ type ScrollerDirections$2 = ScrollerDirection$2 | 'horizontal' | 'vertical';
40
+
41
+ /**
42
+ * FloatOrPersentageValue
43
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/types/float-or-persentage-value.ts
44
+ * @author Evgenii Alexandrovich Grebennikov
45
+ * @email djonnyx@gmail.com
46
+ */
47
+ type FloatOrPersentageValue = number | `${number}%`;
48
+
49
+ type Operator = '+' | '-';
50
+ /**
51
+ * ArithmeticExpression
52
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/types/arithmetic-expression.ts
53
+ * @author Evgenii Alexandrovich Grebennikov
54
+ * @email djonnyx@gmail.com
55
+ */
56
+ type ArithmeticExpression = FloatOrPersentageValue | `${FloatOrPersentageValue}${Operator}${FloatOrPersentageValue}` | `${FloatOrPersentageValue} ${Operator} ${FloatOrPersentageValue}`;
57
+
58
+ /**
59
+ * Identifier type
60
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/types/id.ts
61
+ * @author Evgenii Alexandrovich Grebennikov
62
+ * @email djonnyx@gmail.com
63
+ */
64
+ type Id = string | number;
65
+
66
+ /**
67
+ * @license Copyright (c) 2026 Evgenii Alexandrovich Grebennikov (djonnyx@gmail.com tg: http://t.me/djonnyx).
68
+ */
69
+ type Color = `#${string}` | `rgb(${number},${number},${number})` | `rgba(${number},${number},${number},${number})` | `rgba(#${string},${number})`;
70
+
71
+ /**
72
+ * GradientColorPosition
73
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/types/gradient-position.ts
74
+ * @author Evgenii Alexandrovich Grebennikov
75
+ * @email djonnyx@gmail.com
76
+ */
77
+ type GradientColorPosition = `${number}%` | `${number}` | number | string;
78
+
79
+ /**
80
+ * GradientColorPositions
81
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/types/gradient-positions.ts
82
+ * @author Evgenii Alexandrovich Grebennikov
83
+ * @email djonnyx@gmail.com
84
+ */
85
+ type GradientColorPositions = [GradientColorPosition, GradientColorPosition];
86
+
87
+ /**
88
+ * TextDirections.
89
+ * RTL - right-to-left.
90
+ * LTR - left-to-right.
91
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/enums/text-directions.ts
92
+ * @author Evgenii Alexandrovich Grebennikov
93
+ * @email djonnyx@gmail.com
94
+ */
95
+ declare enum TextDirections {
96
+ RTL = "rtl",
97
+ LTR = "ltr"
98
+ }
99
+
100
+ /**
101
+ * TextDirection.
102
+ * 'rtl' - right-to-left.
103
+ * 'ltr' - left-to-right.
104
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/enums/text-directions.ts
105
+ * @author Evgenii Alexandrovich Grebennikov
106
+ * @email djonnyx@gmail.com
107
+ */
108
+ type TextDirection = TextDirections | 'rtl' | 'ltr';
109
+
110
+ /**
111
+ * LocaleSensitiveDirective
112
+ * Maximum performance for extremely large lists.
113
+ * It is based on algorithms for virtualization of screen objects.
114
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/directives/cn-locale-sensitive/cn-locale-sensitive.directive.ts
115
+ * @author Evgenii Alexandrovich Grebennikov
116
+ * @email djonnyx@gmail.com
117
+ */
118
+ declare class CnLocaleSensitiveDirective {
119
+ langTextDir: _angular_core.InputSignal<TextDirection>;
120
+ listDir: _angular_core.InputSignal<ScrollerDirections$2>;
121
+ private _elementRef;
122
+ constructor();
123
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnLocaleSensitiveDirective, never>;
124
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CnLocaleSensitiveDirective, "[localeSensitive]", never, { "langTextDir": { "alias": "langTextDir"; "required": false; "isSignal": true; }; "listDir": { "alias": "listDir"; "required": false; "isSignal": true; }; }, {}, never, never, false, never>;
125
+ }
126
+
127
+ declare class CnLocaleSensitiveModule {
128
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnLocaleSensitiveModule, never>;
129
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<CnLocaleSensitiveModule, [typeof CnLocaleSensitiveDirective], [typeof i2.CommonModule], [typeof CnLocaleSensitiveDirective]>;
130
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<CnLocaleSensitiveModule>;
131
+ }
132
+
133
+ /**
134
+ * VirtualClickDirective
135
+ * Maximum performance for extremely large lists.
136
+ * It is based on algorithms for virtualization of screen objects.
137
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/directives/cn-item-click/cn-item-click.directive.ts
138
+ * @author Evgenii Alexandrovich Grebennikov
139
+ * @email djonnyx@gmail.com
140
+ */
141
+ declare class CnVirtualClickDirective {
142
+ private _$maxDistance;
143
+ protected $maxDistance: rxjs.Observable<number | null>;
144
+ private _maxDistance;
145
+ set maxDistance(v: number | string);
146
+ onVirtualClick: _angular_core.OutputEmitterRef<PointerEvent | TouchEvent>;
147
+ onVirtualClickPress: _angular_core.OutputEmitterRef<PointerEvent | TouchEvent>;
148
+ onVirtualClickCancel: _angular_core.OutputEmitterRef<void>;
149
+ private _service;
150
+ private _elementRef;
151
+ private _destroyRef;
152
+ constructor();
153
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnVirtualClickDirective, never>;
154
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CnVirtualClickDirective, "[virtualClick]", never, { "maxDistance": { "alias": "maxClickDistance"; "required": false; }; }, { "onVirtualClick": "onVirtualClick"; "onVirtualClickPress": "onVirtualClickPress"; "onVirtualClickCancel": "onVirtualClickCancel"; }, never, never, false, never>;
155
+ }
156
+
157
+ declare class CnVirtualClickModule {
158
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnVirtualClickModule, never>;
159
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<CnVirtualClickModule, [typeof CnVirtualClickDirective], [typeof i2.CommonModule], [typeof CnVirtualClickDirective]>;
160
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<CnVirtualClickModule>;
161
+ }
162
+
163
+ /**
164
+ * IPoint
165
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/interfaces/point.ts
166
+ * @author Evgenii Alexandrovich Grebennikov
167
+ * @email djonnyx@gmail.com
168
+ */
169
+ interface IPoint {
170
+ /**
171
+ * X coordinate.
172
+ */
173
+ x: number;
174
+ /**
175
+ * Y coordinate.
176
+ */
177
+ y: number;
178
+ }
179
+
180
+ /**
181
+ * Area area Interface
182
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/interfaces/size.ts
183
+ * @author Evgenii Alexandrovich Grebennikov
184
+ * @email djonnyx@gmail.com
185
+ */
186
+ interface ISize {
187
+ /**
188
+ * Width value.
189
+ */
190
+ width: number;
191
+ /**
192
+ * Height value.
193
+ */
194
+ height: number;
195
+ }
196
+
197
+ /**
198
+ * Rectangular area interface
199
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/interfaces/rect.ts
200
+ * @author Evgenii Alexandrovich Grebennikov
201
+ * @email djonnyx@gmail.com
202
+ */
203
+ interface IRect extends ISize {
204
+ /**
205
+ * X coordinate.
206
+ */
207
+ x: number;
208
+ /**
209
+ * Y coordinate.
210
+ */
211
+ y: number;
212
+ }
213
+
214
+ /**
215
+ * Virtual list element model
216
+ * For tracking to work correctly, you must set a unique identifier (the property specified by trackBy).
217
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/models/item.model.ts
218
+ * @author Evgenii Alexandrovich Grebennikov
219
+ * @email djonnyx@gmail.com
220
+ */
221
+ type IVirtualListItem<E = Object> = E & {
222
+ /**
223
+ * The type of the collection item. Items with different types are cached in separate pools.
224
+ */
225
+ type?: string | symbol;
226
+ /**
227
+ * Props.
228
+ */
229
+ [x: string]: any;
230
+ };
231
+
232
+ /**
233
+ * Alignments
234
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/alignments.ts
235
+ * @author Evgenii Alexandrovich Grebennikov
236
+ * @email djonnyx@gmail.com
237
+ */
238
+ declare enum Alignments {
239
+ NONE = "none",
240
+ CENTER = "center"
241
+ }
242
+
243
+ /**
244
+ * Alignment
245
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/alignment.ts
246
+ * @author Evgenii Alexandrovich Grebennikov
247
+ * @email djonnyx@gmail.com
248
+ */
249
+ type Alignment = Alignments | 'none' | 'center';
250
+
251
+ /**
252
+ * IAnimationParams
253
+ * Maximum performance for extremely large lists.
254
+ * It is based on algorithms for virtualization of screen objects.
255
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/interfaces/animation-params.ts
256
+ * @author Evgenii Alexandrovich Grebennikov
257
+ * @email djonnyx@gmail.com
258
+ */
259
+ interface IAnimationParams$1 {
260
+ scrollToItem: number;
261
+ snapToItem: number;
262
+ navigateToItem: number;
263
+ navigateByKeyboard: number;
264
+ }
265
+
266
+ /**
267
+ * A value of -1 indicates the direction is up or left (if the list direction is horizontal).
268
+ * A value of 1 indicates the direction is down or right (if the list direction is horizontal).
269
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/types/scroll-direction.ts
270
+ * @author Evgenii Alexandrovich Grebennikov
271
+ * @email djonnyx@gmail.com
272
+ */
273
+ type ScrollDirection$1 = -1 | 1 | 0;
274
+
275
+ /**
276
+ * Interface IScrollEvent.
277
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/interfaces/scroll-event.ts
278
+ * @author Evgenii Alexandrovich Grebennikov
279
+ * @email djonnyx@gmail.com
280
+ */
281
+ interface IScrollEvent$1 {
282
+ /**
283
+ * Scroll area offset
284
+ */
285
+ scrollSize: number;
286
+ /**
287
+ * Full size of the scroll area
288
+ */
289
+ scrollWeight: number;
290
+ /**
291
+ * Viewport size
292
+ */
293
+ size: number;
294
+ /**
295
+ * Size of the list of elements
296
+ */
297
+ listSize: number;
298
+ /**
299
+ * Specifies whether the list orientation is vertical.
300
+ */
301
+ isVertical: boolean;
302
+ /**
303
+ * A value of -1 indicates the direction is up or left (if the list direction is horizontal).
304
+ * A value of 1 indicates the direction is down or right (if the list direction is horizontal).
305
+ */
306
+ direction: ScrollDirection$1;
307
+ /**
308
+ * If true then indicates that the list has been scrolled to the end.
309
+ */
310
+ isStart: boolean;
311
+ /**
312
+ * If true then indicates that the list has been scrolled to the end.
313
+ */
314
+ isEnd: boolean;
315
+ /**
316
+ * Delta of marked and unmarked area
317
+ */
318
+ delta: number;
319
+ /**
320
+ * Delta of new items
321
+ */
322
+ deltaOfNewItems: number;
323
+ /**
324
+ * Display items range
325
+ */
326
+ itemsRange: [number, number] | undefined;
327
+ /**
328
+ * Has user action
329
+ */
330
+ userAction: boolean;
331
+ }
332
+
333
+ /**
334
+ * Interface IScrollOptions.
335
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/interfaces/scroll-options.ts
336
+ * @author Evgenii Alexandrovich Grebennikov
337
+ * @email djonnyx@gmail.com
338
+ */
339
+ interface IScrollOptions$1 {
340
+ /**
341
+ * Default value is `0`.
342
+ */
343
+ iteration?: number;
344
+ /**
345
+ * Scroll behavior. Default value is `instant`.
346
+ */
347
+ behavior?: ScrollBehavior | 'auto' | 'instant' | 'smooth';
348
+ /**
349
+ * Specifies whether scrolling will smoothly transition to the previous animation. Default value is false.
350
+ */
351
+ blending?: boolean;
352
+ /**
353
+ * Determines whether the element will have focus after scrolling is complete. Default value is true.
354
+ */
355
+ focused?: boolean;
356
+ /**
357
+ * Delay.
358
+ */
359
+ delay?: number;
360
+ }
361
+
362
+ /**
363
+ * IScrollParams
364
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/interfaces/scroll-options.ts
365
+ * @author Evgenii Alexandrovich Grebennikov
366
+ * @email djonnyx@gmail.com
367
+ */
368
+ interface IScrollParams {
369
+ id: Id;
370
+ behavior?: ScrollBehavior;
371
+ blending?: boolean;
372
+ iteration?: number;
373
+ isLastIteration?: boolean;
374
+ scrollCalled?: boolean;
375
+ delay?: number;
376
+ cb?: () => void;
377
+ }
378
+
379
+ /**
380
+ * Interface IScrollingSettings.
381
+ * - frictionalForce - Frictional force. Default value is `0.035`.
382
+ * - mass - Mass. Default value is `0.005`.
383
+ * - maxDistance - Maximum scrolling distance. Default value is `12500`.
384
+ * - maxDuration - Maximum animation duration. Default value is `4000`.
385
+ * - speedScale - Speed scale. Default value is `15`.
386
+ * - optimization - Enables scrolling performance optimization. Default value is `true`.
387
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/interfaces/scrolling-settings.ts
388
+ * @author Evgenii Alexandrovich Grebennikov
389
+ * @email djonnyx@gmail.com
390
+ */
391
+ interface IScrollingSettings$1 {
392
+ /**
393
+ * Frictional force. Default value is `0.035`.
394
+ */
395
+ frictionalForce?: number;
396
+ /**
397
+ * Maximum animation duration. Default value is `4000`.
398
+ */
399
+ maxDuration?: number;
400
+ /**
401
+ * Mass. Default value is `0.005`.
402
+ */
403
+ mass?: number;
404
+ /**
405
+ * Maximum scrolling distance. Default value is `12500`.
406
+ */
407
+ maxDistance?: number;
408
+ /**
409
+ * Speed scale. Default value is `15`.
410
+ */
411
+ speedScale?: number;
412
+ /**
413
+ * Enables scrolling performance optimization. Default value is `true`.
414
+ */
415
+ optimization?: boolean;
416
+ }
417
+
418
+ /**
419
+ * IItemTransformation
420
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/prerender-container/interfaces/item-transformation.ts
421
+ * @author Evgenii Alexandrovich Grebennikov
422
+ * @email djonnyx@gmail.com
423
+ */
424
+ interface IItemTransformation {
425
+ x: number;
426
+ y: number;
427
+ z: number;
428
+ rotationX: number;
429
+ rotationY: number;
430
+ rotationZ: number;
431
+ scaleX: number;
432
+ scaleY: number;
433
+ scaleZ: number;
434
+ opacity: number;
435
+ filter?: string;
436
+ blendColor?: Color | null;
437
+ zIndex: number | string;
438
+ }
439
+
440
+ /**
441
+ * Sets `sticky` position, `collapsable` and `selectable` for the list item element. If `sticky` position is greater than `0`, then `sticky` position is applied.
442
+ * If the `sticky` value is greater than `0`, then the `sticky` position mode is enabled for the element. `1` - position start, `2` - position end. Default value is `0`.
443
+ * `selectable` determines whether an element can be selected or not. Default value is `true`.
444
+ * `collapsable` determines whether an element with a `sticky` property greater than zero can collapse and collapse elements in front that do not have a `sticky` property.
445
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/models/item-config-map.model.ts
446
+ * @author Evgenii Alexandrovich Grebennikov
447
+ * @email djonnyx@gmail.com
448
+ */
449
+ interface IVirtualListItemConfigMap {
450
+ [id: string | number]: IVirtualListItemConfig;
451
+ }
452
+ interface IVirtualListItemConfig {
453
+ /**
454
+ * Sets `sticky` position for the element. If sticky position is greater than `0`, then `sticky` position is applied.
455
+ * `1` - position start, `2` - position end.
456
+ * Default value is `0`.
457
+ */
458
+ sticky?: 0 | 1 | 2;
459
+ /**
460
+ * Determines whether an element with a `sticky` property greater than zero can collapse and collapse elements in front that do not have a `sticky` property.
461
+ * Default value is `false`.
462
+ */
463
+ collapsable?: boolean;
464
+ /**
465
+ * Determines whether an element can be selected or not.
466
+ * Default value is `true`.
467
+ */
468
+ selectable?: boolean;
469
+ /**
470
+ * Determines the size of an element when rendering lists with cell divisions. If sticky is 1 or 2, fullSize automatically becomes true.
471
+ * The default value is false.
472
+ */
473
+ fullSize?: boolean;
474
+ }
475
+
476
+ /**
477
+ * Virtual list elements collection interface
478
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/models/collection.model.ts
479
+ * @author Evgenii Alexandrovich Grebennikov
480
+ * @email djonnyx@gmail.com
481
+ */
482
+ interface IVirtualListCollection<E = Object> extends Array<IVirtualListItem<E>> {
483
+ }
484
+
485
+ /**
486
+ * Display object configuration.
487
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/models/display-object-config.model.ts
488
+ * @author Evgenii Alexandrovich Grebennikov
489
+ * @email djonnyx@gmail.com
490
+ */
491
+ interface IDisplayObjectConfig extends IRenderVirtualListItemConfig {
492
+ /**
493
+ * Determines whether the element has focused or not.
494
+ */
495
+ focused: boolean;
496
+ /**
497
+ * Determines whether the element is selected or not.
498
+ */
499
+ selected: boolean;
500
+ /**
501
+ * Determines whether the element is collapsed or not.
502
+ */
503
+ collapsed: boolean;
504
+ /**
505
+ * True if scroll capture occurs.
506
+ */
507
+ grabbing: boolean;
508
+ }
509
+
510
+ /**
511
+ * Display object metrics.
512
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/models/display-object-measures.model.ts
513
+ * @author Evgenii Alexandrovich Grebennikov
514
+ * @email djonnyx@gmail.com
515
+ */
516
+ interface IDisplayObjectMeasures extends IRect {
517
+ /**
518
+ * Item position
519
+ */
520
+ position: number;
521
+ /**
522
+ * Scroll size
523
+ */
524
+ scrollSize: number;
525
+ /**
526
+ * Item size
527
+ */
528
+ size: number;
529
+ /**
530
+ * Bounds size
531
+ */
532
+ boundsSize: number;
533
+ /**
534
+ * Start position in viewport
535
+ */
536
+ absoluteStartPosition: number;
537
+ /**
538
+ * Start position in viewport (percent)
539
+ */
540
+ absoluteStartPositionPercent: number;
541
+ /**
542
+ * End position in viewport
543
+ */
544
+ absoluteEndPosition: number;
545
+ /**
546
+ * End position in viewport (percent)
547
+ */
548
+ absoluteEndPositionPercent: number;
549
+ /**
550
+ * Delta is calculated for Snapping Method.ADVANCED
551
+ */
552
+ delta: number;
553
+ }
554
+
555
+ /**
556
+ * Measures for IRenderVirtualListItem
557
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/models/render-item-measures.model.ts
558
+ * @author Evgenii Alexandrovich Grebennikov
559
+ * @email djonnyx@gmail.com
560
+ */
561
+ interface IRenderVirtualListItemMeasures extends IRect {
562
+ /**
563
+ * The X coordinate after transformation.
564
+ */
565
+ transformedX: number;
566
+ /**
567
+ * The Y coordinate after transformation.
568
+ */
569
+ transformedY: number;
570
+ /**
571
+ * The Z coordinate.
572
+ */
573
+ z: number;
574
+ /**
575
+ * Rotation X
576
+ */
577
+ rotationX: number;
578
+ /**
579
+ * Rotation Y
580
+ */
581
+ rotationY: number;
582
+ /**
583
+ * Rotation Z
584
+ */
585
+ rotationZ: number;
586
+ /**
587
+ * Scale X
588
+ */
589
+ scaleX: number;
590
+ /**
591
+ * Scale Y
592
+ */
593
+ scaleY: number;
594
+ /**
595
+ * Scale Z
596
+ */
597
+ scaleZ: number;
598
+ /**
599
+ * Minimal width.
600
+ */
601
+ minWidth: number;
602
+ /**
603
+ * Minimal height.
604
+ */
605
+ minHeight: number;
606
+ /**
607
+ * Maximum width.
608
+ */
609
+ maxWidth: number;
610
+ /**
611
+ * Maximum height.
612
+ */
613
+ maxHeight: number;
614
+ /**
615
+ * Item position
616
+ */
617
+ position: number;
618
+ /**
619
+ * Scroll size
620
+ */
621
+ scrollSize: number;
622
+ /**
623
+ * Maximum scroll size
624
+ */
625
+ maCnScrollSize: number;
626
+ /**
627
+ * Item size
628
+ */
629
+ size: number;
630
+ /**
631
+ * Row
632
+ */
633
+ row: {
634
+ size: number;
635
+ /**
636
+ * Indicates that the element is odd.
637
+ */
638
+ odd: boolean;
639
+ /**
640
+ * Indicates that the element is even.
641
+ */
642
+ even: boolean;
643
+ };
644
+ /**
645
+ * Bounds size
646
+ */
647
+ boundsSize: number;
648
+ /**
649
+ * Start position in viewport
650
+ */
651
+ absoluteStartPosition: number;
652
+ /**
653
+ * Start position in viewport (percent)
654
+ */
655
+ absoluteStartPositionPercent: number;
656
+ /**
657
+ * End position in viewport
658
+ */
659
+ absoluteEndPosition: number;
660
+ /**
661
+ * End position in viewport (percent)
662
+ */
663
+ absoluteEndPositionPercent: number;
664
+ /**
665
+ * Scroll direction.
666
+ */
667
+ scrollDirection: ScrollDirection$1;
668
+ /**
669
+ * Delta is calculated for Snapping Method.ADVANCED
670
+ */
671
+ delta: number;
672
+ }
673
+
674
+ /**
675
+ * ItemTransform
676
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/types/item-transform.ts
677
+ * @author Evgenii Alexandrovich Grebennikov
678
+ * @email djonnyx@gmail.com
679
+ */
680
+ type ItemTransform = (index: number, measures: IRenderVirtualListItemMeasures, config: IRenderVirtualListItemConfig) => IItemTransformation;
681
+
682
+ /**
683
+ * Action modes for collection elements.
684
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/collection-modes.ts
685
+ * @author Evgenii Alexandrovich Grebennikov
686
+ * @email djonnyx@gmail.com
687
+ */
688
+ declare enum CollectionModes {
689
+ /**
690
+ * When adding elements to the beginning of the collection, the scroll remains at the current position.
691
+ */
692
+ NORMAL = "normal",
693
+ /**
694
+ * When adding elements to the beginning of the collection, the scroll is shifted by the sum of the sizes of the new elements.
695
+ */
696
+ LAZY = "lazy"
697
+ }
698
+
699
+ /**
700
+ * Axis of the arrangement of virtual list elements.
701
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/directions.ts
702
+ * @author Evgenii Alexandrovich Grebennikov
703
+ * @email djonnyx@gmail.com
704
+ */
705
+ declare enum Directions$1 {
706
+ /**
707
+ * Horizontal axis.
708
+ */
709
+ HORIZONTAL = "horizontal",
710
+ /**
711
+ * Vertical axis.
712
+ */
713
+ VERTICAL = "vertical"
714
+ }
715
+
716
+ /**
717
+ * Focus Alignments.
718
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/focus-alignments.ts
719
+ * @author Evgenii Alexandrovich Grebennikov
720
+ * @email djonnyx@gmail.com
721
+ */
722
+ declare enum FocusAlignments {
723
+ NONE = "none",
724
+ START = "start",
725
+ CENTER = "center",
726
+ END = "end"
727
+ }
728
+
729
+ /**
730
+ * Modes for collapsing list items.
731
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/collapsing-modes.ts
732
+ * @author Evgenii Alexandrovich Grebennikov
733
+ * @email djonnyx@gmail.com
734
+ */
735
+ declare enum CollapsingModes {
736
+ /**
737
+ * List items are not selectable.
738
+ */
739
+ NONE = "none",
740
+ /**
741
+ * List items are collapsed one by one.
742
+ */
743
+ MULTI_COLLAPSE = "multi-collapse",
744
+ /**
745
+ * Accordion collapsible list items.
746
+ */
747
+ ACCORDION = "accordion"
748
+ }
749
+
750
+ /**
751
+ * Mods for selecting list items.
752
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/selecting-modes.ts
753
+ * @author Evgenii Alexandrovich Grebennikov
754
+ * @email djonnyx@gmail.com
755
+ */
756
+ declare enum SelectingModes {
757
+ /**
758
+ * List items are not selectable.
759
+ */
760
+ NONE = "none",
761
+ /**
762
+ * List items are selected one by one.
763
+ */
764
+ SELECT = "select",
765
+ /**
766
+ * Multiple selection of list items.
767
+ */
768
+ MULTI_SELECT = "multi-select"
769
+ }
770
+
771
+ /**
772
+ * SnapToAtemAligns.
773
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/snap-to-item-aligns.ts
774
+ * @author Evgenii Alexandrovich Grebennikov
775
+ * @email djonnyx@gmail.com
776
+ */
777
+ declare enum SnapToItemAligns {
778
+ /**
779
+ * An anchor indicates the beginning of an element.
780
+ */
781
+ START = "start",
782
+ /**
783
+ * The anchor points to the middle of the element.
784
+ */
785
+ CENTER = "center",
786
+ /**
787
+ * An anchor indicates the end of an element.
788
+ */
789
+ END = "end"
790
+ }
791
+
792
+ /**
793
+ * Snapping method.
794
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/snapping-method.ts
795
+ * @author Evgenii Alexandrovich Grebennikov
796
+ * @email djonnyx@gmail.com
797
+ */
798
+ declare enum SnappingMethods {
799
+ /**
800
+ * The group is rendered on a background.
801
+ */
802
+ STANDART = "standart",
803
+ /**
804
+ * A mask is applied to the viewport area so that the background is displayed underneath the attached group.
805
+ */
806
+ ADVANCED = "advanced"
807
+ }
808
+
809
+ /**
810
+ * SpreadingModes.
811
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/spreading-modes.ts
812
+ * @author Evgenii Alexandrovich Grebennikov
813
+ * @email djonnyx@gmail.com
814
+ */
815
+ declare enum SpreadingModes {
816
+ /**
817
+ * List elements are ordered according to the collection sequence.
818
+ */
819
+ NORMAL = "normal",
820
+ /**
821
+ * List elements are ordered cyclically, forming an infinite list.
822
+ */
823
+ INFINITY = "infinity"
824
+ }
825
+
826
+ /**
827
+ * Focus Alignment
828
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/types/focus-alignment.ts
829
+ * @author Evgenii Alexandrovich Grebennikov
830
+ * @email djonnyx@gmail.com
831
+ */
832
+ type FocusAlignment = FocusAlignments | 'none' | 'start' | 'center' | 'end';
833
+
834
+ /**
835
+ * SnappingDistance
836
+ * Snapping activation distance. Can be specified as a percentage of the element size or in absolute values.
837
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/types/snapping-distance.ts
838
+ * @author Evgenii Alexandrovich Grebennikov
839
+ * @email djonnyx@gmail.com
840
+ */
841
+ type SnappingDistance = `${number}%` | number;
842
+
843
+ /**
844
+ * Action modes for collection elements.
845
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/collection-mode.ts
846
+ * @author Evgenii Alexandrovich Grebennikov
847
+ * @email djonnyx@gmail.com
848
+ */
849
+ type CollectionMode = CollectionModes | 'normal' | 'lazy';
850
+
851
+ /**
852
+ * Axis of the arrangement of virtual list elements.
853
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/direction.ts
854
+ * @author Evgenii Alexandrovich Grebennikov
855
+ * @email djonnyx@gmail.com
856
+ */
857
+ type Direction$1 = Directions$1 | 'horizontal' | 'vertical';
858
+
859
+ /**
860
+ * Modes for collapsing list items.
861
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/collapsing-mode.ts
862
+ * @author Evgenii Alexandrovich Grebennikov
863
+ * @email djonnyx@gmail.com
864
+ */
865
+ type CollapsingMode = CollapsingModes | 'none' | 'multi-collapse' | 'accordion';
866
+
867
+ /**
868
+ * Modes for selecting list items.
869
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/selecting-mode.ts
870
+ * @author Evgenii Alexandrovich Grebennikov
871
+ * @email djonnyx@gmail.com
872
+ */
873
+ type SelectingMode = SelectingModes | 'none' | 'select' | 'multi-select';
874
+
875
+ /**
876
+ * SnapToItemAlign.
877
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/snap-to-item-align.ts
878
+ * @author Evgenii Alexandrovich Grebennikov
879
+ * @email djonnyx@gmail.com
880
+ */
881
+ type SnapToItemAlign = SnapToItemAligns | 'start' | 'center' | 'end';
882
+
883
+ /**
884
+ * Snapping method.
885
+ * 'standart' - Classic group visualization.
886
+ * 'advanced' - A mask is applied to the viewport area so that the background is displayed underneath the attached group.
887
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/snapping-method.ts
888
+ * @author Evgenii Alexandrovich Grebennikov
889
+ * @email djonnyx@gmail.com
890
+ */
891
+ type SnappingMethod = SnappingMethods | 'standart' | 'advanced';
892
+
893
+ /**
894
+ * SpreadingMode
895
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/spreading-mode.ts
896
+ * @author Evgenii Alexandrovich Grebennikov
897
+ * @email djonnyx@gmail.com
898
+ */
899
+ type SpreadingMode = SpreadingModes | 'normal' | 'infinity';
900
+
901
+ /**
902
+ * Object with configuration parameters for IRenderVirtualListItem
903
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/models/render-item-config.model.ts
904
+ * @author Evgenii Alexandrovich Grebennikov
905
+ * @email djonnyx@gmail.com
906
+ */
907
+ interface IRenderVirtualListItemConfig {
908
+ /**
909
+ * Determines whether an element is new in the collection.
910
+ */
911
+ new: boolean;
912
+ /**
913
+ * Indicates that the element is odd.
914
+ */
915
+ odd: boolean;
916
+ /**
917
+ * Indicates that the element is even.
918
+ */
919
+ even: boolean;
920
+ /**
921
+ * Determines whether an element with a `sticky` property greater than zero can collapse and collapse elements in front that do not have a `sticky` property.
922
+ * Default value is `false`.
923
+ */
924
+ collapsable: boolean;
925
+ /**
926
+ * If greater than 0, the element will have a sticky position with the given zIndex.
927
+ */
928
+ sticky: 0 | 1 | 2;
929
+ /**
930
+ * Determines whether an element can be selected or not. Default value is `true`.
931
+ */
932
+ selectable: boolean;
933
+ /**
934
+ * Specifies whether the element will snap.
935
+ */
936
+ snap: boolean;
937
+ /**
938
+ * Indicates that the element is snapped.
939
+ */
940
+ snapped: boolean;
941
+ /**
942
+ * Indicates that the element is being shifted by another snap element.
943
+ */
944
+ snappedOut: boolean;
945
+ /**
946
+ * Indicates that the element is a vertical list item.
947
+ */
948
+ isVertical: boolean;
949
+ /**
950
+ * Specifies that the element adapts to the size of its content.
951
+ */
952
+ dynamic: boolean;
953
+ /**
954
+ * Returns true if the snapping method is advanced
955
+ */
956
+ isSnappingMethodAdvanced: boolean;
957
+ /**
958
+ * layout offset;
959
+ */
960
+ layoutOffset: number;
961
+ /**
962
+ * layout index offset;
963
+ */
964
+ layoutIndexOffset: number;
965
+ /**
966
+ * Tab index.
967
+ */
968
+ tabIndex: number;
969
+ /**
970
+ * z-index
971
+ */
972
+ zIndex: string;
973
+ /**
974
+ * Opacity.
975
+ */
976
+ opacity: number;
977
+ /**
978
+ * Filter.
979
+ */
980
+ filter?: string;
981
+ /**
982
+ * Blend color.
983
+ */
984
+ blendColor?: Color | null;
985
+ /**
986
+ * Determines whether an element is a stub.
987
+ */
988
+ isStub?: boolean;
989
+ /**
990
+ * Division number.
991
+ */
992
+ divides: number;
993
+ /**
994
+ * Snap to an item. The default value is `false`.
995
+ */
996
+ snapToItem: boolean;
997
+ /**
998
+ * Alignment for snapToItem. Available values ​​are `start`, `center`, and `end`. The default value is `center`.
999
+ */
1000
+ snapToItemAlign: SnapToItemAlign;
1001
+ /**
1002
+ * Indicates whether the element is the first in the collection.
1003
+ */
1004
+ isFirst: boolean;
1005
+ /**
1006
+ * Indicates whether the element is the last one in the collection.
1007
+ */
1008
+ isLast: boolean;
1009
+ /**
1010
+ * Determines the size of an element when rendering lists with cell divisions. If sticky is 1 or 2, fullSize automatically becomes true.
1011
+ */
1012
+ fullSize: boolean;
1013
+ /**
1014
+ * Number of elements in the collection to be visualized.
1015
+ */
1016
+ totalItems: number;
1017
+ /**
1018
+ * Indicates layout inversion.
1019
+ */
1020
+ inverted: boolean;
1021
+ }
1022
+
1023
+ /**
1024
+ * List screen element model
1025
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/models/render-item.model.ts
1026
+ * @author Evgenii Alexandrovich Grebennikov
1027
+ * @email djonnyx@gmail.com
1028
+ */
1029
+ interface IRenderVirtualListItem<E = any> {
1030
+ /**
1031
+ * Element index.
1032
+ */
1033
+ index: number;
1034
+ /**
1035
+ * Unique identifier of the element.
1036
+ */
1037
+ id: Id;
1038
+ /**
1039
+ * Element metrics.
1040
+ */
1041
+ measures: IRenderVirtualListItemMeasures;
1042
+ /**
1043
+ * Element data.
1044
+ */
1045
+ data: IVirtualListItem<E>;
1046
+ /**
1047
+ * Previous element data.
1048
+ */
1049
+ previouseData: IVirtualListItem<E>;
1050
+ /**
1051
+ * Next element data.
1052
+ */
1053
+ nextData: IVirtualListItem<E>;
1054
+ /**
1055
+ * Object with configuration parameters for IRenderVirtualListItem.
1056
+ */
1057
+ config: IRenderVirtualListItemConfig;
1058
+ }
1059
+
1060
+ /**
1061
+ * FocusItemParams
1062
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/types/focus-item-params.ts
1063
+ * @author Evgenii Alexandrovich Grebennikov
1064
+ * @email djonnyx@gmail.com
1065
+ */
1066
+ type FocusItemParams = {
1067
+ element: HTMLElement;
1068
+ position: number;
1069
+ align?: FocusAlignment;
1070
+ behavior?: ScrollBehavior;
1071
+ };
1072
+
1073
+ /**
1074
+ * CnVirtualListPublicService
1075
+ * Maximum performance for extremely large lists.
1076
+ * It is based on algorithms for virtualization of screen objects.
1077
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/cn-virtual-list-publick.service.ts
1078
+ * @author Evgenii Alexandrovich Grebennikov
1079
+ * @email djonnyx@gmail.com
1080
+ */
1081
+ declare class CnVirtualListPublicService {
1082
+ private _internalService;
1083
+ /**
1084
+ * Unique list identifier.
1085
+ */
1086
+ get id(): number;
1087
+ /**
1088
+ * Informs about a click on a list item.
1089
+ */
1090
+ get $virtualClick(): Observable<IRenderVirtualListItem<any> | null>;
1091
+ /**
1092
+ * Informs about the selection of a list item(s).
1093
+ */
1094
+ get $selectedIds(): Observable<Array<Id> | Id | null>;
1095
+ /**
1096
+ * Informs about the collapse (expanding) of a list element(s).
1097
+ */
1098
+ get $collapsedIds(): Observable<Array<Id>>;
1099
+ /**
1100
+ * Informs the focus on the specified list item.
1101
+ */
1102
+ get $focusItem(): Observable<FocusItemParams>;
1103
+ /**
1104
+ * Notifies about the next change detection tick. Works similarly to `setTimeout` with a timeout of 0.
1105
+ */
1106
+ get $tick(): Observable<void>;
1107
+ /**
1108
+ * Specifies a list of selected items.
1109
+ */
1110
+ set selectedIds(ids: Array<Id> | Id | null);
1111
+ /**
1112
+ * Returns a list of selected items.
1113
+ */
1114
+ get selectedIds(): Array<Id> | Id | null;
1115
+ /**
1116
+ * Specifies a list of collapsed elements.
1117
+ */
1118
+ set collapsedIds(ids: Array<Id>);
1119
+ /**
1120
+ * Returns a list of collapsed elements.
1121
+ */
1122
+ get collapsedIds(): Array<Id>;
1123
+ /**
1124
+ * Updates the list
1125
+ * @param immediately - Indicates that the list is updated instantly.
1126
+ */
1127
+ update(immediately?: boolean): void;
1128
+ /**
1129
+ * Selects a list item
1130
+ * @param id
1131
+ * @param selected - If the value is undefined, then the toggle method is executed, if false or true, then the selection/deselection is performed.
1132
+ */
1133
+ select(id: Id, selected?: boolean | undefined): void;
1134
+ /**
1135
+ * Collapse list items
1136
+ * @param id
1137
+ * @param collapsed - If the value is undefined, then the toggle method is executed, if false or true, then the collapse/expand is performed.
1138
+ */
1139
+ collapse(id: Id, collapsed?: boolean | undefined): void;
1140
+ /**
1141
+ * Focus an list item by a given id.
1142
+ */
1143
+ focus(id: Id, align?: FocusAlignment, scrollBehavior?: ScrollBehavior): void;
1144
+ /**
1145
+ * The method scrolls the list to the element with the given `id` and returns the value of the scrolled area.
1146
+ */
1147
+ scrollTo(id: Id, cb?: (() => void) | null, options?: IScrollOptions$1 | null): void;
1148
+ /**
1149
+ * Scrolls the scroll area to the first item in the collection.
1150
+ */
1151
+ scrollToStart(options?: IScrollOptions$1): void;
1152
+ /**
1153
+ * Scrolls the list to the end of the content size.
1154
+ */
1155
+ scrollToEnd(options?: IScrollOptions$1): void;
1156
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnVirtualListPublicService, never>;
1157
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CnVirtualListPublicService>;
1158
+ }
1159
+
1160
+ /**
1161
+ * BaseVirtualListItemComponent
1162
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/list-item/interfaces/template-context.ts
1163
+ * @author Evgenii Alexandrovich Grebennikov
1164
+ * @email djonnyx@gmail.com
1165
+ */
1166
+ interface ITemplateContext<D = any> {
1167
+ /**
1168
+ * API provider.
1169
+ */
1170
+ api: CnVirtualListPublicService;
1171
+ /**
1172
+ * List item data.
1173
+ */
1174
+ data: D;
1175
+ /**
1176
+ * Data of the previous list item.
1177
+ */
1178
+ prevData: D;
1179
+ /**
1180
+ * Data of the next list item.
1181
+ */
1182
+ nextData: D;
1183
+ /**
1184
+ * List item measurement data.
1185
+ */
1186
+ measures: IDisplayObjectMeasures | null;
1187
+ /**
1188
+ * List item configuration.
1189
+ */
1190
+ config: IDisplayObjectConfig;
1191
+ /**
1192
+ * Indicates a reset state.
1193
+ */
1194
+ reseted: boolean;
1195
+ /**
1196
+ * List item index.
1197
+ */
1198
+ index: number;
1199
+ }
1200
+
1201
+ /**
1202
+ * Virtual list screen elements collection interface
1203
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/models/render-collection.model.ts
1204
+ * @author Evgenii Alexandrovich Grebennikov
1205
+ * @email djonnyx@gmail.com
1206
+ */
1207
+ interface IRenderVirtualListCollection extends Array<IRenderVirtualListItem> {
1208
+ }
1209
+
1210
+ declare class CMap<K = string, V = any> {
1211
+ protected _dict: {
1212
+ [k: string | number]: V;
1213
+ };
1214
+ constructor(dict?: CMap<K, V>);
1215
+ from(dict?: CMap<K, V>): void;
1216
+ get(key: K): V;
1217
+ set(key: K, value: V): this;
1218
+ has(key: K): boolean;
1219
+ delete(key: K): void;
1220
+ clear(): void;
1221
+ toObject(): {
1222
+ [k: string]: V;
1223
+ [k: number]: V;
1224
+ };
1225
+ }
1226
+
1227
+ /**
1228
+ * Easing
1229
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/utils/animator/types/easing.ts
1230
+ * @author Evgenii Alexandrovich Grebennikov
1231
+ * @email djonnyx@gmail.com
1232
+ */
1233
+ type Easing = (v: number) => number;
1234
+
1235
+ /**
1236
+ * IAnimatorUpdateData
1237
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/utils/animator/interfaces/animator-update-data.ts
1238
+ * @author Evgenii Alexandrovich Grebennikov
1239
+ * @email djonnyx@gmail.com
1240
+ */
1241
+ interface IAnimatorUpdateData {
1242
+ id: number;
1243
+ timestamp: number;
1244
+ elapsed: number;
1245
+ delta: number;
1246
+ value: number;
1247
+ }
1248
+
1249
+ /**
1250
+ * IAnimatorParams
1251
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/utils/animator/interfaces/animator-params.ts
1252
+ * @author Evgenii Alexandrovich Grebennikov
1253
+ * @email djonnyx@gmail.com
1254
+ */
1255
+ interface IAnimatorParams {
1256
+ startValue: number;
1257
+ endValue: number;
1258
+ duration?: number;
1259
+ withDelta?: boolean;
1260
+ getPropValue?: () => number;
1261
+ easingFunction?: Easing;
1262
+ onUpdate?: (data: IAnimatorUpdateData) => void;
1263
+ onComplete?: (data: IAnimatorUpdateData) => void;
1264
+ }
1265
+
1266
+ /**
1267
+ * Animator
1268
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/utils/animator/animator.ts
1269
+ * @author Evgenii Alexandrovich Grebennikov
1270
+ * @email djonnyx@gmail.com
1271
+ */
1272
+ declare class Animator {
1273
+ private static _nextId;
1274
+ private _animationId;
1275
+ get animated(): boolean;
1276
+ get isAnimated(): boolean;
1277
+ private _currentId;
1278
+ get id(): number;
1279
+ private generateId;
1280
+ private _diff;
1281
+ private _startValue;
1282
+ private _endValue;
1283
+ private _prevPos;
1284
+ updateTo(end: number): boolean;
1285
+ animate(params: IAnimatorParams): number;
1286
+ hasAnimation(id?: number): boolean;
1287
+ stop(id?: number): void;
1288
+ dispose(): void;
1289
+ }
1290
+
1291
+ type TEventHandler = (...args: Array<any>) => void;
1292
+ /**
1293
+ * Event emitter
1294
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/common/utils/event-emitter/event-emitter.ts
1295
+ * @author Evgenii Alexandrovich Grebennikov
1296
+ * @email djonnyx@gmail.com
1297
+ */
1298
+ declare class EventEmitter<E = string, H = TEventHandler> {
1299
+ protected _listeners: {
1300
+ [eventName: string]: Array<TEventHandler>;
1301
+ };
1302
+ protected _disposed: boolean;
1303
+ constructor();
1304
+ /**
1305
+ * Emits the event
1306
+ */
1307
+ dispatch(event: E, ...args: Array<any>): void;
1308
+ /**
1309
+ * Emits the event async
1310
+ */
1311
+ dispatchAsync(event: E, ...args: Array<any>): void;
1312
+ /**
1313
+ * Returns true if the event listener is already subscribed.
1314
+ */
1315
+ hasEventListener(eventName: E, handler: H): boolean;
1316
+ /**
1317
+ * Add event listener
1318
+ */
1319
+ addEventListener(eventName: E, handler: H): void;
1320
+ /**
1321
+ * Remove event listener
1322
+ */
1323
+ removeEventListener(eventName: E, handler: H): void;
1324
+ /**
1325
+ * Remove all listeners
1326
+ */
1327
+ removeAllListeners(): void;
1328
+ /**
1329
+ * Method of destroying handlers
1330
+ */
1331
+ dispose(): void;
1332
+ }
1333
+
1334
+ interface ICacheMap<I = any, B = any> {
1335
+ set: (id: I, bounds: B) => CMap<I, B>;
1336
+ has: (id: I) => boolean;
1337
+ get: (id: I) => B | undefined;
1338
+ delete: (id: I) => void;
1339
+ clear: () => void;
1340
+ }
1341
+ declare const CACHE_BOX_CHANGE_EVENT_NAME = "change";
1342
+ type CacheMapEvents$1 = typeof CACHE_BOX_CHANGE_EVENT_NAME;
1343
+ type OnChangeEventListener$1 = (version: number) => void;
1344
+ type CacheMapListeners$1 = OnChangeEventListener$1;
1345
+ /**
1346
+ * Cache map.
1347
+ * Emits a change event on each mutation.
1348
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/cache-map.ts
1349
+ * @author Evgenii Alexandrovich Grebennikov
1350
+ * @email djonnyx@gmail.com
1351
+ */
1352
+ declare class CacheMap<I = string | number, B = any, E = CacheMapEvents$1, L = CacheMapListeners$1> extends EventEmitter<E, L> implements ICacheMap {
1353
+ protected _map: CMap<I, B>;
1354
+ protected _snapshot: CMap<I, B>;
1355
+ protected _version: number;
1356
+ protected _previousVersion: number;
1357
+ protected _lifeCircleId: any;
1358
+ protected _delta: number;
1359
+ get delta(): number;
1360
+ get version(): number;
1361
+ constructor();
1362
+ protected changesDetected(): boolean;
1363
+ protected stopLifeCircle(): void;
1364
+ protected nextTick(cb: () => void): any;
1365
+ protected lifeCircle(): void;
1366
+ protected lifeCircleDo(): void;
1367
+ protected bumpVersion(): void;
1368
+ protected fireChangeIfNeed(): void;
1369
+ set(id: I, bounds: B): CMap<I, B>;
1370
+ has(id: I): boolean;
1371
+ get(id: I): B | undefined;
1372
+ delete(id: I): void;
1373
+ clear(): void;
1374
+ snapshot(): void;
1375
+ dispose(): void;
1376
+ }
1377
+
1378
+ type TrackingPropertyId = string | number;
1379
+ /**
1380
+ * Tracks display items by property
1381
+ * Maximum performance for extremely large lists.
1382
+ * It is based on algorithms for virtualization of screen objects.
1383
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/tracker.ts
1384
+ * @author Evgenii Alexandrovich Grebennikov
1385
+ * @email djonnyx@gmail.com
1386
+ */
1387
+ declare class Tracker<C extends BaseVirtualListItemComponent = any> {
1388
+ /**
1389
+ * display objects dictionary of indexes by id
1390
+ */
1391
+ protected _displayObjectIndexMapById: {
1392
+ [id: number]: number;
1393
+ };
1394
+ set displayObjectIndexMapById(v: {
1395
+ [id: number]: number;
1396
+ });
1397
+ get displayObjectIndexMapById(): {
1398
+ [id: number]: number;
1399
+ };
1400
+ /**
1401
+ * Dictionary displayItems propertyNameId by items propertyNameId
1402
+ */
1403
+ protected _trackMap: CMap<TrackingPropertyId, number>;
1404
+ get trackMap(): CMap<TrackingPropertyId, number>;
1405
+ protected _trackingPropertyName: string;
1406
+ set trackingPropertyName(v: string);
1407
+ constructor(trackingPropertyName: string);
1408
+ private tearOutSnapedDisplayObjectByItemId;
1409
+ /**
1410
+ * tracking by propName
1411
+ */
1412
+ track(items: IRenderVirtualListCollection, components: Array<ComponentRef<C>>, snappedComponents: Array<ComponentRef<C>> | null | undefined, direction: ScrollDirection$1, trackBy: string): void;
1413
+ untrackComponentByIdProperty(component?: C): void;
1414
+ clearTrackMap(): void;
1415
+ dispose(): void;
1416
+ }
1417
+
1418
+ /**
1419
+ * PrerenderCache
1420
+ * Maximum performance for extremely large lists.
1421
+ * It is based on algorithms for virtualization of screen objects.
1422
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/prerender-container/types/cache.ts
1423
+ * @author Evgenii Alexandrovich Grebennikov
1424
+ * @email djonnyx@gmail.com
1425
+ */
1426
+ type PrerenderCache = {
1427
+ [id: Id]: ISize;
1428
+ };
1429
+
1430
+ declare const WIDTH_PROP_NAME = "width";
1431
+ declare const HEIGHT_PROP_NAME = "height";
1432
+
1433
+ /**
1434
+ * IItem
1435
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/interfaces/item.ts
1436
+ * @author Evgenii Alexandrovich Grebennikov
1437
+ * @email djonnyx@gmail.com
1438
+ */
1439
+ interface IItem<I = any> {
1440
+ [prop: string]: I;
1441
+ }
1442
+
1443
+ /**
1444
+ * IMetrics
1445
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/interfaces/metrics.ts
1446
+ * @author Evgenii Alexandrovich Grebennikov
1447
+ * @email djonnyx@gmail.com
1448
+ */
1449
+ interface IMetrics<I extends IItem> {
1450
+ delta: number;
1451
+ inverted: boolean;
1452
+ normalizedItemWidth: number;
1453
+ normalizedItemHeight: number;
1454
+ width: number;
1455
+ height: number;
1456
+ dynamicSize: boolean;
1457
+ divides: number;
1458
+ itemSize: number;
1459
+ minItemSize: number;
1460
+ maxItemSize: number;
1461
+ items: Array<I>;
1462
+ itemsFromStartToScrollEnd: number;
1463
+ itemsFromStartToDisplayEnd: number;
1464
+ itemsOnDisplayWeight: number;
1465
+ itemsOnDisplayLength: number;
1466
+ isVertical: boolean;
1467
+ leftHiddenItemsWeight: number;
1468
+ leftItemLength: number;
1469
+ leftItemsWeight: number;
1470
+ leftLayoutOffset: number;
1471
+ leftLayoutIndexOffset: number;
1472
+ renderItems: number;
1473
+ rightItemLength: number;
1474
+ rightItemsWeight: number;
1475
+ scrollSize: number;
1476
+ maCnScrollSize: number;
1477
+ leftSizeOfAddedItems: number;
1478
+ sizeProperty: typeof HEIGHT_PROP_NAME | typeof WIDTH_PROP_NAME;
1479
+ stickyEnabled: boolean;
1480
+ stickyPos: number;
1481
+ startIndex: number;
1482
+ startPosition: number;
1483
+ totalItemsToDisplayEndWeight: number;
1484
+ totalLength: number;
1485
+ totalSize: number;
1486
+ typicalItemSize: number;
1487
+ isFromItemIdFound: boolean;
1488
+ isUpdating: boolean;
1489
+ snapToItem: boolean;
1490
+ snapToItemAlign: SnapToItemAlign;
1491
+ itemTransform: ItemTransform | null;
1492
+ }
1493
+
1494
+ /**
1495
+ * IRecalculateMetricsOptions
1496
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/interfaces/recalculate-metrics-options.ts
1497
+ * @author Evgenii Alexandrovich Grebennikov
1498
+ * @email djonnyx@gmail.com
1499
+ */
1500
+ interface IRecalculateMetricsOptions<I extends IItem, C extends Array<I>> {
1501
+ alignment: Alignment;
1502
+ bounds: ISize;
1503
+ collection: C;
1504
+ isVertical: boolean;
1505
+ itemSize: number;
1506
+ minItemSize: number;
1507
+ maxItemSize: number;
1508
+ bufferSize: number;
1509
+ maxBufferSize: number;
1510
+ dynamicSize: boolean;
1511
+ scrollSize: number;
1512
+ stickyEnabled: boolean;
1513
+ enabledBufferOptimization: boolean;
1514
+ fromItemId?: Id;
1515
+ previousTotalSize: number;
1516
+ crudDetected: boolean;
1517
+ deletedItemsMap: {
1518
+ [index: number]: ISize;
1519
+ };
1520
+ snapToItem: boolean;
1521
+ snapToItemAlign: SnapToItemAlign;
1522
+ inverted: boolean;
1523
+ itemTransform: ItemTransform | null;
1524
+ }
1525
+
1526
+ /**
1527
+ * IGetItemPositionOptions
1528
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/interfaces/get-item-position-options.ts
1529
+ * @author Evgenii Alexandrovich Grebennikov
1530
+ * @email djonnyx@gmail.com
1531
+ */
1532
+ interface IGetItemPositionOptions<I extends IItem, C extends Array<I>> extends Omit<IRecalculateMetricsOptions<I, C>, 'previousTotalSize' | 'crudDetected' | 'deletedItemsMap'> {
1533
+ }
1534
+
1535
+ /**
1536
+ * IUpdateCollectionOptions
1537
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/interfaces/update-collection-options.ts
1538
+ * @author Evgenii Alexandrovich Grebennikov
1539
+ * @email djonnyx@gmail.com
1540
+ */
1541
+ interface IUpdateCollectionOptions<I extends IItem, C extends Array<I>> extends Omit<IRecalculateMetricsOptions<I, C>, 'collection' | 'previousTotalSize' | 'crudDetected' | 'deletedItemsMap'> {
1542
+ }
1543
+
1544
+ /**
1545
+ * IGetMetricsReturns
1546
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/interfaces/get-metrics-returns.ts
1547
+ * @author Evgenii Alexandrovich Grebennikov
1548
+ * @email djonnyx@gmail.com
1549
+ */
1550
+ interface IGetMetricsReturns {
1551
+ totalSize: number;
1552
+ delta: number;
1553
+ crudDetected: boolean;
1554
+ }
1555
+
1556
+ /**
1557
+ * IUpdateCollectionReturns
1558
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/interfaces/update-collection-returns.ts
1559
+ * @author Evgenii Alexandrovich Grebennikov
1560
+ * @email djonnyx@gmail.com
1561
+ */
1562
+ interface IUpdateCollectionReturns {
1563
+ displayItems: IRenderVirtualListCollection;
1564
+ totalSize: number;
1565
+ leftLayoutOffset: number;
1566
+ delta: number;
1567
+ crudDetected: boolean;
1568
+ }
1569
+
1570
+ /**
1571
+ * ItemDisplayMethods
1572
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/enums/item-display-methods.ts
1573
+ * @author Evgenii Alexandrovich Grebennikov
1574
+ * @email djonnyx@gmail.com
1575
+ */
1576
+ declare enum ItemDisplayMethods {
1577
+ CREATE = 0,
1578
+ UPDATE = 1,
1579
+ DELETE = 2,
1580
+ NOT_CHANGED = 3
1581
+ }
1582
+
1583
+ /**
1584
+ * Cache
1585
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/types/cache.ts
1586
+ * @author Evgenii Alexandrovich Grebennikov
1587
+ * @email djonnyx@gmail.com
1588
+ */
1589
+ type Cache = ISize & {
1590
+ method?: ItemDisplayMethods;
1591
+ } & IItem;
1592
+
1593
+ /**
1594
+ * TrackBoxEvents
1595
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/events/track-box-events.ts
1596
+ * @author Evgenii Alexandrovich Grebennikov
1597
+ * @email djonnyx@gmail.com
1598
+ */
1599
+ declare enum TrackBoxEvents {
1600
+ CHANGE = "change",
1601
+ TICK = "tick"
1602
+ }
1603
+
1604
+ /**
1605
+ * CacheMapEvents
1606
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/types/cache-map-events.ts
1607
+ * @author Evgenii Alexandrovich Grebennikov
1608
+ * @email djonnyx@gmail.com
1609
+ */
1610
+ type CacheMapEvents = TrackBoxEvents;
1611
+
1612
+ /**
1613
+ * OnChangeEventListener
1614
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/types/on-change-event-listener.ts
1615
+ * @author Evgenii Alexandrovich Grebennikov
1616
+ * @email djonnyx@gmail.com
1617
+ */
1618
+ type OnChangeEventListener = (version: number) => void;
1619
+
1620
+ /**
1621
+ * OnTickEventListener
1622
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/types/on-tick-event-listener.ts
1623
+ * @author Evgenii Alexandrovich Grebennikov
1624
+ * @email djonnyx@gmail.com
1625
+ */
1626
+ type OnTickEventListener = () => void;
1627
+
1628
+ /**
1629
+ * CacheMapListeners
1630
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/types/cache-map-listeners.ts
1631
+ * @author Evgenii Alexandrovich Grebennikov
1632
+ * @email djonnyx@gmail.com
1633
+ */
1634
+ type CacheMapListeners = OnChangeEventListener | OnTickEventListener;
1635
+
1636
+ /**
1637
+ * An object that performs tracking, calculations and caching.
1638
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/core/track-box.ts
1639
+ * @author Evgenii Alexandrovich Grebennikov
1640
+ * @email djonnyx@gmail.com
1641
+ */
1642
+ declare class TrackBox<C extends BaseVirtualListItemComponent = any> extends CacheMap<Id, Cache, CacheMapEvents, CacheMapListeners> {
1643
+ protected _tracker: Tracker<C>;
1644
+ protected _items: IRenderVirtualListCollection | null | undefined;
1645
+ set items(v: IRenderVirtualListCollection | null | undefined);
1646
+ protected _displayComponents: Array<ComponentRef<C>> | null | undefined;
1647
+ set displayComponents(v: Array<ComponentRef<C>> | null | undefined);
1648
+ protected _snappedDisplayComponents: Array<ComponentRef<C>> | null | undefined;
1649
+ set snappedDisplayComponents(v: Array<ComponentRef<C>> | null | undefined);
1650
+ protected _scrollDirection: ScrollDirection$1;
1651
+ set scrollDirection(v: ScrollDirection$1);
1652
+ get scrollDirection(): ScrollDirection$1;
1653
+ protected _trackBy: string;
1654
+ set trackBy(v: string);
1655
+ get trackBy(): string;
1656
+ protected _divides: number;
1657
+ set divides(v: number);
1658
+ protected _isInfinity: boolean;
1659
+ set isInfinity(v: boolean);
1660
+ protected _isSnappingMethodAdvanced: boolean;
1661
+ set isSnappingMethodAdvanced(v: boolean);
1662
+ protected _isLazy: boolean;
1663
+ set isLazy(v: boolean);
1664
+ /**
1665
+ * Set the trackBy property
1666
+ */
1667
+ set trackingPropertyName(v: string);
1668
+ protected _trackingPropertyName: string;
1669
+ protected _isScrollStart: boolean;
1670
+ set isScrollStart(v: boolean);
1671
+ protected _isScrollEnd: boolean;
1672
+ set isScrollEnd(v: boolean);
1673
+ protected _isScrollSnapToStart: boolean;
1674
+ get isSnappedToStart(): boolean;
1675
+ protected _isScrollSnapToEnd: boolean;
1676
+ get isSnappedToEnd(): boolean;
1677
+ protected _scrollStartOffset: number;
1678
+ set scrollStartOffset(v: number);
1679
+ get scrollStartOffset(): number;
1680
+ protected _scrollEndOffset: number;
1681
+ set scrollEndOffset(v: number);
1682
+ get scrollEndOffset(): number;
1683
+ constructor(trackingPropertyName: string);
1684
+ protected initialize(): void;
1685
+ set(id: Id, cache: Cache): CMap<Id, ISize>;
1686
+ protected _previousCollection: Array<IItem> | null | undefined;
1687
+ protected _deletedItemsMap: {
1688
+ [index: number]: ISize;
1689
+ };
1690
+ protected _crudDetected: boolean;
1691
+ get crudDetected(): boolean;
1692
+ protected fireChangeIfNeed(): void;
1693
+ protected fireTick(): void;
1694
+ protected _previousTotalSize: number;
1695
+ protected _deltaOfNewItems: number;
1696
+ get deltaOfNewItems(): number;
1697
+ isAdaptiveBuffer: boolean;
1698
+ protected _bufferSequenceExtraThreshold: number;
1699
+ protected _maxBufferSequenceLength: number;
1700
+ protected _bufferSizeSequence: Array<number>;
1701
+ protected _bufferSize: number;
1702
+ get bufferSize(): number;
1703
+ protected _defaultBufferSize: number;
1704
+ protected _maxBufferSize: number;
1705
+ protected _resetBufferSizeTimeout: number;
1706
+ protected _resetBufferSizeTimer: number | undefined;
1707
+ protected _isReseted: boolean;
1708
+ private _prerenderedCache;
1709
+ private _newItems;
1710
+ protected lifeCircle(): void;
1711
+ /**
1712
+ * Scans the collection for deleted items and flushes the deleted item cache.
1713
+ */
1714
+ resetCollection<I extends IItem, C extends Array<I>>(currentCollection: C | null | undefined, itemSize: number): void;
1715
+ /**
1716
+ * Update the cache of items from the list
1717
+ */
1718
+ protected updateCache<I extends IItem, C extends Array<I>>(previousCollection: C | null | undefined, currentCollection: C | null | undefined, itemSize: number): void;
1719
+ /**
1720
+ * Finds the position of a collection element by the given Id
1721
+ */
1722
+ getItemPosition<I extends IItem, C extends Array<I>>(id: Id, itemConfigMap: IVirtualListItemConfigMap, options: IGetItemPositionOptions<I, C>): number;
1723
+ preventScrollSnapping(clearBuffer?: boolean): void;
1724
+ /**
1725
+ * Updates the collection of display objects
1726
+ */
1727
+ getMetrics<I extends IItem, C extends Array<I>>(items: C, itemConfigMap: IVirtualListItemConfigMap, options: IUpdateCollectionOptions<I, C>): IGetMetricsReturns;
1728
+ /**
1729
+ * Updates the collection of display objects
1730
+ */
1731
+ updateCollection<I extends IItem, C extends Array<I>>(items: C, itemConfigMap: IVirtualListItemConfigMap, options: IUpdateCollectionOptions<I, C>): IUpdateCollectionReturns;
1732
+ protected _previousScrollSize: number;
1733
+ protected updateAdaptiveBufferParams<I extends IItem>(metrics: IMetrics<I>, totalItemsLength: number): void;
1734
+ protected startResetBufferSizeTimer(): void;
1735
+ protected disposeClearBufferSizeTimer(): void;
1736
+ /**
1737
+ * Calculates the entry into the overscroll area and returns the number of overscroll elements
1738
+ */
1739
+ protected getElementNumToEnd<I extends IItem, C extends Array<I>>(i: number, collection: C, map: CMap<Id, ISize>, typicalItemSize: number, size: number, isVertical: boolean, indexOffset?: number, reverse?: boolean): {
1740
+ num: number;
1741
+ offset: number;
1742
+ };
1743
+ /**
1744
+ * Calculates list metrics
1745
+ */
1746
+ protected recalculateMetrics<I extends IItem, C extends Array<I>>(options: IRecalculateMetricsOptions<I, C>): IMetrics<I>;
1747
+ refreshCache(cache: PrerenderCache): void;
1748
+ clearDelta(): void;
1749
+ changes(immediately?: boolean, force?: boolean): void;
1750
+ /**
1751
+ * Returns true if the bounds of at least one screen object have changed.
1752
+ */
1753
+ checkBoundsOfElements(): boolean;
1754
+ protected generateDisplayCollection<I extends IItem, C extends Array<I>>(items: C, actualItems: C, itemConfigMap: IVirtualListItemConfigMap, metrics: IMetrics<I>): IRenderVirtualListCollection;
1755
+ resetPositions(): void;
1756
+ /**
1757
+ * tracking by propName
1758
+ */
1759
+ track(): void;
1760
+ setDisplayObjectIndexMapById(v: {
1761
+ [id: number]: number;
1762
+ }): void;
1763
+ untrackComponentByIdProperty(component?: C | undefined): void;
1764
+ getItemBounds(id: Id): ISize | null;
1765
+ getComponentBoundsByIntersectionPosition(position: number, maxPosition?: number | null): (IRect & {
1766
+ id: Id | null;
1767
+ isFirst: boolean;
1768
+ isLast: boolean;
1769
+ }) | null;
1770
+ private _debouncedIsScrollStartOff;
1771
+ protected cacheElements(isVertical: boolean, itemSize: number): void;
1772
+ resetCacheChunkInfo(): void;
1773
+ cacheClean(): void;
1774
+ dispose(): void;
1775
+ }
1776
+
1777
+ /**
1778
+ * Mods for selecting list items.
1779
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/enums/selecting-modes-types.ts
1780
+ * @author Evgenii Alexandrovich Grebennikov
1781
+ * @email djonnyx@gmail.com
1782
+ */
1783
+ declare enum SelectingModesTypes {
1784
+ /**
1785
+ * List items are not selectable.
1786
+ */
1787
+ NONE = 0,
1788
+ /**
1789
+ * List items are selected one by one.
1790
+ */
1791
+ SELECT = 1,
1792
+ /**
1793
+ * Multiple selection of list items.
1794
+ */
1795
+ MULTI_SELECT = 2
1796
+ }
1797
+
1798
+ interface IScrollToParams$2 {
1799
+ id: Id;
1800
+ cb: (() => void) | null;
1801
+ options: IScrollOptions$1 | null;
1802
+ }
1803
+
1804
+ /**
1805
+ * CnVirtualListService
1806
+ * Maximum performance for extremely large lists.
1807
+ * It is based on algorithms for virtualization of screen objects.
1808
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/cn-virtual-list.service.ts
1809
+ * @author Evgenii Alexandrovich Grebennikov
1810
+ * @email djonnyx@gmail.com
1811
+ */
1812
+ declare class CnVirtualListService {
1813
+ private _id;
1814
+ get id(): number;
1815
+ private _nextComponentId;
1816
+ private _$virtualClick;
1817
+ $virtualClick: rxjs.Observable<IRenderVirtualListItem<any> | null>;
1818
+ private _$selectedIds;
1819
+ $selectedIds: rxjs.Observable<Id | Id[] | null>;
1820
+ private _$collapsedIds;
1821
+ $collapsedIds: rxjs.Observable<Id[]>;
1822
+ private _$selectingMode;
1823
+ $selectingMode: rxjs.Observable<SelectingModesTypes>;
1824
+ set selectingMode(v: SelectingModesTypes);
1825
+ private _$focusedId;
1826
+ $focusedId: rxjs.Observable<Id | null>;
1827
+ set focusedId(v: Id | null);
1828
+ get focusedId(): Id | null;
1829
+ private _$focusItem;
1830
+ readonly $focusItem: rxjs.Observable<FocusItemParams>;
1831
+ private _$scrollTo;
1832
+ readonly $scrollTo: rxjs.Observable<IScrollToParams$2 | undefined>;
1833
+ private _$scrollToStart;
1834
+ readonly $scrollToStart: rxjs.Observable<IScrollOptions$1 | undefined>;
1835
+ private _$scrollToEnd;
1836
+ readonly $scrollToEnd: rxjs.Observable<IScrollOptions$1 | undefined>;
1837
+ private _$tick;
1838
+ readonly $tick: rxjs.Observable<void>;
1839
+ private _$cacheVersion;
1840
+ readonly $cacheVersion: rxjs.Observable<number>;
1841
+ trackBy: string;
1842
+ lastFocusedItemId: number;
1843
+ scrollStartOffset: number;
1844
+ scrollEndOffset: number;
1845
+ zIndexWhenSelecting: string | null;
1846
+ selectByClick: boolean;
1847
+ collapseByClick: boolean;
1848
+ defaultItemValue: IVirtualListItem | null;
1849
+ snapToItem: boolean;
1850
+ isInfinity: boolean;
1851
+ isVertical: boolean;
1852
+ dynamic: boolean;
1853
+ itemSize: number;
1854
+ snapScrollToStart: boolean;
1855
+ snapScrollToEnd: boolean;
1856
+ animationParams: IAnimationParams$1;
1857
+ isNoneCollapse: boolean;
1858
+ isMultipleCollapse: boolean;
1859
+ isAccordionCollapse: boolean;
1860
+ private _trackBox;
1861
+ listElement: HTMLDivElement | null;
1862
+ items: IVirtualListCollection;
1863
+ itemConfigMap: IVirtualListItemConfigMap;
1864
+ private _$displayItems;
1865
+ readonly $displayItems: rxjs.Observable<IRenderVirtualListCollection>;
1866
+ get displayItems(): IRenderVirtualListCollection;
1867
+ private _collection;
1868
+ set collection(v: IRenderVirtualListCollection);
1869
+ get collection(): IRenderVirtualListCollection;
1870
+ private _$langTextDir;
1871
+ readonly $langTextDir: rxjs.Observable<TextDirection>;
1872
+ get langTextDir(): TextDirection;
1873
+ private _langTextDir;
1874
+ set langTextDir(v: TextDirection);
1875
+ private _$grabbing;
1876
+ readonly $grabbing: rxjs.Observable<boolean>;
1877
+ get grabbing(): boolean;
1878
+ private _grabbing;
1879
+ set grabbing(v: boolean);
1880
+ private _$clickPressed;
1881
+ readonly $clickPressed: rxjs.Observable<boolean>;
1882
+ get clickPressed(): boolean;
1883
+ private _clickPressed;
1884
+ set clickPressed(v: boolean);
1885
+ private _$isGrabbing;
1886
+ readonly $isGrabbing: rxjs.Observable<boolean>;
1887
+ get isGrabbing(): boolean;
1888
+ get scrollBarSize(): number;
1889
+ private _scrollBarSize;
1890
+ set scrollBarSize(v: number);
1891
+ private _$scrollBarSize;
1892
+ readonly $scrollBarSize: rxjs.Observable<number>;
1893
+ private _$intersectionElementBySnapToItemAlign;
1894
+ readonly $intersectionElementBySnapToItemAlign: rxjs.Observable<Id | null>;
1895
+ private _$clickDistance;
1896
+ readonly $clickDistance: rxjs.Observable<number>;
1897
+ get clickDistance(): number;
1898
+ private _clickDistance;
1899
+ set clickDistance(v: number);
1900
+ private _onTickHandler;
1901
+ private _onTrackBoxChangeHandler;
1902
+ set selectedIds(ids: Array<Id> | Id | null);
1903
+ get selectedIds(): Array<Id> | Id | null;
1904
+ set collapsedIds(ids: Array<Id>);
1905
+ get collapsedIds(): Array<Id>;
1906
+ constructor();
1907
+ virtualClick(data: IRenderVirtualListItem | null): void;
1908
+ update(immediately?: boolean): void;
1909
+ private getItemConfig;
1910
+ /**
1911
+ * Selects a list item
1912
+ * @param id
1913
+ * @param selected - If the value is undefined, then the toggle method is executed, if false or true, then the selection/deselection is performed.
1914
+ */
1915
+ select(id: Id, selected?: boolean): void;
1916
+ /**
1917
+ * Collapse list items
1918
+ * @param data
1919
+ * @param collapsed - If the value is undefined, then the toggle method is executed, if false or true, then the collapse/expand is performed.
1920
+ */
1921
+ collapse(id: Id, collapsed?: boolean): void;
1922
+ getFocusedElementById(id: Id): HTMLDivElement | null;
1923
+ /**
1924
+ * Returns the bounds of an element with a given id
1925
+ */
1926
+ getItemBounds(id: Id): ISize | null;
1927
+ /**
1928
+ * Focus an list item by a given id.
1929
+ */
1930
+ focusById(id: Id, align?: FocusAlignment, scrollBehavior?: ScrollBehavior): void;
1931
+ focus(element: HTMLElement, align?: FocusAlignment, behavior?: ScrollBehavior): boolean;
1932
+ focusList(): void;
1933
+ focusFirstElement(): void;
1934
+ initialize(id: number, trackBox: TrackBox): void;
1935
+ generateComponentId(): number;
1936
+ getComponentBoundsByIntersectionPosition(position: number, maxPosition?: number | null): (IRect & {
1937
+ id: Id | null;
1938
+ isFirst: boolean;
1939
+ isLast: boolean;
1940
+ }) | null;
1941
+ setIntersectionElementBySnapToItemAlign(id: Id | null): void;
1942
+ /**
1943
+ * The method scrolls the list to the element with the given `id` and returns the value of the scrolled area.
1944
+ */
1945
+ scrollTo(id: Id, cb?: (() => void) | null, options?: IScrollOptions$1 | null): void;
1946
+ /**
1947
+ * Scrolls the scroll area to the first item in the collection.
1948
+ */
1949
+ scrollToStart(options?: IScrollOptions$1): void;
1950
+ /**
1951
+ * Scrolls the list to the end of the content size.
1952
+ */
1953
+ scrollToEnd(options?: IScrollOptions$1): void;
1954
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnVirtualListService, never>;
1955
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CnVirtualListService>;
1956
+ }
1957
+
1958
+ /**
1959
+ * IBaseVirtualListItemComponent
1960
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/interfaces/base-virtual-list-item-component.ts
1961
+ * @author Evgenii Alexandrovich Grebennikov
1962
+ * @email djonnyx@gmail.com
1963
+ */
1964
+ interface IBaseVirtualListItemComponent {
1965
+ get id(): number;
1966
+ regular: boolean;
1967
+ set regularLength(v: string);
1968
+ set item(v: IRenderVirtualListItem | null | undefined);
1969
+ get item(): IRenderVirtualListItem | null | undefined;
1970
+ get itemId(): Id | undefined;
1971
+ set renderer(v: TemplateRef<any> | undefined);
1972
+ get element(): HTMLElement;
1973
+ getBounds(): ISize;
1974
+ show(): void;
1975
+ hide(): void;
1976
+ }
1977
+
1978
+ /**
1979
+ * BaseVirtualListItemComponent
1980
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/list-item/base/base-virtual-list-item-component.ts
1981
+ * @author Evgenii Alexandrovich Grebennikov
1982
+ * @email djonnyx@gmail.com
1983
+ */
1984
+ declare class BaseVirtualListItemComponent implements IBaseVirtualListItemComponent {
1985
+ protected _item: Signal<ElementRef<HTMLDivElement> | undefined>;
1986
+ protected _container: Signal<ElementRef<HTMLDivElement> | undefined>;
1987
+ private _apiService;
1988
+ protected readonly _service: CnVirtualListService;
1989
+ protected _id: number;
1990
+ get id(): number;
1991
+ protected _listId: number;
1992
+ get listId(): number;
1993
+ protected _displayId: string;
1994
+ get displayId(): string;
1995
+ protected _isSelected: boolean;
1996
+ set isSelected(v: boolean);
1997
+ get isSelected(): boolean;
1998
+ protected _isCollapsed: boolean;
1999
+ protected readonly config: _angular_core.WritableSignal<IDisplayObjectConfig>;
2000
+ protected readonly measures: _angular_core.WritableSignal<IDisplayObjectMeasures | null>;
2001
+ protected readonly focused: _angular_core.WritableSignal<boolean>;
2002
+ protected readonly part: _angular_core.WritableSignal<string>;
2003
+ protected readonly fxPart: _angular_core.WritableSignal<string>;
2004
+ protected readonly data: _angular_core.WritableSignal<IRenderVirtualListItem<any> | null>;
2005
+ protected _data: IRenderVirtualListItem | null;
2006
+ set item(v: IRenderVirtualListItem | null);
2007
+ protected readonly classes: Signal<{
2008
+ [cName: string]: boolean;
2009
+ }>;
2010
+ protected readonly index: Signal<number>;
2011
+ protected readonly templateContext: Signal<ITemplateContext>;
2012
+ regular: boolean;
2013
+ protected _blendColor: Color | null;
2014
+ protected _scrollBarSize: number;
2015
+ protected _langTextDir: TextDirection;
2016
+ protected _regularLength: string;
2017
+ set regularLength(v: string);
2018
+ get item(): IRenderVirtualListItem | null;
2019
+ get itemId(): centrifugal.Id | undefined;
2020
+ get zIndex(): string;
2021
+ get visibility(): string;
2022
+ protected readonly itemRenderer: _angular_core.WritableSignal<TemplateRef<any> | undefined>;
2023
+ protected _renderer: TemplateRef<any> | undefined;
2024
+ set renderer(v: TemplateRef<any> | undefined);
2025
+ protected _elementRef: ElementRef<HTMLElement>;
2026
+ get element(): HTMLElement;
2027
+ protected _destroyRef: DestroyRef;
2028
+ constructor();
2029
+ protected updateMeasures(v: IRenderVirtualListItem<any> | null): void;
2030
+ protected updateConfig(v: IRenderVirtualListItem<any> | null, grabbing: boolean): void;
2031
+ protected update(): void;
2032
+ protected updatePartStr(v: IRenderVirtualListItem | null, isSelected: boolean, isCollapsed: boolean): void;
2033
+ protected hasFocus(): boolean;
2034
+ getBounds(): ISize;
2035
+ show(): void;
2036
+ hide(): void;
2037
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseVirtualListItemComponent, never>;
2038
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BaseVirtualListItemComponent, "x-base-virtual-list-item", never, {}, {}, never, never, false, never>;
2039
+ }
2040
+
2041
+ /**
2042
+ * Virtual list component.
2043
+ * Maximum performance for extremely large lists.
2044
+ * It is based on algorithms for virtualization of screen objects.
2045
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-list-item/cn-virtual-list-item.component.ts
2046
+ * @author Evgenii Alexandrovich Grebennikov
2047
+ * @email djonnyx@gmail.com
2048
+ */
2049
+ declare class CnVirtualListItemComponent extends BaseVirtualListItemComponent implements OnInit {
2050
+ protected readonly maxClickDistance: _angular_core.WritableSignal<number>;
2051
+ protected _injector: Injector;
2052
+ constructor();
2053
+ ngOnInit(): void;
2054
+ private keyKode;
2055
+ private getNavigationTimeout;
2056
+ private toNextItem;
2057
+ private toPrevItem;
2058
+ private focusNext;
2059
+ private focusPrev;
2060
+ protected updateConfig(v: IRenderVirtualListItem<any> | null, grabbing: boolean): void;
2061
+ onClickHandler(): void;
2062
+ onClickPressHandler(): void;
2063
+ onClickCancelHandler(): void;
2064
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnVirtualListItemComponent, never>;
2065
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CnVirtualListItemComponent, "cn-virtual-list-item", never, {}, {}, never, never, false, never>;
2066
+ }
2067
+
2068
+ interface Component$1<T> extends Function {
2069
+ new (...args: any[]): T;
2070
+ }
2071
+
2072
+ /**
2073
+ * Virtual list component.
2074
+ * Maximum performance for extremely large lists.
2075
+ * It is based on algorithms for virtualization of screen objects.
2076
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/cn-virtual-list.component.ts
2077
+ * @author Evgenii Alexandrovich Grebennikov
2078
+ * @email djonnyx@gmail.com
2079
+ */
2080
+ declare class CnVirtualListComponent implements OnDestroy {
2081
+ private static __nextId;
2082
+ private _id;
2083
+ /**
2084
+ * Readonly. Returns the unique identifier of the component.
2085
+ */
2086
+ get id(): number;
2087
+ private _service;
2088
+ private _prerender;
2089
+ private _listContainerRef;
2090
+ private _snapContainerRef;
2091
+ private _scrollerComponent;
2092
+ private _scroller;
2093
+ private _list;
2094
+ /**
2095
+ * Fires when the list has been scrolled.
2096
+ */
2097
+ onScroll: _angular_core.OutputEmitterRef<IScrollEvent$1>;
2098
+ /**
2099
+ * Fires when the list has completed scrolling.
2100
+ */
2101
+ onScrollEnd: _angular_core.OutputEmitterRef<IScrollEvent$1>;
2102
+ /**
2103
+ * Fires when the viewport size is changed.
2104
+ */
2105
+ onViewportChange: _angular_core.OutputEmitterRef<ISize>;
2106
+ /**
2107
+ * Emit the component ID when an element crosses the alignment line specified by the snapToItemAlign property.
2108
+ */
2109
+ onSnapItem: _angular_core.OutputEmitterRef<Id>;
2110
+ /**
2111
+ * Fires when an element is clicked.
2112
+ */
2113
+ onItemClick: _angular_core.OutputEmitterRef<IRenderVirtualListItem<any> | null>;
2114
+ /**
2115
+ * Fires when elements are selected.
2116
+ */
2117
+ onSelect: _angular_core.OutputEmitterRef<Id | Id[] | null>;
2118
+ /**
2119
+ * Fires when elements are collapsed.
2120
+ */
2121
+ onCollapse: _angular_core.OutputEmitterRef<Id | Id[] | null>;
2122
+ /**
2123
+ * Fires when the scroll reaches the start.
2124
+ */
2125
+ onScrollReachStart: _angular_core.OutputEmitterRef<void>;
2126
+ /**
2127
+ * Fires when the scroll reaches the end.
2128
+ */
2129
+ onScrollReachEnd: _angular_core.OutputEmitterRef<void>;
2130
+ private _$show;
2131
+ readonly $show: rxjs.Observable<boolean>;
2132
+ private _$initialized;
2133
+ readonly $initialized: rxjs.Observable<boolean>;
2134
+ private _scrollbarThickness;
2135
+ /**
2136
+ * Scrollbar thickness.
2137
+ */
2138
+ scrollbarThickness: _angular_core.InputSignal<number>;
2139
+ private _scrollbarMinSize;
2140
+ /**
2141
+ * Minimum scrollbar size.
2142
+ */
2143
+ scrollbarMinSize: _angular_core.InputSignal<number>;
2144
+ private _scrollbarThumbRenderer;
2145
+ /**
2146
+ * Scrollbar customization template.
2147
+ */
2148
+ scrollbarThumbRenderer: _angular_core.InputSignal<TemplateRef<any> | null>;
2149
+ private _scrollbarThumbParams;
2150
+ /**
2151
+ * Additional options for the scrollbar.
2152
+ */
2153
+ scrollbarThumbParams: _angular_core.InputSignal<{
2154
+ [propName: string]: any;
2155
+ } | null>;
2156
+ private _loading;
2157
+ /**
2158
+ * If `true`, the scrollBar goes into loading state. The default value is `false`.
2159
+ */
2160
+ loading: _angular_core.InputSignal<boolean>;
2161
+ private _waitForPreparation;
2162
+ /**
2163
+ * If true, it will wait until the list items are fully prepared before displaying them.. The default value is `true`.
2164
+ */
2165
+ waitForPreparation: _angular_core.InputSignal<boolean>;
2166
+ private _clickDistance;
2167
+ /**
2168
+ * The maximum scroll distance at which a click event is triggered.
2169
+ */
2170
+ clickDistance: _angular_core.InputSignal<number>;
2171
+ private _itemsOptions;
2172
+ /**
2173
+ * Collection of list items.
2174
+ */
2175
+ items: _angular_core.InputSignal<IVirtualListCollection<Object>>;
2176
+ private _selectedIdsOptions;
2177
+ defaultItemValue: _angular_core.InputSignal<IVirtualListItem | null>;
2178
+ /**
2179
+ * Sets the selected items.
2180
+ */
2181
+ selectedIds: _angular_core.InputSignal<Id | Id[] | null>;
2182
+ private _collapsedIdsOptions;
2183
+ /**
2184
+ * Sets the collapsed items.
2185
+ */
2186
+ collapsedIds: _angular_core.InputSignal<Id[]>;
2187
+ private _selectByClickOptions;
2188
+ /**
2189
+ * If `false`, the element is selected using the api.select method passed to the template;
2190
+ * if `true`, the element is selected by clicking on it. The default value is `true`.
2191
+ */
2192
+ selectByClick: _angular_core.InputSignal<boolean>;
2193
+ private _collapseByClickOptions;
2194
+ /**
2195
+ * If `false`, the element is collapsed using the config.collapse method passed to the template;
2196
+ * if `true`, the element is collapsed by clicking on it. The default value is `true`.
2197
+ */
2198
+ collapseByClick: _angular_core.InputSignal<boolean>;
2199
+ private _snapOptions;
2200
+ /**
2201
+ * @deprecated
2202
+ * Use the `stickyEnabled` property instead.
2203
+ */
2204
+ snap: _angular_core.InputSignal<boolean>;
2205
+ private _stickyEnabledOptions;
2206
+ /**
2207
+ * Determines whether items with the given `sticky` in `itemConfigMap` will stick to the edges. Default value is "true".
2208
+ */
2209
+ stickyEnabled: _angular_core.InputSignal<boolean>;
2210
+ private _snapToEndTransitionInstantOffsetOptions;
2211
+ /**
2212
+ * Sets the offset value; if the scroll area value is exceeded, the scroll animation will be disabled. Default value is "0".
2213
+ */
2214
+ snapToEndTransitionInstantOffset: _angular_core.InputSignal<number>;
2215
+ private _scrollStartOffsetOptions;
2216
+ /**
2217
+ * Sets the scroll start offset value. Can be specified in absolute or percentage values.
2218
+ * Supports arithmetic expressions of addition `50% + 25` or subtraction `50% - 25`. Default value is "0".
2219
+ */
2220
+ scrollStartOffset: _angular_core.InputSignal<ArithmeticExpression>;
2221
+ private _scrollEndOffsetOptions;
2222
+ /**
2223
+ * Sets the scroll end offset value. Can be specified in absolute or percentage values.
2224
+ * Supports arithmetic expressions of addition `50% + 25` or subtraction `50% - 25`. Default value is "0".
2225
+ */
2226
+ scrollEndOffset: _angular_core.InputSignal<ArithmeticExpression>;
2227
+ private _snapScrollToStartOptions;
2228
+ /**
2229
+ * Determines whether the scroll will be anchored to the start of the list. Default value is "true".
2230
+ * This property takes precedence over the snapScrollToEnd property.
2231
+ * That is, if snapScrollToStart and snapScrollToEnd are enabled, the list will initially snap
2232
+ * to the beginning; if you move the scroll bar to the end, the list will snap to the end.
2233
+ * If snapScrollToStart is disabled and snapScrollToEnd is enabled, the list will snap to the end;
2234
+ * if you move the scroll bar to the beginning, the list will snap to the beginning.
2235
+ * If both snapScrollToStart and snapScrollToEnd are disabled, the list will never snap to the beginning or end.
2236
+ * In the `spreadingMode=SpreadingModes.INFINITY` mode, the `snapScrollToStart` property is automatically disabled, since the list has no beginning or end.
2237
+ */
2238
+ snapScrollToStart: _angular_core.InputSignal<boolean>;
2239
+ private _snapScrollToEndOptions;
2240
+ /**
2241
+ * Determines whether the scroll will be anchored to the утв of the list. Default value is "true".
2242
+ * That is, if snapScrollToStart and snapScrollToEnd are enabled, the list will initially snap
2243
+ * to the beginning; if you move the scroll bar to the end, the list will snap to the end.
2244
+ * If snapScrollToStart is disabled and snapScrollToEnd is enabled, the list will snap to the end;
2245
+ * if you move the scroll bar to the beginning, the list will snap to the beginning.
2246
+ * If both snapScrollToStart and snapScrollToEnd are disabled, the list will never snap to the beginning or end.
2247
+ * In the `spreadingMode=SpreadingModes.INFINITY` mode, the `snapScrollToEnd` property is automatically disabled, since the list has no beginning or end.
2248
+ */
2249
+ snapScrollToEnd: _angular_core.InputSignal<boolean>;
2250
+ private _snapScrollToBottomOptions;
2251
+ /**
2252
+ * @deprecated
2253
+ * The stopSnappingScrollToEnd property is deprecated. Use the snapScrollToEnd property.
2254
+ */
2255
+ snapScrollToBottom: _angular_core.InputSignal<boolean>;
2256
+ private _scrollbarEnabledOptions;
2257
+ /**
2258
+ * Determines whether the scrollbar is shown or not. The default value is "true".
2259
+ */
2260
+ scrollbarEnabled: _angular_core.InputSignal<boolean>;
2261
+ private _scrollbarInteractiveOptions;
2262
+ /**
2263
+ * Determines whether scrolling using the scrollbar will be possible. The default value is "true".
2264
+ */
2265
+ scrollbarInteractive: _angular_core.InputSignal<boolean>;
2266
+ private _overlappingScrollbarOptions;
2267
+ /**
2268
+ * Determines whether the scroll bar will overlap the list. The default value is "false".
2269
+ */
2270
+ overlappingScrollbar: _angular_core.InputSignal<boolean>;
2271
+ private _scrollBehaviorOptions;
2272
+ /**
2273
+ * Defines the scrolling behavior for any element on the page. The default value is "smooth".
2274
+ */
2275
+ scrollBehavior: _angular_core.InputSignal<ScrollBehavior>;
2276
+ private _scrollingSettingsOptions;
2277
+ /**
2278
+ * Scrolling settings.
2279
+ * - frictionalForce - Frictional force. Default value is 0.035.
2280
+ * - mass - Mass. Default value is 0.005.
2281
+ * - maxDistance - Maximum scrolling distance. Default value is 100000.
2282
+ * - maxDuration - Maximum animation duration. Default value is 4000.
2283
+ * - speedScale - Speed scale. Default value is 10.
2284
+ * - optimization - Enables scrolling performance optimization. Default value is `true`.
2285
+ */
2286
+ scrollingSettings: _angular_core.InputSignal<IScrollingSettings$1>;
2287
+ private _itemTransformOptions;
2288
+ /**
2289
+ * Custom transformation of element's position, rotation, scale, opacity and zIndex. The default value is `null`.
2290
+ */
2291
+ itemTransform: _angular_core.InputSignal<ItemTransform | null>;
2292
+ private _snapToItemOptions;
2293
+ /**
2294
+ * Snap to an item. The default value is `false`.
2295
+ */
2296
+ snapToItem: _angular_core.InputSignal<boolean>;
2297
+ private _snapToItemAlignOptions;
2298
+ /**
2299
+ * Alignment for snapToItem. Available values ​​are `start`, `center`, and `end`. The default value is `center`.
2300
+ */
2301
+ snapToItemAlign: _angular_core.InputSignal<SnapToItemAlign>;
2302
+ private _snappingDistanceOptions;
2303
+ /**
2304
+ * Snapping activation distance. Can be specified as a percentage of the element size or in absolute values.
2305
+ * The default value is `25%`.
2306
+ */
2307
+ snappingDistance: _angular_core.InputSignal<SnappingDistance>;
2308
+ private _scrollingOneByOneOptions;
2309
+ /**
2310
+ * Specifies whether to scroll one item at a time if true and the scrollToItem property is set. The default value is `false`.
2311
+ */
2312
+ scrollingOneByOne: _angular_core.InputSignal<boolean>;
2313
+ private _alignmentOptions;
2314
+ /**
2315
+ * 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.
2316
+ * The `none` mode means no alignment. The default value is `none`.
2317
+ */
2318
+ alignment: _angular_core.InputSignal<Alignment>;
2319
+ private _zIndexWhenSelectingOptions;
2320
+ /**
2321
+ * Defines the zIndex when a list item is selected. The default value is `null`.
2322
+ */
2323
+ zIndexWhenSelecting: _angular_core.InputSignal<string | null>;
2324
+ private _spreadingModeOptions;
2325
+ /**
2326
+ * The order of list elements. Available values ​​are `standard` and `infinity`.
2327
+ * `normal` — list elements are ordered according to the collection sequence.
2328
+ * `infinity` — list elements are ordered cyclically, forming an infinite list.
2329
+ * When set to `infinity`, the `alignment` property is forced to the value `Alignments.CENTER`, the `scrollbarEnabled` property is forced to the `false`
2330
+ * The default value is `standard`.
2331
+ */
2332
+ spreadingMode: _angular_core.InputSignal<SpreadingMode>;
2333
+ private _dividesOptions;
2334
+ /**
2335
+ * Column or row numbers. The default value is `1`.
2336
+ */
2337
+ divides: _angular_core.InputSignal<number>;
2338
+ private _motionBlurOptions;
2339
+ /**
2340
+ * Motion blur effect. The default value is `0.15`.
2341
+ */
2342
+ motionBlur: _angular_core.InputSignal<number>;
2343
+ private _maxMotionBlurOptions;
2344
+ /**
2345
+ * Maximum motion blur effect. The default value is `0.5`.
2346
+ */
2347
+ maxMotionBlur: _angular_core.InputSignal<number>;
2348
+ private _motionBlurEnabledOptions;
2349
+ /**
2350
+ * Determines whether to apply motion blur or not. The default value is `false`.
2351
+ */
2352
+ motionBlurEnabled: _angular_core.InputSignal<boolean>;
2353
+ private _animationParamsOptions;
2354
+ /**
2355
+ * Animation parameters. The default value is "{ scrollToItem: 150, snapToItem: 150, navigateToItem: 150, navigateByKeyboard: 50 }".
2356
+ */
2357
+ animationParams: _angular_core.InputSignal<IAnimationParams$1>;
2358
+ private _overscrollEnabledOptions;
2359
+ /**
2360
+ * Determines whether the overscroll (re-scroll) feature will work. The default value is "true".
2361
+ */
2362
+ overscrollEnabled: _angular_core.InputSignal<boolean>;
2363
+ private _enabledBufferOptimizationOptions;
2364
+ /**
2365
+ * Experimental!
2366
+ * Enables buffer optimization.
2367
+ * 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.
2368
+ * Works only if the property dynamic = true
2369
+ */
2370
+ enabledBufferOptimization: _angular_core.InputSignal<boolean>;
2371
+ private _itemRendererOptions;
2372
+ /**
2373
+ * Rendering element template.
2374
+ */
2375
+ itemRenderer: _angular_core.InputSignal<TemplateRef<any>>;
2376
+ private _itemRenderer;
2377
+ private _itemConfigMapOptions;
2378
+ /**
2379
+ * Sets `sticky` position, `fullSize`, `collapsable` and `selectable` for the list item element. If `sticky` position is greater than `0`, then `sticky` position is applied.
2380
+ * If the `sticky` value is greater than `0`, then the `sticky` position mode is enabled for the element. `1` - position start, `2` - position end.
2381
+ * Default value is `0`.
2382
+ * `selectable` determines whether an element can be selected or not. Default value is `true`.
2383
+ * `collapsable` determines whether an element with a `sticky` property greater than zero can collapse and
2384
+ * collapse elements in front that do not have a `sticky` property.
2385
+ * `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.
2386
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/models/item-config-map.model.ts
2387
+ * @author Evgenii Alexandrovich Grebennikov
2388
+ * @email djonnyx@gmail.com
2389
+ */
2390
+ itemConfigMap: _angular_core.InputSignal<IVirtualListItemConfigMap>;
2391
+ private _itemSizeOptions;
2392
+ /**
2393
+ * If direction = 'vertical', then the height of a typical element. If direction = 'horizontal', then the width of a typical element.
2394
+ * If the `dynamicSize` property is true, the items in the list can have different sizes, and you must specify the `itemSize` property
2395
+ * to adjust the sizes of the items in the unallocated area.
2396
+ * If the value is 'viewport', the sizes of elements are automatically resized to fit the viewport size.
2397
+ */
2398
+ itemSize: _angular_core.InputSignal<number | "viewport">;
2399
+ private _minItemSizeOptions;
2400
+ /**
2401
+ * If the `dynamicSize` property is enabled, the minimum size of the element is set.
2402
+ * If the value is 'viewport', the sizes of elements are automatically resized to fit the viewport size.
2403
+ */
2404
+ minItemSize: _angular_core.InputSignal<number | "viewport">;
2405
+ private _maxItemSizeOptions;
2406
+ /**
2407
+ * If the `dynamicSize` property is enabled, the maximum size of the element is set.
2408
+ * If the value is 'viewport', the sizes of elements are automatically resized to fit the viewport size.
2409
+ */
2410
+ maxItemSize: _angular_core.InputSignal<number | "viewport">;
2411
+ private _dynamicSizeOptions;
2412
+ /**
2413
+ * If true, items in the list may have different sizes, and the itemSize property must be specified to adjust
2414
+ * the sizes of items in the unallocated area.
2415
+ * If false then the items in the list have a fixed size specified by the itemSize property. The default value is true.
2416
+ */
2417
+ dynamicSize: _angular_core.InputSignal<boolean>;
2418
+ private _directionOptions;
2419
+ /**
2420
+ * Determines the direction in which elements are placed. Default value is "vertical".
2421
+ */
2422
+ direction: _angular_core.InputSignal<Direction$1>;
2423
+ private _collectionModeOptions;
2424
+ /**
2425
+ * Determines the action modes for collection elements. Default value is "normal".
2426
+ */
2427
+ collectionMode: _angular_core.InputSignal<CollectionMode>;
2428
+ private _bufferSizeOptions;
2429
+ /**
2430
+ * Number of elements outside the scope of visibility. Default value is 2.
2431
+ */
2432
+ bufferSize: _angular_core.InputSignal<number>;
2433
+ private _maxBufferSizeTransform;
2434
+ /**
2435
+ * Maximum number of elements outside the scope of visibility. Default value is 100.
2436
+ * If maxBufferSize is set to be greater than bufferSize, then adaptive buffer mode is enabled.
2437
+ * The greater the scroll size, the more elements are allocated for rendering.
2438
+ */
2439
+ maxBufferSize: _angular_core.InputSignal<number>;
2440
+ private _snappingMethodOptions;
2441
+ /**
2442
+ * Snapping method. Default value is 'standart'.
2443
+ * 'standart' - Classic group visualization.
2444
+ * 'advanced' - A mask is applied to the viewport area so that the background is displayed underneath the attached group.
2445
+ */
2446
+ snappingMethod: _angular_core.InputSignal<SnappingMethod>;
2447
+ private _collapsingModeOptions;
2448
+ /**
2449
+ * Mode for collapsing list items.
2450
+ * `none` - List items are not selectable.
2451
+ * `multi-collapse` - List items are collapsed one by one.
2452
+ * 'accordion' - Accordion collapsible list items.
2453
+ * Default value is `multi-collapse
2454
+ */
2455
+ collapsingMode: _angular_core.InputSignal<CollapsingMode>;
2456
+ private _methodForSelectingOptions;
2457
+ /**
2458
+ * @deprecated
2459
+ * The "methodForSelecting" property is deprecated. Use the "selectMode" property.
2460
+ */
2461
+ methodForSelecting: _angular_core.InputSignal<SelectingMode>;
2462
+ private _selectingModeOptions;
2463
+ /**
2464
+ * Method for selecting list items. Default value is 'none'.
2465
+ * 'select' - List items are selected one by one.
2466
+ * 'multi-select' - Multiple selection of list items.
2467
+ * 'none' - List items are not selectable.
2468
+ */
2469
+ selectingMode: _angular_core.InputSignal<SelectingMode>;
2470
+ private _trackByOptions;
2471
+ /**
2472
+ * The name of the property by which tracking is performed
2473
+ */
2474
+ trackBy: _angular_core.InputSignal<string>;
2475
+ private _screenReaderMessageOptions;
2476
+ /**
2477
+ * Message for screen reader.
2478
+ * The message format is: "some text $1 some text $2",
2479
+ * where $1 is the number of the first element of the screen collection,
2480
+ * $2 is the number of the last element of the screen collection.
2481
+ */
2482
+ screenReaderMessage: _angular_core.InputSignal<string>;
2483
+ protected readonly screenReaderFormattedMessage: _angular_core.WritableSignal<string>;
2484
+ private _langTextDir;
2485
+ /**
2486
+ * A string indicating the direction of text for the locale.
2487
+ * Can be either "ltr" (left-to-right) or "rtl" (right-to-left).
2488
+ */
2489
+ langTextDir: _angular_core.InputSignal<TextDirection>;
2490
+ private _isSingleSelection;
2491
+ private _isMultiSelection;
2492
+ private _isMultipleCollapse;
2493
+ private _isAccordionCollapse;
2494
+ private _isSnappingMethodAdvanced;
2495
+ protected _isInfinity: Signal<boolean>;
2496
+ private _isVertical;
2497
+ protected get isVertical(): boolean;
2498
+ protected readonly focusedElement: _angular_core.WritableSignal<Id | null>;
2499
+ protected readonly classes: _angular_core.WritableSignal<{
2500
+ [cName: string]: boolean;
2501
+ }>;
2502
+ private _actualItems;
2503
+ private _collapsedItemIds;
2504
+ private _displayComponents;
2505
+ private _snappedDisplayComponents;
2506
+ private _bounds;
2507
+ protected get bounds(): _angular_core.WritableSignal<ISize | null>;
2508
+ protected _actualScrollbarEnabled: Signal<boolean>;
2509
+ private _actualAlignment;
2510
+ protected get actualAlignment(): Signal<Alignment>;
2511
+ private _actualItemSize;
2512
+ protected get actualItemSize(): _angular_core.WritableSignal<number>;
2513
+ private _actualMinItemSize;
2514
+ protected get actualMinItemSize(): _angular_core.WritableSignal<number>;
2515
+ private _actualMaxItemSize;
2516
+ protected get actualMaxItemSize(): _angular_core.WritableSignal<number>;
2517
+ private _totalSize;
2518
+ private _listBounds;
2519
+ private _$scrollSize;
2520
+ private _isScrollStart;
2521
+ private _isScrollEnd;
2522
+ protected _precalculatedScrollStartOffset: _angular_core.WritableSignal<number>;
2523
+ protected _precalculatedScrollEndOffset: _angular_core.WritableSignal<number>;
2524
+ protected _actualScrollStartOffset: _angular_core.WritableSignal<number>;
2525
+ protected _actualScrollEndOffset: _angular_core.WritableSignal<number>;
2526
+ protected _actualSnapScrollToStart: Signal<boolean>;
2527
+ protected _actualSnapScrollToEnd: Signal<boolean>;
2528
+ protected _alignmentScrollStartOffset: _angular_core.WritableSignal<number>;
2529
+ protected _alignmentScrollEndOffset: _angular_core.WritableSignal<number>;
2530
+ private _resizeSnappedComponentHandler;
2531
+ private _resizeSnappedObserver;
2532
+ private focusItem;
2533
+ private _elementRef;
2534
+ /**
2535
+ * Base class of the element component
2536
+ */
2537
+ private _itemComponentClass;
2538
+ protected get itemComponentClass(): Component$1<BaseVirtualListItemComponent>;
2539
+ /**
2540
+ * Base class trackBox
2541
+ */
2542
+ private _trackBoxClass;
2543
+ /**
2544
+ * Dictionary of element sizes by their id
2545
+ */
2546
+ private _trackBox;
2547
+ private _$update;
2548
+ protected readonly $update: rxjs.Observable<string>;
2549
+ private _$scrollTo;
2550
+ protected $scrollTo: rxjs.Observable<IScrollParams>;
2551
+ private _$scrollToExecutor;
2552
+ protected readonly $scrollToExecutor: rxjs.Observable<IScrollParams>;
2553
+ private _$scrollingTo;
2554
+ private _$scroll;
2555
+ readonly $scroll: rxjs.Observable<IScrollEvent$1>;
2556
+ private _$tick;
2557
+ readonly $tick: rxjs.Observable<void>;
2558
+ private _$fireUpdate;
2559
+ protected readonly $fireUpdate: rxjs.Observable<boolean>;
2560
+ private _$fireUpdateNextFrame;
2561
+ protected readonly $fireUpdateNextFrame: rxjs.Observable<boolean>;
2562
+ private _$preventScrollSnapping;
2563
+ protected readonly $preventScrollSnapping: rxjs.Observable<boolean>;
2564
+ private _destroyRef;
2565
+ private _updateId;
2566
+ private _readyForShow;
2567
+ private _cached;
2568
+ private _isLoading;
2569
+ private _animationId;
2570
+ protected get cachable(): boolean;
2571
+ protected get prerenderable(): boolean;
2572
+ private _$viewInit;
2573
+ private readonly $viewInit;
2574
+ private _$destroy;
2575
+ private readonly $destroy;
2576
+ constructor();
2577
+ ngAfterViewInit(): void;
2578
+ private onAfterResize;
2579
+ private checkBoundsOfElements;
2580
+ private snappingHandler;
2581
+ private emitScrollEvent;
2582
+ private getIsSnappingMethodAdvanced;
2583
+ private getIsNoneSelection;
2584
+ private getIsSingleSelection;
2585
+ private getIsMultiSelection;
2586
+ private getIsNoneCollapse;
2587
+ private getIsMultipleCollapse;
2588
+ private getIsAccordionCollapse;
2589
+ private getIsVertical;
2590
+ private getIsLazy;
2591
+ private createDisplayComponentsIfNeed;
2592
+ private updateOffsetsByAllignment;
2593
+ private updateRegularRenderer;
2594
+ /**
2595
+ * Tracking by id
2596
+ */
2597
+ private tracking;
2598
+ private resetBoundsSize;
2599
+ /**
2600
+ * Returns the bounds of an element with a given id
2601
+ */
2602
+ getItemBounds(id: Id): ISize | null;
2603
+ /**
2604
+ * Focus an list item by a given id.
2605
+ */
2606
+ focus(id: Id, align?: FocusAlignment): void;
2607
+ /**
2608
+ * The method scrolls the list to the element with the given `id` and returns the value of the scrolled area.
2609
+ */
2610
+ scrollTo(id: Id, cb?: (() => void) | null, options?: IScrollOptions$1 | null): void;
2611
+ /**
2612
+ * Scrolls the scroll area to the first item in the collection.
2613
+ */
2614
+ scrollToStart(cb?: (() => void) | null, options?: IScrollOptions$1 | null): void;
2615
+ /**
2616
+ * @deprecated
2617
+ * The scrollToEndItem method is deprecated. Use the scrollToEnd method.
2618
+ */
2619
+ scrollToEndItem(cb?: () => void, options?: IScrollOptions$1): void;
2620
+ /**
2621
+ * Scrolls the list to the end of the content size.
2622
+ */
2623
+ scrollToEnd(cb?: (() => void) | null, options?: IScrollOptions$1 | null): void;
2624
+ private scrollToFinalize;
2625
+ protected cleanup(): void;
2626
+ /**
2627
+ * Force clearing the cache.
2628
+ */
2629
+ protected cacheClean(): void;
2630
+ /**
2631
+ * @deprecated
2632
+ * The stopSnappingScrollToEnd method is deprecated. Use the preventSnapping method.
2633
+ */
2634
+ stopSnappingScrollToEnd(): void;
2635
+ /**
2636
+ * Prevents the list from snapping to its start or end edge.
2637
+ */
2638
+ preventSnapping(): void;
2639
+ ngOnDestroy(): void;
2640
+ private dispose;
2641
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnVirtualListComponent, never>;
2642
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CnVirtualListComponent, "cn-virtual-list", never, { "scrollbarThickness": { "alias": "scrollbarThickness"; "required": false; "isSignal": true; }; "scrollbarMinSize": { "alias": "scrollbarMinSize"; "required": false; "isSignal": true; }; "scrollbarThumbRenderer": { "alias": "scrollbarThumbRenderer"; "required": false; "isSignal": true; }; "scrollbarThumbParams": { "alias": "scrollbarThumbParams"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "waitForPreparation": { "alias": "waitForPreparation"; "required": false; "isSignal": true; }; "clickDistance": { "alias": "clickDistance"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; "isSignal": true; }; "defaultItemValue": { "alias": "defaultItemValue"; "required": false; "isSignal": true; }; "selectedIds": { "alias": "selectedIds"; "required": false; "isSignal": true; }; "collapsedIds": { "alias": "collapsedIds"; "required": false; "isSignal": true; }; "selectByClick": { "alias": "selectByClick"; "required": false; "isSignal": true; }; "collapseByClick": { "alias": "collapseByClick"; "required": false; "isSignal": true; }; "snap": { "alias": "snap"; "required": false; "isSignal": true; }; "stickyEnabled": { "alias": "stickyEnabled"; "required": false; "isSignal": true; }; "snapToEndTransitionInstantOffset": { "alias": "snapToEndTransitionInstantOffset"; "required": false; "isSignal": true; }; "scrollStartOffset": { "alias": "scrollStartOffset"; "required": false; "isSignal": true; }; "scrollEndOffset": { "alias": "scrollEndOffset"; "required": false; "isSignal": true; }; "snapScrollToStart": { "alias": "snapScrollToStart"; "required": false; "isSignal": true; }; "snapScrollToEnd": { "alias": "snapScrollToEnd"; "required": false; "isSignal": true; }; "snapScrollToBottom": { "alias": "snapScrollToBottom"; "required": false; "isSignal": true; }; "scrollbarEnabled": { "alias": "scrollbarEnabled"; "required": false; "isSignal": true; }; "scrollbarInteractive": { "alias": "scrollbarInteractive"; "required": false; "isSignal": true; }; "overlappingScrollbar": { "alias": "overlappingScrollbar"; "required": false; "isSignal": true; }; "scrollBehavior": { "alias": "scrollBehavior"; "required": false; "isSignal": true; }; "scrollingSettings": { "alias": "scrollingSettings"; "required": false; "isSignal": true; }; "itemTransform": { "alias": "itemTransform"; "required": false; "isSignal": true; }; "snapToItem": { "alias": "snapToItem"; "required": false; "isSignal": true; }; "snapToItemAlign": { "alias": "snapToItemAlign"; "required": false; "isSignal": true; }; "snappingDistance": { "alias": "snappingDistance"; "required": false; "isSignal": true; }; "scrollingOneByOne": { "alias": "scrollingOneByOne"; "required": false; "isSignal": true; }; "alignment": { "alias": "alignment"; "required": false; "isSignal": true; }; "zIndexWhenSelecting": { "alias": "zIndexWhenSelecting"; "required": false; "isSignal": true; }; "spreadingMode": { "alias": "spreadingMode"; "required": false; "isSignal": true; }; "divides": { "alias": "divides"; "required": false; "isSignal": true; }; "motionBlur": { "alias": "motionBlur"; "required": false; "isSignal": true; }; "maxMotionBlur": { "alias": "maxMotionBlur"; "required": false; "isSignal": true; }; "motionBlurEnabled": { "alias": "motionBlurEnabled"; "required": false; "isSignal": true; }; "animationParams": { "alias": "animationParams"; "required": false; "isSignal": true; }; "overscrollEnabled": { "alias": "overscrollEnabled"; "required": false; "isSignal": true; }; "enabledBufferOptimization": { "alias": "enabledBufferOptimization"; "required": false; "isSignal": true; }; "itemRenderer": { "alias": "itemRenderer"; "required": true; "isSignal": true; }; "itemConfigMap": { "alias": "itemConfigMap"; "required": false; "isSignal": true; }; "itemSize": { "alias": "itemSize"; "required": false; "isSignal": true; }; "minItemSize": { "alias": "minItemSize"; "required": false; "isSignal": true; }; "maxItemSize": { "alias": "maxItemSize"; "required": false; "isSignal": true; }; "dynamicSize": { "alias": "dynamicSize"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "collectionMode": { "alias": "collectionMode"; "required": false; "isSignal": true; }; "bufferSize": { "alias": "bufferSize"; "required": false; "isSignal": true; }; "maxBufferSize": { "alias": "maxBufferSize"; "required": false; "isSignal": true; }; "snappingMethod": { "alias": "snappingMethod"; "required": false; "isSignal": true; }; "collapsingMode": { "alias": "collapsingMode"; "required": false; "isSignal": true; }; "methodForSelecting": { "alias": "methodForSelecting"; "required": false; "isSignal": true; }; "selectingMode": { "alias": "selectingMode"; "required": false; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; "screenReaderMessage": { "alias": "screenReaderMessage"; "required": false; "isSignal": true; }; "langTextDir": { "alias": "langTextDir"; "required": false; "isSignal": true; }; }, { "onScroll": "onScroll"; "onScrollEnd": "onScrollEnd"; "onViewportChange": "onViewportChange"; "onSnapItem": "onSnapItem"; "onItemClick": "onItemClick"; "onSelect": "onSelect"; "onCollapse": "onCollapse"; "onScrollReachStart": "onScrollReachStart"; "onScrollReachEnd": "onScrollReachEnd"; }, never, never, false, never>;
2643
+ }
2644
+
2645
+ declare class CnVirtualListItemModule {
2646
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnVirtualListItemModule, never>;
2647
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<CnVirtualListItemModule, [typeof CnVirtualListItemComponent], [typeof i2.CommonModule, typeof CnVirtualClickModule], [typeof CnVirtualListItemComponent]>;
2648
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<CnVirtualListItemModule>;
2649
+ }
2650
+
2651
+ /**
2652
+ * IScrollToParams
2653
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroll-view/interfaces/scroll-to-params.ts
2654
+ * @author Evgenii Alexandrovich Grebennikov
2655
+ * @email djonnyx@gmail.com
2656
+ */
2657
+ interface IScrollToParams$1 {
2658
+ x?: number;
2659
+ y?: number;
2660
+ left?: number;
2661
+ top?: number;
2662
+ snap?: boolean;
2663
+ normalize?: boolean;
2664
+ force?: boolean;
2665
+ blending?: boolean;
2666
+ behavior?: ScrollBehavior;
2667
+ ease?: Easing;
2668
+ fireUpdate?: boolean;
2669
+ userAction?: boolean;
2670
+ duration?: number;
2671
+ }
2672
+
2673
+ /**
2674
+ * ScrollerDirection
2675
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroll-view/enums/scroller-direction.ts
2676
+ * @author Evgenii Alexandrovich Grebennikov
2677
+ * @email djonnyx@gmail.com
2678
+ */
2679
+ declare enum ScrollerDirection$1 {
2680
+ HORIZONTAL = "horizontal",
2681
+ VERTICAL = "vertical"
2682
+ }
2683
+
2684
+ /**
2685
+ * ScrollerDirections
2686
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroll-view/enums/scroller-directions.ts
2687
+ * @author Evgenii Alexandrovich Grebennikov
2688
+ * @email djonnyx@gmail.com
2689
+ */
2690
+ type ScrollerDirections$1 = ScrollerDirection$1 | 'horizontal' | 'vertical';
2691
+
2692
+ /**
2693
+ * BaseScrollView
2694
+ * Maximum performance for extremely large lists.
2695
+ * It is based on algorithms for virtualization of screen objects.
2696
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroll-view/base/base-scroll-view.component.ts
2697
+ * @author Evgenii Alexandrovich Grebennikov
2698
+ * @email djonnyx@gmail.com
2699
+ */
2700
+ declare class BaseScrollView$1 {
2701
+ readonly scrollContent: Signal<ElementRef<HTMLDivElement> | undefined>;
2702
+ readonly scrollViewport: Signal<ElementRef<HTMLDivElement> | undefined>;
2703
+ readonly direction: _angular_core.InputSignal<ScrollerDirections$1>;
2704
+ readonly startOffset: _angular_core.InputSignal<number>;
2705
+ readonly endOffset: _angular_core.InputSignal<number>;
2706
+ readonly alignmentStartOffset: _angular_core.InputSignal<number>;
2707
+ readonly alignmentEndOffset: _angular_core.InputSignal<number>;
2708
+ readonly isInfinity: _angular_core.InputSignal<boolean>;
2709
+ readonly isVertical: Signal<boolean>;
2710
+ readonly grabbing: _angular_core.WritableSignal<boolean>;
2711
+ readonly langTextDir: _angular_core.InputSignal<TextDirection>;
2712
+ protected _inversion: boolean;
2713
+ protected _overscrollEnabled: boolean;
2714
+ protected _$updateScrollBar: Subject<void>;
2715
+ protected $updateScrollBar: rxjs.Observable<void>;
2716
+ get scrollable(): boolean;
2717
+ protected _destroyRef: DestroyRef;
2718
+ protected _isMoving: boolean;
2719
+ get isMoving(): boolean;
2720
+ protected _x: number;
2721
+ set x(v: number);
2722
+ get x(): number;
2723
+ protected _y: number;
2724
+ set y(v: number);
2725
+ get y(): number;
2726
+ protected _actualTotalSize: number;
2727
+ protected _totalSize: number;
2728
+ set totalSize(v: number);
2729
+ get totalSize(): number;
2730
+ protected _startLayoutOffset: number;
2731
+ set startLayoutOffset(v: number);
2732
+ get startLayoutOffset(): number;
2733
+ get actualScrollHeight(): number;
2734
+ get actualScrollWidth(): number;
2735
+ protected _actualX: number;
2736
+ get actualScrollLeft(): number;
2737
+ protected _actualY: number;
2738
+ get actualScrollTop(): number;
2739
+ get scrollLeft(): number;
2740
+ get scrollTop(): number;
2741
+ get scrollWidth(): number;
2742
+ get scrollHeight(): number;
2743
+ readonly viewportBounds: _angular_core.WritableSignal<ISize>;
2744
+ readonly contentBounds: _angular_core.WritableSignal<ISize>;
2745
+ protected _isCoordinatesOverrided: boolean;
2746
+ constructor();
2747
+ tick(): void;
2748
+ protected overrideCoordinates(x: number, y: number): void;
2749
+ protected normalizeScrollSize(): boolean;
2750
+ protected onResizeViewport(): void;
2751
+ protected onResizeContent(value?: number | null): void;
2752
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseScrollView$1, never>;
2753
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BaseScrollView$1, "base-scroll-view", never, { "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "startOffset": { "alias": "startOffset"; "required": false; "isSignal": true; }; "endOffset": { "alias": "endOffset"; "required": false; "isSignal": true; }; "alignmentStartOffset": { "alias": "alignmentStartOffset"; "required": false; "isSignal": true; }; "alignmentEndOffset": { "alias": "alignmentEndOffset"; "required": false; "isSignal": true; }; "isInfinity": { "alias": "isInfinity"; "required": false; "isSignal": true; }; "langTextDir": { "alias": "langTextDir"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2754
+ }
2755
+
2756
+ /**
2757
+ * ScrollingDirection
2758
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/utils/scrolling-direction.ts
2759
+ * @author Evgenii Alexandrovich Grebennikov
2760
+ * @email djonnyx@gmail.com
2761
+ */
2762
+ declare class ScrollingDirection {
2763
+ private _length;
2764
+ private _value;
2765
+ private _$direction;
2766
+ readonly $direction: rxjs.Observable<ScrollDirection$1>;
2767
+ constructor(_length?: number);
2768
+ add(v: ScrollDirection$1): void;
2769
+ get(): ScrollDirection$1;
2770
+ clear(): void;
2771
+ }
2772
+
2773
+ /**
2774
+ * CnScrollView
2775
+ * Maximum performance for extremely large lists.
2776
+ * It is based on algorithms for virtualization of screen objects.
2777
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroll-view/cn-scroll-view.component.ts
2778
+ * @author Evgenii Alexandrovich Grebennikov
2779
+ * @email djonnyx@gmail.com
2780
+ */
2781
+ declare class CnScrollView$1 extends BaseScrollView$1 {
2782
+ readonly cdkScrollable: CdkScrollable | undefined;
2783
+ protected _service: CnVirtualListService;
2784
+ readonly scrollBehavior: _angular_core.InputSignal<ScrollBehavior>;
2785
+ readonly overscrollEnabled: _angular_core.InputSignal<boolean>;
2786
+ readonly scrollingSettings: _angular_core.InputSignal<IScrollingSettings$1>;
2787
+ readonly snapToItem: _angular_core.InputSignal<boolean>;
2788
+ readonly scrollingOneByOne: _angular_core.InputSignal<boolean>;
2789
+ readonly snapToItemAlign: _angular_core.InputSignal<SnapToItemAlign>;
2790
+ readonly snappingDistance: _angular_core.InputSignal<SnappingDistance>;
2791
+ readonly animationParams: _angular_core.InputSignal<IAnimationParams$1>;
2792
+ protected _normalizeValueFromZero: boolean;
2793
+ protected _isScrollsTo: boolean;
2794
+ protected _scrollDirection: ScrollingDirection;
2795
+ get scrollDirection(): ScrollDirection$1;
2796
+ get $scrollDirection(): rxjs.Observable<ScrollDirection$1>;
2797
+ protected _$wheel: Subject<number>;
2798
+ readonly $wheel: rxjs.Observable<number>;
2799
+ protected _$scroll: Subject<boolean>;
2800
+ readonly $scroll: rxjs.Observable<boolean>;
2801
+ protected _$scrollEnd: Subject<boolean>;
2802
+ readonly $scrollEnd: rxjs.Observable<boolean>;
2803
+ protected _velocities: Array<number>;
2804
+ protected _$velocity: BehaviorSubject<number>;
2805
+ protected $velocity: rxjs.Observable<number>;
2806
+ get velocity(): number;
2807
+ protected _$averageVelocity: BehaviorSubject<number>;
2808
+ protected $averageVelocity: rxjs.Observable<number>;
2809
+ get averageVelocity(): number;
2810
+ private _measureVelocityTimestamp;
2811
+ private _measureVelocityLastPosition;
2812
+ private _startPositionX;
2813
+ private _startPositionY;
2814
+ private _touchId;
2815
+ set startPosition(v: number);
2816
+ get startPosition(): number;
2817
+ protected _animator: Animator;
2818
+ protected _interactive: boolean;
2819
+ protected _horizontalAxisInvertion: Signal<boolean>;
2820
+ get inverted(): boolean;
2821
+ private _overscrollIteration;
2822
+ private _overscrollStartIteration;
2823
+ private _overscrollApplied;
2824
+ set x(v: number);
2825
+ get x(): number;
2826
+ protected setX(x: number, snap?: boolean, normalize?: boolean): void;
2827
+ set y(v: number);
2828
+ get y(): number;
2829
+ protected setY(y: number, snap?: boolean, normalize?: boolean): void;
2830
+ protected _delta: number;
2831
+ set delta(v: number);
2832
+ set startLayoutOffset(v: number);
2833
+ get startLayoutOffset(): number;
2834
+ private _scrollDirectionValueX;
2835
+ private _scrollDirectionValueY;
2836
+ protected _intersectionComponentId: Id | null;
2837
+ protected _isAlignmentAnimation: boolean;
2838
+ get animated(): boolean;
2839
+ constructor();
2840
+ hasAnimation(id?: number): boolean;
2841
+ protected updateDirection(position: number, prePosition: number): void;
2842
+ protected overrideCoordinates(x: number, y: number): void;
2843
+ protected measureVelocity(): void;
2844
+ protected stopMoving(): void;
2845
+ private snapIfNecessary;
2846
+ protected snapWithInitialForceIfNecessary(v0?: number | null, animated?: boolean, force?: boolean, fireUpdate?: boolean): boolean;
2847
+ private calculatePosition;
2848
+ private cancelOverscroll;
2849
+ private checkOverscrollByAxis;
2850
+ private checkOverscroll;
2851
+ private calculateVelocity;
2852
+ private calculateAcceleration;
2853
+ stopScrolling(force?: boolean): void;
2854
+ protected move(isVertical: boolean, position: number, blending?: boolean, userAction?: boolean, fireUpdate?: boolean): void;
2855
+ protected moveWithAcceleration(isVertical: boolean, position: number, v0: number, v: number, a0: number, timestamp: number): void;
2856
+ protected normalizeValue(value: number): number;
2857
+ protected animate(startValue: number, endValue: number, duration?: number, easingFunction?: Easing, blending?: boolean, userAction?: boolean, alignmentAtComplete?: boolean, skipOverridedCoordinates?: boolean, fireUpdate?: boolean): number;
2858
+ protected getSnappedComponentSize(): number | null;
2859
+ protected alignPosition(animated?: boolean, force?: boolean, fireUpdate?: boolean): boolean;
2860
+ protected checkIntersectionComponent(): void;
2861
+ protected onAnimationComplete(position: number): void;
2862
+ fireScroll(userAction?: boolean): void;
2863
+ scrollLimits(value?: number | undefined, silent?: boolean): boolean;
2864
+ scroll(params: IScrollToParams$1): number;
2865
+ protected emitScrollableEvent(): void;
2866
+ refreshCoordinate(x: number, y: number): void;
2867
+ protected fireScrollEvent(userAction: boolean): void;
2868
+ protected onDragStart(): void;
2869
+ reset(offset?: number): void;
2870
+ stopAnimation(id: number): void;
2871
+ ngOnDestroy(): void;
2872
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnScrollView$1, never>;
2873
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CnScrollView$1, "cn-scroll-view", never, { "scrollBehavior": { "alias": "scrollBehavior"; "required": false; "isSignal": true; }; "overscrollEnabled": { "alias": "overscrollEnabled"; "required": false; "isSignal": true; }; "scrollingSettings": { "alias": "scrollingSettings"; "required": false; "isSignal": true; }; "snapToItem": { "alias": "snapToItem"; "required": false; "isSignal": true; }; "scrollingOneByOne": { "alias": "scrollingOneByOne"; "required": false; "isSignal": true; }; "snapToItemAlign": { "alias": "snapToItemAlign"; "required": false; "isSignal": true; }; "snappingDistance": { "alias": "snappingDistance"; "required": false; "isSignal": true; }; "animationParams": { "alias": "animationParams"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2874
+ }
2875
+
2876
+ /**
2877
+ * IScrollBarDragEvent
2878
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/ng-scroll-bar/interfaces/scrollbar-drag-data.ts
2879
+ * @author Evgenii Alexandrovich Grebennikov
2880
+ * @email djonnyx@gmail.com
2881
+ */
2882
+ interface IScrollBarDragEvent$1 {
2883
+ position: number;
2884
+ min: number;
2885
+ max: number;
2886
+ userAction: boolean;
2887
+ animation: boolean;
2888
+ }
2889
+
2890
+ interface IScrollBarTemplateContext$1 {
2891
+ /**
2892
+ * API provider
2893
+ */
2894
+ api: CnScrollBarPublicService$1;
2895
+ /**
2896
+ * Scrollbar thumb width.
2897
+ */
2898
+ width: number;
2899
+ /**
2900
+ * Scrollbar thumb height.
2901
+ */
2902
+ height: number;
2903
+ /**
2904
+ * Gradient fill position parameters.
2905
+ */
2906
+ fillPositions: GradientColorPositions;
2907
+ /**
2908
+ * Additional options for the scrollbar.
2909
+ */
2910
+ params: {
2911
+ [propName: string]: any;
2912
+ };
2913
+ }
2914
+
2915
+ /**
2916
+ * CnScrollBarService
2917
+ * Maximum performance for extremely large lists.
2918
+ * It is based on algorithms for virtualization of screen objects.
2919
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroll-bar/cn-scroll-bar.service.ts
2920
+ * @author Evgenii Alexandrovich Grebennikov
2921
+ * @email djonnyx@gmail.com
2922
+ */
2923
+ declare class CnScrollBarService$1 {
2924
+ private _$click;
2925
+ readonly $click: rxjs.Observable<PointerEvent | MouseEvent>;
2926
+ private _$state;
2927
+ readonly $state: rxjs.Observable<ScrollbarStates$1>;
2928
+ set state(v: ScrollbarState$1);
2929
+ get state(): ScrollbarState$1;
2930
+ click(event: PointerEvent | MouseEvent): void;
2931
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnScrollBarService$1, never>;
2932
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CnScrollBarService$1>;
2933
+ }
2934
+
2935
+ /**
2936
+ * ScrollBar component.
2937
+ * Maximum performance for extremely large lists.
2938
+ * It is based on algorithms for virtualization of screen objects.
2939
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroll-bar/cn-scroll-bar.component.ts
2940
+ * @author Evgenii Alexandrovich Grebennikov
2941
+ * @email djonnyx@gmail.com
2942
+ */
2943
+ declare class CnScrollBarComponent$1 extends CnScrollView$1 {
2944
+ protected _defaultRenderer: Signal<TemplateRef<any> | undefined>;
2945
+ protected _scrollBarService: CnScrollBarService$1;
2946
+ private _apiService;
2947
+ readonly loading: _angular_core.InputSignal<boolean>;
2948
+ readonly onDrag: _angular_core.OutputEmitterRef<IScrollBarDragEvent$1>;
2949
+ readonly onDragEnd: _angular_core.OutputEmitterRef<IScrollBarDragEvent$1>;
2950
+ readonly thumbGradientPositions: _angular_core.InputSignal<GradientColorPositions>;
2951
+ readonly size: _angular_core.InputSignal<number>;
2952
+ readonly thickness: _angular_core.InputSignal<number>;
2953
+ readonly scrollbarMinSize: _angular_core.InputSignal<number>;
2954
+ readonly prepared: _angular_core.InputSignal<boolean>;
2955
+ readonly interactive: _angular_core.InputSignal<boolean>;
2956
+ readonly overlapping: _angular_core.InputSignal<boolean>;
2957
+ readonly show: _angular_core.InputSignal<boolean>;
2958
+ readonly params: _angular_core.InputSignal<{
2959
+ [propName: string]: any;
2960
+ } | null>;
2961
+ readonly renderer: _angular_core.InputSignal<TemplateRef<any> | null>;
2962
+ readonly thumbRenderer: _angular_core.WritableSignal<TemplateRef<any> | null>;
2963
+ protected readonly hoverState: _angular_core.WritableSignal<boolean>;
2964
+ protected readonly pressedState: _angular_core.WritableSignal<boolean>;
2965
+ protected readonly templateContext: Signal<IScrollBarTemplateContext$1>;
2966
+ protected readonly styles: Signal<{
2967
+ [sName: string]: any;
2968
+ }>;
2969
+ protected readonly thumbWidth: Signal<number>;
2970
+ protected readonly thumbHeight: Signal<number>;
2971
+ private _$scrollingCancel;
2972
+ protected readonly $scrollingCancel: rxjs.Observable<void>;
2973
+ private _elementRef;
2974
+ constructor();
2975
+ private createDragEvent;
2976
+ private thumbHit;
2977
+ click(event: PointerEvent | MouseEvent): void;
2978
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnScrollBarComponent$1, never>;
2979
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CnScrollBarComponent$1, "cn-scroll-bar", never, { "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "thumbGradientPositions": { "alias": "thumbGradientPositions"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "thickness": { "alias": "thickness"; "required": false; "isSignal": true; }; "scrollbarMinSize": { "alias": "scrollbarMinSize"; "required": false; "isSignal": true; }; "prepared": { "alias": "prepared"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "overlapping": { "alias": "overlapping"; "required": false; "isSignal": true; }; "show": { "alias": "show"; "required": false; "isSignal": true; }; "params": { "alias": "params"; "required": false; "isSignal": true; }; "renderer": { "alias": "renderer"; "required": false; "isSignal": true; }; }, { "onDrag": "onDrag"; "onDragEnd": "onDragEnd"; }, never, never, false, never>;
2980
+ }
2981
+
2982
+ /**
2983
+ * The scroller for the CnVirtualList item component
2984
+ * Maximum performance for extremely large lists.
2985
+ * It is based on algorithms for virtualization of screen objects.
2986
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-scroller/cn-scroller.component.ts
2987
+ * @author Evgenii Alexandrovich Grebennikov
2988
+ * @email djonnyx@gmail.com
2989
+ */
2990
+ declare class CnScrollerComponent$1 extends CnScrollView$1 {
2991
+ readonly scrollBar: CnScrollBarComponent$1 | undefined;
2992
+ readonly filter: Signal<ElementRef<SVGFEGaussianBlurElement> | undefined>;
2993
+ readonly onScrollbarVisible: _angular_core.OutputEmitterRef<boolean>;
2994
+ readonly scrollbarEnabled: _angular_core.InputSignal<boolean>;
2995
+ readonly scrollbarInteractive: _angular_core.InputSignal<boolean>;
2996
+ readonly focusedElement: _angular_core.InputSignal<Id | null>;
2997
+ readonly overlappingScrollbar: _angular_core.InputSignal<boolean>;
2998
+ readonly content: _angular_core.InputSignal<HTMLElement | undefined>;
2999
+ readonly loading: _angular_core.InputSignal<boolean>;
3000
+ readonly classes: _angular_core.InputSignal<{
3001
+ [cName: string]: boolean;
3002
+ }>;
3003
+ readonly scrollbarMinSize: _angular_core.InputSignal<number>;
3004
+ readonly scrollbarThickness: _angular_core.InputSignal<number>;
3005
+ readonly scrollbarThumbRenderer: _angular_core.InputSignal<TemplateRef<any> | null>;
3006
+ readonly scrollbarThumbParams: _angular_core.InputSignal<{
3007
+ [propName: string]: any;
3008
+ } | null>;
3009
+ readonly motionBlur: _angular_core.InputSignal<number | "disabled">;
3010
+ readonly maxMotionBlur: _angular_core.InputSignal<number>;
3011
+ readonly motionBlurEnabled: _angular_core.InputSignal<boolean>;
3012
+ readonly actualClasses: Signal<{
3013
+ [cName: string]: boolean;
3014
+ }>;
3015
+ readonly containerClasses: Signal<{
3016
+ [cName: string]: boolean;
3017
+ }>;
3018
+ readonly thumbGradientPositions: _angular_core.WritableSignal<GradientColorPositions>;
3019
+ readonly thumbSize: _angular_core.WritableSignal<number>;
3020
+ readonly scrollbarShow: _angular_core.WritableSignal<boolean>;
3021
+ readonly preparedSignal: _angular_core.WritableSignal<boolean>;
3022
+ readonly listStyles: _angular_core.WritableSignal<{
3023
+ perspectiveOrigin: string;
3024
+ }>;
3025
+ private _scrollBox;
3026
+ get host(): HTMLDivElement | undefined;
3027
+ private _$scrollbarScroll;
3028
+ readonly $scrollbarScroll: rxjs.Observable<boolean>;
3029
+ private _prepared;
3030
+ set prepared(v: boolean);
3031
+ protected setX(x: number, snap?: boolean, normalize?: boolean): void;
3032
+ protected setY(y: number, snap?: boolean, normalize?: boolean): void;
3033
+ set startLayoutOffset(v: number);
3034
+ get startLayoutOffset(): number;
3035
+ readonly viewInitialized: _angular_core.WritableSignal<boolean>;
3036
+ private _isScrollbarUserAction;
3037
+ get isScrollbarUserAction(): boolean;
3038
+ protected _$resizeViewport: Subject<ISize>;
3039
+ readonly $resizeViewport: rxjs.Observable<ISize>;
3040
+ protected _$resizeContent: Subject<ISize>;
3041
+ readonly $resizeContent: rxjs.Observable<ISize>;
3042
+ protected _filterId: string;
3043
+ protected _filter: string;
3044
+ constructor();
3045
+ private recalculatePerspective;
3046
+ protected onResizeViewport(): void;
3047
+ protected onResizeContent(value?: number | null): void;
3048
+ private updateScrollBarHandler;
3049
+ ngAfterViewInit(): void;
3050
+ tick(): void;
3051
+ private updateScrollBar;
3052
+ refreshScrollbar(): void;
3053
+ protected onDragStart(): void;
3054
+ reset(): void;
3055
+ refresh(fireUpdate?: boolean, updateScrollbar?: boolean): void;
3056
+ snapIfNeed(animated?: boolean, fireUpdate?: boolean): void;
3057
+ startScrollTo(): void;
3058
+ finishedScrollTo(): void;
3059
+ scrollTo(params: IScrollToParams$1): number;
3060
+ stopScrollbar(): void;
3061
+ private dropVelocity;
3062
+ protected stopMoving(): void;
3063
+ protected onAnimationComplete(position: number): void;
3064
+ onScrollBarDragHandler(event: IScrollBarDragEvent$1): void;
3065
+ onScrollBarDragEndHandler(event: IScrollBarDragEvent$1): void;
3066
+ private fireUpdateIfEdgesDetected;
3067
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnScrollerComponent$1, never>;
3068
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CnScrollerComponent$1, "cn-scroller", never, { "scrollbarEnabled": { "alias": "scrollbarEnabled"; "required": false; "isSignal": true; }; "scrollbarInteractive": { "alias": "scrollbarInteractive"; "required": false; "isSignal": true; }; "focusedElement": { "alias": "focusedElement"; "required": false; "isSignal": true; }; "overlappingScrollbar": { "alias": "overlappingScrollbar"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "classes": { "alias": "classes"; "required": false; "isSignal": true; }; "scrollbarMinSize": { "alias": "scrollbarMinSize"; "required": false; "isSignal": true; }; "scrollbarThickness": { "alias": "scrollbarThickness"; "required": false; "isSignal": true; }; "scrollbarThumbRenderer": { "alias": "scrollbarThumbRenderer"; "required": false; "isSignal": true; }; "scrollbarThumbParams": { "alias": "scrollbarThumbParams"; "required": false; "isSignal": true; }; "motionBlur": { "alias": "motionBlur"; "required": false; "isSignal": true; }; "maxMotionBlur": { "alias": "maxMotionBlur"; "required": false; "isSignal": true; }; "motionBlurEnabled": { "alias": "motionBlurEnabled"; "required": false; "isSignal": true; }; }, { "onScrollbarVisible": "onScrollbarVisible"; }, never, ["*"], false, never>;
3069
+ }
3070
+
3071
+ declare class CnScrollBarModule$1 {
3072
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnScrollBarModule$1, never>;
3073
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<CnScrollBarModule$1, [typeof CnScrollBarComponent$1], [typeof i2.CommonModule], [typeof CnScrollBarComponent$1]>;
3074
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<CnScrollBarModule$1>;
3075
+ }
3076
+
3077
+ declare class CnScrollerModule$1 {
3078
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnScrollerModule$1, never>;
3079
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<CnScrollerModule$1, [typeof CnScrollerComponent$1], [typeof i2.CommonModule, typeof CnScrollBarModule$1, typeof CnLocaleSensitiveModule, typeof i5.CdkScrollableModule], [typeof CnScrollerComponent$1]>;
3080
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<CnScrollerModule$1>;
3081
+ }
3082
+
3083
+ /**
3084
+ * CnPrerenderContainer
3085
+ * Maximum performance for extremely large lists.
3086
+ * It is based on algorithms for virtualization of screen objects.
3087
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-prerender-container/cn-prerender-container.component.ts
3088
+ * @author Evgenii Alexandrovich Grebennikov
3089
+ * @email djonnyx@gmail.com
3090
+ */
3091
+ declare class CnPrerenderContainer {
3092
+ private _list;
3093
+ enabled: _angular_core.InputSignal<boolean>;
3094
+ direction: _angular_core.InputSignal<Direction$1>;
3095
+ isVertical: _angular_core.InputSignal<boolean>;
3096
+ scrollbarEnabled: _angular_core.InputSignal<boolean>;
3097
+ startOffset: _angular_core.InputSignal<number>;
3098
+ endOffset: _angular_core.InputSignal<number>;
3099
+ bounds: _angular_core.InputSignal<ISize>;
3100
+ dynamic: _angular_core.InputSignal<boolean>;
3101
+ itemSize: _angular_core.InputSignal<number>;
3102
+ trackBy: _angular_core.InputSignal<string>;
3103
+ divides: _angular_core.InputSignal<number>;
3104
+ itemRenderer: _angular_core.InputSignal<TemplateRef<any> | undefined>;
3105
+ readonly $render: Observable<PrerenderCache>;
3106
+ get active(): boolean;
3107
+ constructor();
3108
+ clear(): void;
3109
+ on(items?: IVirtualListCollection | null): void;
3110
+ off(): void;
3111
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnPrerenderContainer, never>;
3112
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CnPrerenderContainer, "cn-prerender-container", never, { "enabled": { "alias": "enabled"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "isVertical": { "alias": "isVertical"; "required": false; "isSignal": true; }; "scrollbarEnabled": { "alias": "scrollbarEnabled"; "required": false; "isSignal": true; }; "startOffset": { "alias": "startOffset"; "required": false; "isSignal": true; }; "endOffset": { "alias": "endOffset"; "required": false; "isSignal": true; }; "bounds": { "alias": "bounds"; "required": true; "isSignal": true; }; "dynamic": { "alias": "dynamic"; "required": false; "isSignal": true; }; "itemSize": { "alias": "itemSize"; "required": false; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; "divides": { "alias": "divides"; "required": false; "isSignal": true; }; "itemRenderer": { "alias": "itemRenderer"; "required": false; "isSignal": true; }; }, {}, never, never, false, never>;
3113
+ }
3114
+
3115
+ /**
3116
+ * CnPrerenderList
3117
+ * Maximum performance for extremely large lists.
3118
+ * It is based on algorithms for virtualization of screen objects.
3119
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-prerender-container/components/cn-prerender-list/cn-prerender-list.component.ts
3120
+ * @author Evgenii Alexandrovich Grebennikov
3121
+ * @email djonnyx@gmail.com
3122
+ */
3123
+ declare class CnPrerenderList implements OnDestroy {
3124
+ private _listContainerRef;
3125
+ enabled: _angular_core.InputSignal<boolean>;
3126
+ direction: _angular_core.InputSignal<Direction$1>;
3127
+ isVertical: _angular_core.InputSignal<boolean>;
3128
+ scrollbarEnabled: _angular_core.InputSignal<boolean>;
3129
+ startOffset: _angular_core.InputSignal<number>;
3130
+ endOffset: _angular_core.InputSignal<number>;
3131
+ bounds: _angular_core.InputSignal<ISize>;
3132
+ dynamic: _angular_core.InputSignal<boolean>;
3133
+ itemSize: _angular_core.InputSignal<number>;
3134
+ trackBy: _angular_core.InputSignal<string>;
3135
+ divides: _angular_core.InputSignal<number>;
3136
+ itemRenderer: _angular_core.InputSignal<TemplateRef<any> | undefined>;
3137
+ itemComponentClass: _angular_core.InputSignal<Component$1<BaseVirtualListItemComponent>>;
3138
+ protected _items: _angular_core.WritableSignal<IVirtualListCollection<Object> | null>;
3139
+ protected readonly classes: _angular_core.WritableSignal<{
3140
+ [cName: string]: boolean;
3141
+ }>;
3142
+ private _$render;
3143
+ $render: Observable<PrerenderCache>;
3144
+ private _$componentResize;
3145
+ protected $componentResize: Observable<PrerenderCache>;
3146
+ private _trackBox;
3147
+ private _onTrackBoxResizeHandler;
3148
+ private _elementRef;
3149
+ protected $isVertical: Observable<boolean>;
3150
+ protected $items: Observable<IVirtualListCollection | null>;
3151
+ protected $bounds: Observable<ISize>;
3152
+ get active(): boolean;
3153
+ private _activated;
3154
+ private _subscriptions;
3155
+ private _destroyRef;
3156
+ constructor();
3157
+ activate(): void;
3158
+ deactivate(): void;
3159
+ clear(): void;
3160
+ on(items?: IVirtualListCollection | null): void;
3161
+ off(): void;
3162
+ ngAfterViewInit(): void;
3163
+ ngOnDestroy(): void;
3164
+ dispose(): void;
3165
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnPrerenderList, never>;
3166
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CnPrerenderList, "cn-prerender-list", never, { "enabled": { "alias": "enabled"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "isVertical": { "alias": "isVertical"; "required": false; "isSignal": true; }; "scrollbarEnabled": { "alias": "scrollbarEnabled"; "required": false; "isSignal": true; }; "startOffset": { "alias": "startOffset"; "required": false; "isSignal": true; }; "endOffset": { "alias": "endOffset"; "required": false; "isSignal": true; }; "bounds": { "alias": "bounds"; "required": true; "isSignal": true; }; "dynamic": { "alias": "dynamic"; "required": false; "isSignal": true; }; "itemSize": { "alias": "itemSize"; "required": false; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; "divides": { "alias": "divides"; "required": false; "isSignal": true; }; "itemRenderer": { "alias": "itemRenderer"; "required": false; "isSignal": true; }; "itemComponentClass": { "alias": "itemComponentClass"; "required": false; "isSignal": true; }; }, {}, never, never, false, never>;
3167
+ }
3168
+
3169
+ /**
3170
+ * CnPrerenderVirtualListItemComponent
3171
+ * Maximum performance for extremely large lists.
3172
+ * It is based on algorithms for virtualization of screen objects.
3173
+ * @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
3174
+ * @author Evgenii Alexandrovich Grebennikov
3175
+ * @email djonnyx@gmail.com
3176
+ */
3177
+ declare class CnPrerenderVirtualListItemComponent extends CnVirtualListItemComponent {
3178
+ protected update(): void;
3179
+ show(): void;
3180
+ hide(): void;
3181
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnPrerenderVirtualListItemComponent, never>;
3182
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CnPrerenderVirtualListItemComponent, "cn-prerender-virtual-list-item", never, {}, {}, never, never, false, never>;
3183
+ }
3184
+
3185
+ declare class CnPrerenderVirtualListItemModule {
3186
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnPrerenderVirtualListItemModule, never>;
3187
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<CnPrerenderVirtualListItemModule, [typeof CnPrerenderVirtualListItemComponent], [typeof i2.CommonModule, typeof CnVirtualClickModule], [typeof CnPrerenderVirtualListItemComponent]>;
3188
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<CnPrerenderVirtualListItemModule>;
3189
+ }
3190
+
3191
+ /**
3192
+ * CnPrerenderScrollerComponent
3193
+ * Maximum performance for extremely large lists.
3194
+ * It is based on algorithms for virtualization of screen objects.
3195
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/list/components/cn-prerender-container/components/cn-prerender-scroller/cn-prerender-scroller.component.ts
3196
+ * @author Evgenii Alexandrovich Grebennikov
3197
+ * @email djonnyx@gmail.com
3198
+ */
3199
+ declare class CnPrerenderScrollerComponent extends BaseScrollView$1 {
3200
+ scrollBar: CnScrollBarComponent$1 | undefined;
3201
+ scrollbarEnabled: _angular_core.InputSignal<boolean>;
3202
+ classes: _angular_core.InputSignal<{
3203
+ [cName: string]: boolean;
3204
+ }>;
3205
+ actualClasses: Signal<{
3206
+ [cName: string]: boolean;
3207
+ }>;
3208
+ containerClasses: _angular_core.WritableSignal<{
3209
+ [cName: string]: boolean;
3210
+ }>;
3211
+ thumbSize: _angular_core.WritableSignal<number>;
3212
+ scrollbarShow: _angular_core.WritableSignal<boolean>;
3213
+ set x(v: number);
3214
+ get x(): number;
3215
+ set y(v: number);
3216
+ get y(): number;
3217
+ protected onResizeViewport(): void;
3218
+ protected onResizeContent(): void;
3219
+ private _scrollBox;
3220
+ constructor();
3221
+ private updateScrollBarHandler;
3222
+ protected updateScrollBar(): void;
3223
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnPrerenderScrollerComponent, never>;
3224
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CnPrerenderScrollerComponent, "cn-prerender-scroller", never, { "scrollbarEnabled": { "alias": "scrollbarEnabled"; "required": false; "isSignal": true; }; "classes": { "alias": "classes"; "required": false; "isSignal": true; }; }, {}, never, ["*"], false, never>;
3225
+ }
3226
+
3227
+ declare class CnPrerenderScrollerModule {
3228
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnPrerenderScrollerModule, never>;
3229
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<CnPrerenderScrollerModule, [typeof CnPrerenderScrollerComponent], [typeof i2.CommonModule, typeof CnLocaleSensitiveModule], [typeof CnPrerenderScrollerComponent]>;
3230
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<CnPrerenderScrollerModule>;
3231
+ }
3232
+
3233
+ declare class CnPrerenderListModule {
3234
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnPrerenderListModule, never>;
3235
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<CnPrerenderListModule, [typeof CnPrerenderList], [typeof i2.CommonModule, typeof CnPrerenderVirtualListItemModule, typeof CnPrerenderScrollerModule], [typeof CnPrerenderList]>;
3236
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<CnPrerenderListModule>;
3237
+ }
3238
+
3239
+ declare class CnPrerenderContainerModule {
3240
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnPrerenderContainerModule, never>;
3241
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<CnPrerenderContainerModule, [typeof CnPrerenderContainer], [typeof i2.CommonModule, typeof CnPrerenderListModule], [typeof CnPrerenderContainer]>;
3242
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<CnPrerenderContainerModule>;
3243
+ }
3244
+
3245
+ declare class CnVirtualListModule {
3246
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnVirtualListModule, never>;
3247
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<CnVirtualListModule, [typeof CnVirtualListComponent], [typeof i2.CommonModule, typeof CnVirtualListItemModule, typeof CnScrollerModule$1, typeof CnPrerenderContainerModule, typeof CnLocaleSensitiveModule], [typeof CnVirtualListComponent]>;
3248
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<CnVirtualListModule>;
3249
+ }
3250
+
3251
+ /**
3252
+ * IScrollToParams
3253
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/cn-scroll-view/interfaces/scroll-to-params.ts
3254
+ * @author Evgenii Alexandrovich Grebennikov
3255
+ * @email djonnyx@gmail.com
3256
+ */
3257
+ interface IScrollToParams {
3258
+ x?: number | null;
3259
+ y?: number | null;
3260
+ left?: number | null;
3261
+ top?: number | null;
3262
+ normalize?: boolean;
3263
+ force?: boolean;
3264
+ blending?: boolean;
3265
+ behavior?: ScrollBehavior;
3266
+ ease?: Easing;
3267
+ fireUpdate?: boolean;
3268
+ userAction?: boolean;
3269
+ duration?: number;
3270
+ }
3271
+
3272
+ /**
3273
+ * ScrollerDirection
3274
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/cn-scroll-view/enums/scroller-direction.ts
3275
+ * @author Evgenii Alexandrovich Grebennikov
3276
+ * @email djonnyx@gmail.com
3277
+ */
3278
+ declare enum ScrollerDirection {
3279
+ HORIZONTAL = "horizontal",
3280
+ VERTICAL = "vertical",
3281
+ BOTH = "both"
3282
+ }
3283
+
3284
+ /**
3285
+ * ScrollerDirections
3286
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/cn-scroll-view/enums/scroller-directions.ts
3287
+ * @author Evgenii Alexandrovich Grebennikov
3288
+ * @email djonnyx@gmail.com
3289
+ */
3290
+ type ScrollerDirections = ScrollerDirection | 'horizontal' | 'vertical' | 'both';
3291
+
3292
+ /**
3293
+ * BaseScrollView
3294
+ * Maximum performance for extremely large lists.
3295
+ * It is based on algorithms for virtualization of screen objects.
3296
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/cn-scroll-view/base/base-scroll-view.component.ts
3297
+ * @author Evgenii Alexandrovich Grebennikov
3298
+ * @email djonnyx@gmail.com
3299
+ */
3300
+ declare class BaseScrollView {
3301
+ readonly scrollContent: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
3302
+ readonly scrollViewport: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
3303
+ readonly direction: _angular_core.InputSignal<ScrollerDirections>;
3304
+ readonly langTextDir: _angular_core.InputSignal<TextDirection>;
3305
+ readonly leftOffset: _angular_core.InputSignal<number>;
3306
+ readonly topOffset: _angular_core.InputSignal<number>;
3307
+ readonly rightOffset: _angular_core.InputSignal<number>;
3308
+ readonly bottomOffset: _angular_core.InputSignal<number>;
3309
+ readonly grabbing: _angular_core.WritableSignal<boolean>;
3310
+ protected _inversion: boolean;
3311
+ protected _overscrollEnabled: boolean;
3312
+ protected _$updateScrollBarHorizontal: Subject<void>;
3313
+ protected $updateScrollBarHorizontal: rxjs.Observable<void>;
3314
+ protected _$updateScrollBarVertical: Subject<void>;
3315
+ protected $updateScrollBarVertical: rxjs.Observable<void>;
3316
+ get scrollableX(): boolean;
3317
+ get scrollableY(): boolean;
3318
+ protected _destroyRef: DestroyRef;
3319
+ protected _service: IScrollViewService;
3320
+ protected _isMoving: boolean;
3321
+ get isMoving(): boolean;
3322
+ protected _x: number;
3323
+ set x(v: number);
3324
+ get x(): number;
3325
+ protected _y: number;
3326
+ set y(v: number);
3327
+ get y(): number;
3328
+ protected _actualTotalWidth: number;
3329
+ protected _totalWidth: number;
3330
+ set totalWidth(v: number);
3331
+ get totalWidth(): number;
3332
+ protected _actualTotalHeight: number;
3333
+ protected _totalHeight: number;
3334
+ set totalHeight(v: number);
3335
+ get totalHeight(): number;
3336
+ protected _startLayoutOffsetX: number;
3337
+ set startLayoutOffsetX(v: number);
3338
+ get startLayoutOffsetX(): number;
3339
+ protected _startLayoutOffsetY: number;
3340
+ set startLayoutOffsetY(v: number);
3341
+ get startLayoutOffsetY(): number;
3342
+ get actualScrollHeight(): number;
3343
+ get actualScrollWidth(): number;
3344
+ protected _actualX: number;
3345
+ get actualScrollLeft(): number;
3346
+ protected _actualY: number;
3347
+ get actualScrollTop(): number;
3348
+ get scrollLeft(): number;
3349
+ get scrollTop(): number;
3350
+ get scrollWidth(): number;
3351
+ get scrollHeight(): number;
3352
+ readonly viewportBounds: _angular_core.WritableSignal<ISize>;
3353
+ readonly contentBounds: _angular_core.WritableSignal<ISize>;
3354
+ tick(): void;
3355
+ protected overrideCoordinates(x: number, y: number): void;
3356
+ protected normalizeScrollWidth(): boolean;
3357
+ protected normalizeScrollHeight(): boolean;
3358
+ protected normalizeScrollSize(): void;
3359
+ protected onResizeViewport(): void;
3360
+ protected onResizeContent(valueWidth?: number | null, valueHeight?: number | null): void;
3361
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseScrollView, never>;
3362
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BaseScrollView, "base-scroll-view", never, { "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "langTextDir": { "alias": "langTextDir"; "required": false; "isSignal": true; }; "leftOffset": { "alias": "leftOffset"; "required": false; "isSignal": true; }; "topOffset": { "alias": "topOffset"; "required": false; "isSignal": true; }; "rightOffset": { "alias": "rightOffset"; "required": false; "isSignal": true; }; "bottomOffset": { "alias": "bottomOffset"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3363
+ }
3364
+
3365
+ /**
3366
+ * IAnimationParams
3367
+ * Maximum performance for extremely large lists.
3368
+ * It is based on algorithms for virtualization of screen objects.
3369
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/interfaces/animation-params.ts
3370
+ * @author Evgenii Alexandrovich Grebennikov
3371
+ * @email djonnyx@gmail.com
3372
+ */
3373
+ interface IAnimationParams {
3374
+ scrollToItem: number;
3375
+ }
3376
+
3377
+ /**
3378
+ * A value of -1 indicates the direction is up or left (if the list direction is horizontal).
3379
+ * A value of 1 indicates the direction is down or right (if the list direction is horizontal).
3380
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/types/scroll-direction.ts
3381
+ * @author Evgenii Alexandrovich Grebennikov
3382
+ * @email djonnyx@gmail.com
3383
+ */
3384
+ type ScrollDirection = -1 | 1 | 0;
3385
+
3386
+ /**
3387
+ * Axis of the arrangement of virtual list elements.
3388
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/enums/directions.ts
3389
+ * @author Evgenii Alexandrovich Grebennikov
3390
+ * @email djonnyx@gmail.com
3391
+ */
3392
+ declare enum Directions {
3393
+ /**
3394
+ * Horizontal axis.
3395
+ */
3396
+ HORIZONTAL = "horizontal",
3397
+ /**
3398
+ * Vertical axis.
3399
+ */
3400
+ VERTICAL = "vertical",
3401
+ /**
3402
+ * Horizontal and vertical axes.
3403
+ */
3404
+ BOTH = "both"
3405
+ }
3406
+
3407
+ /**
3408
+ * Axis of the arrangement of virtual list elements.
3409
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/enums/direction.ts
3410
+ * @author Evgenii Alexandrovich Grebennikov
3411
+ * @email djonnyx@gmail.com
3412
+ */
3413
+ type Direction = Directions | 'horizontal' | 'vertical' | 'both';
3414
+
3415
+ /**
3416
+ * Interface IScrollEvent.
3417
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/interfaces/scroll-event.ts
3418
+ * @author Evgenii Alexandrovich Grebennikov
3419
+ * @email djonnyx@gmail.com
3420
+ */
3421
+ interface IScrollEvent {
3422
+ /**
3423
+ * Scroll area width
3424
+ */
3425
+ scrollWidth: number;
3426
+ /**
3427
+ * Scroll area height
3428
+ */
3429
+ scrollHeight: number;
3430
+ /**
3431
+ * Viewport width
3432
+ */
3433
+ viewportWidth: number;
3434
+ /**
3435
+ * Viewport height
3436
+ */
3437
+ viewportHeight: number;
3438
+ /**
3439
+ * The scroller orientation.
3440
+ */
3441
+ scrollerDirection: Direction;
3442
+ /**
3443
+ * A value of -1 indicates the direction is up or left (if the list direction is horizontal).
3444
+ * A value of 1 indicates the direction is down or right (if the list direction is horizontal).
3445
+ */
3446
+ directionX: ScrollDirection;
3447
+ /**
3448
+ * A value of -1 indicates the direction is up or left (if the list direction is horizontal).
3449
+ * A value of 1 indicates the direction is down or right (if the list direction is horizontal).
3450
+ */
3451
+ directionY: ScrollDirection;
3452
+ /**
3453
+ * If true then indicates that the list has been scrolled to the left side.
3454
+ */
3455
+ isLeft: boolean;
3456
+ /**
3457
+ * If true then indicates that the list has been scrolled to the right side.
3458
+ */
3459
+ isRight: boolean;
3460
+ /**
3461
+ * If true then indicates that the list has been scrolled to the top side.
3462
+ */
3463
+ isTop: boolean;
3464
+ /**
3465
+ * If true then indicates that the list has been scrolled to the bottom side.
3466
+ */
3467
+ isBottom: boolean;
3468
+ /**
3469
+ * Has user action
3470
+ */
3471
+ userAction: boolean;
3472
+ }
3473
+
3474
+ /**
3475
+ * Interface IScrollOptions.
3476
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/interfaces/scroll-options.ts
3477
+ * @author Evgenii Alexandrovich Grebennikov
3478
+ * @email djonnyx@gmail.com
3479
+ */
3480
+ interface IScrollOptions {
3481
+ x?: number | null;
3482
+ y?: number | null;
3483
+ left?: number | null;
3484
+ top?: number | null;
3485
+ blending?: boolean;
3486
+ behavior?: ScrollBehavior;
3487
+ ease?: Easing;
3488
+ duration?: number;
3489
+ }
3490
+
3491
+ /**
3492
+ * Interface IScrollingSettings.
3493
+ * - frictionalForce - Frictional force. Default value is `0.035`.
3494
+ * - mass - Mass. Default value is `0.005`.
3495
+ * - maxDistance - Maximum scrolling distance. Default value is `12500`.
3496
+ * - maxDuration - Maximum animation duration. Default value is `4000`.
3497
+ * - speedScale - Speed scale. Default value is `15`.
3498
+ * - optimization - Enables scrolling performance optimization. Default value is `true`.
3499
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/interfaces/scrolling-settings.ts
3500
+ * @author Evgenii Alexandrovich Grebennikov
3501
+ * @email djonnyx@gmail.com
3502
+ */
3503
+ interface IScrollingSettings {
3504
+ /**
3505
+ * Frictional force. Default value is `0.035`.
3506
+ */
3507
+ frictionalForce?: number;
3508
+ /**
3509
+ * Maximum animation duration. Default value is `4000`.
3510
+ */
3511
+ maxDuration?: number;
3512
+ /**
3513
+ * Mass. Default value is `0.005`.
3514
+ */
3515
+ mass?: number;
3516
+ /**
3517
+ * Maximum scrolling distance. Default value is `12500`.
3518
+ */
3519
+ maxDistance?: number;
3520
+ /**
3521
+ * Speed scale. Default value is `15`.
3522
+ */
3523
+ speedScale?: number;
3524
+ /**
3525
+ * Enables scrolling performance optimization. Default value is `true`.
3526
+ */
3527
+ optimization?: boolean;
3528
+ }
3529
+
3530
+ /**
3531
+ * IScrollViewService
3532
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/interfaces/scroll-view-service.ts
3533
+ * @author Evgenii Alexandrovich Grebennikov
3534
+ * @email djonnyx@gmail.com
3535
+ */
3536
+ interface IScrollViewService {
3537
+ get id(): number;
3538
+ initialize: (id: number) => void;
3539
+ animationParams: IAnimationParams;
3540
+ direction: Direction;
3541
+ scrollLeftOffset: number;
3542
+ scrollRightOffset: number;
3543
+ scrollTopOffset: number;
3544
+ scrollBottomOffset: number;
3545
+ snapScrollToLeft: boolean;
3546
+ snapScrollToRight: boolean;
3547
+ snapScrollToTop: boolean;
3548
+ snapScrollToBottom: boolean;
3549
+ get scrollBarSize(): number;
3550
+ set scrollBarSize(v: number);
3551
+ readonly $scrollBarSize: Observable<number>;
3552
+ readonly $langTextDir: Observable<TextDirection>;
3553
+ get langTextDir(): TextDirection;
3554
+ set langTextDir(v: TextDirection);
3555
+ readonly $clickDistance: Observable<number>;
3556
+ get clickDistance(): number;
3557
+ set clickDistance(v: number);
3558
+ readonly $grabbing: Observable<boolean>;
3559
+ get grabbing(): boolean;
3560
+ set grabbing(v: boolean);
3561
+ readonly $tick: Observable<void>;
3562
+ getComponentBoundsByIntersectionPosition: (positionX: number, positionY: number, maxPositionX?: number | null, maxPositionY?: number | null) => (IRect & {
3563
+ id: Id | null;
3564
+ isFirst: boolean;
3565
+ isLast: boolean;
3566
+ }) | null;
3567
+ setIntersectionElementBySnapToItemAlign: (id: Id | null) => void;
3568
+ update: (immediately?: boolean) => void;
3569
+ scrollToLeft: (options?: IScrollOptions) => void;
3570
+ scrollToRight: (options?: IScrollOptions) => void;
3571
+ scrollToTop: (options?: IScrollOptions) => void;
3572
+ scrollToBottom: (options?: IScrollOptions) => void;
3573
+ }
3574
+
3575
+ /**
3576
+ * IWheelEvent
3577
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/cn-scroll-view/interfaces/wheel-event.ts
3578
+ * @author Evgenii Alexandrovich Grebennikov
3579
+ * @email djonnyx@gmail.com
3580
+ */
3581
+ interface IWheelEvent {
3582
+ deltaX: number;
3583
+ deltaY: number;
3584
+ }
3585
+
3586
+ /**
3587
+ * CnScrollView
3588
+ * Maximum performance for extremely large lists.
3589
+ * It is based on algorithms for virtualization of screen objects.
3590
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/cn-scroll-view/cn-scroll-view.component.ts
3591
+ * @author Evgenii Alexandrovich Grebennikov
3592
+ * @email djonnyx@gmail.com
3593
+ */
3594
+ declare class CnScrollView extends BaseScrollView {
3595
+ readonly cdkScrollable: CdkScrollable | undefined;
3596
+ readonly scrollable: _angular_core.InputSignal<boolean>;
3597
+ readonly scrollBehavior: _angular_core.InputSignal<ScrollBehavior>;
3598
+ readonly overscrollEnabled: _angular_core.InputSignal<boolean>;
3599
+ readonly scrollingSettings: _angular_core.InputSignal<IScrollingSettings>;
3600
+ readonly animationParams: _angular_core.InputSignal<IAnimationParams>;
3601
+ protected _normalizeValueFromZero: boolean;
3602
+ protected _isScrollsTo: boolean;
3603
+ private _scrollDirectionValueX;
3604
+ private _scrollDirectionValueY;
3605
+ private _$scrollDirectionX;
3606
+ readonly $scrollDirectionX: rxjs.Observable<ScrollDirection>;
3607
+ set scrollDirectionX(v: ScrollDirection);
3608
+ get scrollDirectionX(): ScrollDirection;
3609
+ private _$scrollDirectionY;
3610
+ readonly $scrollDirectionY: rxjs.Observable<ScrollDirection>;
3611
+ set scrollDirectionY(v: ScrollDirection);
3612
+ get scrollDirectionY(): ScrollDirection;
3613
+ protected _$wheel: Subject<IWheelEvent>;
3614
+ readonly $wheel: rxjs.Observable<IWheelEvent>;
3615
+ protected _$scroll: Subject<boolean>;
3616
+ readonly $scroll: rxjs.Observable<boolean>;
3617
+ protected _$scrollEnd: Subject<boolean>;
3618
+ readonly $scrollEnd: rxjs.Observable<boolean>;
3619
+ protected _velocitiesX: Array<number>;
3620
+ protected _velocitiesY: Array<number>;
3621
+ protected _$velocityX: BehaviorSubject<number>;
3622
+ protected $velocityX: rxjs.Observable<number>;
3623
+ get velocityX(): number;
3624
+ protected _$velocityY: BehaviorSubject<number>;
3625
+ protected $velocityY: rxjs.Observable<number>;
3626
+ get velocityY(): number;
3627
+ protected _$averageVelocityX: BehaviorSubject<number>;
3628
+ protected $averageVelocityX: rxjs.Observable<number>;
3629
+ get averageVelocityX(): number;
3630
+ protected _$averageVelocityY: BehaviorSubject<number>;
3631
+ protected $averageVelocityY: rxjs.Observable<number>;
3632
+ get averageVelocityY(): number;
3633
+ private _measureVelocityTimestampX;
3634
+ private _measureVelocityTimestampY;
3635
+ private _measureVelocityLastPositionX;
3636
+ private _measureVelocityLastPositionY;
3637
+ private _startPositionX;
3638
+ private _startPositionY;
3639
+ private _touchId;
3640
+ protected _animatorX: Animator;
3641
+ protected _animatorY: Animator;
3642
+ protected _interactive: boolean;
3643
+ private _overscrollIteration;
3644
+ set x(v: number);
3645
+ get x(): number;
3646
+ protected setX(x: number, normalize?: boolean): void;
3647
+ set y(v: number);
3648
+ get y(): number;
3649
+ protected setY(y: number, normalize?: boolean): void;
3650
+ protected _deltaX: number;
3651
+ set deltaX(v: number);
3652
+ protected _deltaY: number;
3653
+ set deltaY(v: number);
3654
+ set startLayoutOffsetX(v: number);
3655
+ get startLayoutOffsetX(): number;
3656
+ set startLayoutOffsetY(v: number);
3657
+ get startLayoutOffsetY(): number;
3658
+ protected _intersectionComponentId: Id | null;
3659
+ get animatedX(): boolean;
3660
+ get animatedY(): boolean;
3661
+ get animated(): boolean;
3662
+ protected _horizontalAxisInvertion: Signal<boolean>;
3663
+ protected _horizontalAxisEnabled: Signal<boolean>;
3664
+ protected _verticalAxisEnabled: Signal<boolean>;
3665
+ protected _horizontalScrollRatio: number;
3666
+ get horizontalScrollRatio(): number;
3667
+ protected _verticalScrollRatio: number;
3668
+ get verticalScrollRatio(): number;
3669
+ constructor();
3670
+ hasAnimationX(...ids: Array<number>): boolean;
3671
+ hasAnimationY(...ids: Array<number>): boolean;
3672
+ hasAnimation(...ids: Array<number>): boolean;
3673
+ protected updateDirectionX(position: number, prePosition: number): void;
3674
+ protected updateDirectionY(position: number, prePosition: number): void;
3675
+ protected overrideCoordinates(x: number, y: number): void;
3676
+ protected measureVelocity(): void;
3677
+ protected stopMoving(): void;
3678
+ private calculatePosition;
3679
+ private cancelOverscroll;
3680
+ private checkOverscrollByAxis;
3681
+ private _overscrollXIteration;
3682
+ private _overscrollYIteration;
3683
+ private checkOverscroll;
3684
+ private calculateVelocity;
3685
+ private calculateAcceleration;
3686
+ stopScrolling(): void;
3687
+ protected move(x: number | null, y: number | null, blending?: boolean, userAction?: boolean, fireUpdate?: boolean): void;
3688
+ private calculateParamsWithVelocity;
3689
+ protected moveWithAcceleration(positionX: number, vX: number, a0X: number, timestampX: number, positionY: number, vY: number, a0Y: number, timestampY: number): void;
3690
+ protected normalizeValueX(value: number): number;
3691
+ protected normalizeValueY(value: number): number;
3692
+ protected animate(axis: 'x' | 'y', startValue: number, endValue: number, duration?: number, easingFunction?: Easing, blending?: boolean, userAction?: boolean): number;
3693
+ protected normalizeScrollWidth(): boolean;
3694
+ protected normalizeScrollHeight(): boolean;
3695
+ protected onAnimationComplete(position: number): void;
3696
+ fireScroll(userAction?: boolean): void;
3697
+ scrollLimits(value?: number | undefined, silent?: boolean): boolean;
3698
+ scroll(params: IScrollToParams): Array<number> | null;
3699
+ protected emitScrollableEvent(): void;
3700
+ refreshCoordinate(x: number, y: number): void;
3701
+ protected fireScrollEvent(userAction: boolean): void;
3702
+ protected onDragStart(): void;
3703
+ reset(x?: number, y?: number): void;
3704
+ stopAnimation(...ids: Array<number>): void;
3705
+ ngOnDestroy(): void;
3706
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnScrollView, never>;
3707
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CnScrollView, "cn-scroll-view", never, { "scrollable": { "alias": "scrollable"; "required": false; "isSignal": true; }; "scrollBehavior": { "alias": "scrollBehavior"; "required": false; "isSignal": true; }; "overscrollEnabled": { "alias": "overscrollEnabled"; "required": false; "isSignal": true; }; "scrollingSettings": { "alias": "scrollingSettings"; "required": false; "isSignal": true; }; "animationParams": { "alias": "animationParams"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3708
+ }
3709
+
3710
+ /**
3711
+ * IScrollBarDragEvent
3712
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/ng-scroll-bar/interfaces/scrollbar-drag-data.ts
3713
+ * @author Evgenii Alexandrovich Grebennikov
3714
+ * @email djonnyx@gmail.com
3715
+ */
3716
+ interface IScrollBarDragEvent {
3717
+ position: number;
3718
+ min: number;
3719
+ max: number;
3720
+ userAction: boolean;
3721
+ animation: boolean;
3722
+ isVertical: boolean;
3723
+ }
3724
+
3725
+ declare enum ScrollbarStates {
3726
+ NORMAL = 0,
3727
+ PRESSED = 1,
3728
+ HOVER = 2
3729
+ }
3730
+
3731
+ /**
3732
+ * CnScrollBarService
3733
+ * Maximum performance for extremely large lists.
3734
+ * It is based on algorithms for virtualization of screen objects.
3735
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/cn-scroll-bar/cn-scroll-bar-public.service.ts
3736
+ * @author Evgenii Alexandrovich Grebennikov
3737
+ * @email djonnyx@gmail.com
3738
+ */
3739
+ declare class CnScrollBarPublicService {
3740
+ private _internalService;
3741
+ get $click(): rxjs.Observable<PointerEvent | MouseEvent>;
3742
+ get $state(): rxjs.Observable<ScrollbarStates>;
3743
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnScrollBarPublicService, never>;
3744
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CnScrollBarPublicService>;
3745
+ }
3746
+
3747
+ interface IScrollBarTemplateContext {
3748
+ /**
3749
+ * API provider
3750
+ */
3751
+ api: CnScrollBarPublicService;
3752
+ /**
3753
+ * Scrollbar thumb width.
3754
+ */
3755
+ width: number;
3756
+ /**
3757
+ * Scrollbar thumb height.
3758
+ */
3759
+ height: number;
3760
+ /**
3761
+ * Gradient fill position parameters.
3762
+ */
3763
+ fillPositions: GradientColorPositions;
3764
+ /**
3765
+ * Additional options for the scrollbar.
3766
+ */
3767
+ params: {
3768
+ [propName: string]: any;
3769
+ };
3770
+ }
3771
+
3772
+ type ScrollbarState = ScrollbarStates;
3773
+
3774
+ /**
3775
+ * CnScrollBarService
3776
+ * Maximum performance for extremely large lists.
3777
+ * It is based on algorithms for virtualization of screen objects.
3778
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/ng-scroll-bar/ng-scroll-bar.service.ts
3779
+ * @author Evgenii Alexandrovich Grebennikov
3780
+ * @email djonnyx@gmail.com
3781
+ */
3782
+ declare class CnScrollBarService {
3783
+ private _$click;
3784
+ readonly $click: rxjs.Observable<PointerEvent | MouseEvent>;
3785
+ private _$state;
3786
+ readonly $state: rxjs.Observable<ScrollbarStates>;
3787
+ set state(v: ScrollbarState);
3788
+ get state(): ScrollbarState;
3789
+ click(event: PointerEvent | MouseEvent): void;
3790
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnScrollBarService, never>;
3791
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CnScrollBarService>;
3792
+ }
3793
+
3794
+ /**
3795
+ * ScrollBar component.
3796
+ * Maximum performance for extremely large lists.
3797
+ * It is based on algorithms for virtualization of screen objects.
3798
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/cn-scroll-bar/cn-scroll-bar.component.ts
3799
+ * @author Evgenii Alexandrovich Grebennikov
3800
+ * @email djonnyx@gmail.com
3801
+ */
3802
+ declare class CnScrollBarComponent extends CnScrollView {
3803
+ protected _defaultRenderer: Signal<TemplateRef<any> | undefined>;
3804
+ protected _scrollBarService: CnScrollBarService;
3805
+ private _apiService;
3806
+ readonly loading: _angular_core.InputSignal<boolean>;
3807
+ readonly onDrag: _angular_core.OutputEmitterRef<IScrollBarDragEvent>;
3808
+ readonly onDragEnd: _angular_core.OutputEmitterRef<IScrollBarDragEvent>;
3809
+ readonly thumbGradientPositions: _angular_core.InputSignal<GradientColorPositions>;
3810
+ readonly size: _angular_core.InputSignal<number>;
3811
+ readonly thickness: _angular_core.InputSignal<number>;
3812
+ readonly scrollbarMinSize: _angular_core.InputSignal<number>;
3813
+ readonly prepared: _angular_core.InputSignal<boolean>;
3814
+ readonly interactive: _angular_core.InputSignal<boolean>;
3815
+ readonly overlapping: _angular_core.InputSignal<boolean>;
3816
+ readonly show: _angular_core.InputSignal<boolean>;
3817
+ readonly params: _angular_core.InputSignal<{
3818
+ [propName: string]: any;
3819
+ } | null>;
3820
+ readonly renderer: _angular_core.InputSignal<TemplateRef<any> | null>;
3821
+ readonly thumbRenderer: _angular_core.WritableSignal<TemplateRef<any> | null>;
3822
+ protected readonly hoverState: _angular_core.WritableSignal<boolean>;
3823
+ protected readonly pressedState: _angular_core.WritableSignal<boolean>;
3824
+ protected readonly templateContext: Signal<IScrollBarTemplateContext>;
3825
+ protected readonly styles: Signal<{
3826
+ [sName: string]: any;
3827
+ }>;
3828
+ protected readonly thumbWidth: Signal<number>;
3829
+ protected readonly thumbHeight: Signal<number>;
3830
+ protected readonly isVertical: Signal<boolean>;
3831
+ private _$scrollingCancel;
3832
+ protected readonly $scrollingCancel: rxjs.Observable<void>;
3833
+ private _elementRef;
3834
+ constructor();
3835
+ private createDragEvent;
3836
+ private thumbHit;
3837
+ click(event: PointerEvent | MouseEvent): void;
3838
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnScrollBarComponent, never>;
3839
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CnScrollBarComponent, "cn-scroll-bar", never, { "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "thumbGradientPositions": { "alias": "thumbGradientPositions"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "thickness": { "alias": "thickness"; "required": false; "isSignal": true; }; "scrollbarMinSize": { "alias": "scrollbarMinSize"; "required": false; "isSignal": true; }; "prepared": { "alias": "prepared"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "overlapping": { "alias": "overlapping"; "required": false; "isSignal": true; }; "show": { "alias": "show"; "required": false; "isSignal": true; }; "params": { "alias": "params"; "required": false; "isSignal": true; }; "renderer": { "alias": "renderer"; "required": false; "isSignal": true; }; }, { "onDrag": "onDrag"; "onDragEnd": "onDragEnd"; }, never, never, false, never>;
3840
+ }
3841
+
3842
+ /**
3843
+ * The scroller for the CnVirtualScrollView item component
3844
+ * Maximum performance for extremely large lists.
3845
+ * It is based on algorithms for virtualization of screen objects.
3846
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/components/scroller/cn-scroller.component.ts
3847
+ * @author Evgenii Alexandrovich Grebennikov
3848
+ * @email djonnyx@gmail.com
3849
+ */
3850
+ declare class CnScrollerComponent extends CnScrollView {
3851
+ readonly scrollBarHorizontal: CnScrollBarComponent | undefined;
3852
+ readonly scrollBarVertical: CnScrollBarComponent | undefined;
3853
+ readonly filter: Signal<ElementRef<SVGFEGaussianBlurElement> | undefined>;
3854
+ readonly onScrollbarVisible: _angular_core.OutputEmitterRef<boolean>;
3855
+ readonly scrollbarEnabled: _angular_core.InputSignal<boolean>;
3856
+ readonly scrollbarInteractive: _angular_core.InputSignal<boolean>;
3857
+ readonly focusedElement: _angular_core.InputSignal<Id | null>;
3858
+ readonly overlappingScrollbar: _angular_core.InputSignal<boolean>;
3859
+ readonly content: _angular_core.InputSignal<HTMLElement | undefined>;
3860
+ readonly loading: _angular_core.InputSignal<boolean>;
3861
+ readonly classes: _angular_core.InputSignal<{
3862
+ [cName: string]: boolean;
3863
+ }>;
3864
+ readonly scrollbarMinSize: _angular_core.InputSignal<number>;
3865
+ readonly scrollbarThickness: _angular_core.InputSignal<number>;
3866
+ readonly scrollbarThumbRenderer: _angular_core.InputSignal<TemplateRef<any> | null>;
3867
+ readonly scrollbarThumbParams: _angular_core.InputSignal<{
3868
+ [propName: string]: any;
3869
+ } | null>;
3870
+ readonly motionBlur: _angular_core.InputSignal<number | "disabled">;
3871
+ readonly maxMotionBlur: _angular_core.InputSignal<number>;
3872
+ readonly motionBlurEnabled: _angular_core.InputSignal<boolean>;
3873
+ readonly actualClasses: Signal<{
3874
+ [cName: string]: boolean;
3875
+ }>;
3876
+ readonly containerClasses: Signal<{
3877
+ [cName: string]: boolean;
3878
+ }>;
3879
+ readonly thumbGradientPositionsHorizontal: _angular_core.WritableSignal<GradientColorPositions>;
3880
+ readonly thumbGradientPositionsVertical: _angular_core.WritableSignal<GradientColorPositions>;
3881
+ readonly thumbSizeVertical: _angular_core.WritableSignal<number>;
3882
+ readonly thumbSizeHorizontal: _angular_core.WritableSignal<number>;
3883
+ readonly scrollbarHorizontalEnabled: _angular_core.WritableSignal<boolean>;
3884
+ readonly scrollbarVerticalEnabled: _angular_core.WritableSignal<boolean>;
3885
+ readonly preparedSignal: _angular_core.WritableSignal<boolean>;
3886
+ readonly listStyles: _angular_core.WritableSignal<{
3887
+ perspectiveOrigin: string;
3888
+ }>;
3889
+ private _scrollBox;
3890
+ get host(): HTMLDivElement | undefined;
3891
+ private _$scrollbarScroll;
3892
+ readonly $scrollbarScroll: rxjs.Observable<boolean>;
3893
+ private _prepared;
3894
+ set prepared(v: boolean);
3895
+ protected setX(x: number, normalize?: boolean): void;
3896
+ protected setY(y: number, normalize?: boolean): void;
3897
+ set startLayoutOffsetX(v: number);
3898
+ get startLayoutOffsetX(): number;
3899
+ set startLayoutOffsetY(v: number);
3900
+ get startLayoutOffsetY(): number;
3901
+ readonly viewInitialized: _angular_core.WritableSignal<boolean>;
3902
+ private _isScrollbarUserActionX;
3903
+ get isScrollbarUserActionX(): boolean;
3904
+ private _isScrollbarUserActionY;
3905
+ get isScrollbarUserActionY(): boolean;
3906
+ protected _$resizeViewport: Subject<ISize>;
3907
+ readonly $resizeViewport: rxjs.Observable<ISize>;
3908
+ protected _$resizeContent: Subject<ISize>;
3909
+ readonly $resizeContent: rxjs.Observable<ISize>;
3910
+ protected _filterId: string;
3911
+ protected _filter: string;
3912
+ constructor();
3913
+ private recalculatePerspective;
3914
+ protected onResizeViewport(): void;
3915
+ protected onResizeContent(width?: number | null, height?: number | null): void;
3916
+ private updateScrollBarHandler;
3917
+ ngAfterViewInit(): void;
3918
+ tick(): void;
3919
+ private updateScrollBar;
3920
+ protected normalizeScrollWidth(): boolean;
3921
+ protected normalizeScrollHeight(): boolean;
3922
+ refreshScrollbar(): void;
3923
+ protected onDragStartHorizontal(): void;
3924
+ protected onDragStartVertical(): void;
3925
+ reset(): void;
3926
+ refresh(fireUpdate?: boolean, updateScrollbar?: boolean): void;
3927
+ startScrollTo(): void;
3928
+ finishedScrollTo(): void;
3929
+ scrollTo(params: IScrollToParams): Array<number> | null;
3930
+ stopScrollbar(isVertical: boolean): void;
3931
+ private dropVelocity;
3932
+ protected stopMoving(): void;
3933
+ protected onAnimationComplete(position: number): void;
3934
+ onScrollBarDragHandler(event: IScrollBarDragEvent): void;
3935
+ protected onScrollBarDragEndHandler(event: IScrollBarDragEvent): void;
3936
+ private fireUpdateIfEdgesDetected;
3937
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnScrollerComponent, never>;
3938
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CnScrollerComponent, "cn-scroller", never, { "scrollbarEnabled": { "alias": "scrollbarEnabled"; "required": false; "isSignal": true; }; "scrollbarInteractive": { "alias": "scrollbarInteractive"; "required": false; "isSignal": true; }; "focusedElement": { "alias": "focusedElement"; "required": false; "isSignal": true; }; "overlappingScrollbar": { "alias": "overlappingScrollbar"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "classes": { "alias": "classes"; "required": false; "isSignal": true; }; "scrollbarMinSize": { "alias": "scrollbarMinSize"; "required": false; "isSignal": true; }; "scrollbarThickness": { "alias": "scrollbarThickness"; "required": false; "isSignal": true; }; "scrollbarThumbRenderer": { "alias": "scrollbarThumbRenderer"; "required": false; "isSignal": true; }; "scrollbarThumbParams": { "alias": "scrollbarThumbParams"; "required": false; "isSignal": true; }; "motionBlur": { "alias": "motionBlur"; "required": false; "isSignal": true; }; "maxMotionBlur": { "alias": "maxMotionBlur"; "required": false; "isSignal": true; }; "motionBlurEnabled": { "alias": "motionBlurEnabled"; "required": false; "isSignal": true; }; }, { "onScrollbarVisible": "onScrollbarVisible"; }, never, ["*"], false, never>;
3939
+ }
3940
+
3941
+ declare class CnScrollBarModule {
3942
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnScrollBarModule, never>;
3943
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<CnScrollBarModule, [typeof CnScrollBarComponent], [typeof i2.CommonModule], [typeof CnScrollBarComponent]>;
3944
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<CnScrollBarModule>;
3945
+ }
3946
+
3947
+ /**
3948
+ * LocaleSensitiveDirective
3949
+ * Maximum performance for extremely large lists.
3950
+ * It is based on algorithms for virtualization of screen objects.
3951
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/directives/locale-sensitive/locale-sensitive.directive.ts
3952
+ * @author Evgenii Alexandrovich Grebennikov
3953
+ * @email djonnyx@gmail.com
3954
+ */
3955
+ declare class LocaleSensitiveDirective {
3956
+ langTextDir: _angular_core.InputSignal<TextDirection>;
3957
+ listDir: _angular_core.InputSignal<ScrollerDirections>;
3958
+ private _elementRef;
3959
+ constructor();
3960
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LocaleSensitiveDirective, never>;
3961
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<LocaleSensitiveDirective, "[localeSensitive]", never, { "langTextDir": { "alias": "langTextDir"; "required": false; "isSignal": true; }; "listDir": { "alias": "listDir"; "required": false; "isSignal": true; }; }, {}, never, never, false, never>;
3962
+ }
3963
+
3964
+ declare class LocaleSensitiveModule {
3965
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LocaleSensitiveModule, never>;
3966
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<LocaleSensitiveModule, [typeof LocaleSensitiveDirective], [typeof i2.CommonModule], [typeof LocaleSensitiveDirective]>;
3967
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<LocaleSensitiveModule>;
3968
+ }
3969
+
3970
+ declare class CnScrollerModule {
3971
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnScrollerModule, never>;
3972
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<CnScrollerModule, [typeof CnScrollerComponent], [typeof i2.CommonModule, typeof CnScrollBarModule, typeof LocaleSensitiveModule, typeof i5.CdkScrollableModule], [typeof CnScrollerComponent]>;
3973
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<CnScrollerModule>;
3974
+ }
3975
+
3976
+ /**
3977
+ * CnVirtualScrollViewService
3978
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/cn-virtual-scroll-view.service.ts
3979
+ * @author Evgenii Alexandrovich Grebennikov
3980
+ * @email djonnyx@gmail.com
3981
+ */
3982
+ declare class CnVirtualScrollViewService implements IScrollViewService, OnDestroy {
3983
+ private _id;
3984
+ get id(): number;
3985
+ private _nextComponentId;
3986
+ private _$tick;
3987
+ readonly $tick: rxjs.Observable<void>;
3988
+ scrollLeftOffset: number;
3989
+ scrollRightOffset: number;
3990
+ scrollTopOffset: number;
3991
+ scrollBottomOffset: number;
3992
+ isInfinity: boolean;
3993
+ isVertical: boolean;
3994
+ snapScrollToLeft: boolean;
3995
+ snapScrollToRight: boolean;
3996
+ snapScrollToTop: boolean;
3997
+ snapScrollToBottom: boolean;
3998
+ animationParams: IAnimationParams;
3999
+ listElement: HTMLDivElement | null;
4000
+ direction: Direction;
4001
+ private _$langTextDir;
4002
+ readonly $langTextDir: rxjs.Observable<TextDirection>;
4003
+ get langTextDir(): TextDirection;
4004
+ set langTextDir(v: TextDirection);
4005
+ private _$grabbing;
4006
+ readonly $grabbing: rxjs.Observable<boolean>;
4007
+ get grabbing(): boolean;
4008
+ set grabbing(v: boolean);
4009
+ private _$clickPressed;
4010
+ readonly $clickPressed: rxjs.Observable<boolean>;
4011
+ get clickPressed(): boolean;
4012
+ set clickPressed(v: boolean);
4013
+ private _$isGrabbing;
4014
+ readonly $isGrabbing: rxjs.Observable<boolean>;
4015
+ get isGrabbing(): boolean;
4016
+ private _$scrollBarSize;
4017
+ readonly $scrollBarSize: rxjs.Observable<number>;
4018
+ get scrollBarSize(): number;
4019
+ set scrollBarSize(v: number);
4020
+ private _$intersectionElementBySnapToItemAlign;
4021
+ readonly $intersectionElementBySnapToItemAlign: rxjs.Observable<Id | null>;
4022
+ private _$clickDistance;
4023
+ readonly $clickDistance: rxjs.Observable<number>;
4024
+ get clickDistance(): number;
4025
+ set clickDistance(v: number);
4026
+ private _tickerId;
4027
+ constructor();
4028
+ private tick;
4029
+ focusList(): void;
4030
+ initialize(id: number): void;
4031
+ generateComponentId(): number;
4032
+ getComponentBoundsByIntersectionPosition(positionX: number, positionY: number, maxPositionX?: number | null, maxPositionY?: number | null): (IRect & {
4033
+ id: Id | null;
4034
+ isFirst: boolean;
4035
+ isLast: boolean;
4036
+ }) | null;
4037
+ setIntersectionElementBySnapToItemAlign(id: Id | null): void;
4038
+ update(immediately?: boolean): void;
4039
+ /**
4040
+ * Scrolls the scroll area to the first item in the collection.
4041
+ */
4042
+ scrollToLeft(options?: IScrollOptions): void;
4043
+ /**
4044
+ * Scrolls the list to the end of the content size.
4045
+ */
4046
+ scrollToRight(options?: IScrollOptions): void;
4047
+ /**
4048
+ * Scrolls the scroll area to the first item in the collection.
4049
+ */
4050
+ scrollToTop(options?: IScrollOptions): void;
4051
+ /**
4052
+ * Scrolls the list to the end of the content size.
4053
+ */
4054
+ scrollToBottom(options?: IScrollOptions): void;
4055
+ ngOnDestroy(): void;
4056
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnVirtualScrollViewService, never>;
4057
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CnVirtualScrollViewService>;
4058
+ }
4059
+
4060
+ /**
4061
+ * Virtual list component.
4062
+ * Maximum performance for extremely large lists.
4063
+ * It is based on algorithms for virtualization of screen objects.
4064
+ * @link https://github.com/DjonnyX/centrifugal/blob/main/src/lib/scroll-view/cn-virtual-scroll-view.component.ts
4065
+ * @author Evgenii Alexandrovich Grebennikov
4066
+ * @email djonnyx@gmail.com
4067
+ */
4068
+ declare class CnVirtualScrollViewComponent implements OnDestroy {
4069
+ private static __nextId;
4070
+ private _id;
4071
+ /**
4072
+ * Readonly. Returns the unique identifier of the component.
4073
+ */
4074
+ get id(): number;
4075
+ private _service;
4076
+ private _scrollerComponent;
4077
+ private _scroller;
4078
+ /**
4079
+ * Fires when the list has been scrolled.
4080
+ */
4081
+ onScroll: _angular_core.OutputEmitterRef<IScrollEvent>;
4082
+ /**
4083
+ * Fires when the list has completed scrolling.
4084
+ */
4085
+ onScrollEnd: _angular_core.OutputEmitterRef<IScrollEvent>;
4086
+ /**
4087
+ * Fires when the viewport size is changed.
4088
+ */
4089
+ onViewportChange: _angular_core.OutputEmitterRef<ISize>;
4090
+ /**
4091
+ * Fires when the scroll reaches the left.
4092
+ */
4093
+ onScrollReachLeft: _angular_core.OutputEmitterRef<void>;
4094
+ /**
4095
+ * Fires when the scroll reaches the right.
4096
+ */
4097
+ onScrollReachRight: _angular_core.OutputEmitterRef<void>;
4098
+ /**
4099
+ * Fires when the scroll reaches the top.
4100
+ */
4101
+ onScrollReachTop: _angular_core.OutputEmitterRef<void>;
4102
+ /**
4103
+ * Fires when the scroll reaches the bottom.
4104
+ */
4105
+ onScrollReachBottom: _angular_core.OutputEmitterRef<void>;
4106
+ private _$show;
4107
+ readonly $show: rxjs.Observable<boolean>;
4108
+ private _$initialized;
4109
+ readonly $initialized: rxjs.Observable<boolean>;
4110
+ private _scrollbarThickness;
4111
+ /**
4112
+ * Scrollbar thickness.
4113
+ */
4114
+ scrollbarThickness: _angular_core.InputSignal<number>;
4115
+ private _scrollbarMinSize;
4116
+ /**
4117
+ * Minimum scrollbar size.
4118
+ */
4119
+ scrollbarMinSize: _angular_core.InputSignal<number>;
4120
+ private _scrollbarThumbRenderer;
4121
+ /**
4122
+ * Scrollbar customization template.
4123
+ */
4124
+ scrollbarThumbRenderer: _angular_core.InputSignal<TemplateRef<any> | null>;
4125
+ private _scrollbarThumbParams;
4126
+ /**
4127
+ * Additional options for the scrollbar.
4128
+ */
4129
+ scrollbarThumbParams: _angular_core.InputSignal<{
4130
+ [propName: string]: any;
4131
+ } | null>;
4132
+ private _clickDistance;
4133
+ /**
4134
+ * The maximum scroll distance at which a click event is triggered.
4135
+ */
4136
+ clickDistance: _angular_core.InputSignal<number>;
4137
+ private _scrollLeftOffsetOptions;
4138
+ /**
4139
+ * Sets the scroll left offset value. Can be specified in absolute or percentage values.
4140
+ * Supports arithmetic expressions of addition `50% + 25` or subtraction `50% - 25`. Default value is "0".
4141
+ */
4142
+ scrollLeftOffset: _angular_core.InputSignal<ArithmeticExpression>;
4143
+ private _scrollTopOffsetOptions;
4144
+ /**
4145
+ * Sets the scroll top offset value. Can be specified in absolute or percentage values.
4146
+ * Supports arithmetic expressions of addition `50% + 25` or subtraction `50% - 25`. Default value is "0".
4147
+ */
4148
+ scrollTopOffset: _angular_core.InputSignal<ArithmeticExpression>;
4149
+ private _scrollRightOffsetOptions;
4150
+ /**
4151
+ * Sets the scroll right offset value. Can be specified in absolute or percentage values.
4152
+ * Supports arithmetic expressions of addition `50% + 25` or subtraction `50% - 25`. Default value is "0".
4153
+ */
4154
+ scrollRightOffset: _angular_core.InputSignal<ArithmeticExpression>;
4155
+ private _scrollBottomOffsetOptions;
4156
+ /**
4157
+ * Sets the scroll bottom offset value. Can be specified in absolute or percentage values.
4158
+ * Supports arithmetic expressions of addition `50% + 25` or subtraction `50% - 25`. Default value is "0".
4159
+ */
4160
+ scrollBottomOffset: _angular_core.InputSignal<ArithmeticExpression>;
4161
+ private _snapScrollToLeftOptions;
4162
+ /**
4163
+ * Determines whether the scrollbar is snapped to the left of the scroller. The default value is "true".
4164
+ * That is, if snapScrollToLeft and snapScrollToRight are enabled, the scroller will initially snap
4165
+ * to the left; if you move the scrollbar right, the scroller will snap to the right.
4166
+ * If snapScrollToLeft is disabled and snapScrollToRight is enabled, the scroller will snap to the right;
4167
+ * If you move the scrollbar left, the scroller will snap to the left.
4168
+ * If both snapScrollToLeft and snapScrollToRight are disabled, the scroller will never snap to the left or right.
4169
+ */
4170
+ snapScrollToLeft: _angular_core.InputSignal<boolean>;
4171
+ private _snapScrollToTopOptions;
4172
+ /**
4173
+ * Determines whether the scrollbar is snapped to the top of the scroller. The default value is "true".
4174
+ * That is, if snapScrollToTop and snapScrollToBottom are enabled, the scroller will initially snap
4175
+ * to the top; if you move the scrollbar down, the scroller will snap to the bottom.
4176
+ * If snapScrollToTop is disabled and snapScrollToBottom is enabled, the scroller will snap to the bottom;
4177
+ * If you move the scrollbar up, the scroller will snap to the top.
4178
+ * If both snapScrollToTop and snapScrollToBottom are disabled, the scroller will never snap to the top or bottom.
4179
+ */
4180
+ snapScrollToTop: _angular_core.InputSignal<boolean>;
4181
+ private _snapScrollToRightOptions;
4182
+ /**
4183
+ * Determines whether the scrollbar is snapped to the right of the scroller. The default value is "true".
4184
+ * That is, if snapScrollToLeft and snapScrollToRight are enabled, the scroller will initially snap
4185
+ * to the left; if you move the scrollbar right, the scroller will snap to the right.
4186
+ * If snapScrollToLeft is disabled and snapScrollToRight is enabled, the scroller will snap to the right;
4187
+ * If you move the scrollbar left, the scroller will snap to the left.
4188
+ * If both snapScrollToLeft and snapScrollToRight are disabled, the scroller will never snap to the left or right.
4189
+ */
4190
+ snapScrollToRight: _angular_core.InputSignal<boolean>;
4191
+ private _snapScrollToBottomOptions;
4192
+ /**
4193
+ * Determines whether the scrollbar is snapped to the bottom of the scroller. The default value is "true".
4194
+ * That is, if snapScrollToTop and snapScrollToBottom are enabled, the scroller will initially snap
4195
+ * to the top; if you move the scrollbar down, the scroller will snap to the bottom.
4196
+ * If snapScrollToTop is disabled and snapScrollToBottom is enabled, the scroller will snap to the bottom;
4197
+ * If you move the scrollbar up, the scroller will snap to the top.
4198
+ * If both snapScrollToTop and snapScrollToBottom are disabled, the scroller will never snap to the top or bottom.
4199
+ */
4200
+ snapScrollToBottom: _angular_core.InputSignal<boolean>;
4201
+ private _scrollableOptions;
4202
+ /**
4203
+ * Determines whether scrolling is enabled or disabled. The default value is "true".
4204
+ */
4205
+ scrollable: _angular_core.InputSignal<boolean>;
4206
+ private _scrollbarEnabledOptions;
4207
+ /**
4208
+ * Determines whether the scrollbar is shown or not. The default value is "true".
4209
+ */
4210
+ scrollbarEnabled: _angular_core.InputSignal<boolean>;
4211
+ private _scrollbarInteractiveOptions;
4212
+ /**
4213
+ * Determines whether scrolling using the scrollbar will be possible. The default value is "true".
4214
+ */
4215
+ scrollbarInteractive: _angular_core.InputSignal<boolean>;
4216
+ private _overlappingScrollbarOptions;
4217
+ /**
4218
+ * Determines whether the scroll bar will overlap the list. The default value is "false".
4219
+ */
4220
+ overlappingScrollbar: _angular_core.InputSignal<boolean>;
4221
+ private _scrollBehaviorOptions;
4222
+ /**
4223
+ * Defines the scrolling behavior for any element on the page. The default value is "smooth".
4224
+ */
4225
+ scrollBehavior: _angular_core.InputSignal<ScrollBehavior>;
4226
+ private _scrollingSettingsOptions;
4227
+ /**
4228
+ * Scrolling settings.
4229
+ * - frictionalForce - Frictional force. Default value is 0.035.
4230
+ * - mass - Mass. Default value is 0.005.
4231
+ * - maxDistance - Maximum scrolling distance. Default value is 100000.
4232
+ * - maxDuration - Maximum animation duration. Default value is 4000.
4233
+ * - speedScale - Speed scale. Default value is 10.
4234
+ * - optimization - Enables scrolling performance optimization. Default value is `true`.
4235
+ */
4236
+ scrollingSettings: _angular_core.InputSignal<IScrollingSettings>;
4237
+ private _motionBlurOptions;
4238
+ /**
4239
+ * Motion blur effect. The default value is `0.15`.
4240
+ */
4241
+ motionBlur: _angular_core.InputSignal<number>;
4242
+ private _maxMotionBlurOptions;
4243
+ /**
4244
+ * Maximum motion blur effect. The default value is `0.5`.
4245
+ */
4246
+ maxMotionBlur: _angular_core.InputSignal<number>;
4247
+ private _motionBlurEnabledOptions;
4248
+ /**
4249
+ * Determines whether to apply motion blur or not. The default value is `false`.
4250
+ */
4251
+ motionBlurEnabled: _angular_core.InputSignal<boolean>;
4252
+ private _animationParamsOptions;
4253
+ /**
4254
+ * Animation parameters. The default value is "{ scrollToItem: 0 }".
4255
+ */
4256
+ animationParams: _angular_core.InputSignal<IAnimationParams>;
4257
+ private _overscrollEnabledOptions;
4258
+ /**
4259
+ * Determines whether the overscroll (re-scroll) feature will work. The default value is "true".
4260
+ */
4261
+ overscrollEnabled: _angular_core.InputSignal<boolean>;
4262
+ private _directionOptions;
4263
+ /**
4264
+ * Determines the direction in which elements are placed. Default value is "both".
4265
+ */
4266
+ direction: _angular_core.InputSignal<Direction>;
4267
+ private _loading;
4268
+ /**
4269
+ * If `true`, the scrollBar goes into loading state. The default value is `false`.
4270
+ */
4271
+ loading: _angular_core.InputSignal<boolean>;
4272
+ private _langTextDir;
4273
+ /**
4274
+ * A string indicating the direction of text for the locale.
4275
+ * Can be either "ltr" (left-to-right) or "rtl" (right-to-left).
4276
+ */
4277
+ langTextDir: _angular_core.InputSignal<TextDirection>;
4278
+ protected readonly focusedElement: _angular_core.WritableSignal<Id | null>;
4279
+ protected readonly classes: _angular_core.WritableSignal<{
4280
+ [cName: string]: boolean;
4281
+ }>;
4282
+ private _bounds;
4283
+ protected get bounds(): _angular_core.WritableSignal<ISize | null>;
4284
+ private _scrollerBounds;
4285
+ private _$scrollSizeX;
4286
+ private _$scrollSizeY;
4287
+ private _isScrollLeft;
4288
+ private _isScrollRight;
4289
+ private _isScrollTop;
4290
+ private _isScrollBottom;
4291
+ protected _precalculatedScrollLeftOffset: _angular_core.WritableSignal<number>;
4292
+ protected _precalculatedScrollTopOffset: _angular_core.WritableSignal<number>;
4293
+ protected _precalculatedScrollRightOffset: _angular_core.WritableSignal<number>;
4294
+ protected _precalculatedScrollBottomOffset: _angular_core.WritableSignal<number>;
4295
+ private _elementRef;
4296
+ private _$scroll;
4297
+ readonly $scroll: rxjs.Observable<IScrollEvent>;
4298
+ get $grabbing(): rxjs.Observable<boolean>;
4299
+ private _$fireUpdate;
4300
+ protected readonly $fireUpdate: rxjs.Observable<boolean>;
4301
+ private _$fireUpdateNextFrame;
4302
+ protected readonly $fireUpdateNextFrame: rxjs.Observable<boolean>;
4303
+ private _$preventScrollSnapping;
4304
+ protected readonly $preventScrollSnapping: rxjs.Observable<boolean>;
4305
+ private _destroyRef;
4306
+ private _isLoading;
4307
+ private _animationIds;
4308
+ private _$viewInit;
4309
+ private readonly $viewInit;
4310
+ private _injector;
4311
+ constructor();
4312
+ ngAfterViewInit(): void;
4313
+ private onAfterResize;
4314
+ private snappingHandler;
4315
+ private emitScrollEvent;
4316
+ /**
4317
+ * The method scrolls the scroll view and returns the animation ids if the behavior is set to smooth or null
4318
+ * if the behavior is set to auto, instant, or not set.
4319
+ */
4320
+ scrollTo(options: IScrollOptions): number[] | null;
4321
+ /**
4322
+ * Prevents the list from snapping to its start or end edge.
4323
+ */
4324
+ preventSnapping(): void;
4325
+ ngOnDestroy(): void;
4326
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnVirtualScrollViewComponent, never>;
4327
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CnVirtualScrollViewComponent, "cn-virtual-scroll-view", never, { "scrollbarThickness": { "alias": "scrollbarThickness"; "required": false; "isSignal": true; }; "scrollbarMinSize": { "alias": "scrollbarMinSize"; "required": false; "isSignal": true; }; "scrollbarThumbRenderer": { "alias": "scrollbarThumbRenderer"; "required": false; "isSignal": true; }; "scrollbarThumbParams": { "alias": "scrollbarThumbParams"; "required": false; "isSignal": true; }; "clickDistance": { "alias": "clickDistance"; "required": false; "isSignal": true; }; "scrollLeftOffset": { "alias": "scrollLeftOffset"; "required": false; "isSignal": true; }; "scrollTopOffset": { "alias": "scrollTopOffset"; "required": false; "isSignal": true; }; "scrollRightOffset": { "alias": "scrollRightOffset"; "required": false; "isSignal": true; }; "scrollBottomOffset": { "alias": "scrollBottomOffset"; "required": false; "isSignal": true; }; "snapScrollToLeft": { "alias": "snapScrollToLeft"; "required": false; "isSignal": true; }; "snapScrollToTop": { "alias": "snapScrollToTop"; "required": false; "isSignal": true; }; "snapScrollToRight": { "alias": "snapScrollToRight"; "required": false; "isSignal": true; }; "snapScrollToBottom": { "alias": "snapScrollToBottom"; "required": false; "isSignal": true; }; "scrollable": { "alias": "scrollable"; "required": false; "isSignal": true; }; "scrollbarEnabled": { "alias": "scrollbarEnabled"; "required": false; "isSignal": true; }; "scrollbarInteractive": { "alias": "scrollbarInteractive"; "required": false; "isSignal": true; }; "overlappingScrollbar": { "alias": "overlappingScrollbar"; "required": false; "isSignal": true; }; "scrollBehavior": { "alias": "scrollBehavior"; "required": false; "isSignal": true; }; "scrollingSettings": { "alias": "scrollingSettings"; "required": false; "isSignal": true; }; "motionBlur": { "alias": "motionBlur"; "required": false; "isSignal": true; }; "maxMotionBlur": { "alias": "maxMotionBlur"; "required": false; "isSignal": true; }; "motionBlurEnabled": { "alias": "motionBlurEnabled"; "required": false; "isSignal": true; }; "animationParams": { "alias": "animationParams"; "required": false; "isSignal": true; }; "overscrollEnabled": { "alias": "overscrollEnabled"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "langTextDir": { "alias": "langTextDir"; "required": false; "isSignal": true; }; }, { "onScroll": "onScroll"; "onScrollEnd": "onScrollEnd"; "onViewportChange": "onViewportChange"; "onScrollReachLeft": "onScrollReachLeft"; "onScrollReachRight": "onScrollReachRight"; "onScrollReachTop": "onScrollReachTop"; "onScrollReachBottom": "onScrollReachBottom"; }, never, ["*"], false, never>;
4328
+ }
4329
+
4330
+ declare class CnVirtualScrollViewModule {
4331
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CnVirtualScrollViewModule, never>;
4332
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<CnVirtualScrollViewModule, [typeof CnVirtualScrollViewComponent], [typeof i2.CommonModule, typeof CnScrollerModule, typeof LocaleSensitiveModule], [typeof CnVirtualScrollViewComponent]>;
4333
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<CnVirtualScrollViewModule>;
4334
+ }
4335
+
4336
+ export { CnLocaleSensitiveDirective, CnLocaleSensitiveModule, CnScrollBarPublicService, CnScrollerComponent, CnScrollerModule, CnVirtualClickDirective, CnVirtualClickModule, CnVirtualListComponent, CnVirtualListModule, CnVirtualListPublicService, CnVirtualListService, CnVirtualScrollViewComponent, CnVirtualScrollViewModule, CnVirtualScrollViewService, TextDirections };
4337
+ export type { ArithmeticExpression, Color, FloatOrPersentageValue, GradientColorPosition, GradientColorPositions, IPoint, IRect, ISize, Id, TextDirection };