@praxisui/table 1.0.0-beta.16 → 1.0.0-beta.17
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 +8 -0
- package/fesm2022/{praxisui-table-filter-form-dialog-host.component-DI8aWSSJ.mjs → praxisui-table-filter-form-dialog-host.component-Du_IEq0W.mjs} +10 -2
- package/fesm2022/praxisui-table-filter-form-dialog-host.component-Du_IEq0W.mjs.map +1 -0
- package/fesm2022/praxisui-table.mjs +217 -23
- package/fesm2022/praxisui-table.mjs.map +1 -1
- package/index.d.ts +26 -2
- package/package.json +9 -9
- package/fesm2022/praxisui-table-filter-form-dialog-host.component-DI8aWSSJ.mjs.map +0 -1
package/index.d.ts
CHANGED
|
@@ -164,6 +164,8 @@ type FilterConfig = {
|
|
|
164
164
|
autoSummary?: boolean;
|
|
165
165
|
confirmTagDelete?: boolean;
|
|
166
166
|
debugLayout?: boolean;
|
|
167
|
+
/** Mostrar o campo "Buscar" (fallback) quando não houver Quick definido */
|
|
168
|
+
showQuickFallback?: boolean;
|
|
167
169
|
tagColor?: 'primary' | 'accent' | 'warn' | 'basic';
|
|
168
170
|
tagVariant?: 'filled' | 'outlined';
|
|
169
171
|
tagButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
|
|
@@ -244,6 +246,8 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
|
|
|
244
246
|
changeDebounceMs: number;
|
|
245
247
|
/** Controla a exibição do botão de configurações dentro do filtro */
|
|
246
248
|
showFilterSettings: boolean;
|
|
249
|
+
/** Mostrar campo de busca genérico quando não houver Quick configurado */
|
|
250
|
+
showQuickFallback?: boolean;
|
|
247
251
|
/** Data used to render the summary card when mode resolves to 'card'. */
|
|
248
252
|
summary?: any;
|
|
249
253
|
/** Custom template to render the summary card; receives the summary as $implicit. */
|
|
@@ -362,6 +366,8 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
|
|
|
362
366
|
constructor(crud: GenericCrudService<any>, configStorage: ConfigStorage, destroyRef: DestroyRef, filterConfig: FilterConfigService, settingsPanel: SettingsPanelService, snackBar: MatSnackBar, dialog: MatDialog, cdr: ChangeDetectorRef, dynamicForm: DynamicFormService, schemaNormalizer: SchemaNormalizerService);
|
|
363
367
|
private readonly global;
|
|
364
368
|
private readonly filterDrawerAdapter;
|
|
369
|
+
/** Decide se o bloco Quick deve ser exibido (heurística + preferência) */
|
|
370
|
+
showQuickBar(): boolean;
|
|
365
371
|
private loadSavedTagsFromStorage;
|
|
366
372
|
ngOnInit(): void;
|
|
367
373
|
ngAfterViewInit(): void;
|
|
@@ -409,7 +415,16 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
|
|
|
409
415
|
} | undefined;
|
|
410
416
|
private updateAutoSummary;
|
|
411
417
|
private defaultSummaryMap;
|
|
418
|
+
/** Salva o estado atual dos filtros como um atalho (tag) do usuário */
|
|
419
|
+
saveCurrentAsTag(): void;
|
|
412
420
|
private formatValueForBadge;
|
|
421
|
+
/**
|
|
422
|
+
* Resolve a user-friendly label for a filter key using the loaded FieldMetadata.
|
|
423
|
+
* Falls back to the key itself when metadata is not available.
|
|
424
|
+
*/
|
|
425
|
+
private getFieldLabel;
|
|
426
|
+
/** Resolve option display text from FieldMetadata.options, when present */
|
|
427
|
+
private getOptionText;
|
|
413
428
|
getAdvancedAriaLabel(): string;
|
|
414
429
|
private getSchemaMetaKey;
|
|
415
430
|
private getOutdatedIgnoreKey;
|
|
@@ -473,7 +488,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
|
|
|
473
488
|
private isEditableElement;
|
|
474
489
|
private focusQuick;
|
|
475
490
|
static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFilter, never>;
|
|
476
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisFilter, "praxis-filter", never, { "resourcePath": { "alias": "resourcePath"; "required": true; }; "formId": { "alias": "formId"; "required": true; }; "mode": { "alias": "mode"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "editModeEnabled": { "alias": "editModeEnabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; "quickField": { "alias": "quickField"; "required": false; }; "alwaysVisibleFields": { "alias": "alwaysVisibleFields"; "required": false; }; "tags": { "alias": "tags"; "required": false; }; "allowSaveTags": { "alias": "allowSaveTags"; "required": false; }; "persistenceKey": { "alias": "persistenceKey"; "required": false; }; "i18n": { "alias": "i18n"; "required": false; }; "changeDebounceMs": { "alias": "changeDebounceMs"; "required": false; }; "showFilterSettings": { "alias": "showFilterSettings"; "required": false; }; "summary": { "alias": "summary"; "required": false; }; "summaryTemplate": { "alias": "summaryTemplate"; "required": false; }; "summaryMap": { "alias": "summaryMap"; "required": false; }; "autoSummary": { "alias": "autoSummary"; "required": false; }; "confirmTagDelete": { "alias": "confirmTagDelete"; "required": false; }; "debugLayout": { "alias": "debugLayout"; "required": false; }; "placeBooleansInActions": { "alias": "placeBooleansInActions"; "required": false; }; "showToggleLabels": { "alias": "showToggleLabels"; "required": false; }; "alwaysMinWidth": { "alias": "alwaysMinWidth"; "required": false; }; "alwaysColsMd": { "alias": "alwaysColsMd"; "required": false; }; "alwaysColsLg": { "alias": "alwaysColsLg"; "required": false; }; "tagColor": { "alias": "tagColor"; "required": false; }; "tagVariant": { "alias": "tagVariant"; "required": false; }; "tagButtonColor": { "alias": "tagButtonColor"; "required": false; }; "actionsButtonColor": { "alias": "actionsButtonColor"; "required": false; }; "actionsVariant": { "alias": "actionsVariant"; "required": false; }; "overlayVariant": { "alias": "overlayVariant"; "required": false; }; "overlayBackdrop": { "alias": "overlayBackdrop"; "required": false; }; "advancedOpenMode": { "alias": "advancedOpenMode"; "required": false; }; }, { "submit": "submit"; "change": "change"; "clear": "clear"; "modeChange": "modeChange"; "requestSearch": "requestSearch"; "tagsChange": "tagsChange"; "metaChanged": "metaChanged"; "schemaStatusChange": "schemaStatusChange"; }, never, never, true, never>;
|
|
491
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisFilter, "praxis-filter", never, { "resourcePath": { "alias": "resourcePath"; "required": true; }; "formId": { "alias": "formId"; "required": true; }; "mode": { "alias": "mode"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "editModeEnabled": { "alias": "editModeEnabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; "quickField": { "alias": "quickField"; "required": false; }; "alwaysVisibleFields": { "alias": "alwaysVisibleFields"; "required": false; }; "tags": { "alias": "tags"; "required": false; }; "allowSaveTags": { "alias": "allowSaveTags"; "required": false; }; "persistenceKey": { "alias": "persistenceKey"; "required": false; }; "i18n": { "alias": "i18n"; "required": false; }; "changeDebounceMs": { "alias": "changeDebounceMs"; "required": false; }; "showFilterSettings": { "alias": "showFilterSettings"; "required": false; }; "showQuickFallback": { "alias": "showQuickFallback"; "required": false; }; "summary": { "alias": "summary"; "required": false; }; "summaryTemplate": { "alias": "summaryTemplate"; "required": false; }; "summaryMap": { "alias": "summaryMap"; "required": false; }; "autoSummary": { "alias": "autoSummary"; "required": false; }; "confirmTagDelete": { "alias": "confirmTagDelete"; "required": false; }; "debugLayout": { "alias": "debugLayout"; "required": false; }; "placeBooleansInActions": { "alias": "placeBooleansInActions"; "required": false; }; "showToggleLabels": { "alias": "showToggleLabels"; "required": false; }; "alwaysMinWidth": { "alias": "alwaysMinWidth"; "required": false; }; "alwaysColsMd": { "alias": "alwaysColsMd"; "required": false; }; "alwaysColsLg": { "alias": "alwaysColsLg"; "required": false; }; "tagColor": { "alias": "tagColor"; "required": false; }; "tagVariant": { "alias": "tagVariant"; "required": false; }; "tagButtonColor": { "alias": "tagButtonColor"; "required": false; }; "actionsButtonColor": { "alias": "actionsButtonColor"; "required": false; }; "actionsVariant": { "alias": "actionsVariant"; "required": false; }; "overlayVariant": { "alias": "overlayVariant"; "required": false; }; "overlayBackdrop": { "alias": "overlayBackdrop"; "required": false; }; "advancedOpenMode": { "alias": "advancedOpenMode"; "required": false; }; }, { "submit": "submit"; "change": "change"; "clear": "clear"; "modeChange": "modeChange"; "requestSearch": "requestSearch"; "tagsChange": "tagsChange"; "metaChanged": "metaChanged"; "schemaStatusChange": "schemaStatusChange"; }, never, never, true, never>;
|
|
477
492
|
}
|
|
478
493
|
|
|
479
494
|
interface ActionLike {
|
|
@@ -720,6 +735,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
|
|
|
720
735
|
openTableSettings(): void;
|
|
721
736
|
private applyTableConfig;
|
|
722
737
|
onResetPreferences(): void;
|
|
738
|
+
private resolvePagingStrategy;
|
|
739
|
+
private resolveSortingStrategy;
|
|
723
740
|
private applyDataSourceSettings;
|
|
724
741
|
private setupColumns;
|
|
725
742
|
private applyDefaultSortIfNone;
|
|
@@ -731,6 +748,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
|
|
|
731
748
|
private verifyServerSchemaVersion;
|
|
732
749
|
private loadSchema;
|
|
733
750
|
private convertFieldToColumn;
|
|
751
|
+
/**
|
|
752
|
+
* Apply automatic renderer hints based on schema field metadata.
|
|
753
|
+
* Runs only on initial bootstrap (when columns are derived from schema).
|
|
754
|
+
*/
|
|
755
|
+
private applyAutoRenderer;
|
|
734
756
|
/**
|
|
735
757
|
* Check if a value is a valid ColumnDataType
|
|
736
758
|
*/
|
|
@@ -1265,6 +1287,7 @@ interface BehaviorConfigChange {
|
|
|
1265
1287
|
declare class BehaviorConfigEditorComponent implements OnInit, OnDestroy {
|
|
1266
1288
|
private fb;
|
|
1267
1289
|
config: TableConfig;
|
|
1290
|
+
resourcePath?: string;
|
|
1268
1291
|
configChange: EventEmitter<_praxisui_core.TableConfigModern>;
|
|
1269
1292
|
behaviorChange: EventEmitter<BehaviorConfigChange>;
|
|
1270
1293
|
behaviorForm: FormGroup;
|
|
@@ -1284,7 +1307,7 @@ declare class BehaviorConfigEditorComponent implements OnInit, OnDestroy {
|
|
|
1284
1307
|
private arrayToString;
|
|
1285
1308
|
private stringToArray;
|
|
1286
1309
|
static ɵfac: i0.ɵɵFactoryDeclaration<BehaviorConfigEditorComponent, never>;
|
|
1287
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<BehaviorConfigEditorComponent, "behavior-config-editor", never, { "config": { "alias": "config"; "required": false; }; }, { "configChange": "configChange"; "behaviorChange": "behaviorChange"; }, never, never, true, never>;
|
|
1310
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BehaviorConfigEditorComponent, "behavior-config-editor", never, { "config": { "alias": "config"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; }, { "configChange": "configChange"; "behaviorChange": "behaviorChange"; }, never, never, true, never>;
|
|
1288
1311
|
}
|
|
1289
1312
|
|
|
1290
1313
|
interface ToolbarAction {
|
|
@@ -1705,6 +1728,7 @@ declare class FilterSettingsComponent implements OnChanges {
|
|
|
1705
1728
|
overlayVariant: FormControl<'card' | 'frosted'>;
|
|
1706
1729
|
overlayBackdrop: FormControl<boolean>;
|
|
1707
1730
|
advancedOpenMode: FormControl<'overlay' | 'modal' | 'drawer'>;
|
|
1731
|
+
showQuickFallback: FormControl<boolean>;
|
|
1708
1732
|
}>;
|
|
1709
1733
|
/**
|
|
1710
1734
|
* Emits true when form has changes and is valid, enabling the save button
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/table",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.17",
|
|
4
4
|
"description": "Advanced data table for Angular (Praxis UI) with editing, filtering, sorting, virtualization, and settings panel integration.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^20.0.0",
|
|
7
7
|
"@angular/core": "^20.0.0",
|
|
8
|
-
"@praxisui/core": "^1.0.0-beta.
|
|
9
|
-
"@praxisui/dynamic-fields": "^1.0.0-beta.
|
|
10
|
-
"@praxisui/dynamic-form": "^1.0.0-beta.
|
|
11
|
-
"@praxisui/settings-panel": "^1.0.0-beta.
|
|
12
|
-
"@praxisui/table-rule-builder": "^1.0.0-beta.
|
|
8
|
+
"@praxisui/core": "^1.0.0-beta.17",
|
|
9
|
+
"@praxisui/dynamic-fields": "^1.0.0-beta.17",
|
|
10
|
+
"@praxisui/dynamic-form": "^1.0.0-beta.17",
|
|
11
|
+
"@praxisui/settings-panel": "^1.0.0-beta.17",
|
|
12
|
+
"@praxisui/table-rule-builder": "^1.0.0-beta.17"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"tslib": "^2.3.0"
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
},
|
|
21
21
|
"repository": {
|
|
22
22
|
"type": "git",
|
|
23
|
-
"url": "https://github.com/codexrodrigues/praxis"
|
|
23
|
+
"url": "https://github.com/codexrodrigues/praxis-ui-angular"
|
|
24
24
|
},
|
|
25
|
-
"homepage": "https://github.com/codexrodrigues/praxis#readme",
|
|
25
|
+
"homepage": "https://github.com/codexrodrigues/praxis-ui-angular#readme",
|
|
26
26
|
"bugs": {
|
|
27
|
-
"url": "https://github.com/codexrodrigues/praxis/issues"
|
|
27
|
+
"url": "https://github.com/codexrodrigues/praxis-ui-angular/issues"
|
|
28
28
|
},
|
|
29
29
|
"keywords": [
|
|
30
30
|
"angular",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"praxisui-table-filter-form-dialog-host.component-DI8aWSSJ.mjs","sources":["../../../projects/praxis-table/src/lib/components/praxis-filter/filter-form-dialog-host.component.ts"],"sourcesContent":["import { Component, Inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatDialogModule, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { PraxisFilterForm } from '@praxisui/dynamic-form';\n\n@Component({\n selector: 'praxis-filter-form-dialog-host',\n standalone: true,\n imports: [CommonModule, MatDialogModule, MatButtonModule, MatProgressBarModule, PraxisFilterForm],\n template: `\n <h2 mat-dialog-title id=\"filterDialogTitle\">{{ data.title || 'Filtro Avançado' }}</h2>\n <mat-dialog-content class=\"pfx-filter-dialog-content\" aria-labelledby=\"filterDialogTitle\">\n <mat-progress-bar *ngIf=\"data?.schemaLoading\" mode=\"indeterminate\"></mat-progress-bar>\n <praxis-filter-form\n *ngIf=\"data?.config\"\n [formId]=\"data.formId\"\n [resourcePath]=\"data.resourcePath\"\n [mode]=\"'edit'\"\n [config]=\"data.config\"\n (formReady)=\"onReady($event)\"\n (valueChange)=\"onChange($event)\"\n (validityChange)=\"onValidity($event)\"\n ></praxis-filter-form>\n <p *ngIf=\"!data?.config && !data?.schemaLoading\">Nenhum dado</p>\n </mat-dialog-content>\n <mat-dialog-actions align=\"end\">\n <button mat-stroked-button mat-dialog-close>Cancelar</button>\n <button mat-flat-button color=\"primary\" (click)=\"apply()\" [disabled]=\"!valid\">Aplicar</button>\n </mat-dialog-actions>\n `,\n})\nexport class FilterFormDialogHostComponent {\n valid = true;\n private lastValue: any = {};\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public data: {\n formId: string;\n resourcePath: string;\n config: any;\n title?: string;\n schemaLoading?: boolean;\n },\n private ref: MatDialogRef<FilterFormDialogHostComponent>,\n ) {}\n\n onReady(_ev: any): void {}\n onChange(ev: { formData: Record<string, any> }): void {\n this.lastValue = ev?.formData ?? {};\n }\n onValidity(v: boolean): void { this.valid = v; }\n apply(): void { this.ref.close({ formData: this.lastValue }); }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;MAiCa,6BAA6B,CAAA;AAK/B,IAAA,IAAA;AAOC,IAAA,GAAA;IAXV,KAAK,GAAG,IAAI;IACJ,SAAS,GAAQ,EAAE;IAC3B,WAAA,CAES,IAMN,EACO,GAAgD,EAAA;QAPjD,IAAA,CAAA,IAAI,GAAJ,IAAI;QAOH,IAAA,CAAA,GAAG,GAAH,GAAG;;IAGb,OAAO,CAAC,GAAQ,EAAA;AAChB,IAAA,QAAQ,CAAC,EAAqC,EAAA;QAC5C,IAAI,CAAC,SAAS,GAAG,EAAE,EAAE,QAAQ,IAAI,EAAE;;IAErC,UAAU,CAAC,CAAU,EAAA,EAAU,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAC9C,IAAA,KAAK,KAAW,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AApBlD,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,kBAI9B,eAAe,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAJd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtB9B;;;;;;;;;;;;;;;;;;;;GAoBT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EArBS,YAAY,oIAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,oBAAoB,0NAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAuBrF,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBA1BzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,EAAE,gBAAgB,CAAC;AACjG,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;AAoBT,EAAA,CAAA;AACF,iBAAA;;0BAKI,MAAM;2BAAC,eAAe;;;;;"}
|