@sd-angular/core 0.0.940 → 0.0.944

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.
Files changed (34) hide show
  1. package/bundles/sd-angular-core-grid-material.umd.js +94 -53
  2. package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
  3. package/bundles/sd-angular-core-grid-material.umd.min.js +2 -2
  4. package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
  5. package/bundles/sd-angular-core-select.umd.js +1 -1
  6. package/bundles/sd-angular-core-select.umd.js.map +1 -1
  7. package/bundles/sd-angular-core-select.umd.min.js +2 -2
  8. package/bundles/sd-angular-core-select.umd.min.js.map +1 -1
  9. package/esm2015/grid-material/sd-angular-core-grid-material.js +30 -28
  10. package/esm2015/grid-material/src/lib/components/desktop-cell/desktop-cell.component.js +3 -4
  11. package/esm2015/grid-material/src/lib/components/desktop-editor-validation/desktop-editor-validation.component.js +19 -0
  12. package/esm2015/grid-material/src/lib/components/grid-filter/grid-filter.component.js +1 -1
  13. package/esm2015/grid-material/src/lib/grid-material.component.js +2 -2
  14. package/esm2015/grid-material/src/lib/grid-material.module.js +9 -3
  15. package/esm2015/grid-material/src/lib/models/grid-option.model.js +1 -1
  16. package/esm2015/grid-material/src/lib/models/grid-style.model.js +2 -0
  17. package/esm2015/grid-material/src/lib/pipes/editor-validate.pipe.js +7 -10
  18. package/esm2015/grid-material/src/lib/pipes/style-row-css.pipe.js +13 -0
  19. package/esm2015/grid-material/src/lib/services/grid-configuration.service.js +6 -1
  20. package/esm2015/select/src/lib/select.component.js +2 -2
  21. package/fesm2015/sd-angular-core-grid-material.js +52 -17
  22. package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
  23. package/fesm2015/sd-angular-core-select.js +1 -1
  24. package/fesm2015/sd-angular-core-select.js.map +1 -1
  25. package/grid-material/sd-angular-core-grid-material.d.ts +29 -27
  26. package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
  27. package/grid-material/src/lib/components/desktop-editor-validation/desktop-editor-validation.component.d.ts +7 -0
  28. package/grid-material/src/lib/models/grid-option.model.d.ts +2 -3
  29. package/grid-material/src/lib/models/grid-style.model.d.ts +6 -0
  30. package/grid-material/src/lib/pipes/editor-validate.pipe.d.ts +1 -2
  31. package/grid-material/src/lib/pipes/style-row-css.pipe.d.ts +7 -0
  32. package/package.json +1 -1
  33. package/{sd-angular-core-0.0.940.tgz → sd-angular-core-0.0.944.tgz} +0 -0
  34. package/select/sd-angular-core-select.metadata.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-cell-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-filter-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-footer-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-empty-data-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-sub-information-def.directive.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/grid-material/src/lib/models/grid-configuration.model.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-filter.service.ts","../../../../projects/sd-core/grid-material/src/lib/components/grid-filter/grid-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-export/popup-export.component.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-configuration.service.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid.service.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-values.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-html-template.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-transform.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-children-view/desktop-cell-children-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-children-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-badge.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-let.directive.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/grid-configuration-result.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-disable-select-all.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/services/generated-column/generated-column.service.ts","../../../../projects/sd-core/grid-material/src/lib/components/dynamic-column/dynamic-column.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-editor/desktop-cell-editor.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-row.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-validate.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.module.ts"],"names":["templateRef","this","Directive","args","selector","TemplateRef","Input","SdMaterialFilterDefDirective","Object","defineProperty","prototype","val","defaultShowing","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","call","__rest","s","e","t","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","apply","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","pop","push","create","__values","o","m","__read","r","ar","error","__spread","arguments","concat","__classPrivateFieldGet","receiver","privateMap","has","get","__classPrivateFieldSet","set","DEFAULT_GRID_MATERIAL_CONFIG","pageSize","pages","GRID_MATERIAL_CONFIG","InjectionToken","SdPopupFilter","_this","externalFilters","externalFilter","inlineExternal","columns","columnFilter","inlineColumn","filterDefs","filterDef","inlineFilterDef","changeFilter","EventEmitter","clearFilter","open","JSON","parse","stringify","modal","close","onApply","emit","onClear","Component","template","ViewChild","Output","settingService","_prefix","key","prefix","selectedQuickFilter","quickFilters","configuration","_b","_a","hash","Injectable","SdSettingService","SdGridFilter","deviceService","gridFilterService","isVisible","_filterOptionChanges","Subject","filterChange","_subscription","Subscription","_loadDefault","_u","_v","column","field","filter","_c","_d","default","_w","_x","_e","type","from","_j","_g","_f","_h","undefined","to","_o","_l","_k","_m","_p","_y","_z","sdMaterialFilterDef","_q","_clearFilter","_s","_t","onFilter","item","popupFilter","onChangeFilter","onReset","onClearFilter","setFilter","isMobileOrTablet","isDesktop","disabled","ngAfterViewInit","add","pipe","startWith","subscribe","ngOnDestroy","unsubscribe","DeviceDetectorService","SdGridFilterService","SdPopupExport","ref","loadingService","exportService","notifyService","translateService","groups","enableCreating","selected","files","export","form","FormGroup","_getExportableColumns","gridOption","forEach","children","childColumn","map","title","description","width","_getExportableGroups","permission","hideMyTemplates","loadFiles","code","detectChanges","exportDefault","isCSV","file","group","selectedGroup","find","filesInFolder","_0","_initTemplate","fileName","sheets","isArray","sheet","name","items","fields","_2","_1","_3","_5","generateTemplate","start","finally","stop","filePath","download","uuid","generateAndUploadTemplate","generateUploadTemplate","onExport","uploadTemplate","_r","validator","validators","removeFile","confirm","translate","idx","splice","createTemplate","invalid","markAllAsTouched","some","notify","warning","templateName","onChangeGroup","listGroups","selectedOptions","validatorTemplateName","test","option","ngOnInit","ChangeDetectorRef","SdLoadingService","SdExportService","SdNotifyService","SdTranslateService","gridMaterialConfiguration","_COLUMNS","EDITOR","SUBINFORMATION","COMMAND","SELECTION","_cache","init","subject_1","load","_load","_get","_set","assign","remove","_remove","_default","observer","_getKey","config","hidden","origin","invisible","fixed","subject","storage","catch","isGeneratedColumn","col","console","generateConfigurationResult","sdSubInformation","fixedColumn","firstColumns","secondColumns","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","selection","commands","editor","visible","addable","removable","editable","generatedColumn","e1","generatedColumns","includes","subColumn","e_2","colSpan","Inject","Optional","utilityService","loadValues","valueField","displayField","hashKey","_prefix$1","_cache$1","values","obj","arrayToObject","getValues","SdUtilityService","SdGridMaterial","gridConfigurationService","gridService","uuid.v4","localItems","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_optionChanges","isExporting","isSelectAll","exportTitle","_initCellDef","sdMaterialCellDef","_initFilterDef","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","rawColumnFilter","gridFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","_initConfiguration","paginate","showFirstLastButtons","_filterLocal","filterInfo","columns_1","columns_1_1","filterValue","toString","trim","toLowerCase","columnValue","fValue","replace","cValue","date","Date","toFormat","fromDate","toDate","setDate","getDate","getTime","type_1","field_1","sort","current","s1","s2","reverse","index","pageIndex","total","_getFilter","filterReq","isObservable","toPromise","results","handle","error_1","_render","originItem","reload","onReload","every","isSelected","_updateSelectedItems","_load$1","data","_exportedItems","exportedItems","_allColumns","_allExportedColumns","_onExport","columns_2","maxItemsPerRequest","exportItems","this_1","res","mapping","totalPage","percent","Math","round","allColumns","allExportedColumns","exportColumn","exportedColumn","transform","displayOnTrue","displayOnFalse","e_6","exportItems_1","exportItems_1_1","exportCSV","exportByTemplate","max","onFilterChange","onExpand","rowData","isExpanding","isExpanded","subInformation","multiple","expandDetail","onSelect","single","onSelectAll","onCreate","onAdd","editorStatus","editorHandlerRow","temporary","onUpdate","onSave","saving","validate","message","err_1","onCancel","idx2","idx1","onRemove","reloadItem","sdId","_subscription$1","debounceTime","switchMap","gridConfigurationObserver","paginator","page","sortChange","changes","drop","event","moveItemInArray","previousIndex","currentIndex","keys","editorHandlerColumn","editorErrorMessage","errorMessage","animations","trigger","state","style","height","minHeight","visibility","transition","animate","SdGridConfigurationService","SdGridService","SdQuickAction","MatPaginator","MatSort","ContentChild","SdMaterialSubInformationDefDirective","SdMaterialEmptyDataDefDirective","ContentChildren","SdMaterialCellDefDirective","SdMaterialFooterDefDirective","SdCommandFilterPipe","commands_1","commands_1_1","command","flag","isHidden","e_1","childCommand","hidden_1","Pipe","SdCommandDisablePipe","SdCommandIconPipe","icon","SdCommandTitlePipe","SdColumnHtmlTemplatePipe","htmlTemplate","changeDetection","ChangeDetectionStrategy","OnPush","SdColumnTransformPipe","decimalPipe","Number","isNumber","toVNCurrency","DecimalPipe","SdFilterExternalPipe","externalFilters_1","externalFilters_1_1","SdFilterColumnPipe","columnChildren","SdColumnChildrenFilterPipe","_isMobileOrTablet","transformValue","templateValue","SdColumnTitlePipe","dynamicTitle","SdColumnBadgePipe","badge","SdLetDirective","vcRef","context","$implicit","sdLet","updateView","clear","createEmbeddedView","ViewContainerRef","SdGridConfigurationResultPipe","SdPopupGridConfiguration","isCreatingColumn","disabledDrag","_cache$2","createColumn","mouseUp","dropTable","table","renderRows","handleMouseDown","handleMouseUp","HostListener","SdColumnTooltipPipe","tooltip","_convert","action","fontSet","color","click","actions","actions_1","actions_1_1","childHidden","disabledSelectAll","_cache$3","loadSystem","systemColumn","SdDynamicColumn","generatedColumnService","columnTypes","isDetail","originColumns","onDetail","detail","isSystem","useTemplate","markAsUntouched","markAsPristine","systemSetting","setting","id","systemColumns","_subscription$2","SdGeneratedColumnService","SdSideDrawer","onChange","change","SdEditorHandlerRowPipe","status","savable","cancelable","SdEditorHandlerColumnPipe","relatedColumns","SdEditorValidatePipe","delay","previous","setTimeout","now","MatPaginatorIntlCro","_super","firstPageLabel","lastPageLabel","itemsPerPageLabel","nextPageLabel","previousPageLabel","getRangeLabel","__","constructor","__extends","MatPaginatorIntl","NgModule","imports","CommonModule","FormsModule","ReactiveFormsModule","MatInputModule","MatFormFieldModule","MatSortModule","MatPaginatorModule","MatTableModule","MatMenuModule","MatIconModule","MatButtonModule","MatTooltipModule","MatProgressSpinnerModule","MatChipsModule","MatRadioModule","MatSlideToggleModule","MatCheckboxModule","MatListModule","MatDividerModule","CdkTableModule","DragDropModule","SdFormModule","SdServiceModule","MatSliderModule","declarations","SdDesktopCell","SdDesktopCellEditor","SdDesktopCellView","SdDesktopCellChildrenView","SdDesktopCommand","SdColumnValuesPipe","SdSelectionActionFilterPipe","SdSelectionDisablePipe","SdSelectionDisableSelectAllPipe","exports","providers","DatePipe","CdkColumnDef","provide","useClass"],"mappings":"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E,CAAAV,EAAAC,MAAAU,EAAAA,uCADxChgB,EAAAA,oBA4GD,kCA1FCigB,EAAAA,SAAQ/nB,KAAA,CAAC,CACRgoB,QAAS,CACPC,EAAAA,aACAC,EAAAA,YACAC,EAAAA,oBACAC,EAAAA,eACAC,EAAAA,mBACAC,EAAAA,cACAC,EAAAA,mBACAC,EAAAA,eACAC,EAAAA,cACAC,EAAAA,cACAC,EAAAA,gBACAC,EAAAA,iBACAC,EAAAA,yBACAC,EAAAA,eACAC,EAAAA,eACAC,EAAAA,qBACAC,EAAAA,kBACAC,EAAAA,cACAC,EAAAA,iBACAC,EAAAA,eACAC,EAAAA,eACAC,EAAAA,aACAC,EAAAA,gBACAC,EAAAA,iBAEFC,aAAc,CACZC,GACAC,GACAC,GACAC,GACAC,GACAxU,GAEAyN,GACAvC,EACAD,EACAngB,EACAggB,EACAC,EACAzU,GACA6X,GACAzb,GACAvC,GACA2f,GAGA5B,GACAjB,GACAI,GACAlC,GACAU,GACAC,GACAE,GACAyI,GACAxI,GACAK,GACAyC,GACAxB,GACAR,GACAH,GACA8H,GACAC,GACAC,GACA1D,GACAI,GACAE,IAEFqD,QAAS,CACP7U,GACAkL,EACAD,EACAngB,EACAigB,EACAD,GAEFgK,UAAW,CACTC,EAAAA,SACApI,EAAAA,YACAqI,EAAAA,aACAvK,GACApU,GACAmU,GACAsG,GACA,CACEmE,QAASzC,EAAAA,iBAAkB0C,SAAUrD","sourcesContent":["import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialCellDef]'\r\n})\r\nexport class SdMaterialCellDefDirective {\r\n @Input() sdMaterialCellDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFilterDef]'\r\n})\r\nexport class SdMaterialFilterDefDirective {\r\n @Input() sdMaterialFilterDef: string;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n defaultShowing: boolean;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFooterDef]'\r\n})\r\nexport class SdMaterialFooterDefDirective {\r\n @Input() sdMaterialFooterDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialEmptyDataDef]'\r\n})\r\nexport class SdMaterialEmptyDataDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialSubInformationDef]'\r\n})\r\nexport class SdMaterialSubInformationDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface ISdGridMaterialConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n };\r\n paginate?: {\r\n pageSize?: number;\r\n pages?: number[]\r\n };\r\n translate?: boolean;\r\n}\r\n\r\nexport const DEFAULT_GRID_MATERIAL_CONFIG: ISdGridMaterialConfiguration = {\r\n paginate: {\r\n pageSize: 50,\r\n pages: [50, 100, 200]\r\n }\r\n};\r\n\r\nexport const GRID_MATERIAL_CONFIG = new InjectionToken<ISdGridMaterialConfiguration>('sd-grid-material.configuration');\r\n","import { Component, ViewChild, Output, EventEmitter, Input } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialExternalFilter } from '../../models/grid-filter.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\n\r\n@Component({\r\n selector: 'sd-popup-filter',\r\n templateUrl: './popup-filter.component.html',\r\n styleUrls: ['./popup-filter.component.scss']\r\n})\r\nexport class SdPopupFilter {\r\n @ViewChild('modal') modal: SdModal;\r\n @Input() externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: any = {};\r\n inlineExternal: {\r\n [key: string]: boolean\r\n } = {};\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n columnFilter: any = {};\r\n inlineColumn: {\r\n [key: string]: boolean\r\n } = {};\r\n\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: any = {};\r\n inlineFilterDef: {\r\n [key: string]: boolean;\r\n } = {};\r\n\r\n @Output() changeFilter = new EventEmitter<{\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }>();\r\n @Output() clearFilter = new EventEmitter();\r\n constructor(\r\n ) {\r\n }\r\n\r\n open = (args: {\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }) => {\r\n const { inlineColumn, columnFilter, inlineExternal, externalFilter, inlineFilterDef, filterDef } = args;\r\n this.inlineColumn = JSON.parse(JSON.stringify(inlineColumn || {}));\r\n this.columnFilter = JSON.parse(JSON.stringify(columnFilter || {}));\r\n this.inlineExternal = JSON.parse(JSON.stringify(inlineExternal || {}));\r\n this.externalFilter = JSON.parse(JSON.stringify(externalFilter || {}));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(inlineFilterDef || {}));\r\n this.filterDef = JSON.parse(JSON.stringify(filterDef || {}));\r\n this.modal.open();\r\n }\r\n\r\n close = () => {\r\n this.modal.close();\r\n }\r\n\r\n onApply = () => {\r\n this.changeFilter.emit({\r\n inlineColumn: this.inlineColumn || {},\r\n columnFilter: this.columnFilter || {},\r\n inlineExternal: this.inlineExternal || {},\r\n externalFilter: this.externalFilter || {},\r\n inlineFilterDef: this.inlineFilterDef || {},\r\n filterDef: this.filterDef || {}\r\n });\r\n this.modal.close();\r\n }\r\n\r\n onClear() {\r\n this.clearFilter.emit();\r\n this.modal.close();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialFilterConfiguration } from '../models/grid-filter.model';\r\n\r\n@Injectable()\r\nexport class SdGridFilterService {\r\n #prefix = '61d22e8e-eee8-4aad-8e1c-044a532fea91';\r\n constructor(private settingService: SdSettingService) {\r\n }\r\n get = async (key: string): Promise<SdGridMaterialFilterConfiguration> => {\r\n if (!key) {\r\n return {\r\n selectedQuickFilter: null,\r\n quickFilters: [],\r\n inlineExternal: {},\r\n inlineColumn: {},\r\n inlineFilterDef: {}\r\n };\r\n }\r\n const { get } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n const configuration = await get();\r\n return {\r\n selectedQuickFilter: configuration?.selectedQuickFilter ?? null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration?.inlineExternal || {},\r\n inlineColumn: configuration?.inlineColumn || {},\r\n inlineFilterDef: configuration?.inlineFilterDef || {},\r\n };\r\n }\r\n\r\n set = async (key: string, configuration: SdGridMaterialFilterConfiguration): Promise<SdGridMaterialFilterConfiguration> => {\r\n configuration = {\r\n selectedQuickFilter: configuration?.selectedQuickFilter || null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration.inlineExternal || {},\r\n inlineColumn: configuration.inlineColumn || {},\r\n inlineFilterDef: configuration.inlineFilterDef || {}\r\n };\r\n if (!key) {\r\n return configuration;\r\n }\r\n const { set } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n key = hash({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n await set(configuration);\r\n return configuration;\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter, ViewChild, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { SdGridMaterialFilterOption, SdGridMaterialExternalFilter } from '../../models/grid-filter.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdGridFilterService } from '../../services/grid-filter.service';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\n\r\n@Component({\r\n selector: 'sd-grid-filter',\r\n templateUrl: './grid-filter.component.html',\r\n styleUrls: ['./grid-filter.component.scss']\r\n})\r\nexport class SdGridFilter implements AfterViewInit, OnDestroy {\r\n @ViewChild(SdPopupFilter) popupFilter: SdPopupFilter;\r\n isVisible = true;\r\n filter: Readonly<SdGridMaterialFilterOption>;\r\n #filterOptionChanges = new Subject<SdGridMaterialFilterOption>();\r\n @Input('filter') set _filter(filter: SdGridMaterialFilterOption) {\r\n this.filter = filter;\r\n this.isVisible = !this.filter?.disabled;\r\n this.#filterOptionChanges.next(this.filter);\r\n }\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: any = {};\r\n inlineFilterDef: {\r\n [key: string]: boolean;\r\n } = {};\r\n\r\n @Output() filterChange = new EventEmitter();\r\n #subscription = new Subscription();\r\n\r\n columnFilter: any = {};\r\n inlineColumn: {\r\n [key: string]: boolean;\r\n } = {};\r\n externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: any = {};\r\n inlineExternal: {\r\n [key: string]: boolean;\r\n } = {};\r\n isMobileOrTablet: boolean;\r\n constructor(\r\n private deviceService: DeviceDetectorService,\r\n private gridFilterService: SdGridFilterService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.#filterOptionChanges.pipe(startWith(this.filter)).subscribe(() => {\r\n if (!this.isVisible) {\r\n this.filterChange.emit();\r\n return;\r\n }\r\n this.externalFilters = this.filter?.externalFilters || [];\r\n this.gridFilterService.get(this.filter?.key).then(configuration => {\r\n this.inlineColumn = configuration.inlineColumn;\r\n this.inlineExternal = configuration.inlineExternal;\r\n this.inlineFilterDef = configuration.inlineFilterDef;\r\n this.#loadDefault();\r\n this.filterChange.emit();\r\n });\r\n }));\r\n }\r\n\r\n #loadDefault = () => {\r\n for (const column of this.columns) {\r\n this.inlineColumn[column.field] = this.inlineColumn[column.field] ?? column?.filter?.defaultShowing;\r\n this.columnFilter[column.field] = this.columnFilter[column.field] ?? column?.filter?.default;\r\n }\r\n for (const externalFilter of this.externalFilters) {\r\n this.inlineExternal[externalFilter.field] = this.inlineExternal[externalFilter.field] ?? externalFilter?.defaultShowing;\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: this.externalFilter[externalFilter.field]?.from ?? externalFilter.default?.from ?? undefined,\r\n to: this.externalFilter[externalFilter.field]?.to ?? externalFilter.default?.to ?? undefined\r\n };\r\n } else {\r\n this.externalFilter[externalFilter.field] = this.externalFilter[externalFilter.field] ?? externalFilter.default;\r\n }\r\n }\r\n for (const filterDef of this.filterDefs) {\r\n this.inlineFilterDef[filterDef.sdMaterialFilterDef] = this.inlineFilterDef[filterDef.sdMaterialFilterDef] ?? filterDef?.defaultShowing;\r\n }\r\n }\r\n\r\n #clearFilter = () => {\r\n this.columnFilter = {};\r\n this.externalFilter = {};\r\n this.filterDef = {};\r\n for (const externalFilter of this.externalFilters) {\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: undefined,\r\n to: undefined\r\n };\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFilter = (item?: SdGridMaterialColumn | SdGridMaterialExternalFilter) => {\r\n this.filterChange.emit();\r\n }\r\n\r\n open = () => {\r\n this.popupFilter.open({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef\r\n });\r\n }\r\n\r\n onChangeFilter = (args: {\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }) => {\r\n const { inlineColumn, columnFilter, inlineExternal, externalFilter, inlineFilterDef, filterDef } = args;\r\n this.inlineColumn = inlineColumn;\r\n this.columnFilter = columnFilter;\r\n this.inlineExternal = inlineExternal;\r\n this.externalFilter = externalFilter;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.filterDef = filterDef;\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn,\r\n inlineExternal,\r\n quickFilters: [],\r\n inlineFilterDef,\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.emit();\r\n }\r\n\r\n onReset = () => {\r\n this.inlineColumn = {};\r\n this.columnFilter = {};\r\n this.inlineExternal = {};\r\n this.externalFilter = {};\r\n this.inlineFilterDef = {};\r\n this.filterDef = {};\r\n this.#loadDefault();\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.columnFilter,\r\n inlineFilterDef: this.inlineFilterDef,\r\n quickFilters: [],\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.emit();\r\n }\r\n\r\n onClearFilter = () => {\r\n this.#clearFilter();\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.columnFilter,\r\n inlineFilterDef: this.inlineFilterDef,\r\n quickFilters: [],\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.emit();\r\n }\r\n\r\n setFilter = (args: {\r\n columnFilter: any,\r\n externalFilter: any,\r\n filterDef: any\r\n }) => {\r\n if (args?.columnFilter) {\r\n this.columnFilter = args.columnFilter;\r\n }\r\n if (args?.externalFilter) {\r\n this.externalFilter = args.externalFilter;\r\n }\r\n if (args?.filterDef) {\r\n this.filterDef = args.filterDef;\r\n }\r\n for (const externalFilter of this.externalFilters) {\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: this.externalFilter[externalFilter.field]?.from ?? undefined,\r\n to: this.externalFilter[externalFilter.field]?.to ?? undefined\r\n };\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, AfterViewInit, ViewChild, Output, EventEmitter, Input, ChangeDetectorRef } from '@angular/core';\r\n\r\nimport * as uuid from 'uuid';\r\n\r\nimport {\r\n SdNotifyService\r\n} from '@sd-angular/core/notify';\r\n\r\nimport {\r\n SdLoadingService\r\n} from '@sd-angular/core/loading';\r\n\r\nimport {\r\n SdTranslateService\r\n} from '@sd-angular/core/translate';\r\nimport hash from 'object-hash';\r\nimport { MatSelectionList } from '@angular/material/list';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdExportFile, SdExportService, SdExportColumn } from '@sd-angular/core/export';\r\nimport { SdGroupExport } from '../../models/grid-export.model';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'sd-popup-export',\r\n templateUrl: './popup-export.component.html',\r\n styleUrls: ['./popup-export.component.scss']\r\n})\r\nexport class SdPopupExport implements OnInit, AfterViewInit {\r\n gridOption: SdGridMaterialOption;\r\n columns: SdExportColumn[] = [];\r\n groups: SdGroupExport[] = [];\r\n templateName: string;\r\n enableCreating = false;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('listGroups') listGroups: MatSelectionList;\r\n\r\n selected: {\r\n [key: string]: boolean\r\n } = {};\r\n files: SdExportFile[] = [];\r\n selectedGroup: SdGroupExport;\r\n\r\n @Output() export = new EventEmitter<{ file: SdExportFile, columns: SdExportColumn[], isCSV?: boolean }>();\r\n form = new FormGroup({});\r\n\r\n @Input('gridOption') set _gridOption(option: SdGridMaterialOption) {\r\n this.gridOption = option;\r\n this.columns = this.#getExportableColumns();\r\n this.groups = this.#getExportableGroups();\r\n }\r\n private get key(): string {\r\n const prefix = '93889e78-f971-4a1d-8c73-fe2321af9233';\r\n if (!this.gridOption?.export?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: this.gridOption?.export?.key\r\n });\r\n }\r\n\r\n #getExportableColumns = (): SdExportColumn[] => {\r\n const columns: SdExportColumn[] = [];\r\n this.gridOption.columns.filter(e => !e.export?.disabled).forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === 'children-col') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return [...columns, ...(this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [])].map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width\r\n }));\r\n }\r\n\r\n #getExportableGroups = () => {\r\n return this.gridOption?.export?.groups?.filter(e => {\r\n const permission = e.permission;\r\n if (typeof (permission) === 'function') {\r\n return permission();\r\n }\r\n return permission;\r\n }) || [];\r\n }\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n open = async () => {\r\n if (!this.key) {\r\n this.exportDefault();\r\n return;\r\n }\r\n if (this.groups.length === 1 && this.gridOption?.export?.hideMyTemplates) {\r\n this.loadFiles(this.groups[0].code);\r\n } else {\r\n this.loadFiles(null);\r\n }\r\n this.selected = {};\r\n this.modal.open();\r\n this.ref.detectChanges();\r\n }\r\n\r\n exportDefault = (isCSV: boolean = false) => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.columns,\r\n isCSV\r\n });\r\n }\r\n\r\n\r\n loadFiles = async (group: string = null) => {\r\n this.selectedGroup = this.groups.find(e => e.code === group);\r\n this.files = await this.exportService.filesInFolder({\r\n key: this.key,\r\n group\r\n });\r\n }\r\n\r\n #initTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.exportService.generateTemplate({\r\n fileName: fileName || this.gridOption?.export?.fileName,\r\n columns: this.columns,\r\n sheets\r\n });\r\n }\r\n\r\n generateTemplate = async () => {\r\n this.loadingService.start();\r\n const result = await this.#initTemplate().finally(this.loadingService.stop);\r\n if (result?.filePath) {\r\n this.exportService.download(result.filePath, `${this.gridOption?.export?.fileName || uuid}.xlsx`);\r\n }\r\n }\r\n\r\n generateAndUploadTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption?.export?.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.exportService.generateUploadTemplate({\r\n key: this.key,\r\n template: {\r\n fileName: fileName || this.gridOption?.export?.fileName,\r\n columns: this.columns.filter(e => this.selected[e.field]),\r\n sheets\r\n },\r\n group: this.selectedGroup?.code\r\n });\r\n }\r\n\r\n onExport = (file: SdExportFile) => {\r\n this.export.emit({\r\n file,\r\n columns: this.columns\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n uploadTemplate = async () => {\r\n const file = await this.exportService.uploadTemplate({\r\n key: this.key,\r\n group: this.selectedGroup?.code,\r\n validator: this.gridOption?.export?.validators\r\n });\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n\r\n removeFile = (file: SdExportFile) => {\r\n this.notifyService.confirm(this.translateService.translate('Remove template')).then(() => {\r\n this.exportService.removeFile({\r\n key: this.key,\r\n fileName: file.fileName,\r\n group: this.selectedGroup?.code || null\r\n });\r\n const idx = this.files.indexOf(file);\r\n this.files.splice(idx, 1);\r\n this.files = [...this.files];\r\n this.ref.detectChanges();\r\n });\r\n }\r\n\r\n createTemplate = async () => {\r\n const { translate } = this.translateService;\r\n if (this.form.invalid) {\r\n this.form.markAllAsTouched();\r\n return;\r\n }\r\n if (!this.columns.some(e => this.selected[e.field])) {\r\n this.notifyService.notify.warning(translate('Please select columns'));\r\n return;\r\n }\r\n this.loadingService.start();\r\n const fileName = this.templateName + '.xlsx';\r\n try {\r\n if (this.gridOption?.export?.validators?.(fileName)) {\r\n this.notifyService.notify.warning(this.gridOption?.export?.validators(fileName));\r\n return;\r\n }\r\n const result = await this.generateAndUploadTemplate(fileName);\r\n if (result?.filePath) {\r\n const file: SdExportFile = {\r\n filePath: result.filePath,\r\n fileName: result.fileName\r\n };\r\n this.onExport(file);\r\n this.templateName = null;\r\n this.enableCreating = false;\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n }\r\n\r\n onChangeGroup = () => {\r\n this.loadFiles(this.listGroups?.selectedOptions?.selected[0]?.value);\r\n }\r\n\r\n validatorTemplateName = (val: string) => {\r\n const { translate } = this.translateService;\r\n const regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/;\r\n if (!val) {\r\n return translate('Please enter your template name');\r\n }\r\n if (val.length > 50) {\r\n return translate('Template name is too long');\r\n }\r\n if (!regex.test(val)) {\r\n return translate('Template name only contains letters, numbers and spaces');\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnConfiguration, SdGridConfiguration, SdGridConfigurationCache, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { GRID_MATERIAL_CONFIG, ISdGridMaterialConfiguration } from '../models/grid-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdGridConfigurationService {\r\n #COLUMNS = {\r\n EDITOR: 'sdEditor',\r\n SUBINFORMATION: 'sdSubInformationAction',\r\n COMMAND: 'sdCommand',\r\n SELECTION: 'sdSelection'\r\n };\r\n #cache: {\r\n [key: string]: SdGridConfigurationCache\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(GRID_MATERIAL_CONFIG) @Optional() public gridMaterialConfiguration: ISdGridMaterialConfiguration) {\r\n }\r\n\r\n init = (key: string, gridOption: SdGridMaterialOption) => {\r\n if (!this.#cache[key]) {\r\n const subject = new Subject<SdGridConfiguration>();\r\n this.#cache[key] = {\r\n load: this.#load(gridOption, subject),\r\n get: this.#get(gridOption),\r\n set: (configuration: SdGridConfiguration) => {\r\n configuration = this.#set(gridOption, configuration);\r\n subject.next({ ...configuration });\r\n return configuration;\r\n },\r\n remove: () => {\r\n this.#remove(gridOption)();\r\n subject.next(this.#default(gridOption));\r\n },\r\n observer: subject\r\n };\r\n }\r\n return this.#cache[key];\r\n }\r\n\r\n #getKey = (gridOption: SdGridMaterialOption) => {\r\n const prefix = 'c9e94836-6ace-4aeb-b148-4f0be63589ee';\r\n if (!gridOption?.config?.key && !gridOption?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: gridOption?.config?.key || !gridOption?.key\r\n });\r\n }\r\n\r\n #default = (gridOption: SdGridMaterialOption): SdGridConfiguration => {\r\n const columns: SdColumnConfiguration[] = gridOption?.columns?.filter(e => !e.hidden).map(e => ({\r\n origin: {\r\n field: e.field,\r\n title: e.title,\r\n width: e.width,\r\n invisible: e.invisible\r\n },\r\n invisible: e.invisible,\r\n fixed: false\r\n })) || [];\r\n return {\r\n columns\r\n };\r\n }\r\n\r\n #load = (gridOption: SdGridMaterialOption, subject: Subject<SdGridConfiguration>) => {\r\n return async () => {\r\n const get = this.#get(gridOption);\r\n const configuration = await get();\r\n subject.next({ ...configuration });\r\n };\r\n }\r\n\r\n #get = (gridOption: SdGridMaterialOption) => {\r\n return async () => {\r\n const key = this.#getKey(gridOption);\r\n if (!key) {\r\n return this.#default(gridOption);\r\n }\r\n const { columns, config } = gridOption;\r\n const { get, remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: config?.storage,\r\n args: config?.args\r\n });\r\n const configuration: SdGridConfiguration = await get().catch(() => undefined);\r\n if (!configuration?.columns) {\r\n remove().catch(console.error);\r\n return this.#default(gridOption);\r\n }\r\n configuration.columns = configuration.columns\r\n .filter(column => column.isGeneratedColumn || columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // Thêm những column mới vào storage nếu có\r\n columns.forEach(column => {\r\n const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n if (!col) {\r\n configuration.columns.push({\r\n origin: {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible,\r\n },\r\n invisible: column.invisible,\r\n fixed: false\r\n });\r\n } else {\r\n col.origin = {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible\r\n };\r\n }\r\n });\r\n return configuration;\r\n };\r\n }\r\n\r\n #set = (gridOption: SdGridMaterialOption, configuration: SdGridConfiguration) => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n const { set } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args\r\n });\r\n set(configuration);\r\n }\r\n return JSON.parse(JSON.stringify(configuration));\r\n }\r\n\r\n #remove = (gridOption: SdGridMaterialOption) => {\r\n return () => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n const { remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args\r\n });\r\n remove();\r\n }\r\n };\r\n }\r\n\r\n // get = async (gridOption: SdGridMaterialOption): Promise<SdGridConfiguration> => {\r\n // if (!gridOption?.key) {\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // const { key, columns } = gridOption;\r\n // const configuration: SdGridConfiguration = await this.settingService.get(this.#getKey(key)).catch(() => undefined);\r\n // if (!configuration?.columns) {\r\n // this.settingService.remove(this.#getKey(key)).catch(console.error);\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // configuration.columns = configuration.columns\r\n // .filter(column => columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // // Thêm những column mới vào storage nếu có\r\n // columns.forEach(column => {\r\n // const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n // if (!col) {\r\n // configuration.columns.push({\r\n // origin: {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible,\r\n // },\r\n // invisible: column.invisible,\r\n // fixed: false\r\n // });\r\n // } else {\r\n // col.origin = {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible\r\n // };\r\n // }\r\n // });\r\n // return configuration;\r\n // }\r\n\r\n // set = async (key: string, configuration: SdGridConfiguration): Promise<SdGridConfiguration> => {\r\n // if (key) {\r\n // this.settingService.set(this.#getKey(key), configuration);\r\n // }\r\n // return configuration;\r\n // }\r\n\r\n // remove = (key: string) => {\r\n // if (key) {\r\n // this.settingService.remove(this.#getKey(key));\r\n // }\r\n // }\r\n\r\n generateConfigurationResult = (\r\n configuration: SdGridConfiguration,\r\n gridOption: SdGridMaterialOption,\r\n sdSubInformation: SdMaterialSubInformationDefDirective) => {\r\n const result: SdGridConfigurationResult = {\r\n column: {},\r\n fixedColumn: {},\r\n firstColumns: [],\r\n secondColumns: [],\r\n firstHeaders: [],\r\n secondHeaders: [],\r\n displayedColumns: [],\r\n displayedFooters: [],\r\n multipleHeader: false\r\n };\r\n const { selection, commands, editor } = gridOption || {};\r\n if (selection?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (editor?.addable || (editor?.type === 'inline' && editor?.removable) || (editor?.type === 'focus' && editor?.editable) || (editor?.type === 'popup' && editor?.editable)) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITOR);\r\n result.displayedColumns.push(this.#COLUMNS.EDITOR);\r\n }\r\n if (commands?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.COMMAND);\r\n result.displayedColumns.push(this.#COLUMNS.COMMAND);\r\n }\r\n configuration?.columns?.filter(col => !col.invisible).forEach(col => {\r\n if (col.isGeneratedColumn) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n const generatedColumn: SdGridMaterialColumn = {\r\n type: 'children',\r\n field: col.origin.field,\r\n title: col.origin.title,\r\n children: []\r\n };\r\n for (const subColumn of gridOption?.columns.filter(e1 => col.generatedColumns.includes(e1.field))) {\r\n if (subColumn.type === 'children' || subColumn.type === 'children-col') {\r\n for (const childColumn of subColumn.children) {\r\n generatedColumn.children.push({\r\n ...childColumn,\r\n colSpan: 2\r\n });\r\n }\r\n } else {\r\n generatedColumn.children.push({\r\n ...subColumn,\r\n colSpan: 2\r\n });\r\n }\r\n\r\n }\r\n result.firstColumns.push({\r\n ...generatedColumn,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n result.displayedColumns.push(col.origin.field);\r\n return;\r\n }\r\n const column = gridOption?.columns.find(e => e.field === col.origin.field);\r\n if (column) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n result.firstColumns.push({\r\n ...column,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n if (column.type === 'children-col') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n } else {\r\n result.displayedColumns.push(col.origin.field);\r\n }\r\n }\r\n });\r\n if (sdSubInformation?.templateRef) {\r\n result.firstHeaders.push(this.#COLUMNS.SUBINFORMATION);\r\n result.displayedColumns.push(this.#COLUMNS.SUBINFORMATION);\r\n }\r\n result.multipleHeader = result.secondHeaders.length > 0;\r\n // Sub infomation không thể có footer\r\n result.displayedFooters = result.displayedColumns.filter(val => val !== this.#COLUMNS.SUBINFORMATION);\r\n return result;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\n\r\n@Injectable()\r\nexport class SdGridService {\r\n #prefix = 'a1e67660-8aa2-4c11-b02d-71a32188719f';\r\n #cache: {\r\n [key: string]: {\r\n values: any[],\r\n obj: {\r\n [key: string]: any\r\n }\r\n }\r\n } = {};\r\n constructor(private utilityService: SdUtilityService) {\r\n }\r\n loadValues = async (column: SdGridMaterialColumn, key: string): Promise<{ values: any[], obj: { [key: string]: any } }> => {\r\n if (column.type !== 'values' || !column.option?.items || !column.option?.valueField || !column.option?.displayField) {\r\n return {\r\n values: [],\r\n obj: {}\r\n };\r\n }\r\n const hashKey = hash({\r\n prefix: this.#prefix,\r\n field: column.field,\r\n key,\r\n });\r\n if (!this.#cache[hashKey]) {\r\n let items: any[] = [];\r\n if (typeof (column.option?.items) === 'function') {\r\n items = await column.option.items();\r\n } else {\r\n items = column.option.items;\r\n }\r\n this.#cache[hashKey] = {\r\n values: items,\r\n obj: this.utilityService.arrayToObject(items, column.option.valueField)\r\n };\r\n }\r\n return this.#cache[hashKey];\r\n }\r\n\r\n getValues = (column: SdGridMaterialColumn, key: string) => {\r\n const hashKey = hash({\r\n prefix: this.#prefix,\r\n field: column.field,\r\n key,\r\n });\r\n return this.#cache[hashKey] || {\r\n values: [],\r\n obj: {}\r\n };\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n Optional,\r\n Inject,\r\n ChangeDetectorRef,\r\n ContentChildren,\r\n QueryList,\r\n OnInit,\r\n OnDestroy,\r\n EventEmitter,\r\n ContentChild\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport * as uuid from 'uuid';\r\nimport {\r\n SdGridMaterialFilterRequest\r\n} from './models/grid-filter.model';\r\nimport {\r\n SdGridMaterialOption\r\n} from './models/grid-option.model';\r\nimport {\r\n GRID_MATERIAL_CONFIG,\r\n DEFAULT_GRID_MATERIAL_CONFIG,\r\n ISdGridMaterialConfiguration\r\n} from './models/grid-configuration.model';\r\nimport { Subscription, isObservable, Observable } from 'rxjs';\r\nimport * as hash from 'object-hash';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdGridMaterialColumn } from './models/grid-column.model';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { SdGridFilter } from './components/grid-filter/grid-filter.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';\r\nimport { SdGridConfiguration } from './models/grid-config.model';\r\nimport { SdGridConfigurationService } from './services/grid-configuration.service';\r\nimport { SdGridMaterialExportColumn } from './models/grid-export.model';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdGridService } from './services/grid.service';\r\nimport { SdQuickAction } from '@sd-angular/core/quick-action';\r\nimport { SdGridMaterialItem, SdItem } from './models/grid.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-material',\r\n templateUrl: './grid-material.component.html',\r\n styleUrls: ['./grid-material.component.scss'],\r\n animations: [\r\n trigger('detailExpand', [\r\n state('collapsed', style({ height: '0', minHeight: '0', visibility: 'hidden' })),\r\n state('expanded', style({ height: '*', visibility: 'visible' })),\r\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\r\n ]),\r\n ],\r\n})\r\nexport class SdGridMaterial<T = any> implements OnInit, AfterViewInit, OnDestroy {\r\n key = uuid.v4();\r\n gridConfigurationObserver: Observable<SdGridConfiguration>;\r\n gridFilter: SdGridFilter;\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\r\n @ViewChild(SdGridFilter) set _gridFilter(gridFilter: SdGridFilter) {\r\n if (gridFilter && this.gridFilter !== gridFilter) {\r\n this.gridFilter = gridFilter;\r\n this.#subscription.add(gridFilter.filterChange.pipe(\r\n debounceTime(200),\r\n map(() => {\r\n this.#paginator.pageIndex = 0;\r\n return this.#getFilter();\r\n }),\r\n switchMap(this.#load)\r\n ).subscribe(this.#render));\r\n }\r\n }\r\n\r\n @Input() set option(option: SdGridMaterialOption) {\r\n if (option) {\r\n option = this.#initConfiguration(option);\r\n this.gridOption = option;\r\n this.#optionChanges.emit();\r\n option?.columns?.forEach(col => {\r\n if (col.filter?.default) {\r\n this.columnFilter[col.field] = col.filter.default;\r\n }\r\n });\r\n const configuration = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.gridConfigurationObserver = configuration.observer;\r\n configuration.load();\r\n }\r\n }\r\n\r\n gridOption: SdGridMaterialOption;\r\n localItems: any[] = [];\r\n items: SdGridMaterialItem[] = [];\r\n selectedItems: T[] = [];\r\n total: number;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n // Paginate\r\n isHiddenPaginator = false;\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(paginator.page.pipe(\r\n debounceTime(200),\r\n map(this.#getFilter),\r\n switchMap(this.#load)\r\n ).subscribe(this.#render));\r\n }\r\n }\r\n\r\n // Sorting\r\n #sort: MatSort;\r\n @ViewChild(MatSort) set sort(sort: MatSort) {\r\n if (sort && this.#sort !== sort) {\r\n this.#sort = sort;\r\n this.#subscription.add(sort.sortChange.pipe(\r\n debounceTime(200),\r\n map(this.#getFilter),\r\n switchMap(this.#load)\r\n ).subscribe(this.#render));\r\n }\r\n }\r\n\r\n // Export\r\n @ViewChild(SdPopupExport) sdPopupExport: SdPopupExport;\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective) sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Empty Data\r\n @ContentChild(SdMaterialEmptyDataDefDirective) sdEmptyData: SdMaterialEmptyDataDefDirective;\r\n\r\n // Cell Def\r\n @ContentChildren(SdMaterialCellDefDirective) sdCellDefs = new QueryList<SdMaterialCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdMaterialCellDefDirective\r\n } = {};\r\n\r\n // Footer Def\r\n @ContentChildren(SdMaterialFooterDefDirective) sdFooterDefs = new QueryList<SdMaterialFooterDefDirective>();\r\n footerDef: {\r\n [column: string]: SdMaterialFooterDefDirective\r\n } = {};\r\n hasFooter = false;\r\n\r\n // Filter Def\r\n @ContentChildren(SdMaterialFilterDefDirective) sdFilterDefs = new QueryList<SdMaterialFilterDefDirective>();\r\n filterDefs: SdMaterialFilterDefDirective[] = [];\r\n\r\n // Filter\r\n columnFilter: {\r\n [key: string]: any\r\n } = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #optionChanges = new EventEmitter();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(GRID_MATERIAL_CONFIG) @Optional() public configuration: ISdGridMaterialConfiguration,\r\n private gridConfigurationService: SdGridConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridService: SdGridService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.sdCellDefs.changes.pipe(startWith([])).subscribe(this.#initCellDef));\r\n this.#subscription.add(this.sdFooterDefs.changes.pipe(startWith([])).subscribe(this.#initFooterDef));\r\n this.#subscription.add(this.sdFilterDefs.changes.pipe(startWith([])).subscribe(this.#initFilterDef));\r\n this.#subscription.add(this.#optionChanges.pipe(\r\n startWith({}),\r\n debounceTime(200),\r\n map(this.#getFilter),\r\n switchMap(this.#load)\r\n ).subscribe(this.#render));\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #initCellDef = () => {\r\n this.cellDef = {};\r\n for (const cellDef of this.sdCellDefs) {\r\n if (cellDef.sdMaterialCellDef) {\r\n this.cellDef[cellDef.sdMaterialCellDef] = cellDef;\r\n }\r\n }\r\n }\r\n\r\n #initFilterDef = () => {\r\n this.filterDefs = [];\r\n for (const filterDef of this.sdFilterDefs) {\r\n this.filterDefs.push(filterDef);\r\n }\r\n }\r\n\r\n #initFooterDef = () => {\r\n this.footerDef = {};\r\n this.hasFooter = false;\r\n for (const footerDef of this.sdFooterDefs) {\r\n if (footerDef.sdMaterialFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdMaterialFooterDef] = footerDef;\r\n }\r\n }\r\n }\r\n\r\n #filterExportInfo = (pageNumber: number, pageSize: number): SdGridMaterialFilterRequest => {\r\n return {\r\n rawColumnFilter: (this.gridOption?.filter?.inlineColumn ? this.columnFilter : this.gridFilter?.columnFilter) || {},\r\n rawExternalFilter: this.gridFilter?.externalFilter || {},\r\n rawFilterDef: this.gridFilter?.filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber,\r\n pageSize,\r\n isExported: true\r\n };\r\n }\r\n\r\n #initConfiguration = (option: SdGridMaterialOption) => {\r\n option.paginate = {\r\n hidden: option?.paginate?.hidden,\r\n pageSize: option?.paginate?.pageSize ?? this.configuration?.paginate?.pageSize ?? DEFAULT_GRID_MATERIAL_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.configuration?.paginate?.pages ?? DEFAULT_GRID_MATERIAL_CONFIG.paginate?.pages,\r\n showFirstLastButtons: option?.paginate?.showFirstLastButtons ?? false\r\n };\r\n return option;\r\n }\r\n\r\n #filterLocal = (localItems: any[], filterInfo: SdGridMaterialFilterRequest) => {\r\n const { columns } = this.gridOption;\r\n const items = localItems.filter(item => {\r\n for (const column of columns) {\r\n const filterValue: string = (filterInfo.rawColumnFilter[column.field] || '').toString().trim().toLowerCase();\r\n const columnValue: string = (item[column.field] || '').toString().trim().toLowerCase();\r\n if (filterValue) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n if (column.type === 'string') {\r\n if (columnValue.indexOf(filterValue) === -1) {\r\n return false;\r\n }\r\n } else if (column.type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (column.type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (column.type === 'date' || column.type === 'datetime') {\r\n const date = Date.toFormat(filterValue, 'MM/yyyy/dd');\r\n const fromDate = new Date(date);\r\n const toDate = new Date(date);\r\n toDate.setDate(toDate.getDate() + 1);\r\n if (new Date(columnValue).getTime() < fromDate.getTime() || new Date(columnValue).getTime() >= toDate.getTime()) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (filterInfo.orderBy && filterInfo.orderDirection) {\r\n const column = columns.find(e => e.field === filterInfo.orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((current, next) => {\r\n if (type === 'number') {\r\n return (current[field] || 0) - (next[field] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(current[field] || '').getTime();\r\n const d2 = new Date(current[field] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (current[field] || '').toString();\r\n const s2 = (next[field] || '').toString();\r\n if (s1 > s2) {\r\n return 1;\r\n }\r\n if (s1 < s2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n if (filterInfo.orderDirection === 'desc') {\r\n items.reverse();\r\n }\r\n }\r\n }\r\n return {\r\n items: items.filter((item, index) => {\r\n const pageIndex = this.#paginator?.pageIndex || 0;\r\n const pageSize = this.#paginator?.pageSize || this.gridOption?.paginate?.pageSize || 50;\r\n return index >= pageIndex * pageSize\r\n && index < (pageIndex + 1) * pageSize;\r\n }),\r\n total: items.length\r\n };\r\n }\r\n\r\n #getFilter = (): SdGridMaterialFilterRequest => ({\r\n rawColumnFilter: (this.gridOption?.filter?.inlineColumn ? this.columnFilter : this.gridFilter?.columnFilter) || {},\r\n rawExternalFilter: this.gridFilter?.externalFilter || {},\r\n rawFilterDef: this.gridFilter?.filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber: this.#paginator?.pageIndex || 0,\r\n pageSize: this.#paginator?.pageSize || this.gridOption?.paginate?.pageSize || 50\r\n })\r\n\r\n #load = async (filterReq: SdGridMaterialFilterRequest): Promise<{ items: any[], total: number }> => {\r\n this.isLoading = true;\r\n try {\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterReq);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n this.localItems = await results;\r\n } else {\r\n this.localItems = results;\r\n }\r\n return this.#filterLocal(this.localItems, filterReq);\r\n }\r\n } catch (error) {\r\n this.notifyService.handle.error(error);\r\n } finally {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n #render = async (args: { items: any[], total: number }) => {\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n // this.isHiddenPaginator = this.filterInfo.pageNumber === 0 && this.total <= this.filterInfo.pageSize;\r\n this.items.forEach(item => item.originItem = { ...item });\r\n await this.gridOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n\r\n reload = async () => {\r\n const data = await this.#load(this.#getFilter());\r\n this.#render(data);\r\n }\r\n\r\n #exportedItems = async (pageNumber: number = 0, pageSize: number = 10000) => {\r\n if (this.gridOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n if (Array.isArray(result)) {\r\n return result;\r\n }\r\n if (isObservable<any[]>(result)) {\r\n result = result.toPromise();\r\n }\r\n if (isObservable<{ items: any[], total: number }>(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n // if (exportedItems instanceof Promise) {\r\n // return await exportedItems;\r\n // } else {\r\n // return exportedItems;\r\n // }\r\n } else {\r\n const filterInfo = this.#filterExportInfo(pageNumber, pageSize);\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterInfo);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof (this.gridOption.items) === 'function') {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n exportedItems = await results;\r\n } else {\r\n exportedItems = results;\r\n }\r\n } else {\r\n exportedItems = this.gridOption.items;\r\n }\r\n return this.#filterLocal(exportedItems, filterInfo);\r\n }\r\n }\r\n }\r\n\r\n drop(event: CdkDragDrop<string[]>, columns: string[]) {\r\n moveItemInArray(columns, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n #allColumns = (): SdGridMaterialColumn[] => {\r\n const columns: SdGridMaterialColumn[] = [];\r\n this.gridOption.columns.filter(e => !e.export?.disabled).forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === 'children-col') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns;\r\n }\r\n\r\n #allExportedColumns = (): SdGridMaterialExportColumn[] => {\r\n return this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n }\r\n\r\n #onExport = async (args: { file: SdExportFile, columns: SdExportColumn[], isCSV: boolean }) => {\r\n try {\r\n const { file, columns, isCSV } = args;\r\n const pageSize = this.gridOption?.export?.maxItemsPerRequest || 1000;\r\n let total = this.total;\r\n let pageNumber = 0;\r\n let exportItems = [];\r\n this.isExporting = true;\r\n const items: any[] = [];\r\n while (pageNumber * pageSize < total) {\r\n const res = await this.#exportedItems(pageNumber, pageSize);\r\n if ('items' in res) {\r\n exportItems = res.items;\r\n total = res.total;\r\n } else {\r\n exportItems = res;\r\n // total = exportItems.length;\r\n }\r\n if (this.gridOption.export?.mapping) {\r\n const results = this.gridOption.export.mapping(exportItems);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n\r\n const totalPage = total / pageSize;\r\n const percent = Math.round(pageNumber * 100.0 / totalPage);\r\n this.exportTitle = `Exporting...${percent}%`;\r\n const allColumns = this.#allColumns();\r\n const allExportedColumns = this.#allExportedColumns();\r\n for (const item of exportItems) {\r\n const obj: any = {};\r\n const handle = (exportColumn: SdExportColumn) => {\r\n obj[exportColumn.field] = item[exportColumn.field];\r\n const column = allColumns.find(e => e.field === exportColumn.field);\r\n const exportedColumn = allExportedColumns.find(e => e.field === exportColumn.field);\r\n if (exportedColumn?.transform) {\r\n obj[exportedColumn.field] = exportedColumn.transform(item[exportedColumn.field], item);\r\n return;\r\n }\r\n if (!column) {\r\n return;\r\n }\r\n if (column.type === 'children' || column.type === 'children-col') {\r\n column?.children.forEach(childColumn => handle(childColumn));\r\n return;\r\n }\r\n if (!columns.some(e => e.field === column.field)) {\r\n return;\r\n }\r\n if (column.transform) {\r\n obj[column.field] = column.transform(item[column.field], item);\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.option?.displayOnTrue || 'True';\r\n } else {\r\n obj[column.field] = column.option?.displayOnFalse || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n // Nếu là date thì convert theo đúng format\r\n const date = new Date(item[column.field]);\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy');\r\n } else if (column.type === 'datetime') {\r\n // Nếu là datetime thì convert theo đúng format\r\n const date = new Date(item[column.field]);\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy HH:mm:ss');\r\n } else if (column.type === 'time') {\r\n // Nếu là time thì convert theo đúng format\r\n const date = new Date(item[column.field]);\r\n obj[column.field] = Date.toFormat(date, 'HH:mm:ss');\r\n } else if (column.type === 'values') {\r\n // Nếu là values thì lấy giá trị của value được chọn\r\n const data = this.gridService.getValues(column, this.key);\r\n if (data.obj[column.option.displayField] !== null && data.obj[column.option.displayField] !== undefined) {\r\n obj[column.field] = data.obj[column.option.displayField];\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n };\r\n // this.gridOption.columns.forEach(handle);\r\n columns.forEach(handle);\r\n items.push(obj);\r\n }\r\n pageNumber++;\r\n }\r\n if (!file?.filePath) {\r\n if (isCSV) {\r\n await this.exportService.exportCSV({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName\r\n });\r\n return;\r\n }\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields\r\n });\r\n }\r\n }\r\n }\r\n }\r\n await this.exportService.export({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName,\r\n sheets\r\n });\r\n return;\r\n }\r\n await this.exportService.exportByTemplate({\r\n filePath: file.filePath,\r\n fileName: file.fileName,\r\n columns,\r\n items\r\n });\r\n } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n onExport = async (args: { file: SdExportFile, columns: SdExportColumn[], isCSV: boolean }) => {\r\n const { translate } = this.translateService;\r\n if (!args.isCSV && this.gridOption.export.max && this.total > this.gridOption.export.max) {\r\n this.notifyService.confirm(translate(`Total rows reach limit, do you want to export CSV`)).then(() => {\r\n args.isCSV = true;\r\n this.#onExport(args);\r\n });\r\n return;\r\n }\r\n this.#onExport(args);\r\n }\r\n\r\n onFilterChange = () => {\r\n this.#paginator.pageIndex = 0;\r\n this.reload();\r\n }\r\n\r\n onExpand = async (rowData: SdGridMaterialItem) => {\r\n if (rowData.isExpanding) {\r\n return;\r\n }\r\n if (rowData.isExpanded) {\r\n rowData.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.subInformation?.onExpand(rowData);\r\n if (!this.gridOption.subInformation?.multiple) {\r\n this.items.forEach(item => item.isExpanding = item.isExpanded = false);\r\n }\r\n if (data instanceof Promise) {\r\n rowData.isExpanding = true;\r\n data.then(res => {\r\n rowData.expandDetail = res;\r\n rowData.isExpanded = true;\r\n }).finally(() => rowData.isExpanding = false);\r\n } else {\r\n rowData.expandDetail = data;\r\n rowData.isExpanded = true;\r\n }\r\n }\r\n\r\n onSelect = (rowData: SdGridMaterialItem) => {\r\n if (this.gridOption.selection?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => e.isSelected = false);\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selection?.onSelect?.(rowData, this.items.filter(e => e.isSelected));\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => e.isSelected = this.isSelectAll);\r\n this.gridOption.selection?.onSelectAll?.(this.items.filter(e => e.isSelected));\r\n this.#updateSelectedItems();\r\n }\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedItems = this.items.filter(item => item.isSelected)\r\n .map(item => {\r\n const {\r\n isSelected,\r\n isExpanded,\r\n isExpanding,\r\n expandDetail,\r\n ...result\r\n } = item;\r\n return result;\r\n }) as T[];\r\n this.ref.detectChanges();\r\n }\r\n\r\n clearFilter = () => {\r\n this.gridFilter?.onClearFilter();\r\n }\r\n\r\n setFilter = (args: {\r\n columnFilter: any,\r\n externalFilter: any,\r\n filterDef: any\r\n }) => {\r\n this.gridFilter?.setFilter(args);\r\n }\r\n\r\n onCreate = () => {\r\n const { type, editor, columns } = this.gridOption;\r\n if (!editor?.addable) {\r\n return;\r\n }\r\n const item: SdGridMaterialItem = {};\r\n // Gán giá trị mặc định\r\n columns.forEach(column => {\r\n if (column.type === 'values') {\r\n item[column.field] = '';\r\n } else if (column.type === 'bool') {\r\n item[column.field] = true;\r\n } else if (column.type === 'number') {\r\n item[column.field] = null;\r\n }\r\n });\r\n editor.onAdd?.(item);\r\n // Đưa item lên dòng đầu tiên nếu type khác popup\r\n if (editor.type !== 'popup') {\r\n if (type === 'local') {\r\n this.localItems = [item, ...this.items];\r\n }\r\n this.items = [item, ...this.items];\r\n }\r\n item.editorStatus = 'create';\r\n item.editorHandlerRow = {\r\n temporary: { ...item }\r\n };\r\n }\r\n onUpdate = (item: SdItem) => {\r\n const { editor } = this.gridOption;\r\n item.editorStatus = 'update';\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n temporary: { ...item }\r\n };\r\n // this.generateEditorHanlder(item);\r\n if (editor.type === 'popup') {\r\n // Xử lý case popup\r\n // this.sdGridPopupEditor.open(item, columns, isModified);\r\n }\r\n this.ref.detectChanges();\r\n }\r\n onSave = async (item: SdItem) => {\r\n if(item.editorHandlerRow.saving) {\r\n return;\r\n }\r\n const { editor } = this.gridOption;\r\n try {\r\n item.editorHandlerRow.saving = true;\r\n if (editor.validate) {\r\n const result = editor.validate(item);\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n throw message;\r\n }\r\n } else {\r\n if (result) {\r\n throw result;\r\n }\r\n }\r\n }\r\n if (editor.onSave) {\r\n const result = editor.onSave(item);\r\n if (result instanceof Promise) {\r\n await result;\r\n }\r\n }\r\n\r\n if (item.editorStatus === 'create' && editor.type === 'popup') {\r\n if (this.gridOption.type === 'local') {\r\n this.items.splice(0, 0, item);\r\n }\r\n // this.viewItems.splice(0, 0, item);\r\n }\r\n\r\n item.editorStatus = undefined;\r\n // this.generateEditorHanlder(item);\r\n } catch (err) {\r\n this.notifyService.notify.warning(err);\r\n } finally {\r\n item.editorHandlerRow.saving = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n onCancel = (item: SdItem) => {\r\n const { editor } = this.gridOption;\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.localItems.indexOf(item);\r\n this.localItems.splice(idx2, 1);\r\n this.localItems = [...this.localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n if (editor.type === 'focus') {\r\n if (item.editorStatus === 'create') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.localItems.indexOf(item);\r\n this.localItems.splice(idx2, 1);\r\n this.localItems = [...this.localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n } else {\r\n Object.assign(item, item.editorHandlerRow.temporary);\r\n }\r\n }\r\n item.editorStatus = undefined;\r\n this.ref.detectChanges();\r\n }\r\n\r\n onRemove = (item: SdItem) => {\r\n const { editor } = this.gridOption;\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.localItems.indexOf(item);\r\n this.localItems.splice(idx2, 1);\r\n this.localItems = [...this.localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n }\r\n\r\n get editedItems(): (T & { editorErrorMessage: string })[] {\r\n return this.items.filter(item => {\r\n if (!item.originItem) {\r\n return true;\r\n }\r\n if (Object.keys(item.originItem).some(key => item.originItem[key] !== item[key])) {\r\n return true;\r\n }\r\n return false;\r\n }).map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n ...result } = item;\r\n return {\r\n ...result,\r\n editorErrorMessage: editorHandlerRow?.errorMessage\r\n } as any;\r\n });\r\n }\r\n\r\n get gridItems(): T[] {\r\n return this.items.map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n ...result } = item;\r\n return result as T;\r\n });\r\n }\r\n reloadItem = (item: SdGridMaterialItem) => {\r\n item.sdId = hash(item);\r\n }\r\n detectChanges = () => this.ref.detectChanges();\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand, SdGridMaterialCommandNormal } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: any, commands: SdGridMaterialCommand[]): Promise<SdGridMaterialCommand[]> {\r\n const results: SdGridMaterialCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n let flag = false;\r\n const { hidden } = command;\r\n if (hidden === undefined) {\r\n flag = true;\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n flag = true;\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n flag = true;\r\n }\r\n } else {\r\n if (!isHidden) {\r\n flag = true;\r\n }\r\n }\r\n }\r\n if (flag) {\r\n if ('children' in command) {\r\n const children: SdGridMaterialCommandNormal[] = [];\r\n for (const childCommand of command.children) {\r\n const { hidden } = childCommand;\r\n if (hidden === undefined) {\r\n children.push(childCommand);\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n if (!isHidden) {\r\n children.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...command, children });\r\n }\r\n } else {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandDisable'\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: any, command: SdGridMaterialCommand): boolean {\r\n if (!command?.disabled) {\r\n return false;\r\n }\r\n if (typeof (command.disabled) === 'boolean') {\r\n return command.disabled;\r\n }\r\n return command.disabled(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, item: any): string {\r\n if (!command?.icon) {\r\n return '';\r\n }\r\n if (typeof (command.icon) === 'string') {\r\n return command.icon;\r\n }\r\n return command.icon(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, item: any): string {\r\n if (!command?.title) {\r\n return '';\r\n }\r\n if (typeof (command.title) === 'string') {\r\n return command.title;\r\n }\r\n return command.title(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridService } from '../services/grid.service';\r\n@Pipe({\r\n name: 'columnValues'\r\n})\r\nexport class SdColumnValuesPipe implements PipeTransform {\r\n constructor(private gridService: SdGridService) { }\r\n transform = async (value: any, column: SdGridMaterialColumn, key: string): Promise<any> => {\r\n const data = await this.gridService.loadValues(column, key);\r\n return data.obj[value] ?? value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnHtmlTemplate'\r\n})\r\nexport class SdColumnHtmlTemplatePipe implements PipeTransform {\r\n private isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): string {\r\n if (typeof (column?.htmlTemplate) !== 'function') {\r\n return value;\r\n }\r\n return column?.htmlTemplate(value, rowData, this.isMobileOrTablet);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-view',\r\n templateUrl: './desktop-cell-view.component.html',\r\n styleUrls: ['./desktop-cell-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellView {\r\n @Input() sdId: string;\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n}\r\n","import { DecimalPipe } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnTransform'\r\n})\r\nexport class SdColumnTransformPipe implements PipeTransform {\r\n constructor(private decimalPipe: DecimalPipe) { }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): string {\r\n if (column?.transform) {\r\n return column.transform(value, rowData);\r\n }\r\n if (column.type === 'number' && Number.isNumber(value)) {\r\n return Number.toVNCurrency(value); // this.decimalPipe.transform(value, '1.0-2');\r\n }\r\n if (column.type === 'bool') {\r\n return value === true ? (column.option?.displayOnTrue || 'True') : (column.option?.displayOnFalse || 'False');\r\n }\r\n return value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialExternalFilter } from '../models/grid-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdGridMaterialExternalFilter[], field?: string): SdGridMaterialExternalFilter[] {\r\n const results: SdGridMaterialExternalFilter[] = [];\r\n if (!externalFilters) {\r\n return results;\r\n }\r\n for (const filter of externalFilters) {\r\n results.push(filter);\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdGridMaterialColumn[], field?: string): SdGridMaterialColumn[] {\r\n const results: SdGridMaterialColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\r\n if (column.type === 'image') {\r\n continue;\r\n }\r\n if (column.type === 'children') {\r\n for (const columnChildren of column?.children) {\r\n if (!columnChildren.filter?.disabled) {\r\n results.push(columnChildren);\r\n }\r\n }\r\n continue;\r\n }\r\n if (!column.filter?.disabled) {\r\n results.push(column);\r\n }\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { SdGridMaterialColumnChildren } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-children-view',\r\n templateUrl: './desktop-cell-children-view.component.html',\r\n styleUrls: ['./desktop-cell-children-view.component.scss']\r\n})\r\nexport class SdDesktopCellChildrenView {\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumnChildren;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n\r\n@Pipe({\r\n name: 'columnChildrenFilter'\r\n})\r\nexport class SdColumnChildrenFilterPipe implements PipeTransform {\r\n #isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.#isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(columns: SdGridMaterialColumn[], item: any): SdGridMaterialColumn[] {\r\n return columns.filter(column => {\r\n const value = item?.[column.field];\r\n const transformValue = column.transform?.(item[column.field], item);\r\n const templateValue = column.htmlTemplate?.(item[column.field], item, this.#isMobileOrTablet);\r\n return (value !== undefined && value !== null && value !== '')\r\n || (transformValue !== undefined && transformValue !== null && transformValue !== '')\r\n || (templateValue !== undefined && templateValue !== null && templateValue !== '');\r\n });\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialChildColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnTitle'\r\n})\r\nexport class SdColumnTitlePipe implements PipeTransform {\r\n async transform(item: any, column: SdGridMaterialChildColumn): Promise<string> {\r\n if (!column?.title) {\r\n return '';\r\n }\r\n const result = column?.dynamicTitle?.(item);\r\n if (result instanceof Promise) {\r\n return (await result) || column?.title;\r\n }\r\n return result || column?.title;\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../../models/grid-command.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-command',\r\n templateUrl: './desktop-command.component.html',\r\n styleUrls: ['./desktop-command.component.scss']\r\n})\r\nexport class SdDesktopCommand {\r\n @Input() item: any;\r\n @Input() commands: SdGridMaterialCommand[] = [];\r\n constructor() {\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnBadge'\r\n})\r\nexport class SdColumnBadgePipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): string {\r\n if (column.type === 'string' && column?.badge) {\r\n return column.badge(value, rowData);\r\n }\r\n if (column.type === 'bool' && column?.badge) {\r\n return column.badge(value, rowData);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Directive, Input, TemplateRef, ViewContainerRef } from \"@angular/core\";\r\n@Directive({\r\n selector: '[sdLet]',\r\n})\r\nexport class SdLetDirective {\r\n @Input()\r\n set sdLet(context: any) {\r\n this.context.$implicit = this.context.sdLet = context;\r\n this.updateView();\r\n }\r\n context: any = {};\r\n\r\n constructor(private vcRef: ViewContainerRef, private templateRef: TemplateRef<any>) { }\r\n\r\n updateView() {\r\n this.vcRef.clear();\r\n this.vcRef.createEmbeddedView(this.templateRef, this.context);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdGridConfiguration, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../services/grid-configuration.service';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\n\r\n@Pipe({\r\n name: 'sdGridConfigurationResult'\r\n})\r\nexport class SdGridConfigurationResultPipe implements PipeTransform {\r\n constructor(private gridConfigurationService: SdGridConfigurationService) { }\r\n transform(configuration: SdGridConfiguration, gridOption: SdGridMaterialOption, sdSubInformation: SdMaterialSubInformationDefDirective): SdGridConfigurationResult {\r\n return this.gridConfigurationService.generateConfigurationResult(configuration, gridOption, sdSubInformation);\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, EventEmitter, ChangeDetectorRef, Input, HostListener } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationResult, SdGridConfiguration, SdGridConfigurationCache, SdColumnConfiguration } from '../../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-configuration.service';\r\nimport * as uuid from 'uuid';\r\nimport { MatTable } from '@angular/material/table';\r\n// import { SdGridMaterialColumn } from '@sd-angular/core/grid-material';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-popup-grid-configuration',\r\n templateUrl: './popup-grid-configuration.component.html',\r\n styleUrls: ['./popup-grid-configuration.component.scss']\r\n})\r\nexport class SdPopupGridConfiguration implements OnInit {\r\n @Input() gridOption: SdGridMaterialOption;\r\n @Input() key: string;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdGridMaterialColumn>;\r\n readonly changes = new EventEmitter<SdGridConfigurationResult>();\r\n #cache: SdGridConfigurationCache;\r\n configuration: SdGridConfiguration;\r\n isCreatingColumn = false;\r\n selected: {\r\n [key: string]: boolean;\r\n } = {};\r\n disabledDrag = true;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridConfigurationService: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n @HostListener('window:mouseup', ['$event'])\r\n mouseUp(event) {\r\n this.disabledDrag = true;\r\n }\r\n open = async () => {\r\n this.#cache = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.configuration = await this.#cache.get();\r\n this.modal.open();\r\n }\r\n\r\n onSave = () => {\r\n this.#cache.set(this.configuration);\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n }\r\n\r\n onReset = async () => {\r\n const { translate } = this.translateService;\r\n this.notifyService.confirm(translate('Reset grid configuration to default')).then(() => {\r\n this.#cache.remove();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n });\r\n }\r\n\r\n createColumn = async () => {\r\n this.selected = {};\r\n this.isCreatingColumn = true;\r\n }\r\n\r\n confirm = async () => {\r\n const generatedColumn: SdColumnConfiguration = {\r\n origin: {\r\n field: uuid.v4(),\r\n title: 'Generated',\r\n width: '300px'\r\n },\r\n fixed: false,\r\n invisible: false,\r\n title: 'Generated',\r\n width: '300px',\r\n isGeneratedColumn: true,\r\n generatedColumns: this.configuration.columns.filter(e => this.selected[e.origin?.field]).map(e => e.origin?.field)\r\n };\r\n this.configuration.columns.push(generatedColumn);\r\n this.configuration = this.#cache.set(this.configuration);\r\n this.isCreatingColumn = false;\r\n }\r\n\r\n dropTable(event: CdkDragDrop<SdGridMaterialColumn[]>) {\r\n moveItemInArray(this.configuration.columns, event.previousIndex, event.currentIndex);\r\n this.table.renderRows();\r\n }\r\n\r\n handleMouseDown() {\r\n this.disabledDrag = false;\r\n }\r\n\r\n handleMouseUp() {\r\n this.disabledDrag = true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnTooltip'\r\n})\r\nexport class SdColumnTooltipPipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): string {\r\n if (column?.tooltip) {\r\n return column.tooltip(value, rowData);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialAction, SdGridMaterialActionNormal, SdGridMaterialActionSimple } from '../models/grid-action.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdGridMaterialAction, selectedItems: any[]): SdGridMaterialActionSimple => {\r\n if ('children' in action) {\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n color: action.color,\r\n type: action.type,\r\n disabled: typeof (action.disabled) === 'function' ? action.disabled(selectedItems) : action.disabled,\r\n children: action.children.map(e => ({\r\n title: e.title,\r\n icon: e.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: e.fontSet,\r\n tooltip: e.tooltip,\r\n disabled: typeof (action.disabled) === 'function' ? action.disabled(selectedItems) : action.disabled,\r\n click: e.click\r\n }))\r\n };\r\n }\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n disabled: typeof (action.disabled) === 'function' ? action.disabled(selectedItems) : action.disabled,\r\n click: action.click\r\n };\r\n\r\n }\r\n transform = (selectedItems: any[], actions: SdGridMaterialAction[]): SdGridMaterialActionSimple[] => {\r\n const results: SdGridMaterialAction[] = [];\r\n if (!actions?.length || !selectedItems?.length) {\r\n return [];\r\n }\r\n for (const action of actions) {\r\n let flag = false;\r\n const { hidden } = action;\r\n if (hidden === undefined) {\r\n flag = true;\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n flag = true;\r\n }\r\n } else {\r\n const isHidden = hidden(selectedItems);\r\n if (!isHidden) {\r\n flag = true;\r\n }\r\n }\r\n if (flag) {\r\n if ('children' in action) {\r\n const children: SdGridMaterialActionNormal[] = [];\r\n for (const childCommand of action.children) {\r\n const { hidden: childHidden } = childCommand;\r\n if (childHidden === undefined) {\r\n children.push(childCommand);\r\n } else if (typeof (childHidden) === 'boolean') {\r\n if (!childHidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n const isHidden = childHidden(selectedItems);\r\n if (!isHidden) {\r\n children.push(childCommand);\r\n }\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...action, children });\r\n }\r\n } else {\r\n results.push(action);\r\n }\r\n }\r\n }\r\n return results.map(result => this.#convert(result, selectedItems));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: any[], rowData: any, selection: SdGridMaterialSelection): boolean => {\r\n if (!selection?.disabled) {\r\n return false;\r\n }\r\n return selection.disabled(rowData, selectedItems);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\n@Pipe({\r\n name: 'selectionDisableSelectAll'\r\n})\r\nexport class SdSelectionDisableSelectAllPipe implements PipeTransform {\r\n transform = (items: any[], selection: SdGridMaterialSelection): boolean => {\r\n if (!selection?.disabledSelectAll) {\r\n if (!selection.disabled) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n return selection.disabledSelectAll(items);\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSetting, SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialConfigOption } from '../../models/grid-config.model';\r\nimport { SdGeneratedColumn } from './generated-column.model';\r\n\r\n@Injectable()\r\nexport class SdGeneratedColumnService {\r\n #cache: {\r\n [key: string]: SdSetting<SdGeneratedColumn[]>\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService) {\r\n }\r\n\r\n load = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '260f5e94-5865-4425-8ced-b9c083c390dd',\r\n key: configuration.key\r\n });\r\n\r\n if (!this.#cache[key]) {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: configuration?.storage,\r\n args: configuration?.args,\r\n default: []\r\n });\r\n }\r\n return this.#cache[key];\r\n }\r\n\r\n loadSystem = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n if (!configuration?.systemColumn) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '8b8050ca-1f44-4860-bad3-20e646c0d68f',\r\n key: configuration.key\r\n });\r\n\r\n if (!this.#cache[key]) {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: 'server',\r\n args: configuration?.systemColumn?.args,\r\n default: []\r\n });\r\n }\r\n return this.#cache[key];\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ChangeDetectorRef, Input, ChangeDetectionStrategy, OnDestroy } from '@angular/core';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-configuration.service';\r\nimport * as uuid from 'uuid';\r\nimport { SdGeneratedColumnService } from '../../services/generated-column/generated-column.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdGeneratedColumn } from '../../services/generated-column/generated-column.model';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SdSideDrawer } from '@sd-angular/core/side-drawer';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-dynamic-column',\r\n templateUrl: './dynamic-column.component.html',\r\n styleUrls: ['./dynamic-column.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDynamicColumn implements OnInit, OnDestroy {\r\n @ViewChild(SdSideDrawer) sideDrawer: SdSideDrawer;\r\n @Input() gridOption: SdGridMaterialOption;\r\n systemColumns: SdGeneratedColumn[];\r\n columns: SdGeneratedColumn[];\r\n #subscription = new Subscription();\r\n columnTypes = ['string', 'number', 'bool', 'date', 'datetime', 'time', 'values', 'children', 'children-col'];\r\n form = new FormGroup({});\r\n isDetail = false;\r\n detail: SdGeneratedColumn;\r\n originColumns: SdGridMaterialColumn[] = [];\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private generatedColumnService: SdGeneratedColumnService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridConfigurationService: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (systemSetting) {\r\n this.#subscription?.add(systemSetting.observer.subscribe(columns => {\r\n this.systemColumns = columns;\r\n }));\r\n }\r\n if (setting) {\r\n this.#subscription?.add(setting.observer.subscribe(columns => {\r\n this.columns = columns;\r\n }));\r\n }\r\n this.originColumns = this.gridOption.columns.filter(e => e.type !== 'children' && e.type !== 'children-col');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onDetail = (column?: SdGeneratedColumn) => {\r\n this.detail = column || {\r\n field: uuid.v4(),\r\n title: '',\r\n type: 'string',\r\n isSystem: false,\r\n useTemplate: false\r\n };\r\n this.form.markAsUntouched();\r\n this.form.markAsPristine();\r\n this.isDetail = true;\r\n }\r\n\r\n onSave = () => {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (this.detail.isSystem) {\r\n if (!this.detail.id) {\r\n systemSetting.set([...this.systemColumns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n systemSetting.set([...this.systemColumns]);\r\n }\r\n } else {\r\n if (!this.detail.id) {\r\n setting.set([...this.columns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n setting.set([...this.columns]);\r\n }\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdMaterialCellDefDirective } from '../../directives/sd-material-cell-def.directive';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell',\r\n templateUrl: './desktop-cell.component.html',\r\n styleUrls: ['./desktop-cell.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCell {\r\n @Input() sdId: string;\r\n @Input() value: any;\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n @Input() gridOption: SdGridMaterialOption;\r\n @Input() cellDef: {\r\n [column: string]: SdMaterialCellDefDirective\r\n } = {};\r\n @Input() idx: number;\r\n constructor(\r\n ) { }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-editor',\r\n templateUrl: './desktop-cell-editor.component.html',\r\n styleUrls: ['./desktop-cell-editor.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellEditor {\r\n @Input() sdId: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n\r\n onChange = () => {\r\n if(this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n this.column?.editor?.change?.(this.item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { EditorHandlerRow, SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorHandlerRow'\r\n})\r\nexport class SdEditorHandlerRowPipe implements PipeTransform {\r\n transform(status: 'create' | 'update', item: SdItem, gridOption: SdGridMaterialOption): EditorHandlerRow {\r\n const { editor } = gridOption;\r\n if (!editor) {\r\n return null;\r\n }\r\n let isDisabled = false;\r\n if (typeof (editor?.disabled) === 'function') {\r\n isDisabled = editor.disabled(item);\r\n } else {\r\n isDisabled = editor?.disabled;\r\n }\r\n if(isDisabled) {\r\n return null;\r\n }\r\n if (editor.type === 'inline') {\r\n const removable = editor.removable;\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: true,\r\n editable: false,\r\n removable: status !== 'create' && (typeof (removable) === 'function' ? removable(item) : removable),\r\n savable: false,\r\n cancelable: status === 'create'\r\n }\r\n } else if (editor.type === 'focus') {\r\n const editable = editor.editable;\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: !!status,\r\n editable: !status && (typeof (editable) === 'function' ? editable(item) : editable),\r\n removable: false,\r\n savable: !!status,\r\n cancelable: !!status\r\n }\r\n } else if (editor.type === 'popup') {\r\n const editable = editor.editable;\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: false,\r\n editable: !status && (typeof (editable) === 'function' ? editable(item) : editable),\r\n removable: false,\r\n savable: false,\r\n cancelable: false\r\n }\r\n }\r\n return item.editorHandlerRow;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport * as hash from 'object-hash';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorHandlerColumn'\r\n})\r\nexport class SdEditorHandlerColumnPipe implements PipeTransform {\r\n transform(value: any, item: SdItem, column: SdGridMaterialColumn, gridOption: SdGridMaterialOption) {\r\n if (column.type === 'children' || column.type === 'children-col') {\r\n return;\r\n }\r\n const { columns } = gridOption;\r\n const visible = (col: SdGridMaterialColumn) => {\r\n if (col.type === 'children' || col.type === 'children-col') {\r\n return false;\r\n }\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (col.editor) {\r\n const isDisabled = typeof (col.editor.disabled) === 'function' ? col.editor.disabled(item) : col.editor.disabled;\r\n if (isDisabled) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n item.editorHandlerColumn = item.editorHandlerColumn || {};\r\n item.editorHandlerColumn[column.field] = {\r\n ...item.editorHandlerColumn[column.field],\r\n visible: visible(column)\r\n }\r\n for (const col of columns.filter(e => column.editor?.relatedColumns?.includes(e.field))) {\r\n item.editorHandlerColumn[col.field] = {\r\n ...item.editorHandlerColumn[col.field],\r\n visible: visible(col)\r\n }\r\n }\r\n item.sdId = hash(item);\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorValidate'\r\n})\r\nexport class SdEditorValidatePipe implements PipeTransform {\r\n private previous: Date;\r\n private delay = 1000; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện validate\r\n async transform(value: string, item: SdItem, column: SdGridMaterialColumn, gridOption: SdGridMaterialOption): Promise<boolean> {\r\n const { editor } = gridOption;\r\n if (!item.editorHandlerRow?.visible) {\r\n return true;\r\n }\r\n if (!editor.validate) {\r\n item.editorHandlerRow.errorMessage = null;\r\n return true;\r\n }\r\n this.previous = new Date();\r\n await new Promise(resolve => setTimeout(resolve, this.delay));\r\n const now = new Date();\r\n const dif = now.getTime() - this.previous.getTime();\r\n if (dif < this.delay) {\r\n return true;\r\n }\r\n const result = editor.validate(item);\r\n if (result instanceof Promise) {\r\n item.editorHandlerRow.errorMessage = await result;\r\n return true;\r\n } else {\r\n item.editorHandlerRow.errorMessage = result;\r\n return true;\r\n }\r\n }\r\n}\r\n","import { Injectable, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport '@sd-angular/core/typing';\r\nimport { SdGridMaterial } from './grid-material.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { CdkTableModule, CdkColumnDef } from '@angular/cdk/table';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { SdCommandFilterPipe } from './pipes/command-filter.pipe';\r\nimport { SdCommandDisablePipe } from './pipes/command-disable.pipe';\r\nimport { SdCommandIconPipe } from './pipes/command-icon.pipe';\r\nimport { SdCommandTitlePipe } from './pipes/command-title.pipe';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdColumnHtmlTemplatePipe } from './pipes/column-html-template.pipe';\r\nimport { SdDesktopCellView } from './components/desktop-cell-view/desktop-cell-view.component';\r\nimport { SdColumnTransformPipe } from './pipes/column-transform.pipe';\r\nimport { SdServiceModule } from '@sd-angular/core/service';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { SdFilterExternalPipe } from './pipes/filter-external.pipe';\r\nimport { SdFilterColumnPipe } from './pipes/filter-column.pipe';\r\nimport { SdGridFilter } from './components/grid-filter/grid-filter.component';\r\nimport { SdPopupFilter } from './components/popup-filter/popup-filter.component';\r\n\r\nimport { SdGridFilterService } from './services/grid-filter.service';\r\nimport { SdDesktopCellChildrenView } from './components/desktop-cell-children-view/desktop-cell-children-view.component';\r\nimport { SdColumnChildrenFilterPipe } from './pipes/column-children-filter.pipe';\r\nimport { SdColumnTitlePipe } from './pipes/column-title.pipe';\r\nimport { SdDesktopCommand } from './components/desktop-command/desktop-command.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdColumnBadgePipe } from './pipes/column-badge.pipe';\r\nimport { SdLetDirective } from './directives/sd-let.directive';\r\nimport { SdGridConfigurationResultPipe } from './pipes/grid-configuration-result.pipe';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdPopupGridConfiguration } from './components/popup-grid-configuration/popup-grid-configuration.component';\r\nimport { SdGridConfigurationService } from './services/grid-configuration.service';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { SdColumnTooltipPipe } from './pipes/column-tooltip.pipe';\r\nimport { SdGridService } from './services/grid.service';\r\nimport { SdSelectionActionFilterPipe } from './pipes/selection-action-filter.pipe';\r\nimport { SdSelectionDisablePipe } from './pipes/selection-disable.pipe';\r\nimport { SdSelectionDisableSelectAllPipe } from './pipes/selection-disable-select-all.pipe';\r\nimport { SdDynamicColumn } from './components/dynamic-column/dynamic-column.component';\r\nimport { SdGeneratedColumnService } from './services/generated-column/generated-column.service';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdDesktopCellEditor } from './components/desktop-cell-editor/desktop-cell-editor.component';\r\nimport { SdEditorHandlerRowPipe } from './pipes/editor-handler-row.pipe';\r\nimport { SdEditorHandlerColumnPipe } from './pipes/editor-handler-column.pipe';\r\nimport { SdEditorValidatePipe } from './pipes/editor-validate.pipe';\r\n\r\n@Injectable()\r\nexport class MatPaginatorIntlCro extends MatPaginatorIntl {\r\n firstPageLabel = 'Trang đầu';\r\n lastPageLabel = 'Trang cuối';\r\n itemsPerPageLabel = 'Kích thước trang';\r\n nextPageLabel = 'Trang sau';\r\n previousPageLabel = 'Trang trước';\r\n\r\n getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n if (length === 0 || pageSize === 0) {\r\n return '';\r\n }\r\n const from = page * pageSize + 1;\r\n const to = from + (length - page * pageSize > pageSize ? pageSize : length - page * pageSize) - 1;\r\n return `${from}-${to} trên ${length}`;\r\n }\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatSortModule,\r\n MatPaginatorModule,\r\n MatTableModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatProgressSpinnerModule,\r\n MatChipsModule,\r\n MatRadioModule,\r\n MatSlideToggleModule,\r\n MatCheckboxModule,\r\n MatListModule,\r\n MatDividerModule,\r\n CdkTableModule,\r\n DragDropModule,\r\n SdFormModule,\r\n SdServiceModule,\r\n MatSliderModule\r\n ],\r\n declarations: [\r\n SdDesktopCell,\r\n SdDesktopCellEditor,\r\n SdDesktopCellView,\r\n SdDesktopCellChildrenView,\r\n SdDesktopCommand,\r\n SdGridMaterial,\r\n\r\n SdLetDirective,\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdPopupExport,\r\n SdPopupGridConfiguration,\r\n SdGridFilter,\r\n SdPopupFilter,\r\n SdDynamicColumn,\r\n\r\n // Pipes\r\n SdGridConfigurationResultPipe,\r\n SdColumnChildrenFilterPipe,\r\n SdColumnTitlePipe,\r\n SdCommandFilterPipe,\r\n SdCommandDisablePipe,\r\n SdCommandIconPipe,\r\n SdCommandTitlePipe,\r\n SdColumnValuesPipe,\r\n SdColumnHtmlTemplatePipe,\r\n SdColumnTransformPipe,\r\n SdColumnTooltipPipe,\r\n SdColumnBadgePipe,\r\n SdFilterColumnPipe,\r\n SdFilterExternalPipe,\r\n SdSelectionActionFilterPipe,\r\n SdSelectionDisablePipe,\r\n SdSelectionDisableSelectAllPipe,\r\n SdEditorHandlerRowPipe,\r\n SdEditorHandlerColumnPipe,\r\n SdEditorValidatePipe\r\n ],\r\n exports: [\r\n SdGridMaterial,\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdMaterialSubInformationDefDirective\r\n ],\r\n providers: [\r\n DatePipe,\r\n DecimalPipe,\r\n CdkColumnDef,\r\n SdGridService,\r\n SdGridFilterService,\r\n SdGridConfigurationService,\r\n SdGeneratedColumnService,\r\n {\r\n provide: MatPaginatorIntl, useClass: MatPaginatorIntlCro\r\n }\r\n ]\r\n})\r\nexport class SdGridMaterialModule {\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-cell-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-filter-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-footer-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-empty-data-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-sub-information-def.directive.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/grid-material/src/lib/models/grid-configuration.model.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-filter.service.ts","../../../../projects/sd-core/grid-material/src/lib/components/grid-filter/grid-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-export/popup-export.component.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-configuration.service.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid.service.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-values.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-html-template.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-transform.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-children-view/desktop-cell-children-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-children-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-badge.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-let.directive.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/grid-configuration-result.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-disable-select-all.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/services/generated-column/generated-column.service.ts","../../../../projects/sd-core/grid-material/src/lib/components/dynamic-column/dynamic-column.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-editor/desktop-cell-editor.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-row.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-validate.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/style-row-css.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-editor-validation/desktop-editor-validation.component.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.module.ts"],"names":["templateRef","this","Directive","args","selector","TemplateRef","Input","SdMaterialFilterDefDirective","Object","defineProperty","prototype","val","defaultShowing","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","call","__rest","s","e","t","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","apply","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","pop","push","create","__values","o","m","__read","r","ar","error","__spread","arguments","concat","__classPrivateFieldGet","receiver","privateMap","has","get","__classPrivateFieldSet","set","DEFAULT_GRID_MATERIAL_CONFIG","pageSize","pages","GRID_MATERIAL_CONFIG","InjectionToken","SdPopupFilter","_this","externalFilters","externalFilter","inlineExternal","columns","columnFilter","inlineColumn","filterDefs","filterDef","inlineFilterDef","changeFilter","EventEmitter","clearFilter","open","JSON","parse","stringify","modal","close","onApply","emit","onClear","Component","template","ViewChild","Output","settingService","_prefix","key","prefix","selectedQuickFilter","quickFilters","configuration","_b","_a","hash","Injectable","SdSettingService","SdGridFilter","deviceService","gridFilterService","isVisible","_filterOptionChanges","Subject","filterChange","_subscription","Subscription","_loadDefault","_u","_v","column","field","filter","_c","_d","default","_w","_x","_e","type","from","_j","_g","_f","_h","undefined","to","_o","_l","_k","_m","_p","_y","_z","sdMaterialFilterDef","_q","_clearFilter","_s","_t","onFilter","item","popupFilter","onChangeFilter","onReset","onClearFilter","setFilter","isMobileOrTablet","isDesktop","disabled","ngAfterViewInit","add","pipe","startWith","subscribe","ngOnDestroy","unsubscribe","DeviceDetectorService","SdGridFilterService","SdPopupExport","ref","loadingService","exportService","notifyService","translateService","groups","enableCreating","selected","files","export","form","FormGroup","_getExportableColumns","gridOption","forEach","children","childColumn","map","title","description","width","_getExportableGroups","permission","hideMyTemplates","loadFiles","code","detectChanges","exportDefault","isCSV","file","group","selectedGroup","find","filesInFolder","_0","_initTemplate","fileName","sheets","isArray","sheet","name","items","fields","_2","_1","_3","_5","generateTemplate","start","finally","stop","filePath","download","uuid","generateAndUploadTemplate","generateUploadTemplate","onExport","uploadTemplate","_r","validator","validators","removeFile","confirm","translate","idx","splice","createTemplate","invalid","markAllAsTouched","some","notify","warning","templateName","onChangeGroup","listGroups","selectedOptions","validatorTemplateName","test","option","ngOnInit","ChangeDetectorRef","SdLoadingService","SdExportService","SdNotifyService","SdTranslateService","gridMaterialConfiguration","_COLUMNS","EDITORVALIDATION","EDITOR","SUBINFORMATION","COMMAND","SELECTION","_cache","init","subject_1","load","_load","_get","_set","assign","remove","_remove","_default","observer","_getKey","config","hidden","origin","invisible","fixed","subject","storage","catch","isGeneratedColumn","col","console","generateConfigurationResult","sdSubInformation","fixedColumn","firstColumns","secondColumns","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","selection","commands","editor","addable","removable","editable","visible","generatedColumn","e1","generatedColumns","includes","subColumn","e_2","colSpan","Inject","Optional","utilityService","loadValues","valueField","displayField","hashKey","_prefix$1","_cache$1","values","obj","arrayToObject","getValues","SdUtilityService","SdGridMaterial","gridConfigurationService","gridService","uuid.v4","localItems","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_optionChanges","isExporting","isSelectAll","exportTitle","_initCellDef","sdMaterialCellDef","_initFilterDef","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","rawColumnFilter","gridFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","_initConfiguration","paginate","showFirstLastButtons","_filterLocal","filterInfo","columns_1","columns_1_1","filterValue","toString","trim","toLowerCase","columnValue","fValue","replace","cValue","date","Date","toFormat","fromDate","toDate","setDate","getDate","getTime","type_1","field_1","sort","current","s1","s2","reverse","index","pageIndex","total","_getFilter","filterReq","isObservable","toPromise","results","handle","error_1","_render","originItem","reload","onReload","every","isSelected","_updateSelectedItems","_load$1","data","_exportedItems","exportedItems","_allColumns","_allExportedColumns","_onExport","columns_2","maxItemsPerRequest","exportItems","this_1","res","mapping","totalPage","percent","Math","round","allColumns","allExportedColumns","exportColumn","exportedColumn","transform","displayOnTrue","displayOnFalse","e_6","exportItems_1","exportItems_1_1","exportCSV","exportByTemplate","max","onFilterChange","onExpand","rowData","isExpanding","isExpanded","subInformation","multiple","expandDetail","onSelect","single","onSelectAll","onCreate","onAdd","editorStatus","editorHandlerRow","temporary","onUpdate","onSave","saving","validate","message","err_1","onCancel","idx2","idx1","onRemove","reloadItem","sdId","_subscription$1","debounceTime","switchMap","gridConfigurationObserver","paginator","page","sortChange","changes","drop","event","moveItemInArray","previousIndex","currentIndex","keys","editorHandlerColumn","editorErrorMessage","errorMessage","animations","trigger","state","style","height","minHeight","visibility","transition","animate","SdGridConfigurationService","SdGridService","SdQuickAction","MatPaginator","MatSort","ContentChild","SdMaterialSubInformationDefDirective","SdMaterialEmptyDataDefDirective","ContentChildren","SdMaterialCellDefDirective","SdMaterialFooterDefDirective","SdCommandFilterPipe","commands_1","commands_1_1","command","flag","isHidden","e_1","childCommand","hidden_1","Pipe","SdCommandDisablePipe","SdCommandIconPipe","icon","SdCommandTitlePipe","SdColumnHtmlTemplatePipe","htmlTemplate","changeDetection","ChangeDetectionStrategy","OnPush","SdColumnTransformPipe","decimalPipe","Number","isNumber","toVNCurrency","DecimalPipe","SdFilterExternalPipe","externalFilters_1","externalFilters_1_1","SdFilterColumnPipe","columnChildren","SdColumnChildrenFilterPipe","_isMobileOrTablet","transformValue","templateValue","SdColumnTitlePipe","dynamicTitle","SdColumnBadgePipe","badge","SdLetDirective","vcRef","context","$implicit","sdLet","updateView","clear","createEmbeddedView","ViewContainerRef","SdGridConfigurationResultPipe","SdPopupGridConfiguration","isCreatingColumn","disabledDrag","_cache$2","createColumn","mouseUp","dropTable","table","renderRows","handleMouseDown","handleMouseUp","HostListener","SdColumnTooltipPipe","tooltip","_convert","action","fontSet","color","click","actions","actions_1","actions_1_1","childHidden","disabledSelectAll","_cache$3","loadSystem","systemColumn","SdDynamicColumn","generatedColumnService","columnTypes","isDetail","originColumns","onDetail","detail","isSystem","useTemplate","markAsUntouched","markAsPristine","systemSetting","setting","id","systemColumns","_subscription$2","SdGeneratedColumnService","SdSideDrawer","onChange","change","SdEditorHandlerRowPipe","status","savable","cancelable","SdEditorHandlerColumnPipe","relatedColumns","SdEditorValidatePipe","delay","previous","setTimeout","now","SdStyleRowCss","rowCss","MatPaginatorIntlCro","_super","firstPageLabel","lastPageLabel","itemsPerPageLabel","nextPageLabel","previousPageLabel","getRangeLabel","__","constructor","__extends","MatPaginatorIntl","NgModule","imports","CommonModule","FormsModule","ReactiveFormsModule","MatInputModule","MatFormFieldModule","MatSortModule","MatPaginatorModule","MatTableModule","MatMenuModule","MatIconModule","MatButtonModule","MatTooltipModule","MatProgressSpinnerModule","MatChipsModule","MatRadioModule","MatSlideToggleModule","MatCheckboxModule","MatListModule","MatDividerModule","CdkTableModule","DragDropModule","SdFormModule","SdServiceModule","MatSliderModule","ScrollingModule","declarations","SdDesktopCell","SdDesktopCellEditor","SdDesktopEditorValidation","SdDesktopCellView","SdDesktopCellChildrenView","SdDesktopCommand","SdColumnValuesPipe","SdSelectionActionFilterPipe","SdSelectionDisablePipe","SdSelectionDisableSelectAllPipe","exports","providers","DatePipe","CdkColumnDef","provide","useClass"],"mappings":"08HAOE,SAAmBA,GAAAC,KAAAD,YAAAA,uBALpBE,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,mEAHeC,EAAAA,0DAMxBC,EAAAA,0BCKD,SAAAC,EAAmBP,GAAAC,KAAAD,YAAAA,SAJnBQ,OAAAC,eAA6BF,EAAAG,UAAA,UAAO,KAApC,SAAqCC,GACnCV,KAAKW,eAA0B,KAARD,GAAeA,4DANzCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,qEAHeC,EAAAA,4DAMxBC,EAAAA,uBACAA,EAAAA,MAAKH,KAAA,CAAC,2BCAP,SAAmBH,GAAAC,KAAAD,YAAAA,uBALpBE,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,qEAHeC,EAAAA,4DAMxBC,EAAAA,eCAD,SAAmBN,GAAAC,KAAAD,YAAAA,uBAJpBE,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,wEAHQC,EAAAA,qBCMlB,SAAmBL,GAAAC,KAAAD,YAAAA,uBAJpBE,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,6EAHQC,EAAAA;;;;;;;;;;;;;;;ACgBpB,IAAIQ,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgBL,OAAOQ,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUJ,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOP,OAAOE,UAAUU,eAAeC,KAAKN,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,MAC3EL,EAAGC,aAoBZO,EAAOC,EAAGC,GACtB,IAAIC,EAAI,GACR,IAAK,IAAIN,KAAKI,EAAOf,OAAOE,UAAUU,eAAeC,KAAKE,EAAGJ,IAAMK,EAAEE,QAAQP,GAAK,IAC9EM,EAAEN,GAAKI,EAAEJ,IACb,GAAS,MAALI,GAAqD,mBAAjCf,OAAOmB,sBACtB,CAAA,IAAIC,EAAI,EAAb,IAAgBT,EAAIX,OAAOmB,sBAAsBJ,GAAIK,EAAIT,EAAEU,OAAQD,IAC3DJ,EAAEE,QAAQP,EAAES,IAAM,GAAKpB,OAAOE,UAAUoB,qBAAqBT,KAAKE,EAAGJ,EAAES,MACvEH,EAAEN,EAAES,IAAML,EAAEJ,EAAES,KAE1B,OAAOH,WAkBKM,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,IAAW,MAAOhB,GAAKc,EAAOd,IACpF,SAASmB,EAASH,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,IAAW,MAAOhB,GAAKc,EAAOd,IACvF,SAASiB,EAAKG,GAJlB,IAAeJ,EAIaI,EAAOC,KAAOR,EAAQO,EAAOJ,QAJ1CA,EAIyDI,EAAOJ,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,OAITM,KAAKP,EAAWI,GAClGF,GAAMN,EAAYA,EAAUY,MAAMf,EAASC,GAAc,KAAKS,oBAItDM,GAAYhB,EAASiB,GACjC,IAAsGC,EAAGC,EAAG1B,EAAG2B,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP9B,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAO+B,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEV,KAAMgB,EAAK,GAAIC,MAASD,EAAK,GAAIE,OAAUF,EAAK,IAAwB,mBAAXG,SAA0BT,EAAES,OAAOC,UAAY,WAAa,OAAO7D,OAAUmD,EACvJ,SAASM,EAAKK,GAAK,OAAO,SAAUC,GAAK,OACzC,SAAcC,GACV,GAAIf,EAAG,MAAM,IAAIgB,UAAU,mCAC3B,KAAOb,OACH,GAAIH,EAAI,EAAGC,IAAM1B,EAAY,EAARwC,EAAG,GAASd,EAAU,OAAIc,EAAG,GAAKd,EAAS,SAAO1B,EAAI0B,EAAU,SAAM1B,EAAEJ,KAAK8B,GAAI,GAAKA,EAAET,SAAWjB,EAAIA,EAAEJ,KAAK8B,EAAGc,EAAG,KAAKpB,KAAM,OAAOpB,EAE3J,OADI0B,EAAI,EAAG1B,IAAGwC,EAAK,CAAS,EAARA,EAAG,GAAQxC,EAAEe,QACzByB,EAAG,IACP,KAAK,EAAG,KAAK,EAAGxC,EAAIwC,EAAI,MACxB,KAAK,EAAc,OAAXZ,EAAEC,QAAgB,CAAEd,MAAOyB,EAAG,GAAIpB,MAAM,GAChD,KAAK,EAAGQ,EAAEC,QAASH,EAAIc,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKZ,EAAEI,IAAIU,MAAOd,EAAEG,KAAKW,MAAO,SACxC,QACI,KAAM1C,EAAI4B,EAAEG,MAAM/B,EAAIA,EAAEI,OAAS,GAAKJ,EAAEA,EAAEI,OAAS,KAAkB,IAAVoC,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEZ,EAAI,EAAG,SACjG,GAAc,IAAVY,EAAG,MAAcxC,GAAMwC,EAAG,GAAKxC,EAAE,IAAMwC,EAAG,GAAKxC,EAAE,IAAM,CAAE4B,EAAEC,MAAQW,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYZ,EAAEC,MAAQ7B,EAAE,GAAI,CAAE4B,EAAEC,MAAQ7B,EAAE,GAAIA,EAAIwC,EAAI,MAC7D,GAAIxC,GAAK4B,EAAEC,MAAQ7B,EAAE,GAAI,CAAE4B,EAAEC,MAAQ7B,EAAE,GAAI4B,EAAEI,IAAIW,KAAKH,GAAK,MACvDxC,EAAE,IAAI4B,EAAEI,IAAIU,MAChBd,EAAEG,KAAKW,MAAO,SAEtBF,EAAKhB,EAAK5B,KAAKW,EAASqB,GAC1B,MAAO7B,GAAKyC,EAAK,CAAC,EAAGzC,GAAI2B,EAAI,UAAeD,EAAIzB,EAAI,EACtD,GAAY,EAARwC,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEzB,MAAOyB,EAAG,GAAKA,EAAG,QAAK,EAAQpB,MAAM,GArB9BJ,CAAK,CAACsB,EAAGC,MAyBhCxD,OAAO6D,gBAYpBC,GAASC,GACrB,IAAIhD,EAAsB,mBAAXsC,QAAyBA,OAAOC,SAAUU,EAAIjD,GAAKgD,EAAEhD,GAAIK,EAAI,EAC5E,GAAI4C,EAAG,OAAOA,EAAEnD,KAAKkD,GACrB,GAAIA,GAAyB,iBAAbA,EAAE1C,OAAqB,MAAO,CAC1Ca,KAAM,WAEF,OADI6B,GAAK3C,GAAK2C,EAAE1C,SAAQ0C,OAAI,GACrB,CAAE/B,MAAO+B,GAAKA,EAAE3C,KAAMiB,MAAO0B,KAG5C,MAAM,IAAIL,UAAU3C,EAAI,0BAA4B,4CAGxCkD,GAAOF,EAAGR,GACtB,IAAIS,EAAsB,mBAAXX,QAAyBU,EAAEV,OAAOC,UACjD,IAAKU,EAAG,OAAOD,EACf,IAAmBG,EAAYlD,EAA3BI,EAAI4C,EAAEnD,KAAKkD,GAAOI,EAAK,GAC3B,IACI,WAAc,IAANZ,GAAgBA,KAAM,MAAQW,EAAI9C,EAAEc,QAAQG,MAAM8B,EAAGP,KAAKM,EAAElC,OAExE,MAAOoC,GAASpD,EAAI,CAAEoD,MAAOA,WAEzB,IACQF,IAAMA,EAAE7B,OAAS2B,EAAI5C,EAAU,SAAI4C,EAAEnD,KAAKO,WAExC,GAAIJ,EAAG,MAAMA,EAAEoD,OAE7B,OAAOD,WAGKE,KACZ,IAAK,IAAIF,EAAK,GAAI/C,EAAI,EAAGA,EAAIkD,UAAUjD,OAAQD,IAC3C+C,EAAKA,EAAGI,OAAON,GAAOK,UAAUlD,KACpC,OAAO+C,EA8CcnE,OAAO6D,gBAkBhBW,GAAuBC,EAAUC,GAC7C,IAAKA,EAAWC,IAAIF,GAChB,MAAM,IAAIf,UAAU,kDAExB,OAAOgB,EAAWE,IAAIH,YAGVI,GAAuBJ,EAAUC,EAAY1C,GACzD,IAAK0C,EAAWC,IAAIF,GAChB,MAAM,IAAIf,UAAU,kDAGxB,OADAgB,EAAWI,IAAIL,EAAUzC,GAClBA,ECpNJ,OAAM+C,GACD,CACRC,SAAU,GACVC,MAAO,CAAC,GAAI,IAAK,MAIRC,GAAuB,IAAIC,EAAAA,eAA6C,gDCyBnF,SAAAC,IAAA,IAAAC,EAAA5F,KAhCSA,KAAA6F,gBAAkD,GAC3D7F,KAAA8F,eAAsB,GACtB9F,KAAA+F,eAEI,GACK/F,KAAAgG,QAAkC,GAC3ChG,KAAAiG,aAAoB,GACpBjG,KAAAkG,aAEI,GAEKlG,KAAAmG,WAA6C,GACtDnG,KAAAoG,UAAiB,GACjBpG,KAAAqG,gBAEI,GAEMrG,KAAAsG,aAAe,IAAIC,EAAAA,aAcnBvG,KAAAwG,YAAc,IAAID,EAAAA,aAK5BvG,KAAAyG,KAAO,SAACvG,GAcE,IAAAgG,EAA2FhG,EAAIgG,aAAjFD,EAA6E/F,EAAI+F,aAAnEF,EAA+D7F,EAAI6F,eAAnDD,EAA+C5F,EAAI4F,eAAnCO,EAA+BnG,EAAImG,gBAAlBD,EAAclG,EAAIkG,UACvGR,EAAKM,aAAeQ,KAAKC,MAAMD,KAAKE,UAAUV,GAAgB,KAC9DN,EAAKK,aAAeS,KAAKC,MAAMD,KAAKE,UAAUX,GAAgB,KAC9DL,EAAKG,eAAiBW,KAAKC,MAAMD,KAAKE,UAAUb,GAAkB,KAClEH,EAAKE,eAAiBY,KAAKC,MAAMD,KAAKE,UAAUd,GAAkB,KAClEF,EAAKS,gBAAkBK,KAAKC,MAAMD,KAAKE,UAAUP,GAAmB,KACpET,EAAKQ,UAAYM,KAAKC,MAAMD,KAAKE,UAAUR,GAAa,KACxDR,EAAKiB,MAAMJ,QAGbzG,KAAA8G,MAAQ,WACNlB,EAAKiB,MAAMC,SAGb9G,KAAA+G,QAAU,WACRnB,EAAKU,aAAaU,KAAK,CACrBd,aAAcN,EAAKM,cAAgB,GACnCD,aAAcL,EAAKK,cAAgB,GACnCF,eAAgBH,EAAKG,gBAAkB,GACvCD,eAAgBF,EAAKE,gBAAkB,GACvCO,gBAAiBT,EAAKS,iBAAmB,GACzCD,UAAWR,EAAKQ,WAAa,KAE/BR,EAAKiB,MAAMC,gBAGbnB,EAAAlF,UAAAwG,QAAA,WACEjH,KAAKwG,YAAYQ,OACjBhH,KAAK6G,MAAMC,mCArFdI,EAAAA,UAAShH,KAAA,CAAC,CACTC,SAAU,kBACVgH,SAAA,inNAICC,EAAAA,UAASlH,KAAA,CAAC,kCACVG,EAAAA,uBAKAA,EAAAA,0BAMAA,EAAAA,4BAMAgH,EAAAA,4BAcAA,EAAAA,6BCpCD,SAAoBC,GAApB,IAAA1B,EAAA5F,KAAoBA,KAAAsH,eAAAA,EADpBC,GAAAlC,IAAArF,KAAU,wCAGVA,KAAAmF,IAAM,SAAOqC,GAAW,OAAA1F,EAAA8D,OAAA,OAAA,GAAA,sEACtB,OAAK4B,EAaiB,CAAA,GAJdrC,EAAQnF,KAAKsH,eAAelD,OAA0C,CAC5EqD,OAAM1C,GAAA/E,KAAAuH,IACNC,IAAGA,IACHrC,QAXA,CAAA,EAAO,CACLuC,oBAAqB,KACrBC,aAAc,GACd5B,eAAgB,GAChBG,aAAc,GACdG,gBAAiB,YAQrB,OADMuB,EAAgBC,EAAAvE,OACtB,CAAA,EAAO,CACLoE,oBAAuD,QAApCI,EAAEF,MAAAA,OAAa,EAAbA,EAAeF,2BAAmB,IAAAI,EAAAA,EAAI,KAC3DH,cAAcC,MAAAA,OAAa,EAAbA,EAAeD,eAAgB,GAC7C5B,gBAAgB6B,MAAAA,OAAa,EAAbA,EAAe7B,iBAAkB,GACjDG,cAAc0B,MAAAA,OAAa,EAAbA,EAAe1B,eAAgB,GAC7CG,iBAAiBuB,MAAAA,OAAa,EAAbA,EAAevB,kBAAmB,aAIvDrG,KAAAqF,IAAM,SAAOmC,EAAaI,GAAgD,OAAA9F,EAAA8D,OAAA,OAAA,GAAA,oEAQxE,OAPAgC,EAAgB,CACdF,qBAAqBE,MAAAA,OAAa,EAAbA,EAAeF,sBAAuB,KAC3DC,cAAcC,MAAAA,OAAa,EAAbA,EAAeD,eAAgB,GAC7C5B,eAAgB6B,EAAc7B,gBAAkB,GAChDG,aAAc0B,EAAc1B,cAAgB,GAC5CG,gBAAiBuB,EAAcvB,iBAAmB,IAE/CmB,GAGGnC,EAAQrF,KAAKsH,eAAelD,OAA0C,CAC5EqD,OAAM1C,GAAA/E,KAAAuH,IACNC,IAAGA,IACHnC,IACFmC,EAAMO,EAAAA,QAAK,CACTN,OAAM1C,GAAA/E,KAAAuH,IACNC,IAAGA,IAEL,CAAA,EAAMnC,EAAIuC,KAVR,CAAA,EAAOA,UAWT,OADAC,EAAAvE,OACA,CAAA,EAAOsE,gDAjDVI,EAAAA,uDAHQC,EAAAA,+CC2CP,SAAAC,EACUC,EACAC,GAFV,IAAAxC,EAAA5F,KACUA,KAAAmI,cAAAA,EACAnI,KAAAoI,kBAAAA,EA9BVpI,KAAAqI,WAAY,EAEZC,GAAAjD,IAAArF,KAAuB,IAAIuI,EAAAA,SAMlBvI,KAAAgG,QAAkC,GAClChG,KAAAmG,WAA6C,GACtDnG,KAAAoG,UAAiB,GACjBpG,KAAAqG,gBAEI,GAEMrG,KAAAwI,aAAe,IAAIjC,EAAAA,aAC7BkC,GAAApD,IAAArF,KAAgB,IAAI0I,EAAAA,cAEpB1I,KAAAiG,aAAoB,GACpBjG,KAAAkG,aAEI,GACJlG,KAAA6F,gBAAkD,GAClD7F,KAAA8F,eAAsB,GACtB9F,KAAA+F,eAEI,GAyBJ4C,GAAAtD,IAAArF,MAAe,6DACb,IAAqB,IAAA4I,EAAAvE,GAAAuB,EAAKI,SAAO6C,EAAAD,EAAAnG,QAAAoG,EAAAjG,KAAAiG,EAAAD,EAAAnG,OAAE,CAA9B,IAAMqG,EAAMD,EAAAtG,MACfqD,EAAKM,aAAa4C,EAAOC,OAAwC,QAAlCjB,EAAGlC,EAAKM,aAAa4C,EAAOC,cAAM,IAAAjB,EAAAA,EAAkB,QAAlBD,EAAIiB,MAAAA,OAAM,EAANA,EAAQE,cAAM,IAAAnB,OAAA,EAAAA,EAAElH,eACrFiF,EAAKK,aAAa6C,EAAOC,OAAwC,QAAlCE,EAAGrD,EAAKK,aAAa6C,EAAOC,cAAM,IAAAE,EAAAA,EAAkB,QAAlBC,EAAIJ,MAAAA,OAAM,EAANA,EAAQE,cAAM,IAAAE,OAAA,EAAAA,EAAEC,8GAEvF,IAA6B,IAAAC,EAAA/E,GAAAuB,EAAKC,iBAAewD,EAAAD,EAAA3G,QAAA4G,EAAAzG,KAAAyG,EAAAD,EAAA3G,OAAE,CAA9C,IAAMqD,EAAcuD,EAAA9G,MACvBqD,EAAKG,eAAeD,EAAeiD,OAAkD,QAA5CO,EAAG1D,EAAKG,eAAeD,EAAeiD,cAAM,IAAAO,EAAAA,EAAIxD,MAAAA,OAAc,EAAdA,EAAgBnF,eAC7E,cAAxBmF,EAAeyD,KACjB3D,EAAKE,eAAeA,EAAeiD,OAAS,CAC1CS,KAAqF,QAAjFC,EAAiD,QAAjDC,EAA2C,QAA3CC,EAAE/D,EAAKE,eAAeA,EAAeiD,cAAM,IAAAY,OAAA,EAAAA,EAAEH,YAAI,IAAAE,EAAAA,EAA0B,QAA1BE,EAAI9D,EAAeqD,eAAO,IAAAS,OAAA,EAAAA,EAAEJ,YAAI,IAAAC,EAAAA,OAAII,EACzFC,GAA+E,QAA7EC,EAA+C,QAA/CC,EAA2C,QAA3CC,EAAErE,EAAKE,eAAeA,EAAeiD,cAAM,IAAAkB,OAAA,EAAAA,EAAEH,UAAE,IAAAE,EAAAA,EAA0B,QAA1BE,EAAIpE,EAAeqD,eAAO,IAAAe,OAAA,EAAAA,EAAEJ,UAAE,IAAAC,EAAAA,OAAIF,GAGrFjE,EAAKE,eAAeA,EAAeiD,OAAkD,QAA5CoB,EAAGvE,EAAKE,eAAeA,EAAeiD,cAAM,IAAAoB,EAAAA,EAAIrE,EAAeqD,8GAG5G,IAAwB,IAAAiB,EAAA/F,GAAAuB,EAAKO,YAAUkE,EAAAD,EAAA3H,QAAA4H,EAAAzH,KAAAyH,EAAAD,EAAA3H,OAAE,CAApC,IAAM2D,EAASiE,EAAA9H,MAClBqD,EAAKS,gBAAgBD,EAAUkE,qBAA0E,QAAtDC,EAAG3E,EAAKS,gBAAgBD,EAAUkE,4BAAoB,IAAAC,EAAAA,EAAInE,MAAAA,OAAS,EAATA,EAAWzF,qHAI5H6J,GAAAnF,IAAArF,MAAe,mBACb4F,EAAKK,aAAe,GACpBL,EAAKE,eAAiB,GACtBF,EAAKQ,UAAY,OACjB,IAA6B,IAAAqE,EAAApG,GAAAuB,EAAKC,iBAAe6E,EAAAD,EAAAhI,QAAAiI,EAAA9H,KAAA8H,EAAAD,EAAAhI,OAAE,CAA9C,IAAMqD,EAAc4E,EAAAnI,MACK,cAAxBuD,EAAeyD,OACjB3D,EAAKE,eAAeA,EAAeiD,OAAS,CAC1CS,UAAMK,EACNC,QAAID,0GAUZ7J,KAAA2K,SAAW,SAACC,GACVhF,EAAK4C,aAAaxB,QAGpBhH,KAAAyG,KAAO,WACLb,EAAKiF,YAAYpE,KAAK,CACpBR,aAAcL,EAAKK,aACnBH,eAAgBF,EAAKE,eACrBM,UAAWR,EAAKQ,UAChBF,aAAcN,EAAKM,aACnBH,eAAgBH,EAAKG,eACrBM,gBAAiBT,EAAKS,mBAI1BrG,KAAA8K,eAAiB,SAAC5K,SAcRgG,EAA2FhG,EAAIgG,aAAjFD,EAA6E/F,EAAI+F,aAAnEF,EAA+D7F,EAAI6F,eAAnDD,EAA+C5F,EAAI4F,eAAnCO,EAA+BnG,EAAImG,gBAAlBD,EAAclG,EAAIkG,UACvGR,EAAKM,aAAeA,EACpBN,EAAKK,aAAeA,EACpBL,EAAKG,eAAiBA,EACtBH,EAAKE,eAAiBA,EACtBF,EAAKS,gBAAkBA,EACvBT,EAAKQ,UAAYA,EACjBR,EAAKwC,kBAAkB/C,IAAe,QAAZyC,EAAClC,EAAKoD,cAAM,IAAAlB,OAAA,EAAAA,EAAEN,IAAK,CAC3CtB,aAAYA,EACZH,eAAcA,EACd4B,aAAc,GACdtB,gBAAeA,EACfqB,oBAAqB,OAEvB9B,EAAK4C,aAAaxB,QAGpBhH,KAAA+K,QAAU,iBACRnF,EAAKM,aAAe,GACpBN,EAAKK,aAAe,GACpBL,EAAKG,eAAiB,GACtBH,EAAKE,eAAiB,GACtBF,EAAKS,gBAAkB,GACvBT,EAAKQ,UAAY,GACjBrB,GAAAa,EAAA+C,IAAAvH,KAAAwE,GACAA,EAAKwC,kBAAkB/C,IAAe,QAAZyC,EAAClC,EAAKoD,cAAM,IAAAlB,OAAA,EAAAA,EAAEN,IAAK,CAC3CtB,aAAcN,EAAKM,aACnBH,eAAgBH,EAAKK,aACrBI,gBAAiBT,EAAKS,gBACtBsB,aAAc,GACdD,oBAAqB,OAEvB9B,EAAK4C,aAAaxB,QAGpBhH,KAAAgL,cAAgB,iBACdjG,GAAAa,EAAA4E,IAAApJ,KAAAwE,GACAA,EAAKwC,kBAAkB/C,IAAe,QAAZyC,EAAClC,EAAKoD,cAAM,IAAAlB,OAAA,EAAAA,EAAEN,IAAK,CAC3CtB,aAAcN,EAAKM,aACnBH,eAAgBH,EAAKK,aACrBI,gBAAiBT,EAAKS,gBACtBsB,aAAc,GACdD,oBAAqB,OAEvB9B,EAAK4C,aAAaxB,QAGpBhH,KAAAiL,UAAY,SAAC/K,oBAKPA,MAAAA,OAAI,EAAJA,EAAM+F,gBACRL,EAAKK,aAAe/F,EAAK+F,eAEvB/F,MAAAA,OAAI,EAAJA,EAAM4F,kBACRF,EAAKE,eAAiB5F,EAAK4F,iBAEzB5F,MAAAA,OAAI,EAAJA,EAAMkG,aACRR,EAAKQ,UAAYlG,EAAKkG,eAExB,IAA6B,IAAAqE,EAAApG,GAAAuB,EAAKC,iBAAe6E,EAAAD,EAAAhI,QAAAiI,EAAA9H,KAAA8H,EAAAD,EAAAhI,OAAE,CAA9C,IAAMqD,EAAc4E,EAAAnI,MACK,cAAxBuD,EAAeyD,OACjB3D,EAAKE,eAAeA,EAAeiD,OAAS,CAC1CS,KAAqD,QAAjD3B,EAA2C,QAA3CC,EAAElC,EAAKE,eAAeA,EAAeiD,cAAM,IAAAjB,OAAA,EAAAA,EAAE0B,YAAI,IAAA3B,EAAAA,OAAIgC,EACzDC,GAAiD,QAA/CZ,EAA2C,QAA3CD,EAAErD,EAAKE,eAAeA,EAAeiD,cAAM,IAAAE,OAAA,EAAAA,EAAEa,UAAE,IAAAZ,EAAAA,OAAIW,wGAzJ3D7J,KAAKkL,kBAAoBlL,KAAKmI,cAAcgD,mBA5B9C5K,OAAAC,eAAqB0H,EAAAzH,UAAA,UAAO,KAA5B,SAA6BuI,SAC3BhJ,KAAKgJ,OAASA,EACdhJ,KAAKqI,YAAwB,QAAZP,EAAC9H,KAAKgJ,cAAM,IAAAlB,OAAA,EAAAA,EAAEsD,UAC/BrG,GAAA/E,KAAAsI,IAA0B7F,KAAKzC,KAAKgJ,yCA4BtCd,EAAAzH,UAAA4K,gBAAA,WAAA,IAAAzF,EAAA5F,KACE+E,GAAA/E,KAAAyI,IAAmB6C,IAAIvG,GAAA/E,KAAAsI,IAA0BiD,KAAKC,EAAAA,UAAUxL,KAAKgJ,SAASyC,WAAU,mBACjF7F,EAAKyC,WAIVzC,EAAKC,iBAA6B,QAAXiC,EAAAlC,EAAKoD,cAAM,IAAAlB,OAAA,EAAAA,EAAEjC,kBAAmB,GACvDD,EAAKwC,kBAAkBjD,IAAe,QAAZ0C,EAACjC,EAAKoD,cAAM,IAAAnB,OAAA,EAAAA,EAAEL,KAAK3E,MAAK,SAAA+E,GAChDhC,EAAKM,aAAe0B,EAAc1B,aAClCN,EAAKG,eAAiB6B,EAAc7B,eACpCH,EAAKS,gBAAkBuB,EAAcvB,gBACrCtB,GAAAa,EAAA+C,IAAAvH,KAAAwE,GACAA,EAAK4C,aAAaxB,WATlBpB,EAAK4C,aAAaxB,YAiDxBkB,EAAAzH,UAAAiL,YAAA,WACE3G,GAAA/E,KAAAyI,IAAmBkD,qGA9FtBzE,EAAAA,UAAShH,KAAA,CAAC,CACTC,SAAU,iBACVgH,SAAA,8lPALOyE,EAAAA,6BADAC,4CAUNzE,EAAAA,UAASlH,KAAA,CAACyF,qBAIVtF,EAAAA,MAAKH,KAAA,CAAC,2BAKNG,EAAAA,0BACAA,EAAAA,4BAMAgH,EAAAA,oDC0ED,SAAAyE,EACUC,EACAC,EACAC,EACAC,EACAC,GALV,IAAAvG,EAAA5F,KACUA,KAAA+L,IAAAA,EACA/L,KAAAgM,eAAAA,EACAhM,KAAAiM,cAAAA,EACAjM,KAAAkM,cAAAA,EACAlM,KAAAmM,iBAAAA,EAjFVnM,KAAAgG,QAA4B,GAC5BhG,KAAAoM,OAA0B,GAE1BpM,KAAAqM,gBAAiB,EAIjBrM,KAAAsM,SAEI,GACJtM,KAAAuM,MAAwB,GAGdvM,KAAAwM,OAAS,IAAIjG,EAAAA,aACvBvG,KAAAyM,KAAO,IAAIC,EAAAA,UAAU,IAkBrBC,GAAAtH,IAAArF,MAAwB,mBAChBgG,EAA4B,GAyBlC,OAxBAJ,EAAKgH,WAAW5G,QAAQgD,QAAO,SAAAzH,GAAC,IAAAuG,EAAI,QAAS,QAATA,EAACvG,EAAEiL,cAAM,IAAA1E,OAAA,EAAAA,EAAEsD,aAAUyB,SAAQ,SAAA/D,WAC3C,UAAhBA,EAAOS,OAGS,aAAhBT,EAAOS,KASS,iBAAhBT,EAAOS,KASXvD,EAAQ7B,KAAK2E,GARI,QAAfjB,EAAAiB,EAAOgE,gBAAQ,IAAAjF,GAAAA,EAAEmB,QAAO,SAAAzH,GAAC,IAAAuG,EAAI,QAAS,QAATA,EAACvG,EAAEiL,cAAM,IAAA1E,OAAA,EAAAA,EAAEsD,aAAUyB,SAAQ,SAAAE,GAC/B,UAArBA,EAAYxD,MAGhBvD,EAAQ7B,KAAK4I,MAbA,QAAfjF,EAAAgB,EAAOgE,gBAAQ,IAAAhF,GAAAA,EAAEkB,QAAO,SAAAzH,GAAC,IAAAuG,EAAI,QAAS,QAATA,EAACvG,EAAEiL,cAAM,IAAA1E,OAAA,EAAAA,EAAEsD,aAAUyB,SAAQ,SAAAE,GAC/B,UAArBA,EAAYxD,MAGhBvD,EAAQ7B,KAAK4I,UAeZnI,GAAIoB,GAA4C,QAA/B6B,EAAsB,QAAtBC,EAAAlC,EAAKgH,WAAWJ,cAAM,IAAA1E,OAAA,EAAAA,EAAE9B,eAAO,IAAA6B,OAAA,EAAAA,EAAEmB,QAAO,SAAAzH,GAAC,IAAAuG,EAAI,QAAS,QAATA,EAACvG,EAAEiL,cAAM,IAAA1E,OAAA,EAAAA,EAAEsD,eAAa,IAAK4B,KAAI,SAAAzL,GAAK,MAAA,CACzGwH,MAAOxH,EAAEwH,MACTkE,MAAO1L,EAAE0L,MACTC,YAAa3L,EAAE2L,YACfC,MAAO5L,EAAE4L,aAIbC,GAAA/H,IAAArF,MAAuB,qBACrB,OAAsC,QAA/BiJ,EAAuB,QAAvBpB,EAAe,QAAfC,EAAAlC,EAAKgH,kBAAU,IAAA9E,OAAA,EAAAA,EAAE0E,cAAM,IAAA3E,OAAA,EAAAA,EAAEuE,cAAM,IAAAnD,OAAA,EAAAA,EAAED,QAAO,SAAAzH,GAC7C,IAAM8L,EAAa9L,EAAE8L,WACrB,MAA4B,mBAAxB,EACKA,IAEFA,OACH,MAiBRrN,KAAAyG,KAAO,WAAA,OAAA3E,EAAA8D,OAAA,OAAA,GAAA,+CACL,OAAK5F,KAAKwH,KAIiB,IAAvBxH,KAAKoM,OAAOxK,SAAuC,QAA3BiG,EAAmB,QAAnBC,EAAI9H,KAAK4M,kBAAU,IAAA9E,OAAA,EAAAA,EAAE0E,cAAM,IAAA3E,OAAA,EAAAA,EAAEyF,iBACvDtN,KAAKuN,UAAUvN,KAAKoM,OAAO,GAAGoB,MAE9BxN,KAAKuN,UAAU,MAEjBvN,KAAKsM,SAAW,GAChBtM,KAAK6G,MAAMJ,OACXzG,KAAK+L,IAAI0B,sBAVPzN,KAAK0N,gBACL,CAAA,WAYJ1N,KAAA0N,cAAgB,SAACC,QAAA,IAAAA,IAAAA,GAAA,GACf/H,EAAK4G,OAAOxF,KAAK,CACf4G,KAAM,KACN5H,QAASJ,EAAKI,QACd2H,MAAKA,KAKT3N,KAAAuN,UAAY,SAAOM,eAAA,IAAAA,IAAAA,EAAA,6FAEJ,OADb7N,KAAK8N,cAAgB9N,KAAKoM,OAAO2B,MAAK,SAAAxM,GAAK,OAAAA,EAAEiM,OAASK,KACtDxD,EAAArK,KAAa,CAAA,EAAMA,KAAKiM,cAAc+B,cAAc,CAClDxG,IAAKxH,KAAKwH,IACVqG,MAAKA,mBAFPxD,EAAKkC,MAAQ0B,EAAA3K,mBAMf4K,GAAA7I,IAAArF,MAAgB,SAAOmO,GAAiB,OAAArM,EAAA8D,OAAA,OAAA,GAAA,iGAChCwI,EAIA,IACFnN,MAAMoN,QAA+B,QAAxBnF,EAAgB,QAAhBD,EAACjJ,KAAK4M,kBAAU,IAAA3D,OAAA,EAAAA,EAAEuD,cAAM,IAAAtD,OAAA,EAAAA,EAAEkF,QAAvC,MAAA,CAAA,EAAA,2CACkB/D,EAAAhG,GAAArE,KAAK4M,WAAWJ,OAAO4B,QAAMH,EAAA5D,EAAA5H,6CAAtC6L,EAAKL,EAAA1L,OACJgM,MAAQD,EAAME,OAASF,EAAMG,OACjCxN,MAAMoN,QAAQC,EAAME,QACtBJ,EAAOjK,KAAK,CACVoK,KAAMD,EAAMC,KACZC,MAAOF,EAAME,MACbC,OAAQH,EAAMG,gBAJd,CAAA,EAAA,GADF,CAAA,EAAA,UAUS,OAFTC,GAAAC,EAAAP,GAAOjK,QACLoK,KAAMD,EAAMC,MACL,CAAA,EAAMD,EAAME,gBAFrBE,EAAA5L,MAAA6L,EAAA,EAEEC,EAAAJ,MAAOK,EAAAvL,OACPsL,EAAAH,OAAQH,EAAMG,8MAMjB,MAAA,CAAA,EAAMzO,KAAKiM,cAAc6C,iBAAiB,CAC/CX,SAAUA,IAAmC,QAA3BxE,EAAmB,QAAnBL,EAAItJ,KAAK4M,kBAAU,IAAAtD,OAAA,EAAAA,EAAEkD,cAAM,IAAA7C,OAAA,EAAAA,EAAEwE,UAC/CnI,QAAShG,KAAKgG,QACdoI,OAAMA,aAHR,MAAA,CAAA,EAAOS,EAAAvL,kBAOTtD,KAAA8O,iBAAmB,WAAA,OAAAhN,EAAA8D,OAAA,OAAA,GAAA,wEAEF,OADf5F,KAAKgM,eAAe+C,QACL,CAAA,EAAMhK,GAAA/E,KAAAkO,IAAA9M,KAAApB,MAAqBgP,QAAQhP,KAAKgM,eAAeiD,qBAClEtM,OADEA,EAAS0H,EAAA/G,aACL,EAANX,EAAQuM,WACVlP,KAAKiM,cAAckD,SAASxM,EAAOuM,WAAoC,QAAvBtF,EAAe,QAAfF,EAAA1J,KAAK4M,kBAAU,IAAAlD,OAAA,EAAAA,EAAE8C,cAAM,IAAA5C,OAAA,EAAAA,EAAEuE,WAAYiB,GAAI,qBAI7FpP,KAAAqP,0BAA4B,SAAOlB,GAAiB,OAAArM,EAAA8D,OAAA,OAAA,GAAA,8GAC5CwI,EAIA,IACFnN,MAAMoN,QAA+B,QAAxBpE,EAAgB,QAAhBR,EAACzJ,KAAK4M,kBAAU,IAAAnD,OAAA,EAAAA,EAAE+C,cAAM,IAAAvC,OAAA,EAAAA,EAAEmE,QAAvC,MAAA,CAAA,EAAA,gDACyC,UAAR,UAAfpO,KAAK4M,kBAAU,IAAA5C,OAAA,EAAAA,EAAEwC,cAAM,IAAAtC,OAAA,EAAAA,EAAEkE,QAAMH,EAAA5D,EAAA5H,6CAAxC6L,EAAKL,EAAA1L,OACJgM,MAAQD,EAAME,OAASF,EAAMG,OACjCxN,MAAMoN,QAAQC,EAAME,QACtBJ,EAAOjK,KAAK,CACVoK,KAAMD,EAAMC,KACZC,MAAOF,EAAME,MACbC,OAAQH,EAAMG,gBAJd,CAAA,EAAA,GADF,CAAA,EAAA,UAUS,OAFTC,GAAAC,EAAAP,GAAOjK,QACLoK,KAAMD,EAAMC,MACL,CAAA,EAAMD,EAAME,gBAFrBE,EAAA5L,MAAA6L,EAAA,EAEEC,EAAAJ,MAAOK,EAAAvL,OACPsL,EAAAH,OAAQH,EAAMG,8MAMjB,MAAA,CAAA,EAAMzO,KAAKiM,cAAcqD,uBAAuB,CACrD9H,IAAKxH,KAAKwH,IACVL,SAAU,CACRgH,SAAUA,IAAmC,QAA3BhE,EAAmB,QAAnBJ,EAAI/J,KAAK4M,kBAAU,IAAA7C,OAAA,EAAAA,EAAEyC,cAAM,IAAArC,OAAA,EAAAA,EAAEgE,UAC/CnI,QAAShG,KAAKgG,QAAQgD,QAAO,SAAAzH,GAAK,OAAAqE,EAAK0G,SAAS/K,EAAEwH,UAClDqF,OAAMA,GAERP,MAAyB,QAApBtD,EAAEvK,KAAK8N,qBAAa,IAAAvD,OAAA,EAAAA,EAAEiD,gBAP7B,MAAA,CAAA,EAAOqB,EAAAvL,gBAWTtD,KAAAuP,SAAW,SAAC3B,GACVhI,EAAK4G,OAAOxF,KAAK,CACf4G,KAAIA,EACJ5H,QAASJ,EAAKI,UAEhBJ,EAAKmG,IAAI0B,iBAGXzN,KAAAwP,eAAiB,WAAA,OAAA1N,EAAA8D,OAAA,OAAA,GAAA,0EACF,MAAA,CAAA,EAAM5F,KAAKiM,cAAcuD,eAAe,CACnDhI,IAAKxH,KAAKwH,IACVqG,MAAyB,QAApB4B,EAAEzP,KAAK8N,qBAAa,IAAA2B,OAAA,EAAAA,EAAEjC,KAC3BkC,UAAkC,QAAzBhF,EAAiB,QAAjBD,EAAEzK,KAAK4M,kBAAU,IAAAnC,OAAA,EAAAA,EAAE+B,cAAM,IAAA9B,OAAA,EAAAA,EAAEiF,4BAHhC/B,EAAOvD,EAAA/G,OAKbtD,KAAKuM,MAAK3H,GAAO5E,KAAKuM,MAAK,CAAEqB,IAC7B5N,KAAK+L,IAAI0B,4BAGXzN,KAAA4P,WAAa,SAAChC,GACZhI,EAAKsG,cAAc2D,QAAQjK,EAAKuG,iBAAiB2D,UAAU,oBAAoBjN,MAAK,iBAClF+C,EAAKqG,cAAc2D,WAAW,CAC5BpI,IAAK5B,EAAK4B,IACV2G,SAAUP,EAAKO,SACfN,OAAyB,QAAlB/F,EAAAlC,EAAKkI,qBAAa,IAAAhG,OAAA,EAAAA,EAAE0F,OAAQ,OAErC,IAAMuC,EAAMnK,EAAK2G,MAAM9K,QAAQmM,GAC/BhI,EAAK2G,MAAMyD,OAAOD,EAAK,GACvBnK,EAAK2G,MAAK3H,GAAOgB,EAAK2G,OACtB3G,EAAKmG,IAAI0B,oBAIbzN,KAAAiQ,eAAiB,WAAA,OAAAnO,EAAA8D,OAAA,OAAA,GAAA,2FAEf,GADQkK,EAAc9P,KAAKmM,iBAAgB2D,UACvC9P,KAAKyM,KAAKyD,QAEZ,OADAlQ,KAAKyM,KAAK0D,mBACV,CAAA,GAEF,IAAKnQ,KAAKgG,QAAQoK,MAAK,SAAA7O,GAAK,OAAAqE,EAAK0G,SAAS/K,EAAEwH,UAE1C,OADA/I,KAAKkM,cAAcmE,OAAOC,QAAQR,EAAU,0BAC5C,CAAA,GAEF9P,KAAKgM,eAAe+C,QACdZ,EAAWnO,KAAKuQ,aAAe,yBAEnC,8BAAuC,QAAvCnH,EAA2B,QAA3BP,EAAmB,QAAnBD,EAAI5I,KAAK4M,kBAAU,IAAAhE,OAAA,EAAAA,EAAE4D,cAAM,IAAA3D,OAAA,EAAAA,EAAE8G,kBAAU,IAAAvG,OAAA,EAAAA,EAAAhI,KAAAyH,EAAGsF,KACxCnO,KAAKkM,cAAcmE,OAAOC,QAA+B,QAAxBlG,EAAgB,QAAhBf,EAACrJ,KAAK4M,kBAAU,IAAAvD,OAAA,EAAAA,EAAEmD,cAAM,IAAApC,OAAA,EAAAA,EAAEuF,WAAWxB,IACtE,CAAA,IAEa,CAAA,EAAMnO,KAAKqP,0BAA0BlB,kBAChDxL,OADEA,EAAS0H,EAAA/G,aACL,EAANX,EAAQuM,YACJtB,EAAqB,CACzBsB,SAAUvM,EAAOuM,SACjBf,SAAUxL,EAAOwL,UAEnBnO,KAAKuP,SAAS3B,GACd5N,KAAKuQ,aAAe,KACpBvQ,KAAKqM,gBAAiB,EACtBrM,KAAKuM,MAAK3H,GAAO5E,KAAKuM,MAAK,CAAEqB,IAC7B5N,KAAK+L,IAAI0B,qCAGXzN,KAAKgM,eAAeiD,oCAIxBjP,KAAAwQ,cAAgB,qBACd5K,EAAK2H,UAAsD,QAA7CtE,EAAiC,QAAjCpB,EAAgB,QAAhBC,EAAClC,EAAK6K,kBAAU,IAAA3I,OAAA,EAAAA,EAAE4I,uBAAe,IAAA7I,OAAA,EAAAA,EAAEyE,SAAS,UAAC,IAAArD,OAAA,EAAAA,EAAG1G,QAGhEvC,KAAA2Q,sBAAwB,SAACjQ,GACf,IAAAoP,EAAclK,EAAKuG,iBAAgB2D,UAE3C,OAAKpP,EAGDA,EAAIkB,OAAS,GACRkO,EAAU,6BALL,4CAOHc,KAAKlQ,GAGT,KAFEoP,EAAU,2DANVA,EAAU,2CAhQrBvP,OAAAC,eAAyBsL,EAAArL,UAAA,cAAW,KAApC,SAAqCoQ,GACnC7Q,KAAK4M,WAAaiE,EAClB7Q,KAAKgG,QAAUjB,GAAA/E,KAAA2M,IAAAvL,KAAApB,MACfA,KAAKoM,OAASrH,GAAA/E,KAAAoN,IAAAhM,KAAApB,uCAEhBO,OAAAC,eAAYsL,EAAArL,UAAA,MAAG,KAAf,uBAEE,OAA4B,QAAxBoH,EAAgB,QAAhBC,EAAC9H,KAAK4M,kBAAU,IAAA9E,OAAA,EAAAA,EAAE0E,cAAM,IAAA3E,OAAA,EAAAA,EAAEL,KAGvBO,EAAAA,QAAK,CACVN,OALa,uCAMbD,IAA4B,QAAzB0B,EAAiB,QAAjBD,EAAEjJ,KAAK4M,kBAAU,IAAA3D,OAAA,EAAAA,EAAEuD,cAAM,IAAAtD,OAAA,EAAAA,EAAE1B,MAJvB,sCA4DXsE,EAAArL,UAAAqQ,SAAA,aAGAhF,EAAArL,UAAA4K,gBAAA,oFA9FDnE,EAAAA,UAAShH,KAAA,CAAC,CACTC,SAAU,kBACVgH,SAAA,42XAzBiF4J,EAAAA,yBASjFC,EAAAA,wBAUqBC,EAAAA,uBAdrBC,EAAAA,uBAQAC,EAAAA,sDAqBC/J,EAAAA,UAASlH,KAAA,CAAC,6BACVkH,EAAAA,UAASlH,KAAA,CAAC,8BAQVmH,EAAAA,4BAGAhH,EAAAA,MAAKH,KAAA,CAAC,8BCxBP,SACUoH,EACyC8J,GAFnD,IAAAxL,EAAA5F,KACUA,KAAAsH,eAAAA,EACyCtH,KAAAoR,0BAAAA,EAZnDC,GAAAhM,IAAArF,KAAW,CACTsR,iBAAkB,qBAClBC,OAAQ,WACRC,eAAgB,yBAChBC,QAAS,YACTC,UAAW,gBAEbC,GAAAtM,IAAArF,KAEI,IAMJA,KAAA4R,KAAO,SAACpK,EAAaoF,GACnB,IAAK7H,GAAAa,EAAA+L,IAAYnK,GAAM,CACrB,IAAMqK,EAAU,IAAItJ,EAAAA,QACpBxD,GAAAa,EAAA+L,IAAYnK,GAAO,CACjBsK,KAAM/M,GAAAa,EAAAmM,IAAA3Q,KAAAwE,EAAWgH,EAAYiF,GAC7B1M,IAAKJ,GAAAa,EAAAoM,IAAA5Q,KAAAwE,EAAUgH,GACfvH,IAAK,SAACuC,GAGJ,OAFAA,EAAgB7C,GAAAa,EAAAqM,IAAA7Q,KAAAwE,EAAUgH,EAAYhF,GACtCiK,EAAQpP,KAAIlC,OAAA2R,OAAA,GAAMtK,IACXA,GAETuK,OAAQ,WACNpN,GAAAa,EAAAwM,IAAAhR,KAAAwE,EAAagH,EAAb7H,GACA8M,EAAQpP,KAAKsC,GAAAa,EAAAyM,IAAAjR,KAAAwE,EAAcgH,KAE7B0F,SAAUT,GAGd,OAAO9M,GAAAa,EAAA+L,IAAYnK,IAGrB+K,GAAAlN,IAAArF,MAAU,SAAC4M,WAET,OAAuB,QAAnB9E,EAAC8E,MAAAA,OAAU,EAAVA,EAAY4F,cAAM,IAAA1K,OAAA,EAAAA,EAAEN,OAAQoF,MAAAA,OAAU,EAAVA,EAAYpF,KAGtCO,EAAAA,QAAK,CACVN,OALa,uCAMbD,KAAuB,QAAlBK,EAAA+E,MAAAA,OAAU,EAAVA,EAAY4F,cAAM,IAAA3K,OAAA,EAAAA,EAAEL,QAAQoF,MAAAA,OAAU,EAAVA,EAAYpF,OAJtC,QAQX6K,GAAAhN,IAAArF,MAAW,SAAC4M,SAWV,MAAO,CACL5G,SAX0D,QAAnB8B,EAAA8E,MAAAA,OAAU,EAAVA,EAAY5G,eAAO,IAAA8B,OAAA,EAAAA,EAAEkB,QAAO,SAAAzH,GAAK,OAACA,EAAEkR,UAAQzF,KAAI,SAAAzL,GAAK,MAAA,CAC5FmR,OAAQ,CACN3J,MAAOxH,EAAEwH,MACTkE,MAAO1L,EAAE0L,MACTE,MAAO5L,EAAE4L,MACTwF,UAAWpR,EAAEoR,WAEfA,UAAWpR,EAAEoR,UACbC,OAAO,QACF,OAMTb,GAAA1M,IAAArF,MAAQ,SAAC4M,EAAkCiG,GACzC,OAAO,WAAA,OAAA/Q,EAAA8D,OAAA,OAAA,GAAA,oEAEiB,MAAA,CAAA,EADVb,GAAA/E,KAAAgS,IAAA5Q,KAAApB,KAAU4M,EACMzH,kBAAtByC,EAAgBqB,EAAA3F,OACtBuP,EAAQpQ,KAAIlC,OAAA2R,OAAA,GAAMtK,mBAItBoK,GAAA3M,IAAArF,MAAO,SAAC4M,GACN,OAAO,WAAA,OAAA9K,EAAA8D,OAAA,OAAA,GAAA,gFAEL,OADM4B,EAAMzC,GAAA/E,KAAAuS,IAAAnR,KAAApB,KAAa4M,KAIjB5G,EAAoB4G,EAAU5G,QAArBwM,EAAW5F,EAAU4F,OAChCvJ,EAAkBjJ,KAAKsH,eAAelD,OAA4BoD,EAAK,CAC3E+B,KAAMiJ,MAAAA,OAAM,EAANA,EAAQM,QACd5S,KAAMsS,MAAAA,OAAM,EAANA,EAAQtS,OAFRiF,EAAG8D,EAAA9D,IAAEgN,EAAMlJ,EAAAkJ,OAIwB,CAAA,EAAMhN,IAAM4N,OAAM,iBAP3D,CAAA,EAAOhO,GAAA/E,KAAAqS,IAAAjR,KAAApB,KAAc4M,WAQvB,OAAKhF,OADCA,EAAqCsB,EAAA5F,aACzB,EAAbsE,EAAe5B,UAIpB4B,EAAc5B,QAAU4B,EAAc5B,QACnCgD,QAAO,SAAAF,GAAU,OAAAA,EAAOkK,mBAAqBhN,EAAQoK,MAAK,SAAA7O,GAAK,OAACA,EAAEkR,QAAUlR,EAAEwH,QAAUD,EAAO4J,OAAO3J,YAEzG/C,EAAQ6G,SAAQ,SAAA/D,GACd,IAAMmK,EAAMrL,EAAc5B,QAAQ+H,MAAK,SAAAxM,GAAC,IAAAuG,EAAI,OAAQ,QAARA,EAAAvG,EAAEmR,cAAM,IAAA5K,OAAA,EAAAA,EAAEiB,SAAUD,EAAOC,SAClEkK,EAYHA,EAAIP,OAAS,CACX3J,MAAOD,EAAOC,MACdkE,MAAOnE,EAAOmE,MACdE,MAAOrE,EAAOqE,MACdwF,UAAW7J,EAAO6J,WAfpB/K,EAAc5B,QAAQ7B,KAAK,CACzBuO,OAAQ,CACN3J,MAAOD,EAAOC,MACdkE,MAAOnE,EAAOmE,MACdE,MAAOrE,EAAOqE,MACdwF,UAAW7J,EAAO6J,WAEpBA,UAAW7J,EAAO6J,UAClBC,OAAO,OAWb,CAAA,EAAOhL,KA5BLuK,IAASY,MAAMG,QAAQvO,OACvB,CAAA,EAAOI,GAAA/E,KAAAqS,IAAAjR,KAAApB,KAAc4M,gBA+B3BqF,GAAA5M,IAAArF,MAAO,SAAC4M,EAAkChF,WAClCJ,EAAMzC,GAAAa,EAAA2M,IAAAnR,KAAAwE,EAAagH,GAQzB,OAPIpF,IAKFnC,EAJgBO,EAAK0B,eAAelD,OAA4BoD,EAAK,CACnE+B,KAAwB,QAApBzB,EAAE8E,MAAAA,OAAU,EAAVA,EAAY4F,cAAM,IAAA1K,OAAA,EAAAA,EAAEgL,QAC1B5S,KAAwB,QAApB2H,EAAE+E,MAAAA,OAAU,EAAVA,EAAY4F,cAAM,IAAA3K,OAAA,EAAAA,EAAE3H,OAC1BmF,KACEuC,GAEClB,KAAKC,MAAMD,KAAKE,UAAUgB,OAGnCwK,GAAA/M,IAAArF,MAAU,SAAC4M,GACT,OAAO,mBACCpF,EAAMzC,GAAAa,EAAA2M,IAAAnR,KAAAwE,EAAagH,GACrBpF,IAKF2K,EAJmBvM,EAAK0B,eAAelD,OAA4BoD,EAAK,CACtE+B,KAAwB,QAApBzB,EAAE8E,MAAAA,OAAU,EAAVA,EAAY4F,cAAM,IAAA1K,OAAA,EAAAA,EAAEgL,QAC1B5S,KAAwB,QAApB2H,EAAE+E,MAAAA,OAAU,EAAVA,EAAY4F,cAAM,IAAA3K,OAAA,EAAAA,EAAE3H,OAC1BiS,cAyDRnS,KAAAmT,4BAA8B,SAC5BvL,EACAgF,EACAwG,SACMzQ,EAAoC,CACxCmG,OAAQ,GACRuK,YAAa,GACbC,aAAc,GACdC,cAAe,GACfC,aAAc,GACdC,cAAe,GACfC,iBAAkB,GAClBC,iBAAkB,GAClBC,gBAAgB,GAEZ3K,EAAkC2D,GAAc,GAA9CiH,EAAS5K,EAAA4K,UAAEC,EAAQ7K,EAAA6K,SAAEC,EAAM9K,EAAA8K,OAgGnC,QA/FIA,MAAAA,OAAM,EAANA,EAAQC,UAA6B,YAAjBD,MAAAA,OAAM,EAANA,EAAQxK,QAAqBwK,MAAAA,OAAM,EAANA,EAAQE,YAAgC,WAAjBF,MAAAA,OAAM,EAANA,EAAQxK,QAAoBwK,MAAAA,OAAM,EAANA,EAAQG,aAC9GvR,EAAO6Q,aAAarP,KAAKY,GAAAa,EAAAyL,IAAcC,kBACvC3O,EAAO+Q,iBAAiBvP,KAAKY,GAAAa,EAAAyL,IAAcC,oBAEzCuC,MAAAA,OAAS,EAATA,EAAWM,WACbxR,EAAO6Q,aAAarP,KAAKY,GAAAa,EAAAyL,IAAcK,WACvC/O,EAAO+Q,iBAAiBvP,KAAKY,GAAAa,EAAAyL,IAAcK,cAEzCqC,MAAAA,OAAM,EAANA,EAAQC,UAA6B,YAAjBD,MAAAA,OAAM,EAANA,EAAQxK,QAAqBwK,MAAAA,OAAM,EAANA,EAAQE,YAAgC,WAAjBF,MAAAA,OAAM,EAANA,EAAQxK,QAAoBwK,MAAAA,OAAM,EAANA,EAAQG,WAA+B,WAAjBH,MAAAA,OAAM,EAANA,EAAQxK,QAAoBwK,MAAAA,OAAM,EAANA,EAAQG,aAChKvR,EAAO6Q,aAAarP,KAAKY,GAAAa,EAAAyL,IAAcE,QACvC5O,EAAO+Q,iBAAiBvP,KAAKY,GAAAa,EAAAyL,IAAcE,UAEzCuC,MAAAA,OAAQ,EAARA,EAAUlS,UACZe,EAAO6Q,aAAarP,KAAKY,GAAAa,EAAAyL,IAAcI,SACvC9O,EAAO+Q,iBAAiBvP,KAAKY,GAAAa,EAAAyL,IAAcI,UAEvB,QAAtB3J,EAAAF,MAAAA,OAAa,EAAbA,EAAe5B,eAAO,IAAA8B,GAAAA,EAAEkB,QAAO,SAAAiK,GAAO,OAACA,EAAIN,aAAW9F,SAAQ,SAAAoG,iBAC5D,GAAIA,EAAID,kBAAmB,CACzBrQ,EAAOmG,OAAOmK,EAAIP,OAAO3J,OAAS,CAChCkE,MAAOgG,EAAIhG,OAASgG,EAAIP,OAAOzF,MAC/BE,MAAO8F,EAAI9F,OAAS8F,EAAIP,OAAOvF,OAE7B8F,EAAIL,QACNjQ,EAAO0Q,YAAYJ,EAAIP,OAAO3J,OAAS,CACrCkE,MAAOgG,EAAIhG,OAASgG,EAAIP,OAAOzF,MAC/BE,MAAO8F,EAAI9F,OAAS8F,EAAIP,OAAOvF,QAGnC,IAAMiH,EAAwC,CAC5C7K,KAAM,WACNR,MAAOkK,EAAIP,OAAO3J,MAClBkE,MAAOgG,EAAIP,OAAOzF,MAClBH,SAAU,QAEZ,IAAwB,IAAAxD,EAAAjF,GAAAuI,MAAAA,OAAU,EAAVA,EAAY5G,QAAQgD,QAAO,SAAAqL,GAAM,OAAApB,EAAIqB,iBAAiBC,SAASF,EAAGtL,WAAMY,EAAAL,EAAA7G,QAAAkH,EAAA/G,KAAA+G,EAAAL,EAAA7G,OAAG,CAA9F,IAAM+R,EAAS7K,EAAApH,MAClB,GAAuB,aAAnBiS,EAAUjL,MAA0C,iBAAnBiL,EAAUjL,SAC7C,IAA0B,IAAAG,GAAA+K,OAAA,EAAApQ,GAAAmQ,EAAU1H,WAAQlD,EAAAF,EAAAjH,QAAAmH,EAAAhH,KAAAgH,EAAAF,EAAAjH,OAAE,CAAzC,IAAMsK,EAAWnD,EAAArH,MACpB6R,EAAgBtH,SAAS3I,KAAI5D,OAAA2R,OAAA3R,OAAA2R,OAAA,GACxBnF,GAAW,CACd2H,QAAS,4GAIbN,EAAgBtH,SAAS3I,KAAI5D,OAAA2R,OAAA3R,OAAA2R,OAAA,GACxBsC,GAAS,CACZE,QAAS,uGAYf,OAPA/R,EAAO2Q,aAAanP,KAAI5D,OAAA2R,OAAA3R,OAAA2R,OAAA,GACnBkC,GAAe,CAClBnH,MAAOgG,EAAIhG,OAASgG,EAAIP,OAAOzF,MAC/BE,MAAO8F,EAAI9F,OAAS8F,EAAIP,OAAOvF,SAEjCxK,EAAO6Q,aAAarP,KAAK8O,EAAIP,OAAO3J,YACpCpG,EAAO+Q,iBAAiBvP,KAAK8O,EAAIP,OAAO3J,OAG1C,IAAMD,EAAS8D,MAAAA,OAAU,EAAVA,EAAY5G,QAAQ+H,MAAK,SAAAxM,GAAK,OAAAA,EAAEwH,QAAUkK,EAAIP,OAAO3J,SAChED,IACFnG,EAAOmG,OAAOmK,EAAIP,OAAO3J,OAAS,CAChCkE,MAAOgG,EAAIhG,OAASgG,EAAIP,OAAOzF,MAC/BE,MAAO8F,EAAI9F,OAAS8F,EAAIP,OAAOvF,OAE7B8F,EAAIL,QACNjQ,EAAO0Q,YAAYJ,EAAIP,OAAO3J,OAAS,CACrCkE,MAAOgG,EAAIhG,OAASgG,EAAIP,OAAOzF,MAC/BE,MAAO8F,EAAI9F,OAAS8F,EAAIP,OAAOvF,QAGnCxK,EAAO2Q,aAAanP,KAAI5D,OAAA2R,OAAA3R,OAAA2R,OAAA,GACnBpJ,GAAM,CACTmE,MAAOgG,EAAIhG,OAASgG,EAAIP,OAAOzF,MAC/BE,MAAO8F,EAAI9F,OAAS8F,EAAIP,OAAOvF,SAEjCxK,EAAO6Q,aAAarP,KAAK8O,EAAIP,OAAO3J,OAChB,iBAAhBD,EAAOS,KACM,QAAfzB,EAAAgB,EAAOgE,gBAAQ,IAAAhF,GAAAA,EAAE+E,SAAQ,SAAAE,GACvBpK,EAAO4Q,cAAcpP,KAAK4I,GAC1BpK,EAAO8Q,cAActP,KAAK4I,EAAYhE,OACtCpG,EAAO+Q,iBAAiBvP,KAAK4I,EAAYhE,UAG3CpG,EAAO+Q,iBAAiBvP,KAAK8O,EAAIP,OAAO3J,YAI1CqK,MAAAA,OAAgB,EAAhBA,EAAkBrT,eACpB4C,EAAO6Q,aAAarP,KAAKY,GAAAa,EAAAyL,IAAcG,gBACvC7O,EAAO+Q,iBAAiBvP,KAAKY,GAAAa,EAAAyL,IAAcG,iBAE7C7O,EAAOiR,eAAiBjR,EAAO8Q,cAAc7R,OAAS,EAEtDe,EAAOgR,iBAAmBhR,EAAO+Q,iBAAiB1K,QAAO,SAAAtI,GAAO,OAAAA,IAAQqE,GAAAa,EAAAyL,IAAcG,kBAC/E7O,iJAjTVqF,EAAAA,uDARQC,EAAAA,iDAsBJ0M,EAAAA,OAAMzU,KAAA,CAACuF,KAAoB,CAAA8D,KAAGqL,EAAAA,2ECRjC,SAAoBC,GAApB,IAAAjP,EAAA5F,KAAoBA,KAAA6U,eAAAA,EATpBtN,GAAAA,IAAAA,KAAU,wCACVoK,GAAAA,IAAAA,KAOI,IAGJ3R,KAAA8U,WAAa,SAAOhM,EAA8BtB,GAAW,OAAA1F,EAAA8D,OAAA,OAAA,GAAA,8EAC3D,MAAoB,WAAhBkD,EAAOS,OAAmC,QAAdzB,EAACgB,EAAO+H,cAAM,IAAA/I,OAAA,EAAAA,EAAE0G,SAAuB,QAAd3G,EAACiB,EAAO+H,cAAM,IAAAhJ,OAAA,EAAAA,EAAEkN,cAA4B,QAAd9L,EAACH,EAAO+H,cAAM,IAAA5H,OAAA,EAAAA,EAAE+L,eAMjGC,EAAUlN,EAAAA,QAAK,CACnBN,OAAM1C,GAAA/E,KAAAkV,IACNnM,MAAOD,EAAOC,MACdvB,IAAGA,IAEAzC,GAAA/E,KAAAmV,IAAYF,GAAb,CAAA,EAAA,IACEzG,EAAe,GACmB,mBAAb,QAArBtF,EAAQJ,EAAO+H,cAAM,IAAA3H,OAAA,EAAAA,EAAEsF,OAAvB,CAAA,EAAA,GACM,CAAA,EAAM1F,EAAO+H,OAAOrC,WAb9B,CAAA,EAAO,CACL4G,OAAQ,GACRC,IAAK,mBAWL7G,EAAQlF,EAAAhG,oBAERkL,EAAQ1F,EAAO+H,OAAOrC,uBAExBzJ,GAAA/E,KAAAmV,IAAYF,GAAW,CACrBG,OAAQ5G,EACR6G,IAAKrV,KAAK6U,eAAeS,cAAc9G,EAAO1F,EAAO+H,OAAOkE,8BAGhE,MAAA,CAAA,EAAOhQ,GAAA/E,KAAAmV,IAAYF,YAGrBjV,KAAAuV,UAAY,SAACzM,EAA8BtB,GACzC,IAAMyN,EAAUlN,EAAAA,QAAK,CACnBN,OAAM1C,GAAAa,EAAAsP,IACNnM,MAAOD,EAAOC,MACdvB,IAAGA,IAEL,OAAOzC,GAAAa,EAAAuP,IAAYF,IAAY,CAC7BG,OAAQ,GACRC,IAAK,yDAhDVrN,EAAAA,uDAFQwN,EAAAA,sCCyKP,SAAAC,EACU1J,EACyCnE,EACzC8N,EACAzJ,EACAC,EACAC,EACAwJ,GAPV,IAAA/P,EAAA5F,KACUA,KAAA+L,IAAAA,EACyC/L,KAAA4H,cAAAA,EACzC5H,KAAA0V,yBAAAA,EACA1V,KAAAiM,cAAAA,EACAjM,KAAAkM,cAAAA,EACAlM,KAAAmM,iBAAAA,EACAnM,KAAA2V,YAAAA,EAlHV3V,KAAAwH,IAAMoO,EAAAA,KAmCN5V,KAAA6V,WAAoB,GACpB7V,KAAAwO,MAA8B,GAC9BxO,KAAA8V,cAAqB,GAIrB9V,KAAA+V,WAAY,EAGZ/V,KAAAgW,mBAAoB,EACpBC,GAAA5Q,IAAArF,UAAA,GAaAkW,GAAA7Q,IAAArF,UAAA,GAsB6CA,KAAAmW,WAAa,IAAIC,EAAAA,UAC9DpW,KAAAqW,QAEI,GAG2CrW,KAAAsW,aAAe,IAAIF,EAAAA,UAClEpW,KAAAuW,UAEI,GACJvW,KAAAwW,WAAY,EAGmCxW,KAAAyW,aAAe,IAAIL,EAAAA,UAClEpW,KAAAmG,WAA6C,GAG7CnG,KAAAiG,aAEI,GAEJwC,GAAAA,IAAAA,KAAgB,IAAIC,EAAAA,cACpBgO,GAAArR,IAAArF,KAAiB,IAAIuG,EAAAA,cACrBvG,KAAA2W,aAAc,EACd3W,KAAA4W,aAAc,EACd5W,KAAA6W,YAAc,SAiCdC,GAAAzR,IAAArF,MAAe,mBACb4F,EAAKyQ,QAAU,OACf,IAAsB,IAAAzN,EAAAvE,GAAAuB,EAAKuQ,YAAUtN,EAAAD,EAAAnG,QAAAoG,EAAAjG,KAAAiG,EAAAD,EAAAnG,OAAE,CAAlC,IAAM4T,EAAOxN,EAAAtG,MACZ8T,EAAQU,oBACVnR,EAAKyQ,QAAQA,EAAQU,mBAAqBV,yGAKhDW,GAAA3R,IAAArF,MAAiB,mBACf4F,EAAKO,WAAa,OAClB,IAAwB,IAAAyC,EAAAvE,GAAAuB,EAAK6Q,cAAY5N,EAAAD,EAAAnG,QAAAoG,EAAAjG,KAAAiG,EAAAD,EAAAnG,OAAE,CAAtC,IAAM2D,EAASyC,EAAAtG,MAClBqD,EAAKO,WAAWhC,KAAKiC,yGAIzB6Q,GAAA5R,IAAArF,MAAiB,mBACf4F,EAAK2Q,UAAY,GACjB3Q,EAAK4Q,WAAY,MACjB,IAAwB,IAAA5N,EAAAvE,GAAAuB,EAAK0Q,cAAYzN,EAAAD,EAAAnG,QAAAoG,EAAAjG,KAAAiG,EAAAD,EAAAnG,OAAE,CAAtC,IAAM8T,EAAS1N,EAAAtG,MACdgU,EAAUW,sBACZtR,EAAK4Q,WAAY,EACjB5Q,EAAK2Q,UAAUA,EAAUW,qBAAuBX,yGAKtDY,GAAA9R,IAAArF,MAAoB,SAACoX,EAAoB7R,qBACvC,MAAO,CACL8R,kBAAyC,QAAvBxP,EAAe,QAAfC,EAAAlC,EAAKgH,kBAAU,IAAA9E,OAAA,EAAAA,EAAEkB,cAAM,IAAAnB,OAAA,EAAAA,EAAE3B,cAAeN,EAAKK,aAA8B,QAAlBgD,EAAGrD,EAAK0R,kBAAU,IAAArO,OAAA,EAAAA,EAAEhD,eAAiB,GAChHsR,mBAAkC,QAAfrO,EAAAtD,EAAK0R,kBAAU,IAAApO,OAAA,EAAAA,EAAEpD,iBAAkB,GACtD0R,cAA6B,QAAflO,EAAA1D,EAAK0R,kBAAU,IAAAhO,OAAA,EAAAA,EAAElD,YAAa,GAC5CqR,SAAS,QAAA9N,EAAA5E,GAAAa,EAAAsQ,WAAA,IAAAvM,OAAA,EAAAA,EAAY+N,SAAU,GAC/BC,gBAAgB,QAAAjO,EAAA3E,GAAAa,EAAAsQ,WAAA,IAAAxM,OAAA,EAAAA,EAAYkO,YAAa,GACzCR,WAAUA,EACV7R,SAAQA,EACRsS,YAAY,MAIhBC,GAAAzS,IAAArF,MAAqB,SAAC6Q,qCAOpB,OANAA,EAAOkH,SAAW,CAChBtF,OAAwB,QAAlB3K,EAAE+I,MAAAA,OAAM,EAANA,EAAQkH,gBAAQ,IAAAjQ,OAAA,EAAAA,EAAE2K,OAC1BlN,SAA8E,QAAtEoE,EAA4B,QAA5BV,EAAkB,QAAlBpB,EAAEgJ,MAAAA,OAAM,EAANA,EAAQkH,gBAAQ,IAAAlQ,OAAA,EAAAA,EAAEtC,gBAAQ,IAAA0D,EAAAA,EAAgC,QAAhCK,EAAsB,QAAtBJ,EAAItD,EAAKgC,qBAAa,IAAAsB,OAAA,EAAAA,EAAE6O,gBAAQ,IAAAzO,OAAA,EAAAA,EAAE/D,gBAAQ,IAAAoE,EAAAA,EAAyC,QAAzCD,EAAIpE,UAAqC,IAAAoE,OAAA,EAAAA,EAAEnE,SACzHC,MAAqE,QAAhE0E,EAAyB,QAAzBT,EAAkB,QAAlBG,EAAEiH,MAAAA,OAAM,EAANA,EAAQkH,gBAAQ,IAAAnO,OAAA,EAAAA,EAAEpE,aAAK,IAAAiE,EAAAA,EAAgC,QAAhCO,EAAsB,QAAtBC,EAAIrE,EAAKgC,qBAAa,IAAAqC,OAAA,EAAAA,EAAE8N,gBAAQ,IAAA/N,OAAA,EAAAA,EAAExE,aAAK,IAAA0E,EAAAA,EAAyC,QAAzCH,EAAIzE,UAAqC,IAAAyE,OAAA,EAAAA,EAAEvE,MAChHwS,qBAA4D,QAAxCzN,EAAkB,QAAlBJ,EAAE0G,MAAAA,OAAM,EAANA,EAAQkH,gBAAQ,IAAA5N,OAAA,EAAAA,EAAE6N,4BAAoB,IAAAzN,GAAAA,GAEvDsG,KAGToH,GAAA5S,IAAArF,MAAe,SAAC6V,EAAmBqC,GACzB,IAAAlS,EAAYJ,EAAKgH,WAAU5G,QAC7BwI,EAAQqH,EAAW7M,QAAO,SAAA4B,eAC9B,IAAqB,IAAAuN,EAAA9T,GAAA2B,GAAOoS,EAAAD,EAAA1V,QAAA2V,EAAAxV,KAAAwV,EAAAD,EAAA1V,OAAE,CAAzB,IAAMqG,EAAMsP,EAAA7V,MACT8V,GAAuBH,EAAWb,gBAAgBvO,EAAOC,QAAU,IAAIuP,WAAWC,OAAOC,cACzFC,GAAuB7N,EAAK9B,EAAOC,QAAU,IAAIuP,WAAWC,OAAOC,cACzE,GAAIH,EAAa,CACf,IAAKI,EACH,OAAO,EAET,GAAoB,WAAhB3P,EAAOS,MACT,IAA0C,IAAtCkP,EAAYhX,QAAQ4W,GACtB,OAAO,OAEJ,GAAoB,WAAhBvP,EAAOS,KAAmB,CACnC,IAAMmP,GAAUL,EAAYM,QAAQ,KAAM,IAAIA,QAAQ,KAAM,IAAIA,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IACxFC,GAAUH,EAChB,GAAIC,GAAqB,IAAXA,EAAc,CAC1B,IAAKE,GAAqB,IAAXA,EACb,OAAO,EAET,GAAIP,EAAY5W,QAAQ,OAAS,GAAKmX,EAASF,EAC7C,OAAO,EACF,GAAIL,EAAY5W,QAAQ,OAAS,GAAKmX,EAASF,EACpD,OAAO,EACF,GAAIL,EAAY5W,QAAQ,MAAQ,GAAKmX,GAAUF,EACpD,OAAO,EACF,GAAIL,EAAY5W,QAAQ,MAAQ,GAAKmX,GAAUF,EACpD,OAAO,EACF,GAAIE,IAAWF,EACpB,OAAO,QAGN,GAAoB,SAAhB5P,EAAOS,KAAiB,CACjC,GAAoB,MAAhB8O,GAAuC,MAAhBI,GAAuC,SAAhBA,EAChD,OAAO,EACF,GAAoB,MAAhBJ,GAAuC,MAAhBI,GAAuC,UAAhBA,EACvD,OAAO,OAEJ,GAAoB,SAAhB3P,EAAOS,MAAmC,aAAhBT,EAAOS,KAAqB,CAC/D,IAAMsP,EAAOC,KAAKC,SAASV,EAAa,cAClCW,EAAW,IAAIF,KAAKD,GACpBI,EAAS,IAAIH,KAAKD,GAExB,GADAI,EAAOC,QAAQD,EAAOE,UAAY,GAC9B,IAAIL,KAAKL,GAAaW,UAAYJ,EAASI,WAAa,IAAIN,KAAKL,GAAaW,WAAaH,EAAOG,UACpG,OAAO,sGAKf,OAAO,KAGT,GAAIlB,EAAWT,SAAWS,EAAWP,eAAgB,CACnD,IAAM7O,EAAS9C,EAAQ+H,MAAK,SAAAxM,GAAK,OAAAA,EAAEwH,QAAUmP,EAAWT,WACxD,GAAI3O,EAAQ,CACF,IAAAuQ,EAAgBvQ,EAAMS,KAAhB+P,EAAUxQ,EAAMC,MAC9ByF,EAAM+K,MAAK,SAACC,EAAS/W,GACnB,GAAa,WAAT4W,EACF,OAAQG,EAAQF,IAAU,IAAM7W,EAAK6W,IAAU,GAEjD,GAAa,SAATD,GAA4B,aAATA,GAAgC,SAATA,EAG5C,OAFW,IAAIP,KAAKU,EAAQF,IAAU,IAAIF,UAC/B,IAAIN,KAAKU,EAAQF,IAAU,IAAIF,UAG5C,IAAMK,GAAMD,EAAQF,IAAU,IAAIhB,WAC5BoB,GAAMjX,EAAK6W,IAAU,IAAIhB,WAC/B,OAAImB,EAAKC,EACA,EAELD,EAAKC,GACC,EAEH,KAEyB,SAA9BxB,EAAWP,gBACbnJ,EAAMmL,WAIZ,MAAO,CACLnL,MAAOA,EAAMxF,QAAO,SAAC4B,EAAMgP,eACnBC,GAAY,QAAA/R,EAAA/C,GAAAa,EAAAqQ,WAAA,IAAAnO,OAAA,EAAAA,EAAiB+R,YAAa,EAC1CtU,GAAW,QAAAsC,EAAA9C,GAAAa,EAAAqQ,WAAA,IAAApO,OAAA,EAAAA,EAAiBtC,YAAqC,QAA7B2D,EAAmB,QAAnBD,EAAIrD,EAAKgH,kBAAU,IAAA3D,OAAA,EAAAA,EAAE8O,gBAAQ,IAAA7O,OAAA,EAAAA,EAAE3D,WAAY,GACrF,OAAOqU,GAASC,EAAYtU,GACvBqU,GAASC,EAAY,GAAKtU,KAEjCuU,MAAOtL,EAAM5M,WAIjBmY,GAAA1U,IAAArF,MAAa,qCAAmC,MAAA,CAC9CqX,kBAAyC,QAAvBxP,EAAe,QAAfC,EAAAlC,EAAKgH,kBAAU,IAAA9E,OAAA,EAAAA,EAAEkB,cAAM,IAAAnB,OAAA,EAAAA,EAAE3B,cAAeN,EAAKK,aAA8B,QAAlBgD,EAAGrD,EAAK0R,kBAAU,IAAArO,OAAA,EAAAA,EAAEhD,eAAiB,GAChHsR,mBAAkC,QAAfrO,EAAAtD,EAAK0R,kBAAU,IAAApO,OAAA,EAAAA,EAAEpD,iBAAkB,GACtD0R,cAA6B,QAAflO,EAAA1D,EAAK0R,kBAAU,IAAAhO,OAAA,EAAAA,EAAElD,YAAa,GAC5CqR,SAAS,QAAA9N,EAAA5E,GAAAa,EAAAsQ,WAAA,IAAAvM,OAAA,EAAAA,EAAY+N,SAAU,GAC/BC,gBAAgB,QAAAjO,EAAA3E,GAAAa,EAAAsQ,WAAA,IAAAxM,OAAA,EAAAA,EAAYkO,YAAa,GACzCR,YAAY,QAAAxN,EAAA7E,GAAAa,EAAAqQ,WAAA,IAAArM,OAAA,EAAAA,EAAiBiQ,YAAa,EAC1CtU,UAAU,QAAAkE,EAAA1E,GAAAa,EAAAqQ,WAAA,IAAAxM,OAAA,EAAAA,EAAiBlE,YAAqC,QAA7ByE,EAAmB,QAAnBC,EAAIrE,EAAKgH,kBAAU,IAAA3C,OAAA,EAAAA,EAAE8N,gBAAQ,IAAA/N,OAAA,EAAAA,EAAEzE,WAAY,OAGhFwM,GAAAA,IAAAA,MAAQ,SAAOiI,GAAsC,OAAAlY,EAAA8D,OAAA,OAAA,GAAA,0EACnD5F,KAAK+V,WAAY,kDAEc,WAAzB/V,KAAK4M,WAAWrD,KAAhB,CAAA,EAAA,IACE5G,EAAS3C,KAAK4M,WAAW4B,MAAMwL,GAC/BC,EAAAA,aAAatX,KACfA,EAASA,EAAOuX,aAEX,CAAA,EAAMvX,WAAb,MAAA,CAAA,EAAOiG,EAAAtF,sBAED6W,EAAUna,KAAK4M,WAAW4B,mBACTrM,SACrBuI,EAAA1K,KAAkB,CAAA,EAAMma,IADtB,CAAA,EAAA,iBACFzP,EAAKmL,WAAajN,EAAAtF,oBAElBtD,KAAK6V,WAAasE,mBAEpB,MAAA,CAAA,EAAOpV,GAAA/E,KAAAiY,IAAA7W,KAAApB,KAAkBA,KAAK6V,WAAYmE,iDAG5Cha,KAAKkM,cAAckO,OAAOzV,MAAM0V,wBAEhCra,KAAK+V,WAAY,EACjB/V,KAAK+L,IAAI0B,gDAIb6M,GAAAjV,IAAArF,MAAU,SAAOE,GAAqC,OAAA4B,EAAA8D,OAAA,OAAA,GAAA,wEAKpD,OAJA5F,KAAKwO,OAAQtO,MAAAA,OAAI,EAAJA,EAAMsO,QAAS,GAC5BxO,KAAK8Z,OAAQ5Z,MAAAA,OAAI,EAAJA,EAAM4Z,QAAS,EAE5B9Z,KAAKwO,MAAM3B,SAAQ,SAAAjC,GAAQ,OAAAA,EAAK2P,WAAUha,OAAA2R,OAAA,GAAQtH,MAClD,CAAA,EAAuC,QAAvC3B,EAA6B,QAA7BpB,EAAqB,QAArBC,EAAM9H,KAAK4M,kBAAU,IAAA9E,OAAA,EAAAA,EAAE0S,cAAM,IAAA3S,OAAA,EAAAA,EAAE4S,gBAAQ,IAAAxR,OAAA,EAAAA,EAAA7H,KAAAyG,EAAG7H,KAAKwO,sBAA/C9D,EAAApH,OACAtD,KAAK4W,YAAc5W,KAAKwO,MAAMkM,OAAM,SAAAnZ,GAAK,OAAAA,EAAEoZ,cAC3C5V,GAAA/E,KAAA4a,IAAAxZ,KAAApB,oBAGFA,KAAAwa,OAAS,WAAA,OAAA1Y,EAAA8D,OAAA,OAAA,GAAA,oEACM,MAAA,CAAA,EAAMb,GAAA/E,KAAA6a,IAAAzZ,KAAApB,KAAW+E,GAAA/E,KAAA+Z,IAAA3Y,KAAApB,sBAAxB8a,EAAOpQ,EAAApH,OACbyB,GAAA/E,KAAAsa,IAAAlZ,KAAApB,KAAa8a,eAGfC,GAAA1V,IAAArF,MAAiB,SAAOoX,EAAwB7R,eAAxB,IAAA6R,IAAAA,EAAA,QAAwB,IAAA7R,IAAAA,EAAA,6GACpB,UAAtBvF,KAAK4M,WAAWJ,cAAM,IAAAtD,OAAA,EAAAA,EAAEsF,QAEtB7L,EAA+B,QAAzB2G,EAAGtJ,KAAK4M,WAAWJ,cAAM,IAAAlD,OAAA,EAAAA,EAAEkF,MAAMzJ,GAAA/E,KAAAmX,IAAA/V,KAAApB,KAAuBoX,EAAY7R,IAC1EtE,MAAMoN,QAAQ1L,GAChB,CAAA,EAAOA,IAELsX,EAAAA,aAAoBtX,KACtBA,EAASA,EAAOuX,aAEdD,EAAAA,aAA8CtX,KAChDA,EAASA,EAAOuX,aAEX,CAAA,EAAMvX,KAZkB,CAAA,EAAA,UAY/B,MAAA,CAAA,EAAO+H,EAAApH,sBAOD4U,EAAanT,GAAA/E,KAAAmX,IAAA/V,KAAApB,KAAuBoX,EAAY7R,GACzB,WAAzBvF,KAAK4M,WAAWrD,KAAhB,CAAA,EAAA,IACE5G,EAAS3C,KAAK4M,WAAW4B,MAAM0J,GAC/B+B,EAAAA,aAAatX,KACfA,EAASA,EAAOuX,aAEX,CAAA,EAAMvX,WAAb,MAAA,CAAA,EAAO+H,EAAApH,sBAEH0X,EAAuB,GACY,mBAA3Bhb,KAAK4M,WAAgB,MAA7B,CAAA,EAAA,IACIuN,EAAUna,KAAK4M,WAAW4B,mBACTrM,QACL,CAAA,EAAMgY,GADpB,CAAA,EAAA,iBACFa,EAAgBtQ,EAAApH,oBAEhB0X,EAAgBb,sCAGlBa,EAAgBhb,KAAK4M,WAAW4B,uBAElC,MAAA,CAAA,EAAOzJ,GAAA/E,KAAAiY,IAAA7W,KAAApB,KAAkBgb,EAAe9C,cAS9C+C,GAAA5V,IAAArF,MAAc,WACZ,IAAMgG,EAAkC,GAyBxC,OAxBAJ,EAAKgH,WAAW5G,QAAQgD,QAAO,SAAAzH,GAAC,IAAAuG,EAAI,QAAS,QAATA,EAACvG,EAAEiL,cAAM,IAAA1E,OAAA,EAAAA,EAAEsD,aAAUyB,SAAQ,SAAA/D,WAC3C,UAAhBA,EAAOS,OAGS,aAAhBT,EAAOS,KASS,iBAAhBT,EAAOS,KASXvD,EAAQ7B,KAAK2E,GARI,QAAfjB,EAAAiB,EAAOgE,gBAAQ,IAAAjF,GAAAA,EAAEmB,QAAO,SAAAzH,GAAC,IAAAuG,EAAI,QAAS,QAATA,EAACvG,EAAEiL,cAAM,IAAA1E,OAAA,EAAAA,EAAEsD,aAAUyB,SAAQ,SAAAE,GAC/B,UAArBA,EAAYxD,MAGhBvD,EAAQ7B,KAAK4I,MAbA,QAAfjF,EAAAgB,EAAOgE,gBAAQ,IAAAhF,GAAAA,EAAEkB,QAAO,SAAAzH,GAAC,IAAAuG,EAAI,QAAS,QAATA,EAACvG,EAAEiL,cAAM,IAAA1E,OAAA,EAAAA,EAAEsD,aAAUyB,SAAQ,SAAAE,GAC/B,UAArBA,EAAYxD,MAGhBvD,EAAQ7B,KAAK4I,UAeZ/G,KAGTkV,GAAA7V,IAAArF,MAAsB,mBACpB,OAAsC,QAA/B6H,EAAsB,QAAtBC,EAAAlC,EAAKgH,WAAWJ,cAAM,IAAA1E,OAAA,EAAAA,EAAE9B,eAAO,IAAA6B,OAAA,EAAAA,EAAEmB,QAAO,SAAAzH,GAAC,IAAAuG,EAAI,QAAS,QAATA,EAACvG,EAAEiL,cAAM,IAAA1E,OAAA,EAAAA,EAAEsD,eAAa,MAG9E+P,GAAA9V,IAAArF,MAAY,SAAOE,GAAuE,OAAA4B,EAAA8D,OAAA,OAAA,GAAA,2JAE9EgI,EAAyB1N,EAAI0N,KAAvBwN,EAAmBlb,EAAI8F,QAAd2H,EAAUzN,EAAIyN,MAC/BpI,GAAkC,QAAvBmE,EAAe,QAAfC,EAAA3J,KAAK4M,kBAAU,IAAAjD,OAAA,EAAAA,EAAE6C,cAAM,IAAA9C,OAAA,EAAAA,EAAE2R,qBAAsB,IAC5DvB,EAAQ9Z,KAAK8Z,MACb1C,EAAa,EACbkE,EAAc,GAClBtb,KAAK2W,aAAc,EACbnI,EAAe,+FAEP,MAAA,CAAA,EAAMzJ,GAAAwW,EAAAR,IAAA3Z,KAAAma,EAAoBnE,EAAY7R,iBAC9C,UADEiW,EAAM5S,EAAAtF,SAEVgY,EAAcE,EAAIhN,MAClBsL,EAAQ0B,EAAI1B,OAEZwB,EAAcE,GAGU,UAAtBD,EAAK3O,WAAWJ,cAAM,IAAA5C,OAAA,EAAAA,EAAE6R,UACpBtB,EAAUoB,EAAK3O,WAAWJ,OAAOiP,QAAQH,cACxBnZ,QACP,CAAA,EAAMgY,GADlB,CAAA,EAAA,GAF6B,CAAA,EAAA,iBAG/BmB,EAAc1S,EAAAtF,oBAEdgY,EAAcnB,mBAIZuB,EAAY5B,EAAQvU,EACpBoW,EAAUC,KAAKC,MAAmB,IAAbzE,EAAqBsE,GAChDH,EAAK1E,YAAc,eAAe8E,EAAO,IACnCG,EAAa/W,GAAAwW,EAAAN,IAAA7Z,KAAAma,GACbQ,EAAqBhX,GAAAwW,EAAAL,IAAA9Z,KAAAma,cAChB3Q,GACT,IAAMyK,EAAW,GACX+E,EAAS,SAAC4B,WACd3G,EAAI2G,EAAajT,OAAS6B,EAAKoR,EAAajT,OAC5C,IAAMD,EAASgT,EAAW/N,MAAK,SAAAxM,GAAK,OAAAA,EAAEwH,QAAUiT,EAAajT,SACvDkT,EAAiBF,EAAmBhO,MAAK,SAAAxM,GAAK,OAAAA,EAAEwH,QAAUiT,EAAajT,SAC7E,GAAIkT,MAAAA,OAAc,EAAdA,EAAgBC,UAClB7G,EAAI4G,EAAelT,OAASkT,EAAeC,UAAUtR,EAAKqR,EAAelT,OAAQ6B,QAGnF,GAAK9B,EAGL,GAAoB,aAAhBA,EAAOS,MAAuC,iBAAhBT,EAAOS,MAIzC,GAAK6R,EAAQhL,MAAK,SAAA7O,GAAK,OAAAA,EAAEwH,QAAUD,EAAOC,SAG1C,GAAID,EAAOoT,UACT7G,EAAIvM,EAAOC,OAASD,EAAOoT,UAAUtR,EAAK9B,EAAOC,OAAQ6B,QACpD,QAA2Bf,IAAvBe,EAAK9B,EAAOC,QAA+C,OAAvB6B,EAAK9B,EAAOC,QAA0C,KAAvB6B,EAAK9B,EAAOC,OACxFsM,EAAIvM,EAAOC,OAAS,QACf,GAAoB,WAAhBD,EAAOS,MAAqC,WAAhBT,EAAOS,KAE5C8L,EAAIvM,EAAOC,OAAS6B,EAAK9B,EAAOC,YAC3B,GAAoB,SAAhBD,EAAOS,KAEZqB,EAAK9B,EAAOC,OACdsM,EAAIvM,EAAOC,QAAsB,QAAbjB,EAAAgB,EAAO+H,cAAM,IAAA/I,OAAA,EAAAA,EAAEqU,gBAAiB,OAEpD9G,EAAIvM,EAAOC,QAAsB,QAAblB,EAAAiB,EAAO+H,cAAM,IAAAhJ,OAAA,EAAAA,EAAEuU,iBAAkB,aAElD,GAAoB,SAAhBtT,EAAOS,KAAiB,CAEjC,IAAMsP,EAAO,IAAIC,KAAKlO,EAAK9B,EAAOC,QAClCsM,EAAIvM,EAAOC,OAAS+P,KAAKC,SAASF,EAAM,mBACnC,GAAoB,aAAhB/P,EAAOS,KAAqB,CAE/BsP,EAAO,IAAIC,KAAKlO,EAAK9B,EAAOC,QAClCsM,EAAIvM,EAAOC,OAAS+P,KAAKC,SAASF,EAAM,4BACnC,GAAoB,SAAhB/P,EAAOS,KAAiB,CAE3BsP,EAAO,IAAIC,KAAKlO,EAAK9B,EAAOC,QAClCsM,EAAIvM,EAAOC,OAAS+P,KAAKC,SAASF,EAAM,iBACnC,GAAoB,WAAhB/P,EAAOS,KAAmB,CAEnC,IAAMuR,EAAOlV,EAAK+P,YAAYJ,UAAUzM,EAAQlD,EAAK4B,KACR,OAAzCsT,EAAKzF,IAAIvM,EAAO+H,OAAOmE,oBAAmEnL,IAAzCiR,EAAKzF,IAAIvM,EAAO+H,OAAOmE,cAC1EK,EAAIvM,EAAOC,OAAS+R,EAAKzF,IAAIvM,EAAO+H,OAAOmE,cAE3CK,EAAIvM,EAAOC,OAAS6B,EAAK9B,EAAOC,YAGlCsM,EAAIvM,EAAOC,OAAS6B,EAAK9B,EAAOC,YAzChCD,MAAAA,GAAAA,EAAQgE,SAASD,SAAQ,SAAAE,GAAe,OAAAqN,EAAOrN,OA6CnDqO,EAAQvO,QAAQuN,GAChB5L,EAAMrK,KAAKkR,QA5Db,IAAmBgH,OAAA,EAAAC,EAAAjY,GAAAiX,GAAWiB,EAAAD,EAAA7Z,QAAA8Z,EAAA3Z,KAAA2Z,EAAAD,EAAA7Z,OAAnBmI,EAAI2R,EAAAha,QAAJqI,2GA8DXwM,4CArFKA,EAAa7R,EAAWuU,UAAK,CAAA,EAAA,8CAuF/BlM,MAAAA,OAAI,EAAJA,EAAMsB,UAAP,CAAA,EAAA,IACEvB,EACF,CAAA,EAAM3N,KAAKiM,cAAcuQ,UAAU,CACjCxW,QAAOoV,EACP5M,MAAKA,EACLL,SAAiC,QAAzBlE,EAAiB,QAAjBR,EAAEzJ,KAAK4M,kBAAU,IAAAnD,OAAA,EAAAA,EAAE+C,cAAM,IAAAvC,OAAA,EAAAA,EAAEkE,YAJnC,CAAA,EAAA,UAMF,OALA9D,EAAA/G,OAKA,CAAA,aAEI8K,EAIA,IACFnN,MAAMoN,QAA+B,QAAxBnE,EAAgB,QAAhBF,EAAChK,KAAK4M,kBAAU,IAAA5C,OAAA,EAAAA,EAAEwC,cAAM,IAAAtC,OAAA,EAAAA,EAAEkE,QAAvC,MAAA,CAAA,EAAA,+CACkB1D,EAAArG,GAAArE,KAAK4M,WAAWJ,OAAO4B,QAAMxF,EAAA8B,EAAAjI,8CAAtC6L,EAAK1F,EAAArG,OACJgM,MAAQD,EAAME,OAASF,EAAMG,OACjCxN,MAAMoN,QAAQC,EAAME,QACtBJ,EAAOjK,KAAK,CACVoK,KAAMD,EAAMC,KACZC,MAAOF,EAAME,MACbC,OAAQH,EAAMG,iBAJd,CAAA,EAAA,GADF,CAAA,EAAA,WAUS,OAFTrF,GAAAP,EAAAuF,GAAOjK,QACLoK,KAAMD,EAAMC,MACL,CAAA,EAAMD,EAAME,gBAFrBpF,EAAAtG,MAAA+F,EAAA,EAEEQ,EAAAmF,MAAOnE,EAAA/G,OACP+F,EAAAoF,OAAQH,EAAMG,sNAMxB,MAAA,CAAA,EAAMzO,KAAKiM,cAAcO,OAAO,CAC9BxG,QAAOoV,EACP5M,MAAKA,EACLL,SAAiC,QAAzBhE,EAAiB,QAAjBJ,EAAE/J,KAAK4M,kBAAU,IAAA7C,OAAA,EAAAA,EAAEyC,cAAM,IAAArC,OAAA,EAAAA,EAAEgE,SACnCC,OAAMA,aAER,OANA/D,EAAA/G,OAMA,CAAA,WAEF,MAAA,CAAA,EAAMtD,KAAKiM,cAAcwQ,iBAAiB,CACxCvN,SAAUtB,EAAKsB,SACff,SAAUP,EAAKO,SACfnI,QAAOoV,EACP5M,MAAKA,oBAJPnE,EAAA/G,6BAOAtD,KAAK2W,aAAc,EACnB3W,KAAK6W,YAAc,SACnB7W,KAAK+L,IAAI0B,gDAIbzN,KAAAuP,SAAW,SAAOrP,GAAuE,OAAA4B,EAAA8D,OAAA,OAAA,GAAA,oDAEvF,OADQkK,EAAc9P,KAAKmM,iBAAgB2D,WACtC5P,EAAKyN,OAAS3N,KAAK4M,WAAWJ,OAAOkQ,KAAO1c,KAAK8Z,MAAQ9Z,KAAK4M,WAAWJ,OAAOkQ,KACnF1c,KAAKkM,cAAc2D,QAAQC,EAAU,sDAAsDjN,MAAK,WAC9F3C,EAAKyN,OAAQ,EACb5I,GAAAa,EAAAuV,IAAA/Z,KAAAwE,EAAe1F,MAEjB,CAAA,KAEF6E,GAAA/E,KAAAmb,IAAA/Z,KAAApB,KAAeE,eAGjBF,KAAA2c,eAAiB,WACf5X,GAAAa,EAAAqQ,IAAgB4D,UAAY,EAC5BjU,EAAK4U,UAGPxa,KAAA4c,SAAW,SAAOC,GAA2B,OAAA/a,EAAA8D,OAAA,OAAA,GAAA,mDAC3C,OAAIiX,EAAQC,YACV,CAAA,GAEED,EAAQE,YACVF,EAAQE,YAAa,EACrB,CAAA,KAEIjC,EAAsC,QAAlCrL,EAAkB,QAAlBlF,EAAGvK,KAAK4M,kBAAU,IAAArC,OAAA,EAAAA,EAAEyS,sBAAc,IAAAvN,OAAA,EAAAA,EAAEmN,SAASC,IACpB,QAA/BpS,EAACzK,KAAK4M,WAAWoQ,sBAAc,IAAAvS,OAAA,EAAAA,EAAEwS,WACnCjd,KAAKwO,MAAM3B,SAAQ,SAAAjC,GAAQ,OAAAA,EAAKkS,YAAclS,EAAKmS,YAAa,KAE9DjC,aAAgB3Y,SAClB0a,EAAQC,aAAc,EACtBhC,EAAKjY,MAAK,SAAA2Y,GACRqB,EAAQK,aAAe1B,EACvBqB,EAAQE,YAAa,KACpB/N,SAAQ,WAAM,OAAA6N,EAAQC,aAAc,OAEvCD,EAAQK,aAAepC,EACvB+B,EAAQE,YAAa,eAIzB/c,KAAAmd,SAAW,SAACN,aACV,GAA6B,QAA7B/U,EAAIlC,EAAKgH,WAAWiH,iBAAS,IAAA/L,OAAA,EAAAA,EAAEsV,OAG7B,OAFAxX,EAAK4I,MAAMxF,QAAO,SAAAzH,GAAK,OAAAA,IAAMsb,KAAShQ,SAAQ,SAAAtL,GAAK,OAAAA,EAAEoZ,YAAa,UAClE5V,GAAAa,EAAAgV,IAAAxZ,KAAAwE,GAGiC,QAAnCqD,EAAyB,QAAzBpB,EAAAjC,EAAKgH,WAAWiH,iBAAS,IAAAhM,OAAA,EAAAA,EAAEsV,gBAAQ,IAAAlU,GAAAA,EAAA7H,KAAAyG,EAAGgV,EAASjX,EAAK4I,MAAMxF,QAAO,SAAAzH,GAAK,OAAAA,EAAEoZ,eACxE/U,EAAKgR,YAAchR,EAAK4I,MAAMkM,OAAM,SAAAnZ,GAAK,OAAAA,EAAEoZ,cAC3C5V,GAAAa,EAAAgV,IAAAxZ,KAAAwE,IAGF5F,KAAAqd,YAAc,qBACF,QAAVvV,EAAAlC,EAAK4I,aAAK,IAAA1G,GAAAA,EAAE+E,SAAQ,SAAAtL,GAAK,OAAAA,EAAEoZ,WAAa/U,EAAKgR,eACP,QAAtC3N,EAAyB,QAAzBpB,EAAAjC,EAAKgH,WAAWiH,iBAAS,IAAAhM,OAAA,EAAAA,EAAEwV,mBAAW,IAAApU,GAAAA,EAAA7H,KAAAyG,EAAGjC,EAAK4I,MAAMxF,QAAO,SAAAzH,GAAK,OAAAA,EAAEoZ,eAClE5V,GAAAa,EAAAgV,IAAAxZ,KAAAwE,IAGFgV,GAAAvV,IAAArF,MAAuB,WACrB4F,EAAKkQ,cAAgBlQ,EAAK4I,MAAMxF,QAAO,SAAA4B,GAAQ,OAAAA,EAAK+P,cACjD3N,KAAI,SAAApC,GAOCA,EAAI+P,WAAJ/P,EAAImS,WAAJnS,EAAIkS,YAAJlS,EAAIsS,aACR,OAFW7b,EACPuJ,EANE,CAAA,aAAA,aAAA,cAAA,oBASVhF,EAAKmG,IAAI0B,mBAGXzN,KAAAwG,YAAc,iBACG,QAAfsB,EAAAlC,EAAK0R,kBAAU,IAAAxP,GAAAA,EAAEkD,iBAGnBhL,KAAAiL,UAAY,SAAC/K,SAKI,QAAf4H,EAAAlC,EAAK0R,kBAAU,IAAAxP,GAAAA,EAAEmD,UAAU/K,IAG7BF,KAAAsd,SAAW,iBACH5S,EAA4B9E,EAAKgH,WAA/BrD,EAAImB,EAAAnB,KAAEwK,EAAMrJ,EAAAqJ,OAAE/N,EAAO0E,EAAA1E,QAC7B,GAAK+N,MAAAA,OAAM,EAANA,EAAQC,QAAb,CAGA,IAAMpJ,EAA2B,GAEjC5E,EAAQ6G,SAAQ,SAAA/D,GACM,WAAhBA,EAAOS,KACTqB,EAAK9B,EAAOC,OAAS,GACI,SAAhBD,EAAOS,KAChBqB,EAAK9B,EAAOC,QAAS,EACI,WAAhBD,EAAOS,OAChBqB,EAAK9B,EAAOC,OAAS,SAGb,QAAZjB,EAAAiM,EAAOwJ,aAAK,IAAAzV,GAAAA,EAAA1G,KAAZ2S,EAAenJ,GAEK,UAAhBmJ,EAAOxK,OACI,UAATA,IACF3D,EAAKiQ,WAAUjR,GAAA,CAAIgG,GAAShF,EAAK4I,QAEnC5I,EAAK4I,MAAK5J,GAAA,CAAIgG,GAAShF,EAAK4I,QAE9B5D,EAAK4S,aAAe,SACpB5S,EAAK6S,iBAAmB,CACtBC,UAASnd,OAAA2R,OAAA,GAAOtH,MAGpB5K,KAAA2d,SAAW,SAAC/S,GACF,IAAAmJ,EAAWnO,EAAKgH,WAAUmH,OAClCnJ,EAAK4S,aAAe,SACpB5S,EAAK6S,iBAAgBld,OAAA2R,OAAA3R,OAAA2R,OAAA,GAChBtH,EAAK6S,kBAAgB,CACxBC,UAASnd,OAAA2R,OAAA,GAAOtH,KAGdmJ,EAAOxK,KAIX3D,EAAKmG,IAAI0B,iBAEXzN,KAAA4d,OAAS,SAAOhT,GAAY,OAAA9I,EAAA8D,OAAA,OAAA,GAAA,0EAC1B,GAAGgF,EAAK6S,iBAAiBI,OACvB,MAAA,CAAA,GAEM9J,EAAW/T,KAAK4M,WAAUmH,sDAEhCnJ,EAAK6S,iBAAiBI,QAAS,EAC3B9J,EAAO+J,UACHnb,EAASoR,EAAO+J,SAASlT,cACTzI,QACJ,CAAA,EAAMQ,GADpB,CAAA,EAAA,GAFF,CAAA,EAAA,UAIA,GADMob,EAAUrT,EAAApH,OAEd,MAAMya,qBAGR,GAAIpb,EACF,MAAMA,0BAIRoR,EAAO6J,SACHjb,EAASoR,EAAO6J,OAAOhT,cACPzI,QACpB,CAAA,EAAMQ,GAHN,CAAA,EAAA,UAGA+H,EAAApH,8BAIsB,WAAtBsH,EAAK4S,cAA6C,UAAhBzJ,EAAOxK,MACd,UAAzBvJ,KAAK4M,WAAWrD,MAClBvJ,KAAKwO,MAAMwB,OAAO,EAAG,EAAGpF,GAK5BA,EAAK4S,kBAAe3T,iCAGpB7J,KAAKkM,cAAcmE,OAAOC,QAAQ0N,uBAElCpT,EAAK6S,iBAAiBI,QAAS,EAC/B7d,KAAK+L,IAAI0B,6CAGbzN,KAAAie,SAAW,SAACrT,GACF,IAAAmJ,EAAWnO,EAAKgH,WAAUmH,OAClC,GAAoB,WAAhBA,EAAOxK,KAAmB,CAC5B,GAA6B,UAAzB3D,EAAKgH,WAAWrD,KAAkB,CACpC,IAAM2U,EAAOtY,EAAKiQ,WAAWpU,QAAQmJ,GACrChF,EAAKiQ,WAAW7F,OAAOkO,EAAM,GAC7BtY,EAAKiQ,WAAUjR,GAAOgB,EAAKiQ,YAE7B,IAAMsI,EAAOvY,EAAK4I,MAAM/M,QAAQmJ,GAIhC,OAHAhF,EAAK4I,MAAMwB,OAAOmO,EAAM,GACxBvY,EAAK4I,MAAK5J,GAAOgB,EAAK4I,YACtB5I,EAAKmG,IAAI0B,gBAGX,GAAoB,UAAhBsG,EAAOxK,KACT,GAA0B,WAAtBqB,EAAK4S,aAA2B,CAClC,GAA6B,UAAzB5X,EAAKgH,WAAWrD,KAAkB,CAC9B2U,EAAOtY,EAAKiQ,WAAWpU,QAAQmJ,GACrChF,EAAKiQ,WAAW7F,OAAOkO,EAAM,GAC7BtY,EAAKiQ,WAAUjR,GAAOgB,EAAKiQ,YAEvBsI,EAAOvY,EAAK4I,MAAM/M,QAAQmJ,GAChChF,EAAK4I,MAAMwB,OAAOmO,EAAM,GACxBvY,EAAK4I,MAAK5J,GAAOgB,EAAK4I,YAEtBjO,OAAO2R,OAAOtH,EAAMA,EAAK6S,iBAAiBC,WAG9C9S,EAAK4S,kBAAe3T,EACpBjE,EAAKmG,IAAI0B,iBAGXzN,KAAAoe,SAAW,SAACxT,GAEV,GAAoB,WADDhF,EAAKgH,WAAUmH,OACvBxK,KAAmB,CAC5B,GAA6B,UAAzB3D,EAAKgH,WAAWrD,KAAkB,CACpC,IAAM2U,EAAOtY,EAAKiQ,WAAWpU,QAAQmJ,GACrChF,EAAKiQ,WAAW7F,OAAOkO,EAAM,GAC7BtY,EAAKiQ,WAAUjR,GAAOgB,EAAKiQ,YAE7B,IAAMsI,EAAOvY,EAAK4I,MAAM/M,QAAQmJ,GAIhC,OAHAhF,EAAK4I,MAAMwB,OAAOmO,EAAM,GACxBvY,EAAK4I,MAAK5J,GAAOgB,EAAK4I,YACtB5I,EAAKmG,IAAI0B,kBA+CbzN,KAAAqe,WAAa,SAACzT,GACZA,EAAK0T,KAAOvW,EAAK6C,IAEnB5K,KAAAyN,cAAgB,WAAM,OAAA7H,EAAKmG,IAAI0B,wBAtzB/BlN,OAAAC,eAA6BiV,EAAAhV,UAAA,cAAW,KAAxC,SAAyC6W,GAAzC,IAAA1R,EAAA5F,KACMsX,GAActX,KAAKsX,aAAeA,IACpCtX,KAAKsX,WAAaA,EAClBvS,GAAA/E,KAAAue,IAAmBjT,IAAIgM,EAAW9O,aAAa+C,KAC7CiT,EAAAA,aAAa,KACbxR,EAAAA,KAAI,WAEF,OADAjI,GAAAa,EAAAqQ,IAAgB4D,UAAY,EACrB9U,GAAAa,EAAAmU,IAAA3Y,KAAAwE,MAET6Y,EAAAA,UAAS1Z,GAAA/E,KAAA6a,MACTpP,UAAS1G,GAAA/E,KAAAsa,wCAIf/Z,OAAAC,eAAaiV,EAAAhV,UAAA,SAAM,KAAnB,SAAoBoQ,GAApB,MAAAjL,EAAA5F,KACE,GAAI6Q,EAAQ,CACVA,EAAS9L,GAAA/E,KAAA8X,IAAA1W,KAAApB,KAAwB6Q,GACjC7Q,KAAK4M,WAAaiE,EAClB9L,GAAA/E,KAAA0W,IAAoB1P,OACL,QAAfc,EAAA+I,MAAAA,OAAM,EAANA,EAAQ7K,eAAO,IAAA8B,GAAAA,EAAE+E,SAAQ,SAAAoG,UACT,QAAdnL,EAAImL,EAAIjK,cAAM,IAAAlB,OAAA,EAAAA,EAAEqB,WACdvD,EAAKK,aAAagN,EAAIlK,OAASkK,EAAIjK,OAAOG,YAG9C,IAAMvB,EAAgB5H,KAAK0V,yBAAyB9D,KAAK5R,KAAKwH,IAAKxH,KAAK4M,YACxE5M,KAAK0e,0BAA4B9W,EAAc0K,SAC/C1K,EAAckK,yCAgBlBvR,OAAAC,eAA6BiV,EAAAhV,UAAA,YAAS,KAAtC,SAAuCke,GACjCA,GAAa5Z,GAAA/E,KAAAiW,MAAoB0I,IACnCvZ,GAAApF,KAAIiW,GAAc0I,GAClB5Z,GAAA/E,KAAAue,IAAmBjT,IAAIqT,EAAUC,KAAKrT,KACpCiT,EAAAA,aAAa,KACbxR,EAAAA,IAAGjI,GAAA/E,KAAA+Z,KACH0E,EAAAA,UAAS1Z,GAAA/E,KAAA6a,MACTpP,UAAS1G,GAAA/E,KAAAsa,wCAMf/Z,OAAAC,eAAwBiV,EAAAhV,UAAA,OAAI,KAA5B,SAA6B8Y,GACvBA,GAAQxU,GAAA/E,KAAAkW,MAAeqD,IACzBnU,GAAApF,KAAIkW,GAASqD,GACbxU,GAAA/E,KAAAue,IAAmBjT,IAAIiO,EAAKsF,WAAWtT,KACrCiT,EAAAA,aAAa,KACbxR,EAAAA,IAAGjI,GAAA/E,KAAA+Z,KACH0E,EAAAA,UAAS1Z,GAAA/E,KAAA6a,MACTpP,UAAS1G,GAAA/E,KAAAsa,wCAmDf7E,EAAAhV,UAAAqQ,SAAA,WACE/L,GAAA/E,KAAA8W,IAAA1V,KAAApB,OAGFyV,EAAAhV,UAAA4K,gBAAA,WACEtG,GAAA/E,KAAAue,IAAmBjT,IAAItL,KAAKmW,WAAW2I,QAAQvT,KAAKC,EAAAA,UAAU,KAAKC,UAAS1G,GAAA/E,KAAA8W,MAC5E/R,GAAA/E,KAAAue,IAAmBjT,IAAItL,KAAKsW,aAAawI,QAAQvT,KAAKC,EAAAA,UAAU,KAAKC,UAAS1G,GAAA/E,KAAAiX,MAC9ElS,GAAA/E,KAAAue,IAAmBjT,IAAItL,KAAKyW,aAAaqI,QAAQvT,KAAKC,EAAAA,UAAU,KAAKC,UAAS1G,GAAA/E,KAAAgX,MAC9EjS,GAAA/E,KAAAue,IAAmBjT,IAAIvG,GAAA/E,KAAA0W,IAAoBnL,KACzCC,EAAAA,UAAU,IACVgT,EAAAA,aAAa,KACbxR,EAAAA,IAAGjI,GAAA/E,KAAA+Z,KACH0E,EAAAA,UAAS1Z,GAAA/E,KAAA6a,MACTpP,UAAS1G,GAAA/E,KAAAsa,MACXta,KAAK+L,IAAI0B,iBAGXgI,EAAAhV,UAAAiL,YAAA,WACE3G,GAAA/E,KAAAue,IAAmB5S,eAgPrB8J,EAAAhV,UAAAse,KAAA,SAAKC,EAA8BhZ,GACjCiZ,EAAAA,gBAAgBjZ,EAASgZ,EAAME,cAAeF,EAAMG,eAqZtD5e,OAAAC,eAAIiV,EAAAhV,UAAA,cAAW,KAAf,WACE,OAAOT,KAAKwO,MAAMxF,QAAO,SAAA4B,GACvB,OAAKA,EAAK2P,cAGNha,OAAO6e,KAAKxU,EAAK2P,YAAYnK,MAAK,SAAA5I,GAAO,OAAAoD,EAAK2P,WAAW/S,KAASoD,EAAKpD,SAI1EwF,KAAI,SAAApC,GAUWA,EAAI4S,aARlB,IACAC,EAOc7S,EAAI6S,iBAAf9a,GAAWiI,EAAIyU,oBAAJzU,EAAIsS,aAAJtS,EAAImS,WAAJnS,EAAIkS,YAAJlS,EAAI+P,WAAJ/P,EAAI2P,WAATlZ,EAAKuJ,EATV,CAAA,eAAA,mBAAA,sBAAA,eAAA,aAAA,cAAA,aAAA,gBAUN,OAAOrK,OAAA2R,OAAA3R,OAAA2R,OAAA,GACFvP,GAAM,CACT2c,mBAAoB7B,MAAAA,OAAgB,EAAhBA,EAAkB8B,mDAK5Chf,OAAAC,eAAIiV,EAAAhV,UAAA,YAAS,KAAb,WACE,OAAOT,KAAKwO,MAAMxB,KAAI,SAAApC,GAUJA,EAAI4S,aAAJ5S,EAAI6S,iBAAJ7S,EAAIyU,oBAAJzU,EAAIsS,aAAJtS,EAAImS,WAAJnS,EAAIkS,YAAJlS,EAAI+P,WAAJ/P,EAAI2P,WACpB,OADWlZ,EAAKuJ,EATV,CAAA,eAAA,mBAAA,sBAAA,eAAA,aAAA,cAAA,aAAA,2VAvzBX1D,EAAAA,UAAShH,KAAA,CAAC,CACTC,SAAU,mBACVgH,SAAA,qoxBAEAqY,WAAY,CACVC,EAAAA,QAAQ,eAAgB,CACtBC,EAAAA,MAAM,YAAaC,EAAAA,MAAM,CAAEC,OAAQ,IAAKC,UAAW,IAAKC,WAAY,YACpEJ,EAAAA,MAAM,WAAYC,EAAAA,MAAM,CAAEC,OAAQ,IAAKE,WAAY,aACnDC,EAAAA,WAAW,yBAA0BC,EAAAA,QAAQ,uyJArDjDjP,EAAAA,kDAuKG4D,EAAAA,OAAMzU,KAAA,CAACuF,KAAoB,CAAA8D,KAAGqL,EAAAA,kBAjI1BqL,UAF8BhP,EAAAA,uBAX9BC,EAAAA,uBAeAC,EAAAA,0BACA+O,4CAoBN9Y,EAAAA,UAASlH,KAAA,CAACigB,EAAAA,oCACV/Y,EAAAA,UAASlH,KAAA,CAACgI,oBAcV7H,EAAAA,yBA4BA+G,EAAAA,UAASlH,KAAA,CAACkgB,EAAAA,4BAaVhZ,EAAAA,UAASlH,KAAA,CAACmgB,EAAAA,gCAYVjZ,EAAAA,UAASlH,KAAA,CAAC4L,8BAGVwU,EAAAA,aAAYpgB,KAAA,CAACqgB,wBAGbD,EAAAA,aAAYpgB,KAAA,CAACsgB,uBAGbC,EAAAA,gBAAevgB,KAAA,CAACwgB,yBAMhBD,EAAAA,gBAAevgB,KAAA,CAACygB,yBAOhBF,EAAAA,gBAAevgB,KAAA,CAACI,wBCzJnB,SAAAsgB,YACQA,EAAAngB,UAAAyb,UAAA,SAAUtR,EAAWkJ,sIAEzB,GADMqG,EAAmC,IACpCrG,EACH,MAAA,CAAA,EAAOqG,8CAEa0G,EAAAxc,GAAAyP,GAAQgN,EAAAD,EAAApe,8CAAnBse,EAAOD,EAAAve,MACZye,GAAO,OAEInX,KADP4I,EAAWsO,EAAOtO,QACtB,CAAA,EAAA,IACFuO,GAAO,uBACsB,kBAApB,EAAA,CAAA,EAAA,IACJvO,IACHuO,GAAO,wBAGHC,EAAWxO,EAAO7H,cACAzI,QACjB,CAAA,EAAM8e,GADT,CAAA,EAAA,iBACG3X,EAAAhG,SACH0d,GAAO,gBAGJC,IACHD,GAAO,wBAITA,EAAA,MAAA,CAAA,EAAA,SACE,aAAcD,GAAd,MAAA,CAAA,EAAA,IACIjU,EAA0C,8CACrBoU,OAAA,EAAApZ,EAAAzD,GAAA0c,EAAQjU,UAAQjF,EAAAC,EAAArF,8CAAhC0e,EAAYtZ,EAAAtF,WAENsH,KADPuX,EAAWD,EAAY1O,QAC3B,CAAA,EAAA,KACF3F,EAAS3I,KAAKgd,0BACe,kBAApB,EAAA,CAAA,EAAA,KACJC,GACHtU,EAAS3I,KAAKgd,0BAGVF,EAAWG,EAAOxW,cACAzI,QACjB,CAAA,EAAM8e,GADT,CAAA,EAAA,mBACG3X,EAAAhG,QACHwJ,EAAS3I,KAAKgd,kBAGXF,GACHnU,EAAS3I,KAAKgd,oNAKlBrU,EAASlL,OAAS,GACpBuY,EAAQhW,KAAI5D,OAAA2R,OAAA3R,OAAA2R,OAAA,GAAM6O,GAAO,CAAEjU,SAAQA,oBAGrCqN,EAAQhW,KAAK4c,6MAInB,MAAA,CAAA,EAAO5G,qCA9DVkH,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,sCCER,SAAA+S,YACEA,EAAA7gB,UAAAyb,UAAA,SAAUtR,EAAWmW,GACnB,SAAKA,MAAAA,OAAO,EAAPA,EAAS3V,YAGoB,kBAAtB2V,EAAgB,SACnBA,EAAQ3V,SAEV2V,EAAQ3V,SAASR,+BAX3ByW,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,uCCER,SAAAgT,YACEA,EAAA9gB,UAAAyb,UAAA,SAAU6E,EAAgCnW,GACxC,OAAKmW,MAAAA,OAAO,EAAPA,EAASS,MAGgB,iBAAlBT,EAAY,KACfA,EAAQS,KAEVT,EAAQS,KAAK5W,GALX,8BANZyW,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,oCCER,SAAAkT,YACEA,EAAAhhB,UAAAyb,UAAA,SAAU6E,EAAgCnW,GACxC,OAAKmW,MAAAA,OAAO,EAAPA,EAAS9T,OAGiB,iBAAnB8T,EAAa,MAChBA,EAAQ9T,MAEV8T,EAAQ9T,MAAMrC,GALZ,8BANZyW,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,0BCIN,SAAoBoH,GAApB,IAAA/P,EAAA5F,KAAoBA,KAAA2V,YAAAA,EACpB3V,KAAAkc,UAAY,SAAO3Z,EAAYuG,EAA8BtB,GAAW,OAAA1F,EAAA8D,OAAA,OAAA,GAAA,sEACzD,MAAA,CAAA,EAAM5F,KAAK2V,YAAYb,WAAWhM,EAAQtB,WACvD,OADMsT,EAAOjT,EAAAvE,OACb,CAAA,EAAsB,QAAtBwE,EAAOgT,EAAKzF,IAAI9S,UAAM,IAAAuF,EAAAA,EAAIvF,iCAP7B8e,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,6DAFC2R,wBCMP,SAAAwB,EAAYvZ,GADJnI,KAAAkL,kBAAmB,EAEzBlL,KAAKkL,kBAAoB/C,EAAcgD,mBAEzCuW,EAAAjhB,UAAAyb,UAAA,SAAU3Z,EAAYsa,EAAc/T,GAClC,MAAsC,mBAA1BA,MAAAA,OAAM,EAANA,EAAQ6Y,cACXpf,EAEFuG,MAAAA,OAAM,EAANA,EAAQ6Y,aAAapf,EAAOsa,EAAS7c,KAAKkL,6CAZpDmW,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,mEAHC3C,EAAAA,gCCaP,kCAXD1E,EAAAA,UAAShH,KAAA,CAAC,CACTC,SAAU,uBACVgH,SAAA,msOAEAya,gBAAiBC,EAAAA,wBAAwBC,8jCAGxCzhB,EAAAA,mBACAA,EAAAA,sBACAA,EAAAA,oBACAA,EAAAA,2BCND,SAAA0hB,EAAoBC,GAAAhiB,KAAAgiB,YAAAA,SACpBD,EAAAthB,UAAAyb,UAAA,SAAU3Z,EAAYsa,EAAc/T,WAClC,OAAIA,MAAAA,OAAM,EAANA,EAAQoT,WACHpT,EAAOoT,UAAU3Z,EAAOsa,GAEb,WAAhB/T,EAAOS,MAAqB0Y,OAAOC,SAAS3f,GACvC0f,OAAOE,aAAa5f,GAET,SAAhBuG,EAAOS,MACQ,IAAVhH,GAA+B,QAAbuF,EAAAgB,EAAO+H,cAAM,IAAA/I,OAAA,EAAAA,EAAEqU,gBAAiB,QAAwB,QAAbtU,EAAAiB,EAAO+H,cAAM,IAAAhJ,OAAA,EAAAA,EAAEuU,iBAAkB,QAEhG7Z,6BAfV8e,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,gEAJC6T,EAAAA,iCCKT,SAAAC,YACEA,EAAA5hB,UAAAyb,UAAA,SAAUrW,EAAiDkD,WACnDoR,EAA0C,GAChD,IAAKtU,EACH,OAAOsU,MAET,IAAqB,IAAAmI,EAAAje,GAAAwB,GAAe0c,EAAAD,EAAA7f,QAAA8f,EAAA3f,KAAA2f,EAAAD,EAAA7f,OAAE,CAAjC,IAAMuG,EAAMuZ,EAAAhgB,MACf4X,EAAQhW,KAAK6E,qGAEf,OAAOmR,EAAQnR,QAAO,SAAAzH,GAAK,OAACwH,GAASxH,EAAEwH,QAAUA,gCAZpDsY,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,yCCER,SAAAiU,YACEA,EAAA/hB,UAAAyb,UAAA,SAAUlW,EAAiC+C,mBACnCoR,EAAkC,GACxC,IAAKnU,EACH,OAAOmU,MAET,IAAqB,IAAAhC,EAAA9T,GAAA2B,GAAOoS,EAAAD,EAAA1V,QAAA2V,EAAAxV,KAAAwV,EAAAD,EAAA1V,OAAE,CAAzB,IAAMqG,EAAMsP,EAAA7V,MACf,GAAoB,UAAhBuG,EAAOS,KAGX,GAAoB,aAAhBT,EAAOS,MAQO,QAAd1B,EAACiB,EAAOE,cAAM,IAAAnB,OAAA,EAAAA,EAAEuD,WAClB+O,EAAQhW,KAAK2E,YARb,IAA6B,IAAAQ,GAAAmL,OAAA,EAAApQ,GAAAyE,MAAAA,OAAM,EAANA,EAAQgE,WAAQnD,EAAAL,EAAA7G,QAAAkH,EAAA/G,KAAA+G,EAAAL,EAAA7G,OAAE,CAA1C,IAAMggB,EAAc9Y,EAAApH,OACG,QAAtBuF,EAAC2a,EAAezZ,cAAM,IAAAlB,OAAA,EAAAA,EAAEsD,WAC1B+O,EAAQhW,KAAKse,wMASrB,OAAOtI,EAAQnR,QAAO,SAAAzH,GAAK,OAACwH,GAASxH,EAAEwH,QAAUA,gCAzBpDsY,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,+BCSN,kCATDrH,EAAAA,UAAShH,KAAA,CAAC,CACTC,SAAU,gCACVgH,SAAA,ikLAIC9G,EAAAA,sBACAA,EAAAA,oBACAA,EAAAA,2BCFD,SAAAqiB,EAAYva,GADZwa,GAAAtd,IAAArF,MAAoB,GAElBoF,GAAApF,KAAI2iB,IAAsBxa,EAAcgD,oBAE1CuX,EAAAjiB,UAAAyb,UAAA,SAAUlW,EAAiC4E,GAA3C,IAAAhF,EAAA5F,KACE,OAAOgG,EAAQgD,QAAO,SAAAF,WACdvG,EAAQqI,MAAAA,OAAI,EAAJA,EAAO9B,EAAOC,OACtB6Z,EAAiC,QAAnB9a,EAAGgB,EAAOoT,iBAAS,IAAApU,OAAA,EAAAA,EAAA1G,KAAhB0H,EAAmB8B,EAAK9B,EAAOC,OAAQ6B,GACxDiY,EAAmC,QAAtBhb,EAAGiB,EAAO6Y,oBAAY,IAAA9Z,OAAA,EAAAA,EAAAzG,KAAnB0H,EAAsB8B,EAAK9B,EAAOC,OAAQ6B,EAAI7F,GAAAa,EAAA+c,KACpE,OAAQpgB,MAAAA,GAAmD,KAAVA,GAC3CqgB,MAAAA,GAA8E,KAAnBA,GAC3DC,MAAAA,GAA2E,KAAlBA,+CAfpExB,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,qEAJC3C,EAAAA,2CCIT,SAAAkX,YACQA,EAAAriB,UAAAyb,UAAA,SAAUtR,EAAW9B,0GACzB,OAAKA,MAAAA,OAAM,EAANA,EAAQmE,QAGPtK,EAA6B,QAAvBmF,EAAGgB,MAAAA,OAAM,EAANA,EAAQia,oBAAY,IAAAjb,OAAA,EAAAA,EAAA1G,KAApB0H,EAAuB8B,cAChBzI,QACZ,CAAA,EAAMQ,GADZ,CAAA,EAAA,GAHF,CAAA,EAAO,WAIP,MAAA,CAAA,EAAQkF,EAAAvE,SAAiBwF,MAAAA,OAAM,EAANA,EAAQmE,eAEnC,MAAA,CAAA,EAAOtK,IAAUmG,MAAAA,OAAM,EAANA,EAAQmE,0CAZ5BoU,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,yBCQN,WADSvO,KAAA8T,SAAoC,yBAP9C5M,EAAAA,UAAShH,KAAA,CAAC,CACTC,SAAU,qBACVgH,SAAA,84DAIC9G,EAAAA,wBACAA,EAAAA,2BCJD,SAAA2iB,YACAA,EAAAviB,UAAAyb,UAAA,SAAU3Z,EAAYsa,EAAc/T,GAClC,MAAoB,WAAhBA,EAAOS,OAAqBT,MAAAA,OAAM,EAANA,EAAQma,QAGpB,SAAhBna,EAAOS,OAAmBT,MAAAA,OAAM,EAANA,EAAQma,OAF7Bna,EAAOma,MAAM1gB,EAAOsa,GAKtB,gCAZVwE,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,2ECSN,SAAA2U,EAAoBC,EAAiCpjB,GAAjCC,KAAAmjB,MAAAA,EAAiCnjB,KAAAD,YAAAA,EAFrDC,KAAAojB,QAAe,UALf7iB,OAAAC,eACI0iB,EAAAziB,UAAA,QAAK,KADT,SACU2iB,GACRpjB,KAAKojB,QAAQC,UAAYrjB,KAAKojB,QAAQE,MAAQF,EAC9CpjB,KAAKujB,8CAMPL,EAAAziB,UAAA8iB,WAAA,WACEvjB,KAAKmjB,MAAMK,QACXxjB,KAAKmjB,MAAMM,mBAAmBzjB,KAAKD,YAAaC,KAAKojB,oCAfxDnjB,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,wDAF4BujB,EAAAA,wBAAbtjB,EAAAA,+CAKxBC,EAAAA,8BCKD,SAAAsjB,EAAoBjO,GAAA1V,KAAA0V,yBAAAA,SACpBiO,EAAAljB,UAAAyb,UAAA,SAAUtU,EAAoCgF,EAAkCwG,GAC9E,OAAOpT,KAAK0V,yBAAyBvC,4BAA4BvL,EAAegF,EAAYwG,8BAN/FiO,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,0EAJC0R,wBC4BP,SAAA2D,EACU7X,EACAG,EACAC,EACAuJ,GAJV,IAAA9P,EAAA5F,KACUA,KAAA+L,IAAAA,EACA/L,KAAAkM,cAAAA,EACAlM,KAAAmM,iBAAAA,EACAnM,KAAA0V,yBAAAA,EAZD1V,KAAA8e,QAAU,IAAIvY,EAAAA,aACvBoL,GAAAA,IAAAA,UAAAA,GAEA3R,KAAA6jB,kBAAmB,EACnB7jB,KAAAsM,SAEI,GACJtM,KAAA8jB,cAAe,EAcf9jB,KAAAyG,KAAO,WAAA,OAAA3E,EAAA8D,OAAA,OAAA,GAAA,oEAEgB,OADrBR,GAAApF,KAAI+jB,GAAU/jB,KAAK0V,yBAAyB9D,KAAK5R,KAAKwH,IAAKxH,KAAK4M,aAChE/E,EAAA7H,KAAqB,CAAA,EAAM+E,GAAA/E,KAAA+jB,IAAY5e,qBAAvC0C,EAAKD,cAAgBqB,EAAA3F,OACrBtD,KAAK6G,MAAMJ,mBAGbzG,KAAA4d,OAAS,WACP7Y,GAAAa,EAAAme,IAAY1e,IAAIO,EAAKgC,eACrBhC,EAAKiB,MAAMC,QACXlB,EAAKmG,IAAI0B,iBAGXzN,KAAA+K,QAAU,WAAA,OAAAjJ,EAAA8D,OAAA,OAAA,GAAA,2DACAkK,EAAc9P,KAAKmM,iBAAgB2D,UAC3C9P,KAAKkM,cAAc2D,QAAQC,EAAU,wCAAwCjN,MAAK,WAChFkC,GAAAa,EAAAme,IAAY5R,SACZvM,EAAKiB,MAAMC,QACXlB,EAAKmG,IAAI0B,8BAIbzN,KAAAgkB,aAAe,WAAA,OAAAliB,EAAA8D,OAAA,OAAA,GAAA,8CACb5F,KAAKsM,SAAW,GAChBtM,KAAK6jB,kBAAmB,aAG1B7jB,KAAA6P,QAAU,WAAA,OAAA/N,EAAA8D,OAAA,OAAA,GAAA,2DACFwO,EAAyC,CAC7C1B,OAAQ,CACN3J,MAAO6M,EAAAA,KACP3I,MAAO,YACPE,MAAO,SAETyF,OAAO,EACPD,WAAW,EACX1F,MAAO,YACPE,MAAO,QACP6F,mBAAmB,EACnBsB,iBAAkBtU,KAAK4H,cAAc5B,QAAQgD,QAAO,SAAAzH,GAAC,IAAAuG,EAAI,OAAAlC,EAAK0G,SAAiB,QAATxE,EAACvG,EAAEmR,cAAM,IAAA5K,OAAA,EAAAA,EAAEiB,UAAQiE,KAAI,SAAAzL,GAAC,IAAAuG,EAAA,OAAY,QAAZA,EAAIvG,EAAEmR,cAAM,IAAA5K,OAAA,EAAAA,EAAEiB,UAE9G/I,KAAK4H,cAAc5B,QAAQ7B,KAAKiQ,GAChCpU,KAAK4H,cAAgB7C,GAAA/E,KAAA+jB,IAAY1e,IAAIrF,KAAK4H,eAC1C5H,KAAK6jB,kBAAmB,oBAhD1BD,EAAAnjB,UAAAqQ,SAAA,aAGA8S,EAAAnjB,UAAAwjB,QAAA,SAAQjF,GACNhf,KAAK8jB,cAAe,GA+CtBF,EAAAnjB,UAAAyjB,UAAA,SAAUlF,GACRC,EAAAA,gBAAgBjf,KAAK4H,cAAc5B,QAASgZ,EAAME,cAAeF,EAAMG,cACvEnf,KAAKmkB,MAAMC,cAGbR,EAAAnjB,UAAA4jB,gBAAA,WACErkB,KAAK8jB,cAAe,GAGtBF,EAAAnjB,UAAA6jB,cAAA,WACEtkB,KAAK8jB,cAAe,4CAtFvB5c,EAAAA,UAAShH,KAAA,CAAC,CACTC,SAAU,8BACVgH,SAAA,g8LAfmD4J,EAAAA,yBAE5CG,EAAAA,uBACAC,EAAAA,0BAGA8O,2CAaN5f,EAAAA,mBACAA,EAAAA,qBACA+G,EAAAA,UAASlH,KAAA,CAAC,wBACVkH,EAAAA,UAASlH,KAAA,CAAC,0BAkBVqkB,EAAAA,aAAYrkB,KAAA,CAAC,iBAAkB,CAAC,mCClCjC,SAAAskB,YACAA,EAAA/jB,UAAAyb,UAAA,SAAU3Z,EAAYsa,EAAc/T,GAClC,OAAIA,MAAAA,OAAM,EAANA,EAAQ2b,SACH3b,EAAO2b,QAAQliB,EAAOsa,GAExB,gCATVwE,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,kECDR,WAAA,IAAA3I,EAAA5F,KAIE0kB,GAAArf,IAAArF,MAAW,SAAC2kB,EAA8B7O,GACxC,MAAI,aAAc6O,EACT,CACL1X,MAAO0X,EAAO1X,MACduU,KAAMmD,EAAOnD,KACboD,QAASD,EAAOC,QAChBH,QAASE,EAAOF,QAChBI,MAAOF,EAAOE,MACdtb,KAAMob,EAAOpb,KACb6B,SAAuC,mBAArBuZ,EAAe,SAAmBA,EAAOvZ,SAAS0K,GAAiB6O,EAAOvZ,SAC5F0B,SAAU6X,EAAO7X,SAASE,KAAI,SAAAzL,GAAK,MAAA,CACjC0L,MAAO1L,EAAE0L,MACTuU,KAAMjgB,EAAEigB,KACRqD,MAAOF,EAAOE,MACdtb,KAAMob,EAAOpb,KACbqb,QAASrjB,EAAEqjB,QACXH,QAASljB,EAAEkjB,QACXrZ,SAAuC,mBAArBuZ,EAAe,SAAmBA,EAAOvZ,SAAS0K,GAAiB6O,EAAOvZ,SAC5F0Z,MAAOvjB,EAAEujB,WAIR,CACL7X,MAAO0X,EAAO1X,MACduU,KAAMmD,EAAOnD,KACbqD,MAAOF,EAAOE,MACdtb,KAAMob,EAAOpb,KACbqb,QAASD,EAAOC,QAChBH,QAASE,EAAOF,QAChBrZ,SAAuC,mBAArBuZ,EAAe,SAAmBA,EAAOvZ,SAAS0K,GAAiB6O,EAAOvZ,SAC5F0Z,MAAOH,EAAOG,UAIlB9kB,KAAAkc,UAAY,SAACpG,EAAsBiP,eAC3B5K,EAAkC,GACxC,KAAK4K,MAAAA,OAAO,EAAPA,EAASnjB,WAAWkU,MAAAA,OAAa,EAAbA,EAAelU,QACtC,MAAO,OAET,IAAqB,IAAAojB,EAAA3gB,GAAA0gB,GAAOE,EAAAD,EAAAviB,QAAAwiB,EAAAriB,KAAAqiB,EAAAD,EAAAviB,OAAE,CAAzB,IAAMkiB,EAAMM,EAAA1iB,MACXye,GAAO,EACHvO,EAAWkS,EAAMlS,OAazB,QAZe5I,IAAX4I,EACFuO,GAAO,EACsB,kBAApB,EACJvO,IACHuO,GAAO,GAGQvO,EAAOqD,KAEtBkL,GAAO,GAGPA,EACF,GAAI,aAAc2D,EAAQ,CACxB,IAAM7X,EAAyC,OAC/C,IAA2B,IAAA7D,GAAAwL,OAAA,EAAApQ,GAAAsgB,EAAO7X,WAAQ5D,EAAAD,EAAAxG,QAAAyG,EAAAtG,KAAAsG,EAAAD,EAAAxG,OAAE,CAAvC,IAAM0e,EAAYjY,EAAA3G,MACL2iB,EAAgB/D,EAAY1O,YACxB5I,IAAhBqb,EACFpY,EAAS3I,KAAKgd,GACoB,kBAAzB,EACJ+D,GACHpY,EAAS3I,KAAKgd,GAGC+D,EAAYpP,IAE3BhJ,EAAS3I,KAAKgd,qGAIhBrU,EAASlL,OAAS,GACpBuY,EAAQhW,KAAI5D,OAAA2R,OAAA3R,OAAA2R,OAAA,GAAMyS,GAAM,CAAE7X,SAAQA,UAGpCqN,EAAQhW,KAAKwgB,qGAInB,OAAOxK,EAAQnN,KAAI,SAAArK,GAAU,OAAAoC,GAAAa,EAAA8e,IAAAtjB,KAAAwE,EAAcjD,EAAQmT,4CApFtDuL,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,mCCDR,WAIEvO,KAAAkc,UAAY,SAACpG,EAAsB+G,EAAchJ,GAC/C,SAAKA,MAAAA,OAAS,EAATA,EAAWzI,WAGTyI,EAAUzI,SAASyR,EAAS/G,0BARtCuL,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,iCCDR,WAIEvO,KAAAkc,UAAY,SAAC1N,EAAcqF,GACzB,OAAKA,MAAAA,OAAS,EAATA,EAAWsR,mBAMTtR,EAAUsR,kBAAkB3W,KAL5BqF,EAAUzI,gCANpBiW,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,0CCQN,SACUjH,GADV,IAAA1B,EAAA5F,KACUA,KAAAsH,eAAAA,EAJVqK,GAAAA,IAAAA,KAEI,IAKJ3R,KAAA8R,KAAO,SAAClK,GACN,KAAKA,MAAAA,OAAa,EAAbA,EAAeJ,KAClB,OAAO,KAET,IAAMA,EAAMO,EAAAA,QAAK,CACfN,OAAQ,uCACRD,IAAKI,EAAcJ,MAUrB,OAPKzC,GAAAa,EAAAwf,IAAY5d,KACfzC,GAAAa,EAAAwf,IAAY5d,GAAO5B,EAAK0B,eAAelD,OAA4BoD,EAAK,CACtE+B,KAAM3B,MAAAA,OAAa,EAAbA,EAAekL,QACrB5S,KAAM0H,MAAAA,OAAa,EAAbA,EAAe1H,KACrBiJ,QAAS,MAGNpE,GAAAa,EAAAwf,IAAY5d,IAGrBxH,KAAAqlB,WAAa,SAACzd,SACZ,KAAKA,MAAAA,OAAa,EAAbA,EAAeJ,KAClB,OAAO,KAET,KAAKI,MAAAA,OAAa,EAAbA,EAAe0d,cAClB,OAAO,KAET,IAAM9d,EAAMO,EAAAA,QAAK,CACfN,OAAQ,uCACRD,IAAKI,EAAcJ,MAUrB,OAPKzC,GAAAa,EAAAwf,IAAY5d,KACfzC,GAAAa,EAAAwf,IAAY5d,GAAO5B,EAAK0B,eAAelD,OAA4BoD,EAAK,CACtE+B,KAAM,SACNrJ,KAAiC,QAA7B4H,EAAEF,MAAAA,OAAa,EAAbA,EAAe0d,oBAAY,IAAAxd,OAAA,EAAAA,EAAE5H,KACnCiJ,QAAS,MAGNpE,GAAAa,EAAAwf,IAAY5d,yCA/CtBQ,EAAAA,uDAJmBC,EAAAA,sCC4BlB,SAAAsd,EACUxZ,EACAyZ,EACAtZ,EACAC,EACAuJ,GALV,IAAA9P,EAAA5F,KACUA,KAAA+L,IAAAA,EACA/L,KAAAwlB,uBAAAA,EACAxlB,KAAAkM,cAAAA,EACAlM,KAAAmM,iBAAAA,EACAnM,KAAA0V,yBAAAA,EAXVjN,GAAAA,IAAAA,KAAgB,IAAIC,EAAAA,cACpB1I,KAAAylB,YAAc,CAAC,SAAU,SAAU,OAAQ,OAAQ,WAAY,OAAQ,SAAU,WAAY,gBAC7FzlB,KAAAyM,KAAO,IAAIC,EAAAA,UAAU,IACrB1M,KAAA0lB,UAAW,EAEX1lB,KAAA2lB,cAAwC,GA6BxC3lB,KAAA4lB,SAAW,SAAC9c,GACVlD,EAAKigB,OAAS/c,GAAU,CACtBC,MAAO6M,EAAAA,KACP3I,MAAO,GACP1D,KAAM,SACNuc,UAAU,EACVC,aAAa,GAEfngB,EAAK6G,KAAKuZ,kBACVpgB,EAAK6G,KAAKwZ,iBACVrgB,EAAK8f,UAAW,GAGlB1lB,KAAA4d,OAAS,iBACDsI,EAAgBtgB,EAAK4f,uBAAuBH,WAAWzf,EAAKgH,WAAW4F,QACvE2T,EAAUvgB,EAAK4f,uBAAuB1T,KAAoB,QAAhBhK,EAAClC,EAAKgH,kBAAU,IAAA9E,OAAA,EAAAA,EAAE0K,QAC9D5M,EAAKigB,OAAOC,SACTlgB,EAAKigB,OAAOO,GAMfF,EAAc7gB,IAAGT,GAAKgB,EAAKygB,gBAL3BH,EAAc7gB,IAAGT,GAAKgB,EAAKygB,cAAa,CAAA9lB,OAAA2R,OAAA3R,OAAA2R,OAAA,GACnCtM,EAAKigB,QAAM,CACdO,GAAIxQ,EAAAA,UAMHhQ,EAAKigB,OAAOO,GAMfD,EAAQ9gB,IAAGT,GAAKgB,EAAKI,UALrBmgB,EAAQ9gB,IAAGT,GAAKgB,EAAKI,QAAO,CAAAzF,OAAA2R,OAAA3R,OAAA2R,OAAA,GACvBtM,EAAKigB,QAAM,CACdO,GAAIxQ,EAAAA,kBAjDZ2P,EAAA9kB,UAAAqQ,SAAA,WAAA,UAAAlL,EAAA5F,KACQkmB,EAAgBlmB,KAAKwlB,uBAAuBH,WAAWrlB,KAAK4M,WAAW4F,QACvE2T,EAAUnmB,KAAKwlB,uBAAuB1T,KAAoB,QAAhBhK,EAAC9H,KAAK4M,kBAAU,IAAA9E,OAAA,EAAAA,EAAE0K,QAC9D0T,IACF,QAAAre,EAAA9C,GAAA/E,KAAAsmB,WAAA,IAAAze,GAAAA,EAAoByD,IAAI4a,EAAc5T,SAAS7G,WAAU,SAAAzF,GACvDJ,EAAKygB,cAAgBrgB,OAGrBmgB,IACF,QAAAld,EAAAlE,GAAA/E,KAAAsmB,WAAA,IAAArd,GAAAA,EAAoBqC,IAAI6a,EAAQ7T,SAAS7G,WAAU,SAAAzF,GACjDJ,EAAKI,QAAUA,OAGnBhG,KAAK2lB,cAAgB3lB,KAAK4M,WAAW5G,QAAQgD,QAAO,SAAAzH,GAAK,MAAW,aAAXA,EAAEgI,MAAkC,iBAAXhI,EAAEgI,SAGtFgc,EAAA9kB,UAAAiL,YAAA,WACE3G,GAAA/E,KAAAsmB,IAAmB3a,wDA1CtBzE,EAAAA,UAAShH,KAAA,CAAC,CACTC,SAAU,oBACVgH,SAAA,woFAEAya,gBAAiBC,EAAAA,wBAAwBC,+RAjBJ/Q,EAAAA,yBAM9BwV,UALArV,EAAAA,uBACAC,EAAAA,0BAEA8O,2CAgBN7Y,EAAAA,UAASlH,KAAA,CAACsmB,EAAAA,kCACVnmB,EAAAA,gBCAD,WAJSL,KAAAqW,QAEL,yBAdLnP,EAAAA,UAAShH,KAAA,CAAC,CACTC,SAAU,kBACVgH,SAAA,iyCACAya,gBAAiBC,EAAAA,wBAAwBC,iFAGxCzhB,EAAAA,qBACAA,EAAAA,mBACAA,EAAAA,sBACAA,EAAAA,oBACAA,EAAAA,0BACAA,EAAAA,uBACAA,EAAAA,mBAGAA,EAAAA,gBCPD,WAAA,IAAAuF,EAAA5F,KAGAA,KAAAymB,SAAW,qBACe,aAArB7gB,EAAKkD,OAAOS,MAA4C,iBAArB3D,EAAKkD,OAAOS,OAGvB,QAA3BN,EAAmB,QAAnBpB,EAAW,QAAXC,EAAAlC,EAAKkD,cAAM,IAAAhB,OAAA,EAAAA,EAAEiM,cAAM,IAAAlM,OAAA,EAAAA,EAAE6e,cAAM,IAAAzd,GAAAA,EAAA7H,KAAAyG,EAAGjC,EAAKgF,8BAjBtC1D,EAAAA,UAAShH,KAAA,CAAC,CACTC,SAAU,yBACVgH,SAAA,q2DAEAya,gBAAiBC,EAAAA,wBAAwBC,8jCAGxCzhB,EAAAA,sBACAA,EAAAA,oBACAA,EAAAA,2BCNH,SAAAsmB,YACEA,EAAAlmB,UAAAyb,UAAA,SAAU0K,EAA6Bhc,EAAcgC,GAC3C,IAAAmH,EAAWnH,EAAUmH,OAC7B,IAAKA,EACH,OAAO,KAQT,GALkC,mBAAtBA,MAAAA,OAAM,EAANA,EAAQ3I,UACL2I,EAAO3I,SAASR,GAEhBmJ,MAAAA,OAAM,EAANA,EAAQ3I,SAGrB,OAAO,KAET,GAAoB,WAAhB2I,EAAOxK,KAAmB,CAC5B,IAAM0K,EAAYF,EAAOE,UACzBrJ,EAAK6S,iBAAgBld,OAAA2R,OAAA3R,OAAA2R,OAAA,GAChBtH,EAAK6S,kBAAgB,CACxBtJ,SAAS,EACTD,UAAU,EACVD,UAAsB,WAAX2S,IAA+C,mBAAvB,EAAoC3S,EAAUrJ,GAAQqJ,GACzF4S,SAAS,EACTC,WAAuB,WAAXF,SAET,GAAoB,UAAhB7S,EAAOxK,KAAkB,CAClC,IAAM2K,EAAWH,EAAOG,SACxBtJ,EAAK6S,iBAAgBld,OAAA2R,OAAA3R,OAAA2R,OAAA,GAChBtH,EAAK6S,kBAAgB,CACxBtJ,UAAWyS,EACX1S,UAAW0S,IAAiC,mBAAtB,EAAmC1S,EAAStJ,GAAQsJ,GAC1ED,WAAW,EACX4S,UAAWD,EACXE,aAAcF,SAEX,GAAoB,UAAhB7S,EAAOxK,KAAkB,CAC5B2K,EAAWH,EAAOG,SACxBtJ,EAAK6S,iBAAgBld,OAAA2R,OAAA3R,OAAA2R,OAAA,GAChBtH,EAAK6S,kBAAgB,CACxBtJ,SAAS,EACTD,UAAW0S,IAAiC,mBAAtB,EAAmC1S,EAAStJ,GAAQsJ,GAC1ED,WAAW,EACX4S,SAAS,EACTC,YAAY,IAGhB,OAAOlc,EAAK6S,4CAjDf4D,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,2CCIR,SAAAwY,YACEA,EAAAtmB,UAAAyb,UAAA,SAAU3Z,EAAYqI,EAAc9B,EAA8B8D,WAChE,GAAoB,aAAhB9D,EAAOS,MAAuC,iBAAhBT,EAAOS,KAAzC,CAGQ,IAAAvD,EAAY4G,EAAU5G,QACxBmO,EAAU,SAAClB,GACf,GAAiB,aAAbA,EAAI1J,MAAoC,iBAAb0J,EAAI1J,KACjC,OAAO,EAGT,GAAI0J,EAAIc,SAC8C,mBAAzBd,EAAIc,OAAe,SAAmBd,EAAIc,OAAO3I,SAASR,GAAQqI,EAAIc,OAAO3I,UAEtG,OAAO,EAGX,OAAO,GAETR,EAAKyU,oBAAsBzU,EAAKyU,qBAAuB,GACvDzU,EAAKyU,oBAAoBvW,EAAOC,OAAMxI,OAAA2R,OAAA3R,OAAA2R,OAAA,GACjCtH,EAAKyU,oBAAoBvW,EAAOC,QAAM,CACzCoL,QAASA,EAAQrL,SAEnB,IAAkB,IAAAI,EAAA7E,GAAA2B,EAAQgD,QAAO,SAAAzH,GAAC,IAAAuG,EAAAD,EAAA,OAAiC,QAAjCA,EAAiB,QAAjBC,EAAIgB,EAAOiL,cAAM,IAAAjM,OAAA,EAAAA,EAAEkf,sBAAc,IAAAnf,OAAA,EAAAA,EAAE0M,SAAShT,EAAEwH,WAAOO,EAAAJ,EAAAzG,QAAA6G,EAAA1G,KAAA0G,EAAAJ,EAAAzG,OAAE,CAApF,IAAMwQ,EAAG3J,EAAA/G,MACZqI,EAAKyU,oBAAoBpM,EAAIlK,OAAMxI,OAAA2R,OAAA3R,OAAA2R,OAAA,GAC9BtH,EAAKyU,oBAAoBpM,EAAIlK,QAAM,CACtCoL,QAASA,EAAQlB,uGAIrB,OADArI,EAAK0T,KAAOvW,EAAK6C,IACV,8BAlCVyW,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,8CCFR,SAAA0Y,IAKUjnB,KAAAknB,MAAQ,WACVD,EAAAxmB,UAAAyb,UAAA,SAAUoC,EAAc1T,EAAcgC,iHAG1C,OAFQmH,EAAWnH,EAAUmH,OAC7BnJ,EAAK6S,iBAAmB7S,EAAK6S,kBAAoB,GAC5C1J,EAAO+J,UAIZ9d,KAAKmnB,SAAW,IAAIrO,KACpB,CAAA,EAAM,IAAI3W,SAAQ,SAAAC,GAAW,OAAAglB,WAAWhlB,EAASwD,EAAKshB,aAJpDtc,EAAK6S,iBAAiB8B,aAAe,KACrC,CAAA,WAMF,OAHA1X,EAAAvE,OACM+jB,EAAM,IAAIvO,KACJuO,EAAIjO,UAAYpZ,KAAKmnB,SAAS/N,UAChCpZ,KAAKknB,MACb,CAAA,IAEIvkB,EAASoR,EAAO+J,SAASlT,cACTzI,SACpB2F,EAAA8C,EAAK6S,iBAAgC,CAAA,EAAM9a,IADzC,CAAA,EAAA,UAEF,OADAmF,EAAsByX,aAAe1X,EAAAvE,OACrC,CAAA,UAGA,OADAsH,EAAK6S,iBAAiB8B,aAAe5c,EACrC,CAAA,qCA1BL0e,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,yCCAR,SAAA+Y,YACEA,EAAA7mB,UAAAyb,UAAA,SAAUtR,EAAWgC,WACnB,OAAgC,QAAzB/E,EAAiB,QAAjBC,EAAA8E,MAAAA,OAAU,EAAVA,EAAY+S,aAAK,IAAA7X,OAAA,EAAAA,EAAEyf,cAAM,IAAA1f,OAAA,EAAAA,EAAAzG,KAAA0G,EAAG8C,KAAS,8BAL/CyW,EAAAA,KAAInhB,KAAA,CAAC,CACJqO,KAAM,2BCUN,kCAVDrH,EAAAA,UAAShH,KAAA,CAAC,CACTC,SAAU,+BACVgH,SAAA,2RAEAya,gBAAiBC,EAAAA,wBAAwBC,oQAGxCzhB,EAAAA,oBACAA,EAAAA,0BACAA,EAAAA,4BC2DH,SAAAmnB,IAAA,IAAA5hB,EAAA6hB,EAAA3kB,MAAA9C,KAAA4E,GAAAC,aAAA7E,YAEE4F,EAAA8hB,eAAiB,YACjB9hB,EAAA+hB,cAAgB,aAChB/hB,EAAAgiB,kBAAoB,mBACpBhiB,EAAAiiB,cAAgB,YAChBjiB,EAAAkiB,kBAAoB,cAEpBliB,EAAAmiB,cAAgB,SAACnJ,EAAcrZ,EAAkB3D,GAC/C,GAAe,IAAXA,GAA6B,IAAb2D,EAClB,MAAO,GAET,IAAMiE,EAAOoV,EAAOrZ,EAAW,EAE/B,OAAUiE,EAAI,KADHA,GAAQ5H,EAASgd,EAAOrZ,EAAWA,EAAWA,EAAW3D,EAASgd,EAAOrZ,GAAY,GAC5E,SAAS3D,qBxC9DPf,EAAGC,GAEzB,SAASknB,IAAOhoB,KAAKioB,YAAcpnB,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEJ,UAAkB,OAANK,EAAaP,OAAO6D,OAAOtD,IAAMknB,EAAGvnB,UAAYK,EAAEL,UAAW,IAAIunB,GwC8C1CE,CAAAV,EAAAC,MAAAU,EAAAA,uCADxCngB,EAAAA,oBA+GD,kCA7FCogB,EAAAA,SAAQloB,KAAA,CAAC,CACRmoB,QAAS,CACPC,EAAAA,aACAC,EAAAA,YACAC,EAAAA,oBACAC,EAAAA,eACAC,EAAAA,mBACAC,EAAAA,cACAC,EAAAA,mBACAC,EAAAA,eACAC,EAAAA,cACAC,EAAAA,cACAC,EAAAA,gBACAC,EAAAA,iBACAC,EAAAA,yBACAC,EAAAA,eACAC,EAAAA,eACAC,EAAAA,qBACAC,EAAAA,kBACAC,EAAAA,cACAC,EAAAA,iBACAC,EAAAA,eACAC,EAAAA,eACAC,EAAAA,aACAC,EAAAA,gBACAC,EAAAA,gBACAC,EAAAA,iBAEFC,aAAc,CACZC,GACAC,GACAC,GACAC,GACAC,GACAC,GACA5U,GAEAyN,GACAvC,EACAD,EACApgB,EACAigB,EACAC,EACA1U,GACA8X,GACA1b,GACAvC,GACA4f,GAGA5B,GACAjB,GACAI,GACAlC,GACAU,GACAC,GACAE,GACA6I,GACA5I,GACAK,GACAyC,GACAxB,GACAR,GACAH,GACAkI,GACAC,GACAC,GACA9D,GACAI,GACAE,GACAK,IAEFoD,QAAS,CACPjV,GACAkL,EACAD,EACApgB,EACAkgB,EACAD,GAEFoK,UAAW,CACTC,EAAAA,SACAxI,EAAAA,YACAyI,EAAAA,aACA3K,GACArU,GACAoU,GACAsG,GACA,CACEuE,QAAS3C,EAAAA,iBAAkB4C,SAAUvD","sourcesContent":["import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialCellDef]'\r\n})\r\nexport class SdMaterialCellDefDirective {\r\n @Input() sdMaterialCellDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFilterDef]'\r\n})\r\nexport class SdMaterialFilterDefDirective {\r\n @Input() sdMaterialFilterDef: string;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n defaultShowing: boolean;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFooterDef]'\r\n})\r\nexport class SdMaterialFooterDefDirective {\r\n @Input() sdMaterialFooterDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialEmptyDataDef]'\r\n})\r\nexport class SdMaterialEmptyDataDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialSubInformationDef]'\r\n})\r\nexport class SdMaterialSubInformationDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface ISdGridMaterialConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n };\r\n paginate?: {\r\n pageSize?: number;\r\n pages?: number[]\r\n };\r\n translate?: boolean;\r\n}\r\n\r\nexport const DEFAULT_GRID_MATERIAL_CONFIG: ISdGridMaterialConfiguration = {\r\n paginate: {\r\n pageSize: 50,\r\n pages: [50, 100, 200]\r\n }\r\n};\r\n\r\nexport const GRID_MATERIAL_CONFIG = new InjectionToken<ISdGridMaterialConfiguration>('sd-grid-material.configuration');\r\n","import { Component, ViewChild, Output, EventEmitter, Input } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialExternalFilter } from '../../models/grid-filter.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\n\r\n@Component({\r\n selector: 'sd-popup-filter',\r\n templateUrl: './popup-filter.component.html',\r\n styleUrls: ['./popup-filter.component.scss']\r\n})\r\nexport class SdPopupFilter {\r\n @ViewChild('modal') modal: SdModal;\r\n @Input() externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: any = {};\r\n inlineExternal: {\r\n [key: string]: boolean\r\n } = {};\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n columnFilter: any = {};\r\n inlineColumn: {\r\n [key: string]: boolean\r\n } = {};\r\n\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: any = {};\r\n inlineFilterDef: {\r\n [key: string]: boolean;\r\n } = {};\r\n\r\n @Output() changeFilter = new EventEmitter<{\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }>();\r\n @Output() clearFilter = new EventEmitter();\r\n constructor(\r\n ) {\r\n }\r\n\r\n open = (args: {\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }) => {\r\n const { inlineColumn, columnFilter, inlineExternal, externalFilter, inlineFilterDef, filterDef } = args;\r\n this.inlineColumn = JSON.parse(JSON.stringify(inlineColumn || {}));\r\n this.columnFilter = JSON.parse(JSON.stringify(columnFilter || {}));\r\n this.inlineExternal = JSON.parse(JSON.stringify(inlineExternal || {}));\r\n this.externalFilter = JSON.parse(JSON.stringify(externalFilter || {}));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(inlineFilterDef || {}));\r\n this.filterDef = JSON.parse(JSON.stringify(filterDef || {}));\r\n this.modal.open();\r\n }\r\n\r\n close = () => {\r\n this.modal.close();\r\n }\r\n\r\n onApply = () => {\r\n this.changeFilter.emit({\r\n inlineColumn: this.inlineColumn || {},\r\n columnFilter: this.columnFilter || {},\r\n inlineExternal: this.inlineExternal || {},\r\n externalFilter: this.externalFilter || {},\r\n inlineFilterDef: this.inlineFilterDef || {},\r\n filterDef: this.filterDef || {}\r\n });\r\n this.modal.close();\r\n }\r\n\r\n onClear() {\r\n this.clearFilter.emit();\r\n this.modal.close();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialFilterConfiguration } from '../models/grid-filter.model';\r\n\r\n@Injectable()\r\nexport class SdGridFilterService {\r\n #prefix = '61d22e8e-eee8-4aad-8e1c-044a532fea91';\r\n constructor(private settingService: SdSettingService) {\r\n }\r\n get = async (key: string): Promise<SdGridMaterialFilterConfiguration> => {\r\n if (!key) {\r\n return {\r\n selectedQuickFilter: null,\r\n quickFilters: [],\r\n inlineExternal: {},\r\n inlineColumn: {},\r\n inlineFilterDef: {}\r\n };\r\n }\r\n const { get } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n const configuration = await get();\r\n return {\r\n selectedQuickFilter: configuration?.selectedQuickFilter ?? null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration?.inlineExternal || {},\r\n inlineColumn: configuration?.inlineColumn || {},\r\n inlineFilterDef: configuration?.inlineFilterDef || {},\r\n };\r\n }\r\n\r\n set = async (key: string, configuration: SdGridMaterialFilterConfiguration): Promise<SdGridMaterialFilterConfiguration> => {\r\n configuration = {\r\n selectedQuickFilter: configuration?.selectedQuickFilter || null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration.inlineExternal || {},\r\n inlineColumn: configuration.inlineColumn || {},\r\n inlineFilterDef: configuration.inlineFilterDef || {}\r\n };\r\n if (!key) {\r\n return configuration;\r\n }\r\n const { set } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n key = hash({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n await set(configuration);\r\n return configuration;\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter, ViewChild, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { SdGridMaterialFilterOption, SdGridMaterialExternalFilter } from '../../models/grid-filter.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdGridFilterService } from '../../services/grid-filter.service';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\n\r\n@Component({\r\n selector: 'sd-grid-filter',\r\n templateUrl: './grid-filter.component.html',\r\n styleUrls: ['./grid-filter.component.scss']\r\n})\r\nexport class SdGridFilter implements AfterViewInit, OnDestroy {\r\n @ViewChild(SdPopupFilter) popupFilter: SdPopupFilter;\r\n isVisible = true;\r\n filter: Readonly<SdGridMaterialFilterOption>;\r\n #filterOptionChanges = new Subject<SdGridMaterialFilterOption>();\r\n @Input('filter') set _filter(filter: SdGridMaterialFilterOption) {\r\n this.filter = filter;\r\n this.isVisible = !this.filter?.disabled;\r\n this.#filterOptionChanges.next(this.filter);\r\n }\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: any = {};\r\n inlineFilterDef: {\r\n [key: string]: boolean;\r\n } = {};\r\n\r\n @Output() filterChange = new EventEmitter();\r\n #subscription = new Subscription();\r\n\r\n columnFilter: any = {};\r\n inlineColumn: {\r\n [key: string]: boolean;\r\n } = {};\r\n externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: any = {};\r\n inlineExternal: {\r\n [key: string]: boolean;\r\n } = {};\r\n isMobileOrTablet: boolean;\r\n constructor(\r\n private deviceService: DeviceDetectorService,\r\n private gridFilterService: SdGridFilterService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.#filterOptionChanges.pipe(startWith(this.filter)).subscribe(() => {\r\n if (!this.isVisible) {\r\n this.filterChange.emit();\r\n return;\r\n }\r\n this.externalFilters = this.filter?.externalFilters || [];\r\n this.gridFilterService.get(this.filter?.key).then(configuration => {\r\n this.inlineColumn = configuration.inlineColumn;\r\n this.inlineExternal = configuration.inlineExternal;\r\n this.inlineFilterDef = configuration.inlineFilterDef;\r\n this.#loadDefault();\r\n this.filterChange.emit();\r\n });\r\n }));\r\n }\r\n\r\n #loadDefault = () => {\r\n for (const column of this.columns) {\r\n this.inlineColumn[column.field] = this.inlineColumn[column.field] ?? column?.filter?.defaultShowing;\r\n this.columnFilter[column.field] = this.columnFilter[column.field] ?? column?.filter?.default;\r\n }\r\n for (const externalFilter of this.externalFilters) {\r\n this.inlineExternal[externalFilter.field] = this.inlineExternal[externalFilter.field] ?? externalFilter?.defaultShowing;\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: this.externalFilter[externalFilter.field]?.from ?? externalFilter.default?.from ?? undefined,\r\n to: this.externalFilter[externalFilter.field]?.to ?? externalFilter.default?.to ?? undefined\r\n };\r\n } else {\r\n this.externalFilter[externalFilter.field] = this.externalFilter[externalFilter.field] ?? externalFilter.default;\r\n }\r\n }\r\n for (const filterDef of this.filterDefs) {\r\n this.inlineFilterDef[filterDef.sdMaterialFilterDef] = this.inlineFilterDef[filterDef.sdMaterialFilterDef] ?? filterDef?.defaultShowing;\r\n }\r\n }\r\n\r\n #clearFilter = () => {\r\n this.columnFilter = {};\r\n this.externalFilter = {};\r\n this.filterDef = {};\r\n for (const externalFilter of this.externalFilters) {\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: undefined,\r\n to: undefined\r\n };\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFilter = (item?: SdGridMaterialColumn | SdGridMaterialExternalFilter) => {\r\n this.filterChange.emit();\r\n }\r\n\r\n open = () => {\r\n this.popupFilter.open({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef\r\n });\r\n }\r\n\r\n onChangeFilter = (args: {\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }) => {\r\n const { inlineColumn, columnFilter, inlineExternal, externalFilter, inlineFilterDef, filterDef } = args;\r\n this.inlineColumn = inlineColumn;\r\n this.columnFilter = columnFilter;\r\n this.inlineExternal = inlineExternal;\r\n this.externalFilter = externalFilter;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.filterDef = filterDef;\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn,\r\n inlineExternal,\r\n quickFilters: [],\r\n inlineFilterDef,\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.emit();\r\n }\r\n\r\n onReset = () => {\r\n this.inlineColumn = {};\r\n this.columnFilter = {};\r\n this.inlineExternal = {};\r\n this.externalFilter = {};\r\n this.inlineFilterDef = {};\r\n this.filterDef = {};\r\n this.#loadDefault();\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.columnFilter,\r\n inlineFilterDef: this.inlineFilterDef,\r\n quickFilters: [],\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.emit();\r\n }\r\n\r\n onClearFilter = () => {\r\n this.#clearFilter();\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.columnFilter,\r\n inlineFilterDef: this.inlineFilterDef,\r\n quickFilters: [],\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.emit();\r\n }\r\n\r\n setFilter = (args: {\r\n columnFilter: any,\r\n externalFilter: any,\r\n filterDef: any\r\n }) => {\r\n if (args?.columnFilter) {\r\n this.columnFilter = args.columnFilter;\r\n }\r\n if (args?.externalFilter) {\r\n this.externalFilter = args.externalFilter;\r\n }\r\n if (args?.filterDef) {\r\n this.filterDef = args.filterDef;\r\n }\r\n for (const externalFilter of this.externalFilters) {\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: this.externalFilter[externalFilter.field]?.from ?? undefined,\r\n to: this.externalFilter[externalFilter.field]?.to ?? undefined\r\n };\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, AfterViewInit, ViewChild, Output, EventEmitter, Input, ChangeDetectorRef } from '@angular/core';\r\n\r\nimport * as uuid from 'uuid';\r\n\r\nimport {\r\n SdNotifyService\r\n} from '@sd-angular/core/notify';\r\n\r\nimport {\r\n SdLoadingService\r\n} from '@sd-angular/core/loading';\r\n\r\nimport {\r\n SdTranslateService\r\n} from '@sd-angular/core/translate';\r\nimport hash from 'object-hash';\r\nimport { MatSelectionList } from '@angular/material/list';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdExportFile, SdExportService, SdExportColumn } from '@sd-angular/core/export';\r\nimport { SdGroupExport } from '../../models/grid-export.model';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'sd-popup-export',\r\n templateUrl: './popup-export.component.html',\r\n styleUrls: ['./popup-export.component.scss']\r\n})\r\nexport class SdPopupExport implements OnInit, AfterViewInit {\r\n gridOption: SdGridMaterialOption;\r\n columns: SdExportColumn[] = [];\r\n groups: SdGroupExport[] = [];\r\n templateName: string;\r\n enableCreating = false;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('listGroups') listGroups: MatSelectionList;\r\n\r\n selected: {\r\n [key: string]: boolean\r\n } = {};\r\n files: SdExportFile[] = [];\r\n selectedGroup: SdGroupExport;\r\n\r\n @Output() export = new EventEmitter<{ file: SdExportFile, columns: SdExportColumn[], isCSV?: boolean }>();\r\n form = new FormGroup({});\r\n\r\n @Input('gridOption') set _gridOption(option: SdGridMaterialOption) {\r\n this.gridOption = option;\r\n this.columns = this.#getExportableColumns();\r\n this.groups = this.#getExportableGroups();\r\n }\r\n private get key(): string {\r\n const prefix = '93889e78-f971-4a1d-8c73-fe2321af9233';\r\n if (!this.gridOption?.export?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: this.gridOption?.export?.key\r\n });\r\n }\r\n\r\n #getExportableColumns = (): SdExportColumn[] => {\r\n const columns: SdExportColumn[] = [];\r\n this.gridOption.columns.filter(e => !e.export?.disabled).forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === 'children-col') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return [...columns, ...(this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [])].map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width\r\n }));\r\n }\r\n\r\n #getExportableGroups = () => {\r\n return this.gridOption?.export?.groups?.filter(e => {\r\n const permission = e.permission;\r\n if (typeof (permission) === 'function') {\r\n return permission();\r\n }\r\n return permission;\r\n }) || [];\r\n }\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n open = async () => {\r\n if (!this.key) {\r\n this.exportDefault();\r\n return;\r\n }\r\n if (this.groups.length === 1 && this.gridOption?.export?.hideMyTemplates) {\r\n this.loadFiles(this.groups[0].code);\r\n } else {\r\n this.loadFiles(null);\r\n }\r\n this.selected = {};\r\n this.modal.open();\r\n this.ref.detectChanges();\r\n }\r\n\r\n exportDefault = (isCSV: boolean = false) => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.columns,\r\n isCSV\r\n });\r\n }\r\n\r\n\r\n loadFiles = async (group: string = null) => {\r\n this.selectedGroup = this.groups.find(e => e.code === group);\r\n this.files = await this.exportService.filesInFolder({\r\n key: this.key,\r\n group\r\n });\r\n }\r\n\r\n #initTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.exportService.generateTemplate({\r\n fileName: fileName || this.gridOption?.export?.fileName,\r\n columns: this.columns,\r\n sheets\r\n });\r\n }\r\n\r\n generateTemplate = async () => {\r\n this.loadingService.start();\r\n const result = await this.#initTemplate().finally(this.loadingService.stop);\r\n if (result?.filePath) {\r\n this.exportService.download(result.filePath, `${this.gridOption?.export?.fileName || uuid}.xlsx`);\r\n }\r\n }\r\n\r\n generateAndUploadTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption?.export?.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.exportService.generateUploadTemplate({\r\n key: this.key,\r\n template: {\r\n fileName: fileName || this.gridOption?.export?.fileName,\r\n columns: this.columns.filter(e => this.selected[e.field]),\r\n sheets\r\n },\r\n group: this.selectedGroup?.code\r\n });\r\n }\r\n\r\n onExport = (file: SdExportFile) => {\r\n this.export.emit({\r\n file,\r\n columns: this.columns\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n uploadTemplate = async () => {\r\n const file = await this.exportService.uploadTemplate({\r\n key: this.key,\r\n group: this.selectedGroup?.code,\r\n validator: this.gridOption?.export?.validators\r\n });\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n\r\n removeFile = (file: SdExportFile) => {\r\n this.notifyService.confirm(this.translateService.translate('Remove template')).then(() => {\r\n this.exportService.removeFile({\r\n key: this.key,\r\n fileName: file.fileName,\r\n group: this.selectedGroup?.code || null\r\n });\r\n const idx = this.files.indexOf(file);\r\n this.files.splice(idx, 1);\r\n this.files = [...this.files];\r\n this.ref.detectChanges();\r\n });\r\n }\r\n\r\n createTemplate = async () => {\r\n const { translate } = this.translateService;\r\n if (this.form.invalid) {\r\n this.form.markAllAsTouched();\r\n return;\r\n }\r\n if (!this.columns.some(e => this.selected[e.field])) {\r\n this.notifyService.notify.warning(translate('Please select columns'));\r\n return;\r\n }\r\n this.loadingService.start();\r\n const fileName = this.templateName + '.xlsx';\r\n try {\r\n if (this.gridOption?.export?.validators?.(fileName)) {\r\n this.notifyService.notify.warning(this.gridOption?.export?.validators(fileName));\r\n return;\r\n }\r\n const result = await this.generateAndUploadTemplate(fileName);\r\n if (result?.filePath) {\r\n const file: SdExportFile = {\r\n filePath: result.filePath,\r\n fileName: result.fileName\r\n };\r\n this.onExport(file);\r\n this.templateName = null;\r\n this.enableCreating = false;\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n }\r\n\r\n onChangeGroup = () => {\r\n this.loadFiles(this.listGroups?.selectedOptions?.selected[0]?.value);\r\n }\r\n\r\n validatorTemplateName = (val: string) => {\r\n const { translate } = this.translateService;\r\n const regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/;\r\n if (!val) {\r\n return translate('Please enter your template name');\r\n }\r\n if (val.length > 50) {\r\n return translate('Template name is too long');\r\n }\r\n if (!regex.test(val)) {\r\n return translate('Template name only contains letters, numbers and spaces');\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnConfiguration, SdGridConfiguration, SdGridConfigurationCache, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { GRID_MATERIAL_CONFIG, ISdGridMaterialConfiguration } from '../models/grid-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdGridConfigurationService {\r\n #COLUMNS = {\r\n EDITORVALIDATION: 'sdEditorValidation',\r\n EDITOR: 'sdEditor',\r\n SUBINFORMATION: 'sdSubInformationAction',\r\n COMMAND: 'sdCommand',\r\n SELECTION: 'sdSelection'\r\n };\r\n #cache: {\r\n [key: string]: SdGridConfigurationCache\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(GRID_MATERIAL_CONFIG) @Optional() public gridMaterialConfiguration: ISdGridMaterialConfiguration) {\r\n }\r\n\r\n init = (key: string, gridOption: SdGridMaterialOption) => {\r\n if (!this.#cache[key]) {\r\n const subject = new Subject<SdGridConfiguration>();\r\n this.#cache[key] = {\r\n load: this.#load(gridOption, subject),\r\n get: this.#get(gridOption),\r\n set: (configuration: SdGridConfiguration) => {\r\n configuration = this.#set(gridOption, configuration);\r\n subject.next({ ...configuration });\r\n return configuration;\r\n },\r\n remove: () => {\r\n this.#remove(gridOption)();\r\n subject.next(this.#default(gridOption));\r\n },\r\n observer: subject\r\n };\r\n }\r\n return this.#cache[key];\r\n }\r\n\r\n #getKey = (gridOption: SdGridMaterialOption) => {\r\n const prefix = 'c9e94836-6ace-4aeb-b148-4f0be63589ee';\r\n if (!gridOption?.config?.key && !gridOption?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: gridOption?.config?.key || !gridOption?.key\r\n });\r\n }\r\n\r\n #default = (gridOption: SdGridMaterialOption): SdGridConfiguration => {\r\n const columns: SdColumnConfiguration[] = gridOption?.columns?.filter(e => !e.hidden).map(e => ({\r\n origin: {\r\n field: e.field,\r\n title: e.title,\r\n width: e.width,\r\n invisible: e.invisible\r\n },\r\n invisible: e.invisible,\r\n fixed: false\r\n })) || [];\r\n return {\r\n columns\r\n };\r\n }\r\n\r\n #load = (gridOption: SdGridMaterialOption, subject: Subject<SdGridConfiguration>) => {\r\n return async () => {\r\n const get = this.#get(gridOption);\r\n const configuration = await get();\r\n subject.next({ ...configuration });\r\n };\r\n }\r\n\r\n #get = (gridOption: SdGridMaterialOption) => {\r\n return async () => {\r\n const key = this.#getKey(gridOption);\r\n if (!key) {\r\n return this.#default(gridOption);\r\n }\r\n const { columns, config } = gridOption;\r\n const { get, remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: config?.storage,\r\n args: config?.args\r\n });\r\n const configuration: SdGridConfiguration = await get().catch(() => undefined);\r\n if (!configuration?.columns) {\r\n remove().catch(console.error);\r\n return this.#default(gridOption);\r\n }\r\n configuration.columns = configuration.columns\r\n .filter(column => column.isGeneratedColumn || columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // Thêm những column mới vào storage nếu có\r\n columns.forEach(column => {\r\n const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n if (!col) {\r\n configuration.columns.push({\r\n origin: {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible,\r\n },\r\n invisible: column.invisible,\r\n fixed: false\r\n });\r\n } else {\r\n col.origin = {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible\r\n };\r\n }\r\n });\r\n return configuration;\r\n };\r\n }\r\n\r\n #set = (gridOption: SdGridMaterialOption, configuration: SdGridConfiguration) => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n const { set } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args\r\n });\r\n set(configuration);\r\n }\r\n return JSON.parse(JSON.stringify(configuration));\r\n }\r\n\r\n #remove = (gridOption: SdGridMaterialOption) => {\r\n return () => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n const { remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args\r\n });\r\n remove();\r\n }\r\n };\r\n }\r\n\r\n // get = async (gridOption: SdGridMaterialOption): Promise<SdGridConfiguration> => {\r\n // if (!gridOption?.key) {\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // const { key, columns } = gridOption;\r\n // const configuration: SdGridConfiguration = await this.settingService.get(this.#getKey(key)).catch(() => undefined);\r\n // if (!configuration?.columns) {\r\n // this.settingService.remove(this.#getKey(key)).catch(console.error);\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // configuration.columns = configuration.columns\r\n // .filter(column => columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // // Thêm những column mới vào storage nếu có\r\n // columns.forEach(column => {\r\n // const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n // if (!col) {\r\n // configuration.columns.push({\r\n // origin: {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible,\r\n // },\r\n // invisible: column.invisible,\r\n // fixed: false\r\n // });\r\n // } else {\r\n // col.origin = {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible\r\n // };\r\n // }\r\n // });\r\n // return configuration;\r\n // }\r\n\r\n // set = async (key: string, configuration: SdGridConfiguration): Promise<SdGridConfiguration> => {\r\n // if (key) {\r\n // this.settingService.set(this.#getKey(key), configuration);\r\n // }\r\n // return configuration;\r\n // }\r\n\r\n // remove = (key: string) => {\r\n // if (key) {\r\n // this.settingService.remove(this.#getKey(key));\r\n // }\r\n // }\r\n\r\n generateConfigurationResult = (\r\n configuration: SdGridConfiguration,\r\n gridOption: SdGridMaterialOption,\r\n sdSubInformation: SdMaterialSubInformationDefDirective) => {\r\n const result: SdGridConfigurationResult = {\r\n column: {},\r\n fixedColumn: {},\r\n firstColumns: [],\r\n secondColumns: [],\r\n firstHeaders: [],\r\n secondHeaders: [],\r\n displayedColumns: [],\r\n displayedFooters: [],\r\n multipleHeader: false\r\n };\r\n const { selection, commands, editor } = gridOption || {};\r\n if (editor?.addable || (editor?.type === 'inline' && editor?.removable) || (editor?.type === 'focus' && editor?.editable)) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITORVALIDATION);\r\n result.displayedColumns.push(this.#COLUMNS.EDITORVALIDATION);\r\n }\r\n if (selection?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (editor?.addable || (editor?.type === 'inline' && editor?.removable) || (editor?.type === 'focus' && editor?.editable) || (editor?.type === 'popup' && editor?.editable)) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITOR);\r\n result.displayedColumns.push(this.#COLUMNS.EDITOR);\r\n }\r\n if (commands?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.COMMAND);\r\n result.displayedColumns.push(this.#COLUMNS.COMMAND);\r\n }\r\n configuration?.columns?.filter(col => !col.invisible).forEach(col => {\r\n if (col.isGeneratedColumn) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n const generatedColumn: SdGridMaterialColumn = {\r\n type: 'children',\r\n field: col.origin.field,\r\n title: col.origin.title,\r\n children: []\r\n };\r\n for (const subColumn of gridOption?.columns.filter(e1 => col.generatedColumns.includes(e1.field))) {\r\n if (subColumn.type === 'children' || subColumn.type === 'children-col') {\r\n for (const childColumn of subColumn.children) {\r\n generatedColumn.children.push({\r\n ...childColumn,\r\n colSpan: 2\r\n });\r\n }\r\n } else {\r\n generatedColumn.children.push({\r\n ...subColumn,\r\n colSpan: 2\r\n });\r\n }\r\n\r\n }\r\n result.firstColumns.push({\r\n ...generatedColumn,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n result.displayedColumns.push(col.origin.field);\r\n return;\r\n }\r\n const column = gridOption?.columns.find(e => e.field === col.origin.field);\r\n if (column) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n result.firstColumns.push({\r\n ...column,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n if (column.type === 'children-col') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n } else {\r\n result.displayedColumns.push(col.origin.field);\r\n }\r\n }\r\n });\r\n if (sdSubInformation?.templateRef) {\r\n result.firstHeaders.push(this.#COLUMNS.SUBINFORMATION);\r\n result.displayedColumns.push(this.#COLUMNS.SUBINFORMATION);\r\n }\r\n result.multipleHeader = result.secondHeaders.length > 0;\r\n // Sub infomation không thể có footer\r\n result.displayedFooters = result.displayedColumns.filter(val => val !== this.#COLUMNS.SUBINFORMATION);\r\n return result;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\n\r\n@Injectable()\r\nexport class SdGridService {\r\n #prefix = 'a1e67660-8aa2-4c11-b02d-71a32188719f';\r\n #cache: {\r\n [key: string]: {\r\n values: any[],\r\n obj: {\r\n [key: string]: any\r\n }\r\n }\r\n } = {};\r\n constructor(private utilityService: SdUtilityService) {\r\n }\r\n loadValues = async (column: SdGridMaterialColumn, key: string): Promise<{ values: any[], obj: { [key: string]: any } }> => {\r\n if (column.type !== 'values' || !column.option?.items || !column.option?.valueField || !column.option?.displayField) {\r\n return {\r\n values: [],\r\n obj: {}\r\n };\r\n }\r\n const hashKey = hash({\r\n prefix: this.#prefix,\r\n field: column.field,\r\n key,\r\n });\r\n if (!this.#cache[hashKey]) {\r\n let items: any[] = [];\r\n if (typeof (column.option?.items) === 'function') {\r\n items = await column.option.items();\r\n } else {\r\n items = column.option.items;\r\n }\r\n this.#cache[hashKey] = {\r\n values: items,\r\n obj: this.utilityService.arrayToObject(items, column.option.valueField)\r\n };\r\n }\r\n return this.#cache[hashKey];\r\n }\r\n\r\n getValues = (column: SdGridMaterialColumn, key: string) => {\r\n const hashKey = hash({\r\n prefix: this.#prefix,\r\n field: column.field,\r\n key,\r\n });\r\n return this.#cache[hashKey] || {\r\n values: [],\r\n obj: {}\r\n };\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n Optional,\r\n Inject,\r\n ChangeDetectorRef,\r\n ContentChildren,\r\n QueryList,\r\n OnInit,\r\n OnDestroy,\r\n EventEmitter,\r\n ContentChild\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport * as uuid from 'uuid';\r\nimport {\r\n SdGridMaterialFilterRequest\r\n} from './models/grid-filter.model';\r\nimport {\r\n SdGridMaterialOption\r\n} from './models/grid-option.model';\r\nimport {\r\n GRID_MATERIAL_CONFIG,\r\n DEFAULT_GRID_MATERIAL_CONFIG,\r\n ISdGridMaterialConfiguration\r\n} from './models/grid-configuration.model';\r\nimport { Subscription, isObservable, Observable } from 'rxjs';\r\nimport * as hash from 'object-hash';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdGridMaterialColumn } from './models/grid-column.model';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { SdGridFilter } from './components/grid-filter/grid-filter.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';\r\nimport { SdGridConfiguration } from './models/grid-config.model';\r\nimport { SdGridConfigurationService } from './services/grid-configuration.service';\r\nimport { SdGridMaterialExportColumn } from './models/grid-export.model';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdGridService } from './services/grid.service';\r\nimport { SdQuickAction } from '@sd-angular/core/quick-action';\r\nimport { SdGridMaterialItem, SdItem } from './models/grid.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-material',\r\n templateUrl: './grid-material.component.html',\r\n styleUrls: ['./grid-material.component.scss'],\r\n animations: [\r\n trigger('detailExpand', [\r\n state('collapsed', style({ height: '0', minHeight: '0', visibility: 'hidden' })),\r\n state('expanded', style({ height: '*', visibility: 'visible' })),\r\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\r\n ]),\r\n ],\r\n})\r\nexport class SdGridMaterial<T = any> implements OnInit, AfterViewInit, OnDestroy {\r\n key = uuid.v4();\r\n gridConfigurationObserver: Observable<SdGridConfiguration>;\r\n gridFilter: SdGridFilter;\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\r\n @ViewChild(SdGridFilter) set _gridFilter(gridFilter: SdGridFilter) {\r\n if (gridFilter && this.gridFilter !== gridFilter) {\r\n this.gridFilter = gridFilter;\r\n this.#subscription.add(gridFilter.filterChange.pipe(\r\n debounceTime(200),\r\n map(() => {\r\n this.#paginator.pageIndex = 0;\r\n return this.#getFilter();\r\n }),\r\n switchMap(this.#load)\r\n ).subscribe(this.#render));\r\n }\r\n }\r\n\r\n @Input() set option(option: SdGridMaterialOption) {\r\n if (option) {\r\n option = this.#initConfiguration(option);\r\n this.gridOption = option;\r\n this.#optionChanges.emit();\r\n option?.columns?.forEach(col => {\r\n if (col.filter?.default) {\r\n this.columnFilter[col.field] = col.filter.default;\r\n }\r\n });\r\n const configuration = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.gridConfigurationObserver = configuration.observer;\r\n configuration.load();\r\n }\r\n }\r\n\r\n gridOption: SdGridMaterialOption;\r\n localItems: any[] = [];\r\n items: SdGridMaterialItem[] = [];\r\n selectedItems: T[] = [];\r\n total: number;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n // Paginate\r\n isHiddenPaginator = false;\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(paginator.page.pipe(\r\n debounceTime(200),\r\n map(this.#getFilter),\r\n switchMap(this.#load)\r\n ).subscribe(this.#render));\r\n }\r\n }\r\n\r\n // Sorting\r\n #sort: MatSort;\r\n @ViewChild(MatSort) set sort(sort: MatSort) {\r\n if (sort && this.#sort !== sort) {\r\n this.#sort = sort;\r\n this.#subscription.add(sort.sortChange.pipe(\r\n debounceTime(200),\r\n map(this.#getFilter),\r\n switchMap(this.#load)\r\n ).subscribe(this.#render));\r\n }\r\n }\r\n\r\n // Export\r\n @ViewChild(SdPopupExport) sdPopupExport: SdPopupExport;\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective) sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Empty Data\r\n @ContentChild(SdMaterialEmptyDataDefDirective) sdEmptyData: SdMaterialEmptyDataDefDirective;\r\n\r\n // Cell Def\r\n @ContentChildren(SdMaterialCellDefDirective) sdCellDefs = new QueryList<SdMaterialCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdMaterialCellDefDirective\r\n } = {};\r\n\r\n // Footer Def\r\n @ContentChildren(SdMaterialFooterDefDirective) sdFooterDefs = new QueryList<SdMaterialFooterDefDirective>();\r\n footerDef: {\r\n [column: string]: SdMaterialFooterDefDirective\r\n } = {};\r\n hasFooter = false;\r\n\r\n // Filter Def\r\n @ContentChildren(SdMaterialFilterDefDirective) sdFilterDefs = new QueryList<SdMaterialFilterDefDirective>();\r\n filterDefs: SdMaterialFilterDefDirective[] = [];\r\n\r\n // Filter\r\n columnFilter: {\r\n [key: string]: any\r\n } = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #optionChanges = new EventEmitter();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(GRID_MATERIAL_CONFIG) @Optional() public configuration: ISdGridMaterialConfiguration,\r\n private gridConfigurationService: SdGridConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridService: SdGridService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.sdCellDefs.changes.pipe(startWith([])).subscribe(this.#initCellDef));\r\n this.#subscription.add(this.sdFooterDefs.changes.pipe(startWith([])).subscribe(this.#initFooterDef));\r\n this.#subscription.add(this.sdFilterDefs.changes.pipe(startWith([])).subscribe(this.#initFilterDef));\r\n this.#subscription.add(this.#optionChanges.pipe(\r\n startWith({}),\r\n debounceTime(200),\r\n map(this.#getFilter),\r\n switchMap(this.#load)\r\n ).subscribe(this.#render));\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #initCellDef = () => {\r\n this.cellDef = {};\r\n for (const cellDef of this.sdCellDefs) {\r\n if (cellDef.sdMaterialCellDef) {\r\n this.cellDef[cellDef.sdMaterialCellDef] = cellDef;\r\n }\r\n }\r\n }\r\n\r\n #initFilterDef = () => {\r\n this.filterDefs = [];\r\n for (const filterDef of this.sdFilterDefs) {\r\n this.filterDefs.push(filterDef);\r\n }\r\n }\r\n\r\n #initFooterDef = () => {\r\n this.footerDef = {};\r\n this.hasFooter = false;\r\n for (const footerDef of this.sdFooterDefs) {\r\n if (footerDef.sdMaterialFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdMaterialFooterDef] = footerDef;\r\n }\r\n }\r\n }\r\n\r\n #filterExportInfo = (pageNumber: number, pageSize: number): SdGridMaterialFilterRequest => {\r\n return {\r\n rawColumnFilter: (this.gridOption?.filter?.inlineColumn ? this.columnFilter : this.gridFilter?.columnFilter) || {},\r\n rawExternalFilter: this.gridFilter?.externalFilter || {},\r\n rawFilterDef: this.gridFilter?.filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber,\r\n pageSize,\r\n isExported: true\r\n };\r\n }\r\n\r\n #initConfiguration = (option: SdGridMaterialOption) => {\r\n option.paginate = {\r\n hidden: option?.paginate?.hidden,\r\n pageSize: option?.paginate?.pageSize ?? this.configuration?.paginate?.pageSize ?? DEFAULT_GRID_MATERIAL_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.configuration?.paginate?.pages ?? DEFAULT_GRID_MATERIAL_CONFIG.paginate?.pages,\r\n showFirstLastButtons: option?.paginate?.showFirstLastButtons ?? false\r\n };\r\n return option;\r\n }\r\n\r\n #filterLocal = (localItems: any[], filterInfo: SdGridMaterialFilterRequest) => {\r\n const { columns } = this.gridOption;\r\n const items = localItems.filter(item => {\r\n for (const column of columns) {\r\n const filterValue: string = (filterInfo.rawColumnFilter[column.field] || '').toString().trim().toLowerCase();\r\n const columnValue: string = (item[column.field] || '').toString().trim().toLowerCase();\r\n if (filterValue) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n if (column.type === 'string') {\r\n if (columnValue.indexOf(filterValue) === -1) {\r\n return false;\r\n }\r\n } else if (column.type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (column.type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (column.type === 'date' || column.type === 'datetime') {\r\n const date = Date.toFormat(filterValue, 'MM/yyyy/dd');\r\n const fromDate = new Date(date);\r\n const toDate = new Date(date);\r\n toDate.setDate(toDate.getDate() + 1);\r\n if (new Date(columnValue).getTime() < fromDate.getTime() || new Date(columnValue).getTime() >= toDate.getTime()) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (filterInfo.orderBy && filterInfo.orderDirection) {\r\n const column = columns.find(e => e.field === filterInfo.orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((current, next) => {\r\n if (type === 'number') {\r\n return (current[field] || 0) - (next[field] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(current[field] || '').getTime();\r\n const d2 = new Date(current[field] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (current[field] || '').toString();\r\n const s2 = (next[field] || '').toString();\r\n if (s1 > s2) {\r\n return 1;\r\n }\r\n if (s1 < s2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n if (filterInfo.orderDirection === 'desc') {\r\n items.reverse();\r\n }\r\n }\r\n }\r\n return {\r\n items: items.filter((item, index) => {\r\n const pageIndex = this.#paginator?.pageIndex || 0;\r\n const pageSize = this.#paginator?.pageSize || this.gridOption?.paginate?.pageSize || 50;\r\n return index >= pageIndex * pageSize\r\n && index < (pageIndex + 1) * pageSize;\r\n }),\r\n total: items.length\r\n };\r\n }\r\n\r\n #getFilter = (): SdGridMaterialFilterRequest => ({\r\n rawColumnFilter: (this.gridOption?.filter?.inlineColumn ? this.columnFilter : this.gridFilter?.columnFilter) || {},\r\n rawExternalFilter: this.gridFilter?.externalFilter || {},\r\n rawFilterDef: this.gridFilter?.filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber: this.#paginator?.pageIndex || 0,\r\n pageSize: this.#paginator?.pageSize || this.gridOption?.paginate?.pageSize || 50\r\n })\r\n\r\n #load = async (filterReq: SdGridMaterialFilterRequest): Promise<{ items: any[], total: number }> => {\r\n this.isLoading = true;\r\n try {\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterReq);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n this.localItems = await results;\r\n } else {\r\n this.localItems = results;\r\n }\r\n return this.#filterLocal(this.localItems, filterReq);\r\n }\r\n } catch (error) {\r\n this.notifyService.handle.error(error);\r\n } finally {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n #render = async (args: { items: any[], total: number }) => {\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n // this.isHiddenPaginator = this.filterInfo.pageNumber === 0 && this.total <= this.filterInfo.pageSize;\r\n this.items.forEach(item => item.originItem = { ...item });\r\n await this.gridOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n\r\n reload = async () => {\r\n const data = await this.#load(this.#getFilter());\r\n this.#render(data);\r\n }\r\n\r\n #exportedItems = async (pageNumber: number = 0, pageSize: number = 10000) => {\r\n if (this.gridOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n if (Array.isArray(result)) {\r\n return result;\r\n }\r\n if (isObservable<any[]>(result)) {\r\n result = result.toPromise();\r\n }\r\n if (isObservable<{ items: any[], total: number }>(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n // if (exportedItems instanceof Promise) {\r\n // return await exportedItems;\r\n // } else {\r\n // return exportedItems;\r\n // }\r\n } else {\r\n const filterInfo = this.#filterExportInfo(pageNumber, pageSize);\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterInfo);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof (this.gridOption.items) === 'function') {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n exportedItems = await results;\r\n } else {\r\n exportedItems = results;\r\n }\r\n } else {\r\n exportedItems = this.gridOption.items;\r\n }\r\n return this.#filterLocal(exportedItems, filterInfo);\r\n }\r\n }\r\n }\r\n\r\n drop(event: CdkDragDrop<string[]>, columns: string[]) {\r\n moveItemInArray(columns, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n #allColumns = (): SdGridMaterialColumn[] => {\r\n const columns: SdGridMaterialColumn[] = [];\r\n this.gridOption.columns.filter(e => !e.export?.disabled).forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === 'children-col') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns;\r\n }\r\n\r\n #allExportedColumns = (): SdGridMaterialExportColumn[] => {\r\n return this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n }\r\n\r\n #onExport = async (args: { file: SdExportFile, columns: SdExportColumn[], isCSV: boolean }) => {\r\n try {\r\n const { file, columns, isCSV } = args;\r\n const pageSize = this.gridOption?.export?.maxItemsPerRequest || 1000;\r\n let total = this.total;\r\n let pageNumber = 0;\r\n let exportItems = [];\r\n this.isExporting = true;\r\n const items: any[] = [];\r\n while (pageNumber * pageSize < total) {\r\n const res = await this.#exportedItems(pageNumber, pageSize);\r\n if ('items' in res) {\r\n exportItems = res.items;\r\n total = res.total;\r\n } else {\r\n exportItems = res;\r\n // total = exportItems.length;\r\n }\r\n if (this.gridOption.export?.mapping) {\r\n const results = this.gridOption.export.mapping(exportItems);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n\r\n const totalPage = total / pageSize;\r\n const percent = Math.round(pageNumber * 100.0 / totalPage);\r\n this.exportTitle = `Exporting...${percent}%`;\r\n const allColumns = this.#allColumns();\r\n const allExportedColumns = this.#allExportedColumns();\r\n for (const item of exportItems) {\r\n const obj: any = {};\r\n const handle = (exportColumn: SdExportColumn) => {\r\n obj[exportColumn.field] = item[exportColumn.field];\r\n const column = allColumns.find(e => e.field === exportColumn.field);\r\n const exportedColumn = allExportedColumns.find(e => e.field === exportColumn.field);\r\n if (exportedColumn?.transform) {\r\n obj[exportedColumn.field] = exportedColumn.transform(item[exportedColumn.field], item);\r\n return;\r\n }\r\n if (!column) {\r\n return;\r\n }\r\n if (column.type === 'children' || column.type === 'children-col') {\r\n column?.children.forEach(childColumn => handle(childColumn));\r\n return;\r\n }\r\n if (!columns.some(e => e.field === column.field)) {\r\n return;\r\n }\r\n if (column.transform) {\r\n obj[column.field] = column.transform(item[column.field], item);\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.option?.displayOnTrue || 'True';\r\n } else {\r\n obj[column.field] = column.option?.displayOnFalse || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n // Nếu là date thì convert theo đúng format\r\n const date = new Date(item[column.field]);\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy');\r\n } else if (column.type === 'datetime') {\r\n // Nếu là datetime thì convert theo đúng format\r\n const date = new Date(item[column.field]);\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy HH:mm:ss');\r\n } else if (column.type === 'time') {\r\n // Nếu là time thì convert theo đúng format\r\n const date = new Date(item[column.field]);\r\n obj[column.field] = Date.toFormat(date, 'HH:mm:ss');\r\n } else if (column.type === 'values') {\r\n // Nếu là values thì lấy giá trị của value được chọn\r\n const data = this.gridService.getValues(column, this.key);\r\n if (data.obj[column.option.displayField] !== null && data.obj[column.option.displayField] !== undefined) {\r\n obj[column.field] = data.obj[column.option.displayField];\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n };\r\n // this.gridOption.columns.forEach(handle);\r\n columns.forEach(handle);\r\n items.push(obj);\r\n }\r\n pageNumber++;\r\n }\r\n if (!file?.filePath) {\r\n if (isCSV) {\r\n await this.exportService.exportCSV({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName\r\n });\r\n return;\r\n }\r\n const sheets: {\r\n name: string,\r\n items: any[],\r\n fields: string[]\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields\r\n });\r\n }\r\n }\r\n }\r\n }\r\n await this.exportService.export({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName,\r\n sheets\r\n });\r\n return;\r\n }\r\n await this.exportService.exportByTemplate({\r\n filePath: file.filePath,\r\n fileName: file.fileName,\r\n columns,\r\n items\r\n });\r\n } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n onExport = async (args: { file: SdExportFile, columns: SdExportColumn[], isCSV: boolean }) => {\r\n const { translate } = this.translateService;\r\n if (!args.isCSV && this.gridOption.export.max && this.total > this.gridOption.export.max) {\r\n this.notifyService.confirm(translate(`Total rows reach limit, do you want to export CSV`)).then(() => {\r\n args.isCSV = true;\r\n this.#onExport(args);\r\n });\r\n return;\r\n }\r\n this.#onExport(args);\r\n }\r\n\r\n onFilterChange = () => {\r\n this.#paginator.pageIndex = 0;\r\n this.reload();\r\n }\r\n\r\n onExpand = async (rowData: SdGridMaterialItem) => {\r\n if (rowData.isExpanding) {\r\n return;\r\n }\r\n if (rowData.isExpanded) {\r\n rowData.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.subInformation?.onExpand(rowData);\r\n if (!this.gridOption.subInformation?.multiple) {\r\n this.items.forEach(item => item.isExpanding = item.isExpanded = false);\r\n }\r\n if (data instanceof Promise) {\r\n rowData.isExpanding = true;\r\n data.then(res => {\r\n rowData.expandDetail = res;\r\n rowData.isExpanded = true;\r\n }).finally(() => rowData.isExpanding = false);\r\n } else {\r\n rowData.expandDetail = data;\r\n rowData.isExpanded = true;\r\n }\r\n }\r\n\r\n onSelect = (rowData: SdGridMaterialItem) => {\r\n if (this.gridOption.selection?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => e.isSelected = false);\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selection?.onSelect?.(rowData, this.items.filter(e => e.isSelected));\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => e.isSelected = this.isSelectAll);\r\n this.gridOption.selection?.onSelectAll?.(this.items.filter(e => e.isSelected));\r\n this.#updateSelectedItems();\r\n }\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedItems = this.items.filter(item => item.isSelected)\r\n .map(item => {\r\n const {\r\n isSelected,\r\n isExpanded,\r\n isExpanding,\r\n expandDetail,\r\n ...result\r\n } = item;\r\n return result;\r\n }) as T[];\r\n this.ref.detectChanges();\r\n }\r\n\r\n clearFilter = () => {\r\n this.gridFilter?.onClearFilter();\r\n }\r\n\r\n setFilter = (args: {\r\n columnFilter: any,\r\n externalFilter: any,\r\n filterDef: any\r\n }) => {\r\n this.gridFilter?.setFilter(args);\r\n }\r\n\r\n onCreate = () => {\r\n const { type, editor, columns } = this.gridOption;\r\n if (!editor?.addable) {\r\n return;\r\n }\r\n const item: SdGridMaterialItem = {};\r\n // Gán giá trị mặc định\r\n columns.forEach(column => {\r\n if (column.type === 'values') {\r\n item[column.field] = '';\r\n } else if (column.type === 'bool') {\r\n item[column.field] = true;\r\n } else if (column.type === 'number') {\r\n item[column.field] = null;\r\n }\r\n });\r\n editor.onAdd?.(item);\r\n // Đưa item lên dòng đầu tiên nếu type khác popup\r\n if (editor.type !== 'popup') {\r\n if (type === 'local') {\r\n this.localItems = [item, ...this.items];\r\n }\r\n this.items = [item, ...this.items];\r\n }\r\n item.editorStatus = 'create';\r\n item.editorHandlerRow = {\r\n temporary: { ...item }\r\n };\r\n }\r\n onUpdate = (item: SdItem) => {\r\n const { editor } = this.gridOption;\r\n item.editorStatus = 'update';\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n temporary: { ...item }\r\n };\r\n // this.generateEditorHanlder(item);\r\n if (editor.type === 'popup') {\r\n // Xử lý case popup\r\n // this.sdGridPopupEditor.open(item, columns, isModified);\r\n }\r\n this.ref.detectChanges();\r\n }\r\n onSave = async (item: SdItem) => {\r\n if(item.editorHandlerRow.saving) {\r\n return;\r\n }\r\n const { editor } = this.gridOption;\r\n try {\r\n item.editorHandlerRow.saving = true;\r\n if (editor.validate) {\r\n const result = editor.validate(item);\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n throw message;\r\n }\r\n } else {\r\n if (result) {\r\n throw result;\r\n }\r\n }\r\n }\r\n if (editor.onSave) {\r\n const result = editor.onSave(item);\r\n if (result instanceof Promise) {\r\n await result;\r\n }\r\n }\r\n\r\n if (item.editorStatus === 'create' && editor.type === 'popup') {\r\n if (this.gridOption.type === 'local') {\r\n this.items.splice(0, 0, item);\r\n }\r\n // this.viewItems.splice(0, 0, item);\r\n }\r\n\r\n item.editorStatus = undefined;\r\n // this.generateEditorHanlder(item);\r\n } catch (err) {\r\n this.notifyService.notify.warning(err);\r\n } finally {\r\n item.editorHandlerRow.saving = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n onCancel = (item: SdItem) => {\r\n const { editor } = this.gridOption;\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.localItems.indexOf(item);\r\n this.localItems.splice(idx2, 1);\r\n this.localItems = [...this.localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n if (editor.type === 'focus') {\r\n if (item.editorStatus === 'create') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.localItems.indexOf(item);\r\n this.localItems.splice(idx2, 1);\r\n this.localItems = [...this.localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n } else {\r\n Object.assign(item, item.editorHandlerRow.temporary);\r\n }\r\n }\r\n item.editorStatus = undefined;\r\n this.ref.detectChanges();\r\n }\r\n\r\n onRemove = (item: SdItem) => {\r\n const { editor } = this.gridOption;\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.localItems.indexOf(item);\r\n this.localItems.splice(idx2, 1);\r\n this.localItems = [...this.localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n }\r\n\r\n get editedItems(): (T & { editorErrorMessage: string })[] {\r\n return this.items.filter(item => {\r\n if (!item.originItem) {\r\n return true;\r\n }\r\n if (Object.keys(item.originItem).some(key => item.originItem[key] !== item[key])) {\r\n return true;\r\n }\r\n return false;\r\n }).map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n ...result } = item;\r\n return {\r\n ...result,\r\n editorErrorMessage: editorHandlerRow?.errorMessage\r\n } as any;\r\n });\r\n }\r\n\r\n get gridItems(): T[] {\r\n return this.items.map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n ...result } = item;\r\n return result as T;\r\n });\r\n }\r\n reloadItem = (item: SdGridMaterialItem) => {\r\n item.sdId = hash(item);\r\n }\r\n detectChanges = () => this.ref.detectChanges();\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand, SdGridMaterialCommandNormal } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: any, commands: SdGridMaterialCommand[]): Promise<SdGridMaterialCommand[]> {\r\n const results: SdGridMaterialCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n let flag = false;\r\n const { hidden } = command;\r\n if (hidden === undefined) {\r\n flag = true;\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n flag = true;\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n flag = true;\r\n }\r\n } else {\r\n if (!isHidden) {\r\n flag = true;\r\n }\r\n }\r\n }\r\n if (flag) {\r\n if ('children' in command) {\r\n const children: SdGridMaterialCommandNormal[] = [];\r\n for (const childCommand of command.children) {\r\n const { hidden } = childCommand;\r\n if (hidden === undefined) {\r\n children.push(childCommand);\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n if (!isHidden) {\r\n children.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...command, children });\r\n }\r\n } else {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandDisable'\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: any, command: SdGridMaterialCommand): boolean {\r\n if (!command?.disabled) {\r\n return false;\r\n }\r\n if (typeof (command.disabled) === 'boolean') {\r\n return command.disabled;\r\n }\r\n return command.disabled(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, item: any): string {\r\n if (!command?.icon) {\r\n return '';\r\n }\r\n if (typeof (command.icon) === 'string') {\r\n return command.icon;\r\n }\r\n return command.icon(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, item: any): string {\r\n if (!command?.title) {\r\n return '';\r\n }\r\n if (typeof (command.title) === 'string') {\r\n return command.title;\r\n }\r\n return command.title(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridService } from '../services/grid.service';\r\n@Pipe({\r\n name: 'columnValues'\r\n})\r\nexport class SdColumnValuesPipe implements PipeTransform {\r\n constructor(private gridService: SdGridService) { }\r\n transform = async (value: any, column: SdGridMaterialColumn, key: string): Promise<any> => {\r\n const data = await this.gridService.loadValues(column, key);\r\n return data.obj[value] ?? value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnHtmlTemplate'\r\n})\r\nexport class SdColumnHtmlTemplatePipe implements PipeTransform {\r\n private isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): string {\r\n if (typeof (column?.htmlTemplate) !== 'function') {\r\n return value;\r\n }\r\n return column?.htmlTemplate(value, rowData, this.isMobileOrTablet);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-view',\r\n templateUrl: './desktop-cell-view.component.html',\r\n styleUrls: ['./desktop-cell-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellView {\r\n @Input() sdId: string;\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n}\r\n","import { DecimalPipe } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnTransform'\r\n})\r\nexport class SdColumnTransformPipe implements PipeTransform {\r\n constructor(private decimalPipe: DecimalPipe) { }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): string {\r\n if (column?.transform) {\r\n return column.transform(value, rowData);\r\n }\r\n if (column.type === 'number' && Number.isNumber(value)) {\r\n return Number.toVNCurrency(value); // this.decimalPipe.transform(value, '1.0-2');\r\n }\r\n if (column.type === 'bool') {\r\n return value === true ? (column.option?.displayOnTrue || 'True') : (column.option?.displayOnFalse || 'False');\r\n }\r\n return value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialExternalFilter } from '../models/grid-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdGridMaterialExternalFilter[], field?: string): SdGridMaterialExternalFilter[] {\r\n const results: SdGridMaterialExternalFilter[] = [];\r\n if (!externalFilters) {\r\n return results;\r\n }\r\n for (const filter of externalFilters) {\r\n results.push(filter);\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdGridMaterialColumn[], field?: string): SdGridMaterialColumn[] {\r\n const results: SdGridMaterialColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\r\n if (column.type === 'image') {\r\n continue;\r\n }\r\n if (column.type === 'children') {\r\n for (const columnChildren of column?.children) {\r\n if (!columnChildren.filter?.disabled) {\r\n results.push(columnChildren);\r\n }\r\n }\r\n continue;\r\n }\r\n if (!column.filter?.disabled) {\r\n results.push(column);\r\n }\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { SdGridMaterialColumnChildren } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-children-view',\r\n templateUrl: './desktop-cell-children-view.component.html',\r\n styleUrls: ['./desktop-cell-children-view.component.scss']\r\n})\r\nexport class SdDesktopCellChildrenView {\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumnChildren;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n\r\n@Pipe({\r\n name: 'columnChildrenFilter'\r\n})\r\nexport class SdColumnChildrenFilterPipe implements PipeTransform {\r\n #isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.#isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(columns: SdGridMaterialColumn[], item: any): SdGridMaterialColumn[] {\r\n return columns.filter(column => {\r\n const value = item?.[column.field];\r\n const transformValue = column.transform?.(item[column.field], item);\r\n const templateValue = column.htmlTemplate?.(item[column.field], item, this.#isMobileOrTablet);\r\n return (value !== undefined && value !== null && value !== '')\r\n || (transformValue !== undefined && transformValue !== null && transformValue !== '')\r\n || (templateValue !== undefined && templateValue !== null && templateValue !== '');\r\n });\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialChildColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnTitle'\r\n})\r\nexport class SdColumnTitlePipe implements PipeTransform {\r\n async transform(item: any, column: SdGridMaterialChildColumn): Promise<string> {\r\n if (!column?.title) {\r\n return '';\r\n }\r\n const result = column?.dynamicTitle?.(item);\r\n if (result instanceof Promise) {\r\n return (await result) || column?.title;\r\n }\r\n return result || column?.title;\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../../models/grid-command.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-command',\r\n templateUrl: './desktop-command.component.html',\r\n styleUrls: ['./desktop-command.component.scss']\r\n})\r\nexport class SdDesktopCommand {\r\n @Input() item: any;\r\n @Input() commands: SdGridMaterialCommand[] = [];\r\n constructor() {\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnBadge'\r\n})\r\nexport class SdColumnBadgePipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): string {\r\n if (column.type === 'string' && column?.badge) {\r\n return column.badge(value, rowData);\r\n }\r\n if (column.type === 'bool' && column?.badge) {\r\n return column.badge(value, rowData);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Directive, Input, TemplateRef, ViewContainerRef } from \"@angular/core\";\r\n@Directive({\r\n selector: '[sdLet]',\r\n})\r\nexport class SdLetDirective {\r\n @Input()\r\n set sdLet(context: any) {\r\n this.context.$implicit = this.context.sdLet = context;\r\n this.updateView();\r\n }\r\n context: any = {};\r\n\r\n constructor(private vcRef: ViewContainerRef, private templateRef: TemplateRef<any>) { }\r\n\r\n updateView() {\r\n this.vcRef.clear();\r\n this.vcRef.createEmbeddedView(this.templateRef, this.context);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdGridConfiguration, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../services/grid-configuration.service';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\n\r\n@Pipe({\r\n name: 'sdGridConfigurationResult'\r\n})\r\nexport class SdGridConfigurationResultPipe implements PipeTransform {\r\n constructor(private gridConfigurationService: SdGridConfigurationService) { }\r\n transform(configuration: SdGridConfiguration, gridOption: SdGridMaterialOption, sdSubInformation: SdMaterialSubInformationDefDirective): SdGridConfigurationResult {\r\n return this.gridConfigurationService.generateConfigurationResult(configuration, gridOption, sdSubInformation);\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, EventEmitter, ChangeDetectorRef, Input, HostListener } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationResult, SdGridConfiguration, SdGridConfigurationCache, SdColumnConfiguration } from '../../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-configuration.service';\r\nimport * as uuid from 'uuid';\r\nimport { MatTable } from '@angular/material/table';\r\n// import { SdGridMaterialColumn } from '@sd-angular/core/grid-material';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-popup-grid-configuration',\r\n templateUrl: './popup-grid-configuration.component.html',\r\n styleUrls: ['./popup-grid-configuration.component.scss']\r\n})\r\nexport class SdPopupGridConfiguration implements OnInit {\r\n @Input() gridOption: SdGridMaterialOption;\r\n @Input() key: string;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdGridMaterialColumn>;\r\n readonly changes = new EventEmitter<SdGridConfigurationResult>();\r\n #cache: SdGridConfigurationCache;\r\n configuration: SdGridConfiguration;\r\n isCreatingColumn = false;\r\n selected: {\r\n [key: string]: boolean;\r\n } = {};\r\n disabledDrag = true;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridConfigurationService: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n @HostListener('window:mouseup', ['$event'])\r\n mouseUp(event) {\r\n this.disabledDrag = true;\r\n }\r\n open = async () => {\r\n this.#cache = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.configuration = await this.#cache.get();\r\n this.modal.open();\r\n }\r\n\r\n onSave = () => {\r\n this.#cache.set(this.configuration);\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n }\r\n\r\n onReset = async () => {\r\n const { translate } = this.translateService;\r\n this.notifyService.confirm(translate('Reset grid configuration to default')).then(() => {\r\n this.#cache.remove();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n });\r\n }\r\n\r\n createColumn = async () => {\r\n this.selected = {};\r\n this.isCreatingColumn = true;\r\n }\r\n\r\n confirm = async () => {\r\n const generatedColumn: SdColumnConfiguration = {\r\n origin: {\r\n field: uuid.v4(),\r\n title: 'Generated',\r\n width: '300px'\r\n },\r\n fixed: false,\r\n invisible: false,\r\n title: 'Generated',\r\n width: '300px',\r\n isGeneratedColumn: true,\r\n generatedColumns: this.configuration.columns.filter(e => this.selected[e.origin?.field]).map(e => e.origin?.field)\r\n };\r\n this.configuration.columns.push(generatedColumn);\r\n this.configuration = this.#cache.set(this.configuration);\r\n this.isCreatingColumn = false;\r\n }\r\n\r\n dropTable(event: CdkDragDrop<SdGridMaterialColumn[]>) {\r\n moveItemInArray(this.configuration.columns, event.previousIndex, event.currentIndex);\r\n this.table.renderRows();\r\n }\r\n\r\n handleMouseDown() {\r\n this.disabledDrag = false;\r\n }\r\n\r\n handleMouseUp() {\r\n this.disabledDrag = true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnTooltip'\r\n})\r\nexport class SdColumnTooltipPipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdGridMaterialColumn): string {\r\n if (column?.tooltip) {\r\n return column.tooltip(value, rowData);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialAction, SdGridMaterialActionNormal, SdGridMaterialActionSimple } from '../models/grid-action.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdGridMaterialAction, selectedItems: any[]): SdGridMaterialActionSimple => {\r\n if ('children' in action) {\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n color: action.color,\r\n type: action.type,\r\n disabled: typeof (action.disabled) === 'function' ? action.disabled(selectedItems) : action.disabled,\r\n children: action.children.map(e => ({\r\n title: e.title,\r\n icon: e.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: e.fontSet,\r\n tooltip: e.tooltip,\r\n disabled: typeof (action.disabled) === 'function' ? action.disabled(selectedItems) : action.disabled,\r\n click: e.click\r\n }))\r\n };\r\n }\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n disabled: typeof (action.disabled) === 'function' ? action.disabled(selectedItems) : action.disabled,\r\n click: action.click\r\n };\r\n\r\n }\r\n transform = (selectedItems: any[], actions: SdGridMaterialAction[]): SdGridMaterialActionSimple[] => {\r\n const results: SdGridMaterialAction[] = [];\r\n if (!actions?.length || !selectedItems?.length) {\r\n return [];\r\n }\r\n for (const action of actions) {\r\n let flag = false;\r\n const { hidden } = action;\r\n if (hidden === undefined) {\r\n flag = true;\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n flag = true;\r\n }\r\n } else {\r\n const isHidden = hidden(selectedItems);\r\n if (!isHidden) {\r\n flag = true;\r\n }\r\n }\r\n if (flag) {\r\n if ('children' in action) {\r\n const children: SdGridMaterialActionNormal[] = [];\r\n for (const childCommand of action.children) {\r\n const { hidden: childHidden } = childCommand;\r\n if (childHidden === undefined) {\r\n children.push(childCommand);\r\n } else if (typeof (childHidden) === 'boolean') {\r\n if (!childHidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n const isHidden = childHidden(selectedItems);\r\n if (!isHidden) {\r\n children.push(childCommand);\r\n }\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...action, children });\r\n }\r\n } else {\r\n results.push(action);\r\n }\r\n }\r\n }\r\n return results.map(result => this.#convert(result, selectedItems));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: any[], rowData: any, selection: SdGridMaterialSelection): boolean => {\r\n if (!selection?.disabled) {\r\n return false;\r\n }\r\n return selection.disabled(rowData, selectedItems);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\n@Pipe({\r\n name: 'selectionDisableSelectAll'\r\n})\r\nexport class SdSelectionDisableSelectAllPipe implements PipeTransform {\r\n transform = (items: any[], selection: SdGridMaterialSelection): boolean => {\r\n if (!selection?.disabledSelectAll) {\r\n if (!selection.disabled) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n return selection.disabledSelectAll(items);\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSetting, SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdGridMaterialConfigOption } from '../../models/grid-config.model';\r\nimport { SdGeneratedColumn } from './generated-column.model';\r\n\r\n@Injectable()\r\nexport class SdGeneratedColumnService {\r\n #cache: {\r\n [key: string]: SdSetting<SdGeneratedColumn[]>\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService) {\r\n }\r\n\r\n load = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '260f5e94-5865-4425-8ced-b9c083c390dd',\r\n key: configuration.key\r\n });\r\n\r\n if (!this.#cache[key]) {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: configuration?.storage,\r\n args: configuration?.args,\r\n default: []\r\n });\r\n }\r\n return this.#cache[key];\r\n }\r\n\r\n loadSystem = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n if (!configuration?.systemColumn) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '8b8050ca-1f44-4860-bad3-20e646c0d68f',\r\n key: configuration.key\r\n });\r\n\r\n if (!this.#cache[key]) {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: 'server',\r\n args: configuration?.systemColumn?.args,\r\n default: []\r\n });\r\n }\r\n return this.#cache[key];\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ChangeDetectorRef, Input, ChangeDetectionStrategy, OnDestroy } from '@angular/core';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-configuration.service';\r\nimport * as uuid from 'uuid';\r\nimport { SdGeneratedColumnService } from '../../services/generated-column/generated-column.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdGeneratedColumn } from '../../services/generated-column/generated-column.model';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SdSideDrawer } from '@sd-angular/core/side-drawer';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-dynamic-column',\r\n templateUrl: './dynamic-column.component.html',\r\n styleUrls: ['./dynamic-column.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDynamicColumn implements OnInit, OnDestroy {\r\n @ViewChild(SdSideDrawer) sideDrawer: SdSideDrawer;\r\n @Input() gridOption: SdGridMaterialOption;\r\n systemColumns: SdGeneratedColumn[];\r\n columns: SdGeneratedColumn[];\r\n #subscription = new Subscription();\r\n columnTypes = ['string', 'number', 'bool', 'date', 'datetime', 'time', 'values', 'children', 'children-col'];\r\n form = new FormGroup({});\r\n isDetail = false;\r\n detail: SdGeneratedColumn;\r\n originColumns: SdGridMaterialColumn[] = [];\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private generatedColumnService: SdGeneratedColumnService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridConfigurationService: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (systemSetting) {\r\n this.#subscription?.add(systemSetting.observer.subscribe(columns => {\r\n this.systemColumns = columns;\r\n }));\r\n }\r\n if (setting) {\r\n this.#subscription?.add(setting.observer.subscribe(columns => {\r\n this.columns = columns;\r\n }));\r\n }\r\n this.originColumns = this.gridOption.columns.filter(e => e.type !== 'children' && e.type !== 'children-col');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onDetail = (column?: SdGeneratedColumn) => {\r\n this.detail = column || {\r\n field: uuid.v4(),\r\n title: '',\r\n type: 'string',\r\n isSystem: false,\r\n useTemplate: false\r\n };\r\n this.form.markAsUntouched();\r\n this.form.markAsPristine();\r\n this.isDetail = true;\r\n }\r\n\r\n onSave = () => {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (this.detail.isSystem) {\r\n if (!this.detail.id) {\r\n systemSetting.set([...this.systemColumns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n systemSetting.set([...this.systemColumns]);\r\n }\r\n } else {\r\n if (!this.detail.id) {\r\n setting.set([...this.columns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n setting.set([...this.columns]);\r\n }\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdMaterialCellDefDirective } from '../../directives/sd-material-cell-def.directive';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell',\r\n templateUrl: './desktop-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCell {\r\n @Input() sdId: string;\r\n @Input() value: any;\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n @Input() gridOption: SdGridMaterialOption;\r\n @Input() cellDef: {\r\n [column: string]: SdMaterialCellDefDirective\r\n } = {};\r\n @Input() idx: number;\r\n constructor(\r\n ) { }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-editor',\r\n templateUrl: './desktop-cell-editor.component.html',\r\n styleUrls: ['./desktop-cell-editor.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellEditor {\r\n @Input() sdId: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n\r\n onChange = () => {\r\n if(this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n this.column?.editor?.change?.(this.item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { EditorHandlerRow, SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorHandlerRow'\r\n})\r\nexport class SdEditorHandlerRowPipe implements PipeTransform {\r\n transform(status: 'create' | 'update', item: SdItem, gridOption: SdGridMaterialOption): EditorHandlerRow {\r\n const { editor } = gridOption;\r\n if (!editor) {\r\n return null;\r\n }\r\n let isDisabled = false;\r\n if (typeof (editor?.disabled) === 'function') {\r\n isDisabled = editor.disabled(item);\r\n } else {\r\n isDisabled = editor?.disabled;\r\n }\r\n if(isDisabled) {\r\n return null;\r\n }\r\n if (editor.type === 'inline') {\r\n const removable = editor.removable;\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: true,\r\n editable: false,\r\n removable: status !== 'create' && (typeof (removable) === 'function' ? removable(item) : removable),\r\n savable: false,\r\n cancelable: status === 'create'\r\n }\r\n } else if (editor.type === 'focus') {\r\n const editable = editor.editable;\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: !!status,\r\n editable: !status && (typeof (editable) === 'function' ? editable(item) : editable),\r\n removable: false,\r\n savable: !!status,\r\n cancelable: !!status\r\n }\r\n } else if (editor.type === 'popup') {\r\n const editable = editor.editable;\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: false,\r\n editable: !status && (typeof (editable) === 'function' ? editable(item) : editable),\r\n removable: false,\r\n savable: false,\r\n cancelable: false\r\n }\r\n }\r\n return item.editorHandlerRow;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport * as hash from 'object-hash';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorHandlerColumn'\r\n})\r\nexport class SdEditorHandlerColumnPipe implements PipeTransform {\r\n transform(value: any, item: SdItem, column: SdGridMaterialColumn, gridOption: SdGridMaterialOption) {\r\n if (column.type === 'children' || column.type === 'children-col') {\r\n return;\r\n }\r\n const { columns } = gridOption;\r\n const visible = (col: SdGridMaterialColumn) => {\r\n if (col.type === 'children' || col.type === 'children-col') {\r\n return false;\r\n }\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (col.editor) {\r\n const isDisabled = typeof (col.editor.disabled) === 'function' ? col.editor.disabled(item) : col.editor.disabled;\r\n if (isDisabled) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n item.editorHandlerColumn = item.editorHandlerColumn || {};\r\n item.editorHandlerColumn[column.field] = {\r\n ...item.editorHandlerColumn[column.field],\r\n visible: visible(column)\r\n }\r\n for (const col of columns.filter(e => column.editor?.relatedColumns?.includes(e.field))) {\r\n item.editorHandlerColumn[col.field] = {\r\n ...item.editorHandlerColumn[col.field],\r\n visible: visible(col)\r\n }\r\n }\r\n item.sdId = hash(item);\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorValidate'\r\n})\r\nexport class SdEditorValidatePipe implements PipeTransform {\r\n private previous: Date;\r\n private delay = 1000; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện validate\r\n async transform(sdId: string, item: SdItem, gridOption: SdGridMaterialOption): Promise<string> {\r\n const { editor } = gridOption;\r\n item.editorHandlerRow = item.editorHandlerRow || {};\r\n if (!editor.validate) {\r\n item.editorHandlerRow.errorMessage = null;\r\n return;\r\n }\r\n this.previous = new Date();\r\n await new Promise(resolve => setTimeout(resolve, this.delay));\r\n const now = new Date();\r\n const dif = now.getTime() - this.previous.getTime();\r\n if (dif < this.delay) {\r\n return;\r\n }\r\n const result = editor.validate(item);\r\n if (result instanceof Promise) {\r\n item.editorHandlerRow.errorMessage = await result;\r\n return;\r\n } else {\r\n item.editorHandlerRow.errorMessage = result;\r\n return;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\n@Pipe({\r\n name: 'sdStyleRowCss'\r\n})\r\nexport class SdStyleRowCss implements PipeTransform {\r\n transform(item: any, gridOption: SdGridMaterialOption) {\r\n return gridOption?.style?.rowCss?.(item) || {};\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-editor-validation',\r\n templateUrl: './desktop-editor-validation.component.html',\r\n styleUrls: ['./desktop-editor-validation.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopEditorValidation {\r\n @Input() sdId: string;\r\n @Input() item: any;\r\n @Input() gridOption: SdGridMaterialOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Injectable, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport '@sd-angular/core/typing';\r\nimport { SdGridMaterial } from './grid-material.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { CdkTableModule, CdkColumnDef } from '@angular/cdk/table';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { SdCommandFilterPipe } from './pipes/command-filter.pipe';\r\nimport { SdCommandDisablePipe } from './pipes/command-disable.pipe';\r\nimport { SdCommandIconPipe } from './pipes/command-icon.pipe';\r\nimport { SdCommandTitlePipe } from './pipes/command-title.pipe';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdColumnHtmlTemplatePipe } from './pipes/column-html-template.pipe';\r\nimport { SdDesktopCellView } from './components/desktop-cell-view/desktop-cell-view.component';\r\nimport { SdColumnTransformPipe } from './pipes/column-transform.pipe';\r\nimport { SdServiceModule } from '@sd-angular/core/service';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { SdFilterExternalPipe } from './pipes/filter-external.pipe';\r\nimport { SdFilterColumnPipe } from './pipes/filter-column.pipe';\r\nimport { SdGridFilter } from './components/grid-filter/grid-filter.component';\r\nimport { SdPopupFilter } from './components/popup-filter/popup-filter.component';\r\n\r\nimport { SdGridFilterService } from './services/grid-filter.service';\r\nimport { SdDesktopCellChildrenView } from './components/desktop-cell-children-view/desktop-cell-children-view.component';\r\nimport { SdColumnChildrenFilterPipe } from './pipes/column-children-filter.pipe';\r\nimport { SdColumnTitlePipe } from './pipes/column-title.pipe';\r\nimport { SdDesktopCommand } from './components/desktop-command/desktop-command.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdColumnBadgePipe } from './pipes/column-badge.pipe';\r\nimport { SdLetDirective } from './directives/sd-let.directive';\r\nimport { SdGridConfigurationResultPipe } from './pipes/grid-configuration-result.pipe';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdPopupGridConfiguration } from './components/popup-grid-configuration/popup-grid-configuration.component';\r\nimport { SdGridConfigurationService } from './services/grid-configuration.service';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { SdColumnTooltipPipe } from './pipes/column-tooltip.pipe';\r\nimport { SdGridService } from './services/grid.service';\r\nimport { SdSelectionActionFilterPipe } from './pipes/selection-action-filter.pipe';\r\nimport { SdSelectionDisablePipe } from './pipes/selection-disable.pipe';\r\nimport { SdSelectionDisableSelectAllPipe } from './pipes/selection-disable-select-all.pipe';\r\nimport { SdDynamicColumn } from './components/dynamic-column/dynamic-column.component';\r\nimport { SdGeneratedColumnService } from './services/generated-column/generated-column.service';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdDesktopCellEditor } from './components/desktop-cell-editor/desktop-cell-editor.component';\r\nimport { SdEditorHandlerRowPipe } from './pipes/editor-handler-row.pipe';\r\nimport { SdEditorHandlerColumnPipe } from './pipes/editor-handler-column.pipe';\r\nimport { SdEditorValidatePipe } from './pipes/editor-validate.pipe';\r\nimport { SdStyleRowCss } from './pipes/style-row-css.pipe';\r\nimport { SdDesktopEditorValidation } from './components/desktop-editor-validation/desktop-editor-validation.component';\r\n\r\n@Injectable()\r\nexport class MatPaginatorIntlCro extends MatPaginatorIntl {\r\n firstPageLabel = 'Trang đầu';\r\n lastPageLabel = 'Trang cuối';\r\n itemsPerPageLabel = 'Kích thước trang';\r\n nextPageLabel = 'Trang sau';\r\n previousPageLabel = 'Trang trước';\r\n\r\n getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n if (length === 0 || pageSize === 0) {\r\n return '';\r\n }\r\n const from = page * pageSize + 1;\r\n const to = from + (length - page * pageSize > pageSize ? pageSize : length - page * pageSize) - 1;\r\n return `${from}-${to} trên ${length}`;\r\n }\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatSortModule,\r\n MatPaginatorModule,\r\n MatTableModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatProgressSpinnerModule,\r\n MatChipsModule,\r\n MatRadioModule,\r\n MatSlideToggleModule,\r\n MatCheckboxModule,\r\n MatListModule,\r\n MatDividerModule,\r\n CdkTableModule,\r\n DragDropModule,\r\n SdFormModule,\r\n SdServiceModule,\r\n MatSliderModule,\r\n ScrollingModule\r\n ],\r\n declarations: [\r\n SdDesktopCell,\r\n SdDesktopCellEditor,\r\n SdDesktopEditorValidation,\r\n SdDesktopCellView,\r\n SdDesktopCellChildrenView,\r\n SdDesktopCommand,\r\n SdGridMaterial,\r\n\r\n SdLetDirective,\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdPopupExport,\r\n SdPopupGridConfiguration,\r\n SdGridFilter,\r\n SdPopupFilter,\r\n SdDynamicColumn,\r\n\r\n // Pipes\r\n SdGridConfigurationResultPipe,\r\n SdColumnChildrenFilterPipe,\r\n SdColumnTitlePipe,\r\n SdCommandFilterPipe,\r\n SdCommandDisablePipe,\r\n SdCommandIconPipe,\r\n SdCommandTitlePipe,\r\n SdColumnValuesPipe,\r\n SdColumnHtmlTemplatePipe,\r\n SdColumnTransformPipe,\r\n SdColumnTooltipPipe,\r\n SdColumnBadgePipe,\r\n SdFilterColumnPipe,\r\n SdFilterExternalPipe,\r\n SdSelectionActionFilterPipe,\r\n SdSelectionDisablePipe,\r\n SdSelectionDisableSelectAllPipe,\r\n SdEditorHandlerRowPipe,\r\n SdEditorHandlerColumnPipe,\r\n SdEditorValidatePipe,\r\n SdStyleRowCss\r\n ],\r\n exports: [\r\n SdGridMaterial,\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdMaterialSubInformationDefDirective\r\n ],\r\n providers: [\r\n DatePipe,\r\n DecimalPipe,\r\n CdkColumnDef,\r\n SdGridService,\r\n SdGridFilterService,\r\n SdGridConfigurationService,\r\n SdGeneratedColumnService,\r\n {\r\n provide: MatPaginatorIntl, useClass: MatPaginatorIntlCro\r\n }\r\n ]\r\n})\r\nexport class SdGridMaterialModule {\r\n}\r\n"]}