@ruc-lib/virtual-scroll 3.1.0 → 3.1.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/README.md +24 -20
- package/esm2020/index.mjs +3 -0
- package/esm2020/lib/ruclib-virtual-scroll/ruclib-virtual-scroll.component.mjs +123 -0
- package/esm2020/lib/ruclib-virtual-scroll.module.mjs +20 -0
- package/esm2020/model/ruclib-virtual-scroll.model.mjs +2 -0
- package/esm2020/ruc-lib-virtual-scroll.mjs +5 -0
- package/fesm2015/ruc-lib-virtual-scroll.mjs +154 -0
- package/fesm2015/ruc-lib-virtual-scroll.mjs.map +1 -0
- package/fesm2020/ruc-lib-virtual-scroll.mjs +146 -0
- package/fesm2020/ruc-lib-virtual-scroll.mjs.map +1 -0
- package/index.d.ts +2 -109
- package/lib/ruclib-virtual-scroll/ruclib-virtual-scroll.component.d.ts +62 -0
- package/lib/ruclib-virtual-scroll.module.d.ts +10 -0
- package/model/ruclib-virtual-scroll.model.d.ts +45 -0
- package/package.json +21 -7
- package/fesm2022/ruc-lib-virtual-scroll.mjs +0 -143
- package/fesm2022/ruc-lib-virtual-scroll.mjs.map +0 -1
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { ViewChild, Input, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
-
import * as i1 from '@angular/cdk/scrolling';
|
|
4
|
-
import { ScrollingModule, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
|
|
5
|
-
import * as i2 from '@angular/material/icon';
|
|
6
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
7
|
-
|
|
8
|
-
class RuclibVirtualScrollComponent {
|
|
9
|
-
constructor() {
|
|
10
|
-
// Configuration object, aligns with how other components might be fed data in your app
|
|
11
|
-
this.rucInputData = {};
|
|
12
|
-
this.itemSize = 10; // Default item size in pixels
|
|
13
|
-
this.viewportWidth = '100vw'; // Default viewport width
|
|
14
|
-
this.viewportHeight = '100vh'; // Default viewport height
|
|
15
|
-
this.clientHeight = 0;
|
|
16
|
-
// Optional: For theming, if your component needs to react to theme changes
|
|
17
|
-
this.customTheme = '';
|
|
18
|
-
}
|
|
19
|
-
ngOnInit() {
|
|
20
|
-
this.updateInternalState();
|
|
21
|
-
}
|
|
22
|
-
ngOnChanges(changes) {
|
|
23
|
-
// Re-process inputs if they change
|
|
24
|
-
if (changes['rucInputData']) {
|
|
25
|
-
this.updateInternalState();
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
ngAfterViewChecked() {
|
|
29
|
-
const isDataLoading = this.rucInputData?.isLoad || false;
|
|
30
|
-
if (isDataLoading) {
|
|
31
|
-
this.scrollToIndex();
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
updateInternalState() {
|
|
35
|
-
this.clientHeight = document.getElementsByClassName('cdk-virtual-scroll-content-wrapper')[0].clientHeight;
|
|
36
|
-
// Update itemSize from rucInputData if provided, otherwise keep current or default
|
|
37
|
-
this.itemSize =
|
|
38
|
-
this.rucInputData?.itemSize !== undefined
|
|
39
|
-
? this.rucInputData.itemSize
|
|
40
|
-
: this.itemSize;
|
|
41
|
-
// Update viewportWidth from rucInputData if provided, otherwise keep current or default
|
|
42
|
-
this.viewportWidth =
|
|
43
|
-
this.rucInputData?.viewportWidth !== undefined
|
|
44
|
-
? this.rucInputData.viewportWidth
|
|
45
|
-
: this.viewportWidth;
|
|
46
|
-
// Update viewportHeight from rucInputData if provided, otherwise keep current or default
|
|
47
|
-
this.viewportHeight =
|
|
48
|
-
this.rucInputData?.viewportHeight !== undefined
|
|
49
|
-
? this.rucInputData.viewportHeight
|
|
50
|
-
: this.viewportHeight;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Example public method that can be called by a parent component.
|
|
54
|
-
* Scrolls the virtual scroll viewport to the specified index.
|
|
55
|
-
* @param index The index of the item to scroll to.
|
|
56
|
-
* @param behavior Optional scroll behavior ('auto', 'smooth').
|
|
57
|
-
*/
|
|
58
|
-
scrollToIndex() {
|
|
59
|
-
const newClientHeight = document.getElementsByClassName('cdk-virtual-scroll-content-wrapper')[0].clientHeight;
|
|
60
|
-
if (this.virtualScrollViewport) {
|
|
61
|
-
if (newClientHeight !== this.clientHeight) {
|
|
62
|
-
this.clientHeight = document.getElementsByClassName('cdk-virtual-scroll-content-wrapper')[0].clientHeight;
|
|
63
|
-
document
|
|
64
|
-
.getElementsByClassName('cdk-virtual-scroll-content-wrapper')[0]
|
|
65
|
-
.scrollIntoView({ behavior: 'auto', block: 'end' });
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
console.warn('RuclibVirtualScrollComponent: Viewport not available to scroll.');
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* To handle the scroll position on top by using back to top icon
|
|
74
|
-
* @returns scroll position at top
|
|
75
|
-
*/
|
|
76
|
-
handleScroll() {
|
|
77
|
-
document
|
|
78
|
-
.getElementsByClassName('cdk-virtual-scroll-content-wrapper')[0]
|
|
79
|
-
.scrollIntoView({ behavior: 'auto', block: 'start' });
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* To get the icon of back to top icon
|
|
83
|
-
* @returns default: 'arrow_upward'
|
|
84
|
-
*/
|
|
85
|
-
getBackToTopIcon() {
|
|
86
|
-
return this.rucInputData?.backToTopIcon || 'arrow_upward';
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* To get the label of back to top icon
|
|
90
|
-
* @returns default: 'Back to Top'
|
|
91
|
-
*/
|
|
92
|
-
getBackToTopLabel() {
|
|
93
|
-
return this.rucInputData?.backToTopLabel || 'Back to Top';
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* To get the color of icon
|
|
97
|
-
* @returns default: false
|
|
98
|
-
*/
|
|
99
|
-
getIconColor() {
|
|
100
|
-
return this.rucInputData?.iconColor || 'primary';
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* To check wheteher back to top icon shold be there or not in view
|
|
104
|
-
* @returns default: false
|
|
105
|
-
*/
|
|
106
|
-
isBackToTopIcon() {
|
|
107
|
-
return this.rucInputData?.isBackToTopIcon || false;
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* To get the thumb color of virtual scroll
|
|
111
|
-
* @returns default: '#888'
|
|
112
|
-
*/
|
|
113
|
-
getScrollbarThumbColor() {
|
|
114
|
-
return this.rucInputData?.thumbColor || '#888';
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* To get the track color of virtual scroll
|
|
118
|
-
* @returns default: '#f1f1f1'
|
|
119
|
-
*/
|
|
120
|
-
getScrollbarTrackColor() {
|
|
121
|
-
return this.rucInputData?.trackColor || '#f1f1f1';
|
|
122
|
-
}
|
|
123
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: RuclibVirtualScrollComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
124
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: RuclibVirtualScrollComponent, isStandalone: true, selector: "uxp-ruclib-virtual-scroll", inputs: { rucInputData: "rucInputData", customTheme: "customTheme" }, viewQueries: [{ propertyName: "virtualScrollViewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<cdk-virtual-scroll-viewport\r\n [style.scrollbar-color]=\"getScrollbarThumbColor() + ' ' + getScrollbarTrackColor()\"\r\n class=\"virtual-scrollar-wrapper\" itemSize=\"itemSize\" [style.width]=\"viewportWidth\" [style.height]=\"viewportHeight\">\r\n <ng-content></ng-content>\r\n</cdk-virtual-scroll-viewport>\r\n\r\n@if (isBackToTopIcon()) {\r\n <div class=\"virtual-scrollar__back-to-top\">\r\n <button class=\"virtual-scrollar__back-to-top-btn\" mat-mini-fab aria-label=\"getBackToTopLabel()\" (click)=\"handleScroll()\">\r\n <mat-icon color=\"{{getIconColor()}}\">{{getBackToTopIcon()}}</mat-icon>\r\n </button>\r\n </div>\r\n}", styles: [".virtual-scrollar-wrapper{border:1px solid #ccc}.virtual-scrollar__back-to-top{margin:8px 0}.virtual-scrollar__back-to-top .virtual-scrollar__back-to-top-btn{cursor:pointer}::ng-deep .cdk-virtual-scroll-content-wrapper{contain:inline-size!important}\n"], dependencies: [{ kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i1.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "component", type: i1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
125
|
-
}
|
|
126
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: RuclibVirtualScrollComponent, decorators: [{
|
|
127
|
-
type: Component,
|
|
128
|
-
args: [{ selector: 'uxp-ruclib-virtual-scroll', imports: [ScrollingModule, MatIconModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<cdk-virtual-scroll-viewport\r\n [style.scrollbar-color]=\"getScrollbarThumbColor() + ' ' + getScrollbarTrackColor()\"\r\n class=\"virtual-scrollar-wrapper\" itemSize=\"itemSize\" [style.width]=\"viewportWidth\" [style.height]=\"viewportHeight\">\r\n <ng-content></ng-content>\r\n</cdk-virtual-scroll-viewport>\r\n\r\n@if (isBackToTopIcon()) {\r\n <div class=\"virtual-scrollar__back-to-top\">\r\n <button class=\"virtual-scrollar__back-to-top-btn\" mat-mini-fab aria-label=\"getBackToTopLabel()\" (click)=\"handleScroll()\">\r\n <mat-icon color=\"{{getIconColor()}}\">{{getBackToTopIcon()}}</mat-icon>\r\n </button>\r\n </div>\r\n}", styles: [".virtual-scrollar-wrapper{border:1px solid #ccc}.virtual-scrollar__back-to-top{margin:8px 0}.virtual-scrollar__back-to-top .virtual-scrollar__back-to-top-btn{cursor:pointer}::ng-deep .cdk-virtual-scroll-content-wrapper{contain:inline-size!important}\n"] }]
|
|
129
|
-
}], propDecorators: { rucInputData: [{
|
|
130
|
-
type: Input
|
|
131
|
-
}], customTheme: [{
|
|
132
|
-
type: Input
|
|
133
|
-
}], virtualScrollViewport: [{
|
|
134
|
-
type: ViewChild,
|
|
135
|
-
args: [CdkVirtualScrollViewport]
|
|
136
|
-
}] } });
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* Generated bundle index. Do not edit.
|
|
140
|
-
*/
|
|
141
|
-
|
|
142
|
-
export { RuclibVirtualScrollComponent };
|
|
143
|
-
//# sourceMappingURL=ruc-lib-virtual-scroll.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ruc-lib-virtual-scroll.mjs","sources":["../../src/lib/ruclib-virtual-scroll/ruclib-virtual-scroll.component.ts","../../src/lib/ruclib-virtual-scroll/ruclib-virtual-scroll.component.html","../../src/ruc-lib-virtual-scroll.ts"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n ViewChild,\r\n} from '@angular/core';\r\n\r\nimport { RucVirtualScrollInput } from '../../model/ruclib-virtual-scroll.model';\r\nimport {\r\n CdkVirtualScrollViewport,\r\n ScrollingModule,\r\n} from '@angular/cdk/scrolling';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n@Component({\r\n selector: 'uxp-ruclib-virtual-scroll',\r\n imports: [ScrollingModule, MatIconModule],\r\n templateUrl: './ruclib-virtual-scroll.component.html',\r\n styleUrl: './ruclib-virtual-scroll.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class RuclibVirtualScrollComponent implements OnInit, OnChanges {\r\n // Configuration object, aligns with how other components might be fed data in your app\r\n @Input() rucInputData: RucVirtualScrollInput = {};\r\n itemSize = 10; // Default item size in pixels\r\n viewportWidth = '100vw'; // Default viewport width\r\n viewportHeight = '100vh'; // Default viewport height\r\n clientHeight = 0;\r\n\r\n // Optional: For theming, if your component needs to react to theme changes\r\n @Input() customTheme = '';\r\n\r\n @ViewChild(CdkVirtualScrollViewport) virtualScrollViewport:\r\n | CdkVirtualScrollViewport\r\n | undefined;\r\n\r\n ngOnInit(): void {\r\n this.updateInternalState();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // Re-process inputs if they change\r\n if (changes['rucInputData']) {\r\n this.updateInternalState();\r\n }\r\n }\r\n\r\n ngAfterViewChecked() {\r\n const isDataLoading = this.rucInputData?.isLoad || false;\r\n if (isDataLoading) {\r\n this.scrollToIndex();\r\n }\r\n }\r\n\r\n private updateInternalState(): void {\r\n this.clientHeight = document.getElementsByClassName(\r\n 'cdk-virtual-scroll-content-wrapper'\r\n )[0].clientHeight;\r\n\r\n // Update itemSize from rucInputData if provided, otherwise keep current or default\r\n this.itemSize =\r\n this.rucInputData?.itemSize !== undefined\r\n ? this.rucInputData.itemSize\r\n : this.itemSize;\r\n\r\n // Update viewportWidth from rucInputData if provided, otherwise keep current or default\r\n this.viewportWidth =\r\n this.rucInputData?.viewportWidth !== undefined\r\n ? this.rucInputData.viewportWidth\r\n : this.viewportWidth;\r\n\r\n // Update viewportHeight from rucInputData if provided, otherwise keep current or default\r\n this.viewportHeight =\r\n this.rucInputData?.viewportHeight !== undefined\r\n ? this.rucInputData.viewportHeight\r\n : this.viewportHeight;\r\n }\r\n\r\n /**\r\n * Example public method that can be called by a parent component.\r\n * Scrolls the virtual scroll viewport to the specified index.\r\n * @param index The index of the item to scroll to.\r\n * @param behavior Optional scroll behavior ('auto', 'smooth').\r\n */\r\n public scrollToIndex(): void {\r\n const newClientHeight = document.getElementsByClassName(\r\n 'cdk-virtual-scroll-content-wrapper'\r\n )[0].clientHeight;\r\n if (this.virtualScrollViewport) {\r\n if (newClientHeight !== this.clientHeight) {\r\n this.clientHeight = document.getElementsByClassName(\r\n 'cdk-virtual-scroll-content-wrapper'\r\n )[0].clientHeight;\r\n document\r\n .getElementsByClassName('cdk-virtual-scroll-content-wrapper')[0]\r\n .scrollIntoView({ behavior: 'auto', block: 'end' });\r\n }\r\n } else {\r\n console.warn(\r\n 'RuclibVirtualScrollComponent: Viewport not available to scroll.'\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * To handle the scroll position on top by using back to top icon\r\n * @returns scroll position at top\r\n */\r\n public handleScroll(): void {\r\n document\r\n .getElementsByClassName('cdk-virtual-scroll-content-wrapper')[0]\r\n .scrollIntoView({ behavior: 'auto', block: 'start' });\r\n }\r\n\r\n /**\r\n * To get the icon of back to top icon\r\n * @returns default: 'arrow_upward'\r\n */\r\n getBackToTopIcon(): string {\r\n return this.rucInputData?.backToTopIcon || 'arrow_upward';\r\n }\r\n\r\n /**\r\n * To get the label of back to top icon\r\n * @returns default: 'Back to Top'\r\n */\r\n getBackToTopLabel(): string {\r\n return this.rucInputData?.backToTopLabel || 'Back to Top';\r\n }\r\n\r\n /**\r\n * To get the color of icon\r\n * @returns default: false\r\n */\r\n getIconColor(): string {\r\n return this.rucInputData?.iconColor || 'primary';\r\n }\r\n\r\n /**\r\n * To check wheteher back to top icon shold be there or not in view\r\n * @returns default: false\r\n */\r\n isBackToTopIcon(): boolean {\r\n return this.rucInputData?.isBackToTopIcon || false;\r\n }\r\n\r\n /**\r\n * To get the thumb color of virtual scroll\r\n * @returns default: '#888'\r\n */\r\n getScrollbarThumbColor(): string {\r\n return this.rucInputData?.thumbColor || '#888';\r\n }\r\n\r\n /**\r\n * To get the track color of virtual scroll\r\n * @returns default: '#f1f1f1'\r\n */\r\n getScrollbarTrackColor(): string {\r\n return this.rucInputData?.trackColor || '#f1f1f1';\r\n }\r\n}\r\n","<cdk-virtual-scroll-viewport\r\n [style.scrollbar-color]=\"getScrollbarThumbColor() + ' ' + getScrollbarTrackColor()\"\r\n class=\"virtual-scrollar-wrapper\" itemSize=\"itemSize\" [style.width]=\"viewportWidth\" [style.height]=\"viewportHeight\">\r\n <ng-content></ng-content>\r\n</cdk-virtual-scroll-viewport>\r\n\r\n@if (isBackToTopIcon()) {\r\n <div class=\"virtual-scrollar__back-to-top\">\r\n <button class=\"virtual-scrollar__back-to-top-btn\" mat-mini-fab aria-label=\"getBackToTopLabel()\" (click)=\"handleScroll()\">\r\n <mat-icon color=\"{{getIconColor()}}\">{{getBackToTopIcon()}}</mat-icon>\r\n </button>\r\n </div>\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAwBa,4BAA4B,CAAA;AAPzC,IAAA,WAAA,GAAA;;QASW,IAAA,CAAA,YAAY,GAA0B,EAAE;AACjD,QAAA,IAAA,CAAA,QAAQ,GAAG,EAAE,CAAC;AACd,QAAA,IAAA,CAAA,aAAa,GAAG,OAAO,CAAC;AACxB,QAAA,IAAA,CAAA,cAAc,GAAG,OAAO,CAAC;QACzB,IAAA,CAAA,YAAY,GAAG,CAAC;;QAGP,IAAA,CAAA,WAAW,GAAG,EAAE;AAmI1B,IAAA;IA7HC,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,EAAE;IAC5B;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;;AAEhC,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;YAC3B,IAAI,CAAC,mBAAmB,EAAE;QAC5B;IACF;IAEA,kBAAkB,GAAA;QAChB,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,KAAK;QACxD,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,sBAAsB,CACjD,oCAAoC,CACrC,CAAC,CAAC,CAAC,CAAC,YAAY;;AAGjB,QAAA,IAAI,CAAC,QAAQ;AACX,YAAA,IAAI,CAAC,YAAY,EAAE,QAAQ,KAAK;AAC9B,kBAAE,IAAI,CAAC,YAAY,CAAC;AACpB,kBAAE,IAAI,CAAC,QAAQ;;AAGnB,QAAA,IAAI,CAAC,aAAa;AAChB,YAAA,IAAI,CAAC,YAAY,EAAE,aAAa,KAAK;AACnC,kBAAE,IAAI,CAAC,YAAY,CAAC;AACpB,kBAAE,IAAI,CAAC,aAAa;;AAGxB,QAAA,IAAI,CAAC,cAAc;AACjB,YAAA,IAAI,CAAC,YAAY,EAAE,cAAc,KAAK;AACpC,kBAAE,IAAI,CAAC,YAAY,CAAC;AACpB,kBAAE,IAAI,CAAC,cAAc;IAC3B;AAEA;;;;;AAKG;IACI,aAAa,GAAA;AAClB,QAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,sBAAsB,CACrD,oCAAoC,CACrC,CAAC,CAAC,CAAC,CAAC,YAAY;AACjB,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,eAAe,KAAK,IAAI,CAAC,YAAY,EAAE;AACzC,gBAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,sBAAsB,CACjD,oCAAoC,CACrC,CAAC,CAAC,CAAC,CAAC,YAAY;gBACjB;AACG,qBAAA,sBAAsB,CAAC,oCAAoC,CAAC,CAAC,CAAC;qBAC9D,cAAc,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YACvD;QACF;aAAO;AACL,YAAA,OAAO,CAAC,IAAI,CACV,iEAAiE,CAClE;QACH;IACF;AAEA;;;AAGG;IACI,YAAY,GAAA;QACjB;AACG,aAAA,sBAAsB,CAAC,oCAAoC,CAAC,CAAC,CAAC;aAC9D,cAAc,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACzD;AAEA;;;AAGG;IACH,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,aAAa,IAAI,cAAc;IAC3D;AAEA;;;AAGG;IACH,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,cAAc,IAAI,aAAa;IAC3D;AAEA;;;AAGG;IACH,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,SAAS,IAAI,SAAS;IAClD;AAEA;;;AAGG;IACH,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,eAAe,IAAI,KAAK;IACpD;AAEA;;;AAGG;IACH,sBAAsB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,UAAU,IAAI,MAAM;IAChD;AAEA;;;AAGG;IACH,sBAAsB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,UAAU,IAAI,SAAS;IACnD;8GA3IW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,kNAW5B,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnCrC,0oBAYC,EAAA,MAAA,EAAA,CAAA,6PAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDOa,eAAe,4WAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAK/B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAPxC,SAAS;+BACI,2BAA2B,EAAA,OAAA,EAC5B,CAAC,eAAe,EAAE,aAAa,CAAC,EAAA,eAAA,EAGxB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0oBAAA,EAAA,MAAA,EAAA,CAAA,6PAAA,CAAA,EAAA;;sBAIhD;;sBAOA;;sBAEA,SAAS;uBAAC,wBAAwB;;;AEnCrC;;AAEG;;;;"}
|