@shival99/z-ui 2.1.32 → 2.2.0
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/fesm2022/shival99-z-ui-components-z-accordion.mjs +41 -25
- package/fesm2022/shival99-z-ui-components-z-accordion.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +176 -97
- package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-avatar.mjs +71 -40
- package/fesm2022/shival99-z-ui-components-z-avatar.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs +26 -15
- package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-button-group.mjs +33 -21
- package/fesm2022/shival99-z-ui-components-z-button-group.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-button.mjs +32 -19
- package/fesm2022/shival99-z-ui-components-z-button.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-calendar.mjs +289 -172
- package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-card.mjs +34 -24
- package/fesm2022/shival99-z-ui-components-z-card.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-chat.mjs +85 -47
- package/fesm2022/shival99-z-ui-components-z-chat.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-checkbox.mjs +56 -31
- package/fesm2022/shival99-z-ui-components-z-checkbox.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-code.mjs +29 -16
- package/fesm2022/shival99-z-ui-components-z-code.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-command.mjs +34 -19
- package/fesm2022/shival99-z-ui-components-z-command.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs +310 -88
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs +32 -18
- package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-editor.mjs +118 -62
- package/fesm2022/shival99-z-ui-components-z-editor.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-empty.mjs +31 -17
- package/fesm2022/shival99-z-ui-components-z-empty.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-filter.mjs +81 -54
- package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-gallery.mjs +240 -132
- package/fesm2022/shival99-z-ui-components-z-gallery.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-icon.mjs +39 -21
- package/fesm2022/shival99-z-ui-components-z-icon.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-input.mjs +173 -95
- package/fesm2022/shival99-z-ui-components-z-input.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-kanban.mjs +88 -47
- package/fesm2022/shival99-z-ui-components-z-kanban.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-loading.mjs +31 -19
- package/fesm2022/shival99-z-ui-components-z-loading.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-marquee.mjs +42 -23
- package/fesm2022/shival99-z-ui-components-z-marquee.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-media-player.mjs +87 -45
- package/fesm2022/shival99-z-ui-components-z-media-player.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-menu.mjs +126 -67
- package/fesm2022/shival99-z-ui-components-z-menu.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-metric-card.mjs +42 -23
- package/fesm2022/shival99-z-ui-components-z-metric-card.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-modal.mjs +144 -80
- package/fesm2022/shival99-z-ui-components-z-modal.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-pagination.mjs +45 -24
- package/fesm2022/shival99-z-ui-components-z-pagination.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-popover.mjs +90 -57
- package/fesm2022/shival99-z-ui-components-z-popover.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-qrcode.mjs +51 -29
- package/fesm2022/shival99-z-ui-components-z-qrcode.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-radio.mjs +36 -20
- package/fesm2022/shival99-z-ui-components-z-radio.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-scrollarea.mjs +27 -15
- package/fesm2022/shival99-z-ui-components-z-scrollarea.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-select.mjs +239 -138
- package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-show-more.mjs +38 -21
- package/fesm2022/shival99-z-ui-components-z-show-more.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs +42 -23
- package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-skeleton.mjs +35 -19
- package/fesm2022/shival99-z-ui-components-z-skeleton.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-steps.mjs +55 -31
- package/fesm2022/shival99-z-ui-components-z-steps.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-switch.mjs +60 -33
- package/fesm2022/shival99-z-ui-components-z-switch.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-table.mjs +10875 -0
- package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-tabs.mjs +534 -0
- package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-tags.mjs +72 -46
- package/fesm2022/shival99-z-ui-components-z-tags.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-timeline.mjs +254 -0
- package/fesm2022/shival99-z-ui-components-z-timeline.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-toast.mjs +53 -31
- package/fesm2022/shival99-z-ui-components-z-toast.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-tooltip.mjs +133 -56
- package/fesm2022/shival99-z-ui-components-z-tooltip.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-upload.mjs +63 -36
- package/fesm2022/shival99-z-ui-components-z-upload.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-i18n.mjs +2 -0
- package/fesm2022/shival99-z-ui-i18n.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-pipes.mjs +18 -18
- package/fesm2022/shival99-z-ui-services.mjs +35 -31
- package/fesm2022/shival99-z-ui-services.mjs.map +1 -1
- package/package.json +16 -16
- package/types/shival99-z-ui-components-z-autocomplete.d.ts +2 -2
- package/types/shival99-z-ui-components-z-card.d.ts +1 -2
- package/types/shival99-z-ui-components-z-drawer.d.ts +20 -2
- package/types/shival99-z-ui-components-z-gallery.d.ts +1 -2
- package/types/shival99-z-ui-components-z-select.d.ts +2 -2
- package/types/shival99-z-ui-components-z-table.d.ts +2293 -0
- package/types/shival99-z-ui-components-z-tabs.d.ts +92 -0
- package/types/shival99-z-ui-components-z-timeline.d.ts +71 -0
|
@@ -20,25 +20,36 @@ const zScrollAreaVariants = cva('z-scrollarea block overflow-hidden w-full', {
|
|
|
20
20
|
|
|
21
21
|
class ZScrollAreaComponent {
|
|
22
22
|
// Lấy reference đến ngx-scrollbar
|
|
23
|
-
scrollbarRef = viewChild('scrollbarRef',
|
|
23
|
+
scrollbarRef = viewChild('scrollbarRef', /* @ts-ignore */
|
|
24
|
+
...(ngDevMode ? [{ debugName: "scrollbarRef" }] : /* istanbul ignore next */ []));
|
|
24
25
|
// Lấy reference đến native viewport
|
|
25
|
-
nativeViewport = viewChild('nativeViewport',
|
|
26
|
+
nativeViewport = viewChild('nativeViewport', /* @ts-ignore */
|
|
27
|
+
...(ngDevMode ? [{ debugName: "nativeViewport" }] : /* istanbul ignore next */ []));
|
|
26
28
|
// Khai báo các inputs sử dụng Signals API
|
|
27
|
-
class = input('',
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
class = input('', /* @ts-ignore */
|
|
30
|
+
...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
|
|
31
|
+
zType = input('custom', /* @ts-ignore */
|
|
32
|
+
...(ngDevMode ? [{ debugName: "zType" }] : /* istanbul ignore next */ []));
|
|
33
|
+
zOrientation = input('vertical', /* @ts-ignore */
|
|
34
|
+
...(ngDevMode ? [{ debugName: "zOrientation" }] : /* istanbul ignore next */ []));
|
|
35
|
+
zVisibility = input('hover', /* @ts-ignore */
|
|
36
|
+
...(ngDevMode ? [{ debugName: "zVisibility" }] : /* istanbul ignore next */ []));
|
|
37
|
+
zSize = input('default', /* @ts-ignore */
|
|
38
|
+
...(ngDevMode ? [{ debugName: "zSize" }] : /* istanbul ignore next */ []));
|
|
39
|
+
zDisableInteraction = input(false, /* @ts-ignore */
|
|
40
|
+
...(ngDevMode ? [{ debugName: "zDisableInteraction" }] : /* istanbul ignore next */ []));
|
|
41
|
+
zSensorThrottleTime = input(200, /* @ts-ignore */
|
|
42
|
+
...(ngDevMode ? [{ debugName: "zSensorThrottleTime" }] : /* istanbul ignore next */ []));
|
|
43
|
+
zDisableSensor = input(false, /* @ts-ignore */
|
|
44
|
+
...(ngDevMode ? [{ debugName: "zDisableSensor" }] : /* istanbul ignore next */ []));
|
|
35
45
|
// Khai báo các outputs sử dụng Signals API
|
|
36
46
|
zScroll = output();
|
|
37
47
|
zScrollbarInit = output();
|
|
38
48
|
// Tính toán các class cho host element
|
|
39
49
|
hostClasses = computed(() => zMergeClasses(zScrollAreaVariants({
|
|
40
50
|
zSize: this.zSize(),
|
|
41
|
-
}), `z-scrollarea-${this.zOrientation()}`, `z-scrollarea-visibility-${this.zVisibility()}`, this.class()),
|
|
51
|
+
}), `z-scrollarea-${this.zOrientation()}`, `z-scrollarea-visibility-${this.zVisibility()}`, this.class()), /* @ts-ignore */
|
|
52
|
+
...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
|
|
42
53
|
// Tính toán các class cho native viewport
|
|
43
54
|
nativeClasses = computed(() => {
|
|
44
55
|
const orientation = this.zOrientation();
|
|
@@ -50,7 +61,8 @@ class ZScrollAreaComponent {
|
|
|
50
61
|
overflowClass = 'overflow-x-auto overflow-y-hidden';
|
|
51
62
|
}
|
|
52
63
|
return zMergeClasses('z-scrollarea-native w-full h-full block', overflowClass);
|
|
53
|
-
},
|
|
64
|
+
}, /* @ts-ignore */
|
|
65
|
+
...(ngDevMode ? [{ debugName: "nativeClasses" }] : /* istanbul ignore next */ []));
|
|
54
66
|
ngAfterViewInit() {
|
|
55
67
|
const scrollbar = this.scrollbarRef();
|
|
56
68
|
if (!scrollbar) {
|
|
@@ -113,10 +125,10 @@ class ZScrollAreaComponent {
|
|
|
113
125
|
}
|
|
114
126
|
void scrollbar.scrollToElement(targetEl, options);
|
|
115
127
|
}
|
|
116
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
117
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
128
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: ZScrollAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
129
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", type: ZScrollAreaComponent, isStandalone: true, selector: "z-scrollarea", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, zType: { classPropertyName: "zType", publicName: "zType", isSignal: true, isRequired: false, transformFunction: null }, zOrientation: { classPropertyName: "zOrientation", publicName: "zOrientation", isSignal: true, isRequired: false, transformFunction: null }, zVisibility: { classPropertyName: "zVisibility", publicName: "zVisibility", isSignal: true, isRequired: false, transformFunction: null }, zSize: { classPropertyName: "zSize", publicName: "zSize", isSignal: true, isRequired: false, transformFunction: null }, zDisableInteraction: { classPropertyName: "zDisableInteraction", publicName: "zDisableInteraction", isSignal: true, isRequired: false, transformFunction: null }, zSensorThrottleTime: { classPropertyName: "zSensorThrottleTime", publicName: "zSensorThrottleTime", isSignal: true, isRequired: false, transformFunction: null }, zDisableSensor: { classPropertyName: "zDisableSensor", publicName: "zDisableSensor", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { zScroll: "zScroll", zScrollbarInit: "zScrollbarInit" }, host: { properties: { "class": "hostClasses()" } }, viewQueries: [{ propertyName: "scrollbarRef", first: true, predicate: ["scrollbarRef"], descendants: true, isSignal: true }, { propertyName: "nativeViewport", first: true, predicate: ["nativeViewport"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template #contentTpl>\n <ng-content />\n</ng-template>\n\n@if (zType() === 'custom') {\n <ng-scrollbar\n #scrollbarRef\n class=\"block h-full w-full\"\n [visibility]=\"zVisibility()\"\n [orientation]=\"zOrientation()\"\n [disableInteraction]=\"zDisableInteraction()\"\n [sensorThrottleTime]=\"zSensorThrottleTime()\"\n [disableSensor]=\"zDisableSensor()\"\n (scroll)=\"onScroll($event)\">\n <ng-container *ngTemplateOutlet=\"contentTpl\" />\n </ng-scrollbar>\n} @else {\n <div #nativeViewport [class]=\"nativeClasses()\" (scroll)=\"onScroll($event)\">\n <ng-container *ngTemplateOutlet=\"contentTpl\" />\n </div>\n}\n", styles: [":host{display:block;position:relative}.z-scrollarea{display:block}.z-scrollarea ng-scrollbar{width:100%;height:inherit;--scrollbar-track-thickness: var(--scrollbar-size);--scrollbar-track-hover-thickness: var(--scrollbar-size);--scrollbar-track-active-thickness: var(--scrollbar-size);--scrollbar-container-offset: 0px;--scrollbar-track-offset: 0px;--scrollbar-track-color: inherit;--scrollbar-thumb-color: inherit;--scrollbar-thumb-hover-color: inherit;--scrollbar-border-radius: inherit;--scrollbar-track-border-radius: inherit;--scrollbar-thumb-transition: inherit}.z-scrollarea .z-scrollarea-native{width:100%;height:inherit}.z-scrollarea{--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in oklab, var(--muted-foreground) 30%, transparent);--scrollbar-thumb-hover-color: color-mix(in oklab, var(--muted-foreground) 50%, transparent);--scrollbar-border-radius: var(--radius-sm, 6px);--scrollbar-track-border-radius: var(--radius-sm, 6px);--scrollbar-thumb-transition: background-color .2s ease, opacity .2s ease}.z-scrollarea.z-scrollarea-size-sm{--scrollbar-size: 4px;--scrollbar-padding: 2px}.z-scrollarea.z-scrollarea-size-default{--scrollbar-size: 6px;--scrollbar-padding: 4px}.z-scrollarea.z-scrollarea-size-lg{--scrollbar-size: 8px;--scrollbar-padding: 6px}.z-scrollarea .ng-scroll-viewport{width:100%;height:100%;max-width:100%;max-height:100%;box-sizing:border-box}.z-scrollarea .ng-scroll-content{box-sizing:border-box;display:block;width:100%}.z-scrollarea.z-scrollarea-horizontal .ng-scroll-content,.z-scrollarea.z-scrollarea-auto .ng-scroll-content{width:max-content;min-width:100%}.z-scrollarea-visibility-visible .z-scrollarea-native,.z-scrollarea-visibility-hover .z-scrollarea-native{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb-color, color-mix(in oklab, var(--muted-foreground) 30%, transparent)) var(--scrollbar-track-color, transparent)}.z-scrollarea-visibility-visible .z-scrollarea-native::-webkit-scrollbar,.z-scrollarea-visibility-hover .z-scrollarea-native::-webkit-scrollbar{width:var(--scrollbar-size, 6px);height:var(--scrollbar-size, 6px)}.z-scrollarea-visibility-visible .z-scrollarea-native::-webkit-scrollbar-track,.z-scrollarea-visibility-hover .z-scrollarea-native::-webkit-scrollbar-track{background:var(--scrollbar-track-color, transparent)}.z-scrollarea-visibility-visible .z-scrollarea-native::-webkit-scrollbar-thumb,.z-scrollarea-visibility-hover .z-scrollarea-native::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color, color-mix(in oklab, var(--muted-foreground) 30%, transparent));border-radius:var(--scrollbar-border-radius, var(--radius-sm, 6px));transition:var(--scrollbar-thumb-transition, background-color .2s ease)}.z-scrollarea-visibility-visible .z-scrollarea-native::-webkit-scrollbar-thumb:hover,.z-scrollarea-visibility-hover .z-scrollarea-native::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color, color-mix(in oklab, var(--muted-foreground) 50%, transparent))}.z-scrollarea-visibility-hover .z-scrollarea-native{scrollbar-color:transparent transparent}.z-scrollarea-visibility-hover .z-scrollarea-native::-webkit-scrollbar-thumb{background:transparent}.z-scrollarea-visibility-hover:hover .z-scrollarea-visibility-hover .z-scrollarea-native,.z-scrollarea-visibility-hover:active .z-scrollarea-visibility-hover .z-scrollarea-native,.z-scrollarea-visibility-hover:focus-within .z-scrollarea-visibility-hover .z-scrollarea-native,.z-scrollarea-visibility-hover .z-scrollarea-native:hover,.z-scrollarea-visibility-hover .z-scrollarea-native:active{scrollbar-color:var(--scrollbar-thumb-color, color-mix(in oklab, var(--muted-foreground) 30%, transparent)) var(--scrollbar-track-color, transparent)}.z-scrollarea-visibility-hover:hover .z-scrollarea-visibility-hover .z-scrollarea-native::-webkit-scrollbar-thumb,.z-scrollarea-visibility-hover:active .z-scrollarea-visibility-hover .z-scrollarea-native::-webkit-scrollbar-thumb,.z-scrollarea-visibility-hover:focus-within .z-scrollarea-visibility-hover .z-scrollarea-native::-webkit-scrollbar-thumb,.z-scrollarea-visibility-hover .z-scrollarea-native:hover::-webkit-scrollbar-thumb,.z-scrollarea-visibility-hover .z-scrollarea-native:active::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color, color-mix(in oklab, var(--muted-foreground) 30%, transparent))}\n"], dependencies: [{ kind: "component", type: NgScrollbar, selector: "ng-scrollbar:not([externalViewport]), [ngScrollbar]", exportAs: ["ngScrollbar"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
118
130
|
}
|
|
119
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
131
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: ZScrollAreaComponent, decorators: [{
|
|
120
132
|
type: Component,
|
|
121
133
|
args: [{ selector: 'z-scrollarea', imports: [NgScrollbar, NgTemplateOutlet], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
122
134
|
'[class]': 'hostClasses()',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shival99-z-ui-components-z-scrollarea.mjs","sources":["../../../../libs/core-ui/components/z-scrollarea/z-scrollarea.variants.ts","../../../../libs/core-ui/components/z-scrollarea/z-scrollarea.component.ts","../../../../libs/core-ui/components/z-scrollarea/z-scrollarea.component.html","../../../../libs/core-ui/components/z-scrollarea/shival99-z-ui-components-z-scrollarea.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zScrollAreaVariants = cva('z-scrollarea block overflow-hidden w-full', {\n variants: {\n zSize: {\n sm: 'z-scrollarea-size-sm',\n default: 'z-scrollarea-size-default',\n lg: 'z-scrollarea-size-lg',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n});\n\nexport type ZScrollAreaVariants = VariantProps<typeof zScrollAreaVariants>;\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n output,\n viewChild,\n ViewEncapsulation,\n type AfterViewInit,\n} from '@angular/core';\nimport { zMergeClasses } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { NgScrollbar } from 'ngx-scrollbar';\nimport type {\n ZScrollAreaOrientation,\n ZScrollAreaVisibility,\n ZScrollAreaSize,\n ZScrollAreaType,\n} from './z-scrollarea.types';\nimport { zScrollAreaVariants } from './z-scrollarea.variants';\n\n@Component({\n selector: 'z-scrollarea',\n imports: [NgScrollbar, NgTemplateOutlet],\n standalone: true,\n templateUrl: './z-scrollarea.component.html',\n styleUrl: './z-scrollarea.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class ZScrollAreaComponent implements AfterViewInit {\n // Lấy reference đến ngx-scrollbar\n public readonly scrollbarRef = viewChild<NgScrollbar>('scrollbarRef');\n // Lấy reference đến native viewport\n public readonly nativeViewport = viewChild<ElementRef<HTMLElement>>('nativeViewport');\n\n // Khai báo các inputs sử dụng Signals API\n public readonly class = input<ClassValue>('');\n public readonly zType = input<ZScrollAreaType>('custom');\n public readonly zOrientation = input<ZScrollAreaOrientation>('vertical');\n public readonly zVisibility = input<ZScrollAreaVisibility>('hover');\n public readonly zSize = input<ZScrollAreaSize>('default');\n public readonly zDisableInteraction = input<boolean>(false);\n public readonly zSensorThrottleTime = input<number>(200);\n public readonly zDisableSensor = input<boolean>(false);\n\n // Khai báo các outputs sử dụng Signals API\n public readonly zScroll = output<Event>();\n public readonly zScrollbarInit = output<NgScrollbar>();\n\n // Tính toán các class cho host element\n protected readonly hostClasses = computed(() =>\n zMergeClasses(\n zScrollAreaVariants({\n zSize: this.zSize(),\n }),\n `z-scrollarea-${this.zOrientation()}`,\n `z-scrollarea-visibility-${this.zVisibility()}`,\n this.class()\n )\n );\n\n // Tính toán các class cho native viewport\n protected readonly nativeClasses = computed(() => {\n const orientation = this.zOrientation();\n let overflowClass = 'overflow-auto';\n if (orientation === 'vertical') {\n overflowClass = 'overflow-y-auto overflow-x-hidden';\n }\n if (orientation === 'horizontal') {\n overflowClass = 'overflow-x-auto overflow-y-hidden';\n }\n return zMergeClasses('z-scrollarea-native w-full h-full block', overflowClass);\n });\n\n public ngAfterViewInit(): void {\n const scrollbar = this.scrollbarRef();\n if (!scrollbar) {\n return;\n }\n this.zScrollbarInit.emit(scrollbar);\n }\n\n // Chuyển tiếp sự kiện scroll\n protected onScroll(event: Event): void {\n this.zScroll.emit(event);\n }\n\n // API helper để scroll chương trình\n public scrollTo(options: ScrollToOptions): void {\n if (this.zType() === 'native') {\n const nativeEl = this.nativeViewport()?.nativeElement;\n if (nativeEl) {\n nativeEl.scrollTo(options);\n }\n return;\n }\n\n const scrollbar = this.scrollbarRef();\n if (!scrollbar) {\n return;\n }\n void scrollbar.scrollTo(options);\n }\n\n // API helper để scroll đến phần tử cụ thể\n public scrollToElement(\n selectorOrElement: string | HTMLElement,\n options?: { top?: number; left?: number; duration?: number }\n ): void {\n if (this.zType() === 'native') {\n const nativeEl = this.nativeViewport()?.nativeElement;\n if (!nativeEl) {\n return;\n }\n\n let targetEl: HTMLElement | null = null;\n if (typeof selectorOrElement === 'string') {\n targetEl = nativeEl.querySelector(selectorOrElement);\n }\n if (selectorOrElement instanceof HTMLElement) {\n targetEl = selectorOrElement;\n }\n\n if (targetEl) {\n const behavior = options?.duration && options.duration > 0 ? 'smooth' : 'auto';\n targetEl.scrollIntoView({ behavior, block: 'nearest', inline: 'nearest' });\n }\n return;\n }\n\n const scrollbar = this.scrollbarRef();\n if (!scrollbar) {\n return;\n }\n\n let targetEl: HTMLElement | null = null;\n if (typeof selectorOrElement === 'string') {\n targetEl = scrollbar.nativeElement.querySelector(selectorOrElement);\n }\n if (selectorOrElement instanceof HTMLElement) {\n targetEl = selectorOrElement;\n }\n\n if (!targetEl) {\n return;\n }\n\n void scrollbar.scrollToElement(targetEl, options);\n }\n}\n","<ng-template #contentTpl>\n <ng-content />\n</ng-template>\n\n@if (zType() === 'custom') {\n <ng-scrollbar\n #scrollbarRef\n class=\"block h-full w-full\"\n [visibility]=\"zVisibility()\"\n [orientation]=\"zOrientation()\"\n [disableInteraction]=\"zDisableInteraction()\"\n [sensorThrottleTime]=\"zSensorThrottleTime()\"\n [disableSensor]=\"zDisableSensor()\"\n (scroll)=\"onScroll($event)\">\n <ng-container *ngTemplateOutlet=\"contentTpl\" />\n </ng-scrollbar>\n} @else {\n <div #nativeViewport [class]=\"nativeClasses()\" (scroll)=\"onScroll($event)\">\n <ng-container *ngTemplateOutlet=\"contentTpl\" />\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shival99-z-ui-components-z-scrollarea.mjs","sources":["../../../../libs/core-ui/components/z-scrollarea/z-scrollarea.variants.ts","../../../../libs/core-ui/components/z-scrollarea/z-scrollarea.component.ts","../../../../libs/core-ui/components/z-scrollarea/z-scrollarea.component.html","../../../../libs/core-ui/components/z-scrollarea/shival99-z-ui-components-z-scrollarea.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zScrollAreaVariants = cva('z-scrollarea block overflow-hidden w-full', {\n variants: {\n zSize: {\n sm: 'z-scrollarea-size-sm',\n default: 'z-scrollarea-size-default',\n lg: 'z-scrollarea-size-lg',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n});\n\nexport type ZScrollAreaVariants = VariantProps<typeof zScrollAreaVariants>;\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n output,\n viewChild,\n ViewEncapsulation,\n type AfterViewInit,\n} from '@angular/core';\nimport { zMergeClasses } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { NgScrollbar } from 'ngx-scrollbar';\nimport type {\n ZScrollAreaOrientation,\n ZScrollAreaVisibility,\n ZScrollAreaSize,\n ZScrollAreaType,\n} from './z-scrollarea.types';\nimport { zScrollAreaVariants } from './z-scrollarea.variants';\n\n@Component({\n selector: 'z-scrollarea',\n imports: [NgScrollbar, NgTemplateOutlet],\n standalone: true,\n templateUrl: './z-scrollarea.component.html',\n styleUrl: './z-scrollarea.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class ZScrollAreaComponent implements AfterViewInit {\n // Lấy reference đến ngx-scrollbar\n public readonly scrollbarRef = viewChild<NgScrollbar>('scrollbarRef');\n // Lấy reference đến native viewport\n public readonly nativeViewport = viewChild<ElementRef<HTMLElement>>('nativeViewport');\n\n // Khai báo các inputs sử dụng Signals API\n public readonly class = input<ClassValue>('');\n public readonly zType = input<ZScrollAreaType>('custom');\n public readonly zOrientation = input<ZScrollAreaOrientation>('vertical');\n public readonly zVisibility = input<ZScrollAreaVisibility>('hover');\n public readonly zSize = input<ZScrollAreaSize>('default');\n public readonly zDisableInteraction = input<boolean>(false);\n public readonly zSensorThrottleTime = input<number>(200);\n public readonly zDisableSensor = input<boolean>(false);\n\n // Khai báo các outputs sử dụng Signals API\n public readonly zScroll = output<Event>();\n public readonly zScrollbarInit = output<NgScrollbar>();\n\n // Tính toán các class cho host element\n protected readonly hostClasses = computed(() =>\n zMergeClasses(\n zScrollAreaVariants({\n zSize: this.zSize(),\n }),\n `z-scrollarea-${this.zOrientation()}`,\n `z-scrollarea-visibility-${this.zVisibility()}`,\n this.class()\n )\n );\n\n // Tính toán các class cho native viewport\n protected readonly nativeClasses = computed(() => {\n const orientation = this.zOrientation();\n let overflowClass = 'overflow-auto';\n if (orientation === 'vertical') {\n overflowClass = 'overflow-y-auto overflow-x-hidden';\n }\n if (orientation === 'horizontal') {\n overflowClass = 'overflow-x-auto overflow-y-hidden';\n }\n return zMergeClasses('z-scrollarea-native w-full h-full block', overflowClass);\n });\n\n public ngAfterViewInit(): void {\n const scrollbar = this.scrollbarRef();\n if (!scrollbar) {\n return;\n }\n this.zScrollbarInit.emit(scrollbar);\n }\n\n // Chuyển tiếp sự kiện scroll\n protected onScroll(event: Event): void {\n this.zScroll.emit(event);\n }\n\n // API helper để scroll chương trình\n public scrollTo(options: ScrollToOptions): void {\n if (this.zType() === 'native') {\n const nativeEl = this.nativeViewport()?.nativeElement;\n if (nativeEl) {\n nativeEl.scrollTo(options);\n }\n return;\n }\n\n const scrollbar = this.scrollbarRef();\n if (!scrollbar) {\n return;\n }\n void scrollbar.scrollTo(options);\n }\n\n // API helper để scroll đến phần tử cụ thể\n public scrollToElement(\n selectorOrElement: string | HTMLElement,\n options?: { top?: number; left?: number; duration?: number }\n ): void {\n if (this.zType() === 'native') {\n const nativeEl = this.nativeViewport()?.nativeElement;\n if (!nativeEl) {\n return;\n }\n\n let targetEl: HTMLElement | null = null;\n if (typeof selectorOrElement === 'string') {\n targetEl = nativeEl.querySelector(selectorOrElement);\n }\n if (selectorOrElement instanceof HTMLElement) {\n targetEl = selectorOrElement;\n }\n\n if (targetEl) {\n const behavior = options?.duration && options.duration > 0 ? 'smooth' : 'auto';\n targetEl.scrollIntoView({ behavior, block: 'nearest', inline: 'nearest' });\n }\n return;\n }\n\n const scrollbar = this.scrollbarRef();\n if (!scrollbar) {\n return;\n }\n\n let targetEl: HTMLElement | null = null;\n if (typeof selectorOrElement === 'string') {\n targetEl = scrollbar.nativeElement.querySelector(selectorOrElement);\n }\n if (selectorOrElement instanceof HTMLElement) {\n targetEl = selectorOrElement;\n }\n\n if (!targetEl) {\n return;\n }\n\n void scrollbar.scrollToElement(targetEl, options);\n }\n}\n","<ng-template #contentTpl>\n <ng-content />\n</ng-template>\n\n@if (zType() === 'custom') {\n <ng-scrollbar\n #scrollbarRef\n class=\"block h-full w-full\"\n [visibility]=\"zVisibility()\"\n [orientation]=\"zOrientation()\"\n [disableInteraction]=\"zDisableInteraction()\"\n [sensorThrottleTime]=\"zSensorThrottleTime()\"\n [disableSensor]=\"zDisableSensor()\"\n (scroll)=\"onScroll($event)\">\n <ng-container *ngTemplateOutlet=\"contentTpl\" />\n </ng-scrollbar>\n} @else {\n <div #nativeViewport [class]=\"nativeClasses()\" (scroll)=\"onScroll($event)\">\n <ng-container *ngTemplateOutlet=\"contentTpl\" />\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAEO,MAAM,mBAAmB,GAAG,GAAG,CAAC,2CAA2C,EAAE;AAClF,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;AACL,YAAA,EAAE,EAAE,sBAAsB;AAC1B,YAAA,OAAO,EAAE,2BAA2B;AACpC,YAAA,EAAE,EAAE,sBAAsB;AAC3B,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA;AACF,CAAA;;MCsBY,oBAAoB,CAAA;;IAEf,YAAY,GAAG,SAAS,CAAc,cAAc;qFAAC;;IAErD,cAAc,GAAG,SAAS,CAA0B,gBAAgB;uFAAC;;IAGrE,KAAK,GAAG,KAAK,CAAa,EAAE;8EAAC;IAC7B,KAAK,GAAG,KAAK,CAAkB,QAAQ;8EAAC;IACxC,YAAY,GAAG,KAAK,CAAyB,UAAU;qFAAC;IACxD,WAAW,GAAG,KAAK,CAAwB,OAAO;oFAAC;IACnD,KAAK,GAAG,KAAK,CAAkB,SAAS;8EAAC;IACzC,mBAAmB,GAAG,KAAK,CAAU,KAAK;4FAAC;IAC3C,mBAAmB,GAAG,KAAK,CAAS,GAAG;4FAAC;IACxC,cAAc,GAAG,KAAK,CAAU,KAAK;uFAAC;;IAGtC,OAAO,GAAG,MAAM,EAAS;IACzB,cAAc,GAAG,MAAM,EAAe;;IAGnC,WAAW,GAAG,QAAQ,CAAC,MACxC,aAAa,CACX,mBAAmB,CAAC;AAClB,QAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACpB,KAAA,CAAC,EACF,CAAA,aAAA,EAAgB,IAAI,CAAC,YAAY,EAAE,EAAE,EACrC,CAAA,wBAAA,EAA2B,IAAI,CAAC,WAAW,EAAE,CAAA,CAAE,EAC/C,IAAI,CAAC,KAAK,EAAE,CACb;oFACF;;AAGkB,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC/C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE;QACvC,IAAI,aAAa,GAAG,eAAe;AACnC,QAAA,IAAI,WAAW,KAAK,UAAU,EAAE;YAC9B,aAAa,GAAG,mCAAmC;QACrD;AACA,QAAA,IAAI,WAAW,KAAK,YAAY,EAAE;YAChC,aAAa,GAAG,mCAAmC;QACrD;AACA,QAAA,OAAO,aAAa,CAAC,yCAAyC,EAAE,aAAa,CAAC;IAChF,CAAC;sFAAC;IAEK,eAAe,GAAA;AACpB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE;QACrC,IAAI,CAAC,SAAS,EAAE;YACd;QACF;AACA,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;IACrC;;AAGU,IAAA,QAAQ,CAAC,KAAY,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B;;AAGO,IAAA,QAAQ,CAAC,OAAwB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,QAAQ,EAAE;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa;YACrD,IAAI,QAAQ,EAAE;AACZ,gBAAA,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC5B;YACA;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE;QACrC,IAAI,CAAC,SAAS,EAAE;YACd;QACF;AACA,QAAA,KAAK,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;IAClC;;IAGO,eAAe,CACpB,iBAAuC,EACvC,OAA4D,EAAA;AAE5D,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,QAAQ,EAAE;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa;YACrD,IAAI,CAAC,QAAQ,EAAE;gBACb;YACF;YAEA,IAAI,QAAQ,GAAuB,IAAI;AACvC,YAAA,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE;AACzC,gBAAA,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC;YACtD;AACA,YAAA,IAAI,iBAAiB,YAAY,WAAW,EAAE;gBAC5C,QAAQ,GAAG,iBAAiB;YAC9B;YAEA,IAAI,QAAQ,EAAE;AACZ,gBAAA,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC,GAAG,QAAQ,GAAG,MAAM;AAC9E,gBAAA,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YAC5E;YACA;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE;QACrC,IAAI,CAAC,SAAS,EAAE;YACd;QACF;QAEA,IAAI,QAAQ,GAAuB,IAAI;AACvC,QAAA,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE;YACzC,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC;QACrE;AACA,QAAA,IAAI,iBAAiB,YAAY,WAAW,EAAE;YAC5C,QAAQ,GAAG,iBAAiB;QAC9B;QAEA,IAAI,CAAC,QAAQ,EAAE;YACb;QACF;QAEA,KAAK,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC;IACnD;uGAvHW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnCjC,kpBAqBA,EAAA,MAAA,EAAA,CAAA,+vIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDIY,WAAW,2HAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAU5B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAZhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,WACf,CAAC,WAAW,EAAE,gBAAgB,CAAC,EAAA,UAAA,EAC5B,IAAI,EAAA,eAAA,EAGC,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA,EAAA,QAAA,EAAA,kpBAAA,EAAA,MAAA,EAAA,CAAA,+vIAAA,CAAA,EAAA;AAIqD,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,cAAc,wEAEA,gBAAgB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEvCtF;;AAEG;;;;"}
|