UNPKG

imng-kendo-grid-filtering

Version:

This library was generated with [Nx](https://nx.dev).

1 lines 15.8 kB
{"version":3,"file":"imng-kendo-grid-filtering.mjs","sources":["../../../../libs/imng-kendo-grid-filtering/src/lib/multi-select-filter/multi-select-filter.component.ts","../../../../libs/imng-kendo-grid-filtering/src/lib/uuid-filter/uuid-filter.component.ts","../../../../libs/imng-kendo-grid-filtering/src/lib/imng-kendo-grid-filtering.module.ts","../../../../libs/imng-kendo-grid-filtering/src/imng-kendo-grid-filtering.ts"],"sourcesContent":["import {\n Component,\n AfterViewInit,\n Input,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n inject,\n ElementRef,\n} from '@angular/core';\nimport { FilterService } from '@progress/kendo-angular-grid';\nimport {\n CompositeFilterDescriptor,\n distinct,\n filterBy,\n FilterDescriptor,\n} from '@progress/kendo-data-query';\nimport { IdType } from 'imng-nrsrx-client-utils';\nimport { ICompositeFilter, ODataState } from 'imng-kendo-odata';\nimport { CommonModule } from '@angular/common';\nimport { IFilter } from 'imng-odata-client';\n\n@Component({\n selector: 'imng-multi-select-filter',\n imports: [CommonModule],\n template: `\n <ul>\n @if (showTextFilter) {\n <li>\n <input class=\"k-textbox\" (input)=\"onInput($event)\" />\n </li>\n }\n @for (item of currentData; track item; let i = $index) {\n <li\n #itemElement\n (click)=\"onSelectionChange(valueAccessor(item), itemElement)\"\n [ngClass]=\"{ 'k-state-selected': isItemSelected(item) }\">\n <input\n type=\"checkbox\"\n id=\"chk-{{ valueAccessor(item) }}\"\n (focus)=\"onFocus(itemElement)\"\n class=\"k-checkbox\"\n [checked]=\"isItemSelected(item)\" />\n <label\n class=\"k-multiselect-checkbox k-checkbox-label\"\n for=\"chk-{{ valueAccessor(item) }}\">\n {{ textAccessor(item) }}\n </label>\n </li>\n }\n </ul>\n `,\n styles: [\n `\n ul {\n list-style-type: none;\n height: 200px;\n overflow-y: scroll;\n padding-left: 0;\n padding-right: 12px;\n }\n\n ul > li {\n padding: 8px 12px;\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-bottom: none;\n }\n\n ul > li:last-of-type {\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n }\n\n .k-multiselect-checkbox {\n pointer-events: none;\n }\n .k-checkbox {\n width: 14px;\n height: 15px;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IMNG_KENDO_GRID_MULTISELECT_FILTER implements AfterViewInit {\n readonly filterService = inject(FilterService);\n readonly changeDetectorRef = inject(ChangeDetectorRef);\n readonly elementRef = inject(ElementRef);\n @Input() public isPrimitive = false;\n @Input() public odataState: ODataState | null = {};\n @Input() public data: unknown[] = [];\n @Input() public textField: string | undefined = undefined;\n @Input() public valueField: string | undefined = undefined;\n @Input() public field = '';\n @Input() public showTextFilter = true;\n\n public currentData: unknown[] = [];\n public value: unknown[] = [];\n\n public textAccessor = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataItem: any, //NOSONAR\n ) =>\n this.isPrimitive || !this.textField ? dataItem : dataItem[this.textField];\n public valueAccessor = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataItem: any, //NOSONAR\n ) =>\n this.isPrimitive || !this.valueField ? dataItem : dataItem[this.valueField];\n\n public ngAfterViewInit() {\n const submitButton = this.elementRef.nativeElement.parentNode.querySelector(\n '.k-actions > button[type=\"submit\"]',\n );\n if (submitButton) {\n submitButton.style.display = 'none';\n }\n this.currentData = this.data;\n const tempValue = this.odataState?.filter?.filters.map(\n (f: ICompositeFilter | IFilter) =>\n (f as ICompositeFilter).filters\n .filter(\n (x: IFilter | ICompositeFilter) =>\n (x as IFilter).field === this.field,\n )\n .map((x: IFilter | ICompositeFilter) => (x as IFilter).value),\n );\n this.value = tempValue?.length ? tempValue?.flat() || [] : [];\n\n this.showTextFilter =\n this.showTextFilter &&\n typeof this.textAccessor(this.currentData[0]) === 'string';\n this.changeDetectorRef.markForCheck();\n }\n\n public isItemSelected(item: unknown) {\n return this.value.includes(this.valueAccessor(item));\n }\n\n public onSelectionChange(item: unknown, li: HTMLLIElement) {\n if (this.value.includes(item)) {\n this.value = this.value.filter((x) => x !== item);\n } else {\n this.value.push(item);\n }\n const currentFilter: CompositeFilterDescriptor = {\n logic: this.odataState?.filter?.logic ?? 'and',\n filters:\n (this.odataState?.filter?.filters as\n | CompositeFilterDescriptor[]\n | FilterDescriptor[]) ?? [],\n };\n if (\n currentFilter.filters.some(\n (x: CompositeFilterDescriptor | FilterDescriptor) =>\n (x as CompositeFilterDescriptor).filters.some(\n (f: FilterDescriptor | CompositeFilterDescriptor) =>\n (f as FilterDescriptor).field === this.field,\n ),\n )\n ) {\n currentFilter.filters = currentFilter.filters.filter(\n (x: CompositeFilterDescriptor | FilterDescriptor) =>\n !(x as CompositeFilterDescriptor).filters.some(\n (f: FilterDescriptor | CompositeFilterDescriptor) =>\n (f as FilterDescriptor).field === this.field,\n ),\n );\n }\n if (this.value.length > 0) {\n currentFilter.filters = [\n ...currentFilter.filters,\n {\n logic: 'or',\n filters: this.value.map((value) => ({\n field: this.field,\n operator: 'eq',\n value,\n })),\n },\n ];\n }\n this.filterService.filter(currentFilter);\n\n this.onFocus(li);\n }\n\n public onInput(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n e: { target: { value: IdType } } | any, //NOSONAR\n ): void {\n this.currentData = distinct(\n [\n ...this.currentData.filter((dataItem: unknown) =>\n this.value.includes(this.valueAccessor(dataItem)),\n ),\n ...filterBy(this.data, {\n operator: 'contains',\n field: this.textField,\n value: e.target.value,\n }),\n ],\n this.textField,\n );\n this.changeDetectorRef.markForCheck();\n }\n\n public onFocus(li: HTMLLIElement): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const ul = li.parentNode as any; //NOSONAR\n const below =\n ul.scrollTop + ul.offsetHeight < li.offsetTop + li.offsetHeight;\n const above = li.offsetTop < ul.scrollTop;\n\n // Scroll to focused checkbox\n if (below || above) {\n ul.scrollTop = li.offsetTop;\n }\n this.changeDetectorRef.markForCheck();\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n Input,\n inject,\n} from '@angular/core';\nimport {\n ColumnComponent,\n FilterService,\n KENDO_GRID,\n} from '@progress/kendo-angular-grid';\nimport { CompositeFilterDescriptor } from '@progress/kendo-data-query';\nimport { Subscriptions } from 'imng-ngrx-utils';\n\n/**\n * How To Use:\n * <kendo-grid-column ...>\n * <ng-template kendoGridFilterMenuTemplate let-filter>\n <imng-uuid-filter [filter]=\"filter\"></imng-uuid-filter>\n </ng-template>\n <kendo-grid-column>\n */\n@Component({\n selector: 'imng-uuid-filter',\n imports: [KENDO_GRID],\n template: `\n <kendo-grid-string-filter-menu\n [column]=\"column\"\n [filter]=\"filter\"\n [filterService]=\"filterService\"\n [extra]=\"false\"\n operator=\"eq\">\n <kendo-filter-eq-operator />\n </kendo-grid-string-filter-menu>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IMNG_KENDO_GRID_UUID_FILTER {\n filterService = inject<FilterService>(FilterService);\n column = inject<ColumnComponent>(ColumnComponent);\n\n /**\n * The current menu filter.\n * @type {CompositeFilterDescriptor}\n */\n @Input()\n filter: CompositeFilterDescriptor;\n\n public allSubscriptions = new Subscriptions();\n constructor() {\n this.filter = null as never;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IMNG_KENDO_GRID_MULTISELECT_FILTER } from './multi-select-filter/multi-select-filter.component';\nimport { IMNG_KENDO_GRID_UUID_FILTER } from './uuid-filter/uuid-filter.component';\n\n@NgModule({\n imports: [\n CommonModule,\n IMNG_KENDO_GRID_MULTISELECT_FILTER,\n IMNG_KENDO_GRID_UUID_FILTER,\n ],\n exports: [IMNG_KENDO_GRID_MULTISELECT_FILTER, IMNG_KENDO_GRID_UUID_FILTER],\n})\nexport class ImngKendoGridFilteringModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":";;;;;;;;;MAkFa,kCAAkC,CAAA;AA7D/C,IAAA,WAAA,GAAA;AA8DW,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC7C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACxB,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,UAAU,GAAsB,EAAE;QAClC,IAAA,CAAA,IAAI,GAAc,EAAE;QACpB,IAAA,CAAA,SAAS,GAAuB,SAAS;QACzC,IAAA,CAAA,UAAU,GAAuB,SAAS;QAC1C,IAAA,CAAA,KAAK,GAAG,EAAE;QACV,IAAA,CAAA,cAAc,GAAG,IAAI;QAE9B,IAAA,CAAA,WAAW,GAAc,EAAE;QAC3B,IAAA,CAAA,KAAK,GAAc,EAAE;AAErB,QAAA,IAAA,CAAA,YAAY,GAAG;;QAEpB,QAAa,KAEb,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;AACpE,QAAA,IAAA,CAAA,aAAa,GAAG;;QAErB,QAAa,KAEb,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;AAgH9E,IAAA;IA9GQ,eAAe,GAAA;AACpB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,aAAa,CACzE,oCAAoC,CACrC;QACD,IAAI,YAAY,EAAE;AAChB,YAAA,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;QACrC;AACA,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI;AAC5B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CACpD,CAAC,CAA6B,KAC3B,CAAsB,CAAC;AACrB,aAAA,MAAM,CACL,CAAC,CAA6B,KAC3B,CAAa,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK;aAEtC,GAAG,CAAC,CAAC,CAA6B,KAAM,CAAa,CAAC,KAAK,CAAC,CAClE;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;AAE7D,QAAA,IAAI,CAAC,cAAc;AACjB,YAAA,IAAI,CAAC,cAAc;AACnB,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;AAC5D,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;IACvC;AAEO,IAAA,cAAc,CAAC,IAAa,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACtD;IAEO,iBAAiB,CAAC,IAAa,EAAE,EAAiB,EAAA;QACvD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;QACnD;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB;AACA,QAAA,MAAM,aAAa,GAA8B;YAC/C,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,KAAK;YAC9C,OAAO,EACJ,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAEH,IAAI,EAAE;SAChC;AACD,QAAA,IACE,aAAa,CAAC,OAAO,CAAC,IAAI,CACxB,CAAC,CAA+C,KAC7C,CAA+B,CAAC,OAAO,CAAC,IAAI,CAC3C,CAAC,CAA+C,KAC7C,CAAsB,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAC/C,CACJ,EACD;AACA,YAAA,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAClD,CAAC,CAA+C,KAC9C,CAAE,CAA+B,CAAC,OAAO,CAAC,IAAI,CAC5C,CAAC,CAA+C,KAC7C,CAAsB,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAC/C,CACJ;QACH;QACA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,aAAa,CAAC,OAAO,GAAG;gBACtB,GAAG,aAAa,CAAC,OAAO;AACxB,gBAAA;AACE,oBAAA,KAAK,EAAE,IAAI;AACX,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;wBAClC,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,wBAAA,QAAQ,EAAE,IAAI;wBACd,KAAK;AACN,qBAAA,CAAC,CAAC;AACJ,iBAAA;aACF;QACH;AACA,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC;AAExC,QAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAClB;IAEO,OAAO;;IAEZ,CAAsC,EAAA;AAEtC,QAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CACzB;YACE,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,QAAiB,KAC3C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAClD;AACD,YAAA,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;AACrB,gBAAA,QAAQ,EAAE,UAAU;gBACpB,KAAK,EAAE,IAAI,CAAC,SAAS;AACrB,gBAAA,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;aACtB,CAAC;AACH,SAAA,EACD,IAAI,CAAC,SAAS,CACf;AACD,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;IACvC;AAEO,IAAA,OAAO,CAAC,EAAiB,EAAA;;AAE9B,QAAA,MAAM,EAAE,GAAG,EAAE,CAAC,UAAiB,CAAC;AAChC,QAAA,MAAM,KAAK,GACT,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY;QACjE,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS;;AAGzC,QAAA,IAAI,KAAK,IAAI,KAAK,EAAE;AAClB,YAAA,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS;QAC7B;AACA,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;IACvC;8GAvIW,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1DnC;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA3BS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FA2DX,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBA7D9C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,OAAA,EAC3B,CAAC,YAAY,CAAC,EAAA,QAAA,EACb;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BT,EAAA,eAAA,EA8BgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,kTAAA,CAAA,EAAA;;sBAM9C;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;AC9EH;;;;;;;AAOG;MAgBU,2BAA2B,CAAA;AAYtC,IAAA,WAAA,GAAA;AAXA,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAgB,aAAa,CAAC;AACpD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAkB,eAAe,CAAC;AAS1C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,aAAa,EAAE;AAE3C,QAAA,IAAI,CAAC,MAAM,GAAG,IAAa;IAC7B;8GAdW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZ5B;;;;;;;;;AAST,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGU,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAfvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;oBAC5B,OAAO,EAAE,CAAC,UAAU,CAAC;AACrB,oBAAA,QAAQ,EAAE;;;;;;;;;AAST,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;sBASE;;;MChCU,4BAA4B,CAAA;8GAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,YANrC,YAAY;YACZ,kCAAkC;YAClC,2BAA2B,CAAA,EAAA,OAAA,EAAA,CAEnB,kCAAkC,EAAE,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAE9D,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,YANrC,YAAY;YACZ,kCAAkC;YAClC,2BAA2B,CAAA,EAAA,CAAA,CAAA;;2FAIlB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBARxC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,kCAAkC;wBAClC,2BAA2B;AAC5B,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,kCAAkC,EAAE,2BAA2B,CAAC;AAC3E,iBAAA;;;ACZD;;AAEG;;;;"}