@smartbit4all/ng-client 3.3.102 → 3.3.103

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.
@@ -9822,11 +9822,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
9822
9822
  }] } });
9823
9823
 
9824
9824
  class SmartGridComponent {
9825
- constructor(service, cfService, dialog, uiActionDescriptorService) {
9825
+ constructor(service, cfService, dialog, uiActionDescriptorService, gridMenuIcon) {
9826
9826
  this.service = service;
9827
9827
  this.cfService = cfService;
9828
9828
  this.dialog = dialog;
9829
9829
  this.uiActionDescriptorService = uiActionDescriptorService;
9830
+ this.gridMenuIcon = gridMenuIcon;
9830
9831
  // private readonly defaultPageSize: number = 10;
9831
9832
  this.defaultPageSizeOptions = [5, 10, 25, 50];
9832
9833
  this._destroy$ = new Subject();
@@ -10289,20 +10290,20 @@ class SmartGridComponent {
10289
10290
  return result;
10290
10291
  }
10291
10292
  constructHeader() {
10292
- var _a, _b, _c, _d;
10293
+ var _a, _b, _c, _d, _e;
10293
10294
  return __awaiter(this, void 0, void 0, function* () {
10294
10295
  let header = [];
10295
10296
  if (this.smartGrid.gridModel.page.rows && this.smartGrid.gridModel.page.rows.length) {
10296
10297
  yield Promise.all(this.smartGrid.gridModel.page.rows.map((gridRow) => __awaiter(this, void 0, void 0, function* () {
10297
- var _e;
10298
- let newUiActions = (_e = gridRow.actions) === null || _e === void 0 ? void 0 : _e.filter((uiAction) => !this.uiActionDescriptors.get(uiAction.code));
10298
+ var _f;
10299
+ let newUiActions = (_f = gridRow.actions) === null || _f === void 0 ? void 0 : _f.filter((uiAction) => !this.uiActionDescriptors.get(uiAction.code));
10299
10300
  if (newUiActions) {
10300
10301
  yield Promise.all(newUiActions.map((uiAction) => __awaiter(this, void 0, void 0, function* () {
10301
- var _f, _g;
10302
- let descriptor = yield ((_f = this.smartGrid.uiActionDescriptorService) === null || _f === void 0 ? void 0 : _f.getActionDescriptor(uiAction));
10302
+ var _g, _h;
10303
+ let descriptor = yield ((_g = this.smartGrid.uiActionDescriptorService) === null || _g === void 0 ? void 0 : _g.getActionDescriptor(uiAction));
10303
10304
  if (!descriptor) {
10304
10305
  descriptor = {
10305
- title: (_g = uiAction.code) !== null && _g !== void 0 ? _g : 'CODE',
10306
+ title: (_h = uiAction.code) !== null && _h !== void 0 ? _h : 'CODE',
10306
10307
  color: 'primary',
10307
10308
  type: UiActionButtonType.NORMAL,
10308
10309
  };
@@ -10313,11 +10314,11 @@ class SmartGridComponent {
10313
10314
  })));
10314
10315
  }
10315
10316
  yield Promise.all(this.smartGrid.gridModel.view.orderedColumnNames.map((propertyName) => __awaiter(this, void 0, void 0, function* () {
10316
- var _h, _j, _k, _l, _m, _o;
10317
+ var _j, _k, _l, _m, _o, _p;
10317
10318
  let descColumn = this.smartGrid.gridModel.view.descriptor.columns.find((colDescriptor) => colDescriptor.propertyName === propertyName);
10318
- let customTableHeader = (_j = (_h = this.smartGrid.tableConfig) === null || _h === void 0 ? void 0 : _h.customSmartTableHeaders) === null || _j === void 0 ? void 0 : _j.find((header) => header.propertyName === propertyName);
10319
+ let customTableHeader = (_k = (_j = this.smartGrid.tableConfig) === null || _j === void 0 ? void 0 : _j.customSmartTableHeaders) === null || _k === void 0 ? void 0 : _k.find((header) => header.propertyName === propertyName);
10319
10320
  if (descColumn) {
10320
- let filterExpressionOrderByItem = (_l = (_k = this.smartGrid.gridModel.view) === null || _k === void 0 ? void 0 : _k.orderByList) === null || _l === void 0 ? void 0 : _l.find((filterExpression) => filterExpression.propertyName === descColumn.propertyName);
10321
+ let filterExpressionOrderByItem = (_m = (_l = this.smartGrid.gridModel.view) === null || _l === void 0 ? void 0 : _l.orderByList) === null || _m === void 0 ? void 0 : _m.find((filterExpression) => filterExpression.propertyName === descColumn.propertyName);
10321
10322
  let order;
10322
10323
  let orderNumber;
10323
10324
  if (filterExpressionOrderByItem) {
@@ -10330,10 +10331,10 @@ class SmartGridComponent {
10330
10331
  orderNumber++;
10331
10332
  }
10332
10333
  }
10333
- const orignalLabel = (_m = customTableHeader === null || customTableHeader === void 0 ? void 0 : customTableHeader.label) !== null && _m !== void 0 ? _m : descColumn.label;
10334
+ const orignalLabel = (_o = customTableHeader === null || customTableHeader === void 0 ? void 0 : customTableHeader.label) !== null && _o !== void 0 ? _o : descColumn.label;
10334
10335
  let label;
10335
10336
  if (this.smartGrid.translateService) {
10336
- label = yield ((_o = this.smartGrid.translateService) === null || _o === void 0 ? void 0 : _o.get(orignalLabel).toPromise());
10337
+ label = yield ((_p = this.smartGrid.translateService) === null || _p === void 0 ? void 0 : _p.get(orignalLabel).toPromise());
10337
10338
  }
10338
10339
  else {
10339
10340
  label = orignalLabel;
@@ -10388,6 +10389,7 @@ class SmartGridComponent {
10388
10389
  }
10389
10390
  if (!header.some((header) => header.propertyName === 'my_menu')) {
10390
10391
  if (((_d = this.smartGrid.options) === null || _d === void 0 ? void 0 : _d.rowUiActionType) === GridUiActionType.POPUP_MENU) {
10392
+ let icon = (_e = this.gridMenuIcon) !== null && _e !== void 0 ? _e : 'more_vert';
10391
10393
  header.push({
10392
10394
  label: '',
10393
10395
  propertyName: 'my_menu',
@@ -10395,7 +10397,7 @@ class SmartGridComponent {
10395
10397
  {
10396
10398
  type: SmartTableButtonType.MENU,
10397
10399
  callback: this.execute.bind(this),
10398
- icon: 'more_vert',
10400
+ icon: icon,
10399
10401
  menuItemButtonsPropertyName: 'actions',
10400
10402
  translator: this.buttonTranslator.bind(this),
10401
10403
  args: [],
@@ -10533,12 +10535,17 @@ class SmartGridComponent {
10533
10535
  this.dialog.open(TableLayoutDefinerComponent, { data: dialogData });
10534
10536
  }
10535
10537
  }
10536
- SmartGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridComponent, deps: [{ token: SmartGridService }, { token: ComponentFactoryService }, { token: i1$1.MatDialog }, { token: UiActionDescriptorService }], target: i0.ɵɵFactoryTarget.Component });
10538
+ SmartGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridComponent, deps: [{ token: SmartGridService }, { token: ComponentFactoryService }, { token: i1$1.MatDialog }, { token: UiActionDescriptorService }, { token: 'gridMenuIcon' }], target: i0.ɵɵFactoryTarget.Component });
10537
10539
  SmartGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: SmartGridComponent, selector: "smart-grid", inputs: { smartGrid: "smartGrid", uuid: "uuid", dev: "dev" }, providers: [SmartGridService], viewQueries: [{ propertyName: "vcRefTable", first: true, predicate: ["table"], descendants: true, read: ViewContainerRef }, { propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"smartGrid\" class=\"smartGrid-container\">\r\n <div class=\"smart-grid-toolbar\">\r\n <smart-ui-action-toolbar #toolbar [id]=\"'grid_not_initialized'\"></smart-ui-action-toolbar>\r\n <button\r\n (click)=\"editColumns()\"\r\n mat-mini-fab\r\n color=\"text-primary\"\r\n *ngIf=\"smartGrid.showEditColumns\"\r\n >\r\n <mat-icon aria-hidden=\"false\" aria-label=\"Columns\" class=\"smart-grid-edit-icon\"\r\n >view_columns</mat-icon\r\n >\r\n </button>\r\n </div>\r\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\r\n <div class=\"smartGridContent\">\r\n <div>\r\n <div *ngIf=\"smartGrid.showResultCount\">\r\n <div class=\"smartGrid-data-number\">\r\n {{ smartGrid.gridModel.totalRowCount }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"smart-grid-table-container\">\r\n <ng-template #table></ng-template>\r\n </div>\r\n\r\n <div *ngIf=\"smartGrid.layoutDef === layoutDef().EXPANDABLE\">\r\n <smart-expandable-section\r\n #gridExpandableSection\r\n *ngFor=\"let expandableSection of expandableSections\"\r\n [data]=\"expandableSection\"\r\n ></smart-expandable-section>\r\n </div>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD\"\r\n class=\"cards-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <app-smart-grid-card\r\n class=\"smartGrid-card-container\"\r\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\r\n [item]=\"task\"\r\n [smartGrid]=\"smartGrid\"\r\n [onSelect]=\"onSelect.bind(this)\"\r\n ></app-smart-grid-card>\r\n </div>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().TREE && treeControl\"\r\n class=\"tree-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <mat-tree [dataSource]=\"treeDataSource!\" [treeControl]=\"treeControl!\">\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodeToggle\r\n matTreeNodePadding\r\n matTreeNodePaddingIndent=\"24\"\r\n >\r\n <button mat-icon-button disabled class=\"tree-button\"></button>\r\n <mat-checkbox\r\n class=\"checklist-leaf-node\"\r\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\r\n (change)=\"treeNodeSelectionToggle(node)\"\r\n >{{ getTreeItem(node) }}</mat-checkbox\r\n >\r\n </mat-tree-node>\r\n\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node; when: hasChild\"\r\n matTreeNodePadding\r\n matTreeNodePaddingIndent=\"24\"\r\n >\r\n <button\r\n mat-icon-button\r\n matTreeNodeToggle\r\n class=\"tree-button\"\r\n [attr.aria-label]=\"'Toggle ' + node.item\"\r\n >\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{ treeControl!.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\r\n </mat-icon>\r\n </button>\r\n <mat-checkbox\r\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\r\n [indeterminate]=\"descendantsPartiallySelected(node)\"\r\n (change)=\"treeNodeSelectionToggle(node)\"\r\n >{{ getTreeItem(node) }}</mat-checkbox\r\n >\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n\r\n <mat-paginator\r\n *ngIf=\"smartGrid.paginator && !treeControl\"\r\n #paginator\r\n [length]=\"length\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onChangePage($event)\"\r\n ></mat-paginator>\r\n</div>\r\n", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.smartGrid-data-number{padding-bottom:1rem}.cards-container{display:grid;grid-gap:1rem;gap:1rem;padding:1rem}.smartGrid-card-container{height:auto;border:1px solid black;border-radius:8px}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column;gap:1rem}.smart-grid-toolbar{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.smart-grid-toolbar smart-ui-action-toolbar{width:100%}.smart-grid-edit-icon{color:var(--light-gray)}.tree-button{width:24px!important;height:24px!important}\n"], components: [{ type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: ExpandableSectionComponent, selector: "smart-expandable-section", inputs: ["data", "index"] }, { type: SmartGridCardComponent, selector: "app-smart-grid-card", inputs: ["item", "smartGrid", "onSelect"] }, { type: i10$1.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { type: i11.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i12$1.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i10$1.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { type: i10$1.MatTreeNode, selector: "mat-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { type: i10$1.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { type: i10$1.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }] });
10538
10540
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridComponent, decorators: [{
10539
10541
  type: Component,
10540
10542
  args: [{ selector: 'smart-grid', providers: [SmartGridService], template: "<div *ngIf=\"smartGrid\" class=\"smartGrid-container\">\r\n <div class=\"smart-grid-toolbar\">\r\n <smart-ui-action-toolbar #toolbar [id]=\"'grid_not_initialized'\"></smart-ui-action-toolbar>\r\n <button\r\n (click)=\"editColumns()\"\r\n mat-mini-fab\r\n color=\"text-primary\"\r\n *ngIf=\"smartGrid.showEditColumns\"\r\n >\r\n <mat-icon aria-hidden=\"false\" aria-label=\"Columns\" class=\"smart-grid-edit-icon\"\r\n >view_columns</mat-icon\r\n >\r\n </button>\r\n </div>\r\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\r\n <div class=\"smartGridContent\">\r\n <div>\r\n <div *ngIf=\"smartGrid.showResultCount\">\r\n <div class=\"smartGrid-data-number\">\r\n {{ smartGrid.gridModel.totalRowCount }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"smart-grid-table-container\">\r\n <ng-template #table></ng-template>\r\n </div>\r\n\r\n <div *ngIf=\"smartGrid.layoutDef === layoutDef().EXPANDABLE\">\r\n <smart-expandable-section\r\n #gridExpandableSection\r\n *ngFor=\"let expandableSection of expandableSections\"\r\n [data]=\"expandableSection\"\r\n ></smart-expandable-section>\r\n </div>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD\"\r\n class=\"cards-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <app-smart-grid-card\r\n class=\"smartGrid-card-container\"\r\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\r\n [item]=\"task\"\r\n [smartGrid]=\"smartGrid\"\r\n [onSelect]=\"onSelect.bind(this)\"\r\n ></app-smart-grid-card>\r\n </div>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().TREE && treeControl\"\r\n class=\"tree-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <mat-tree [dataSource]=\"treeDataSource!\" [treeControl]=\"treeControl!\">\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodeToggle\r\n matTreeNodePadding\r\n matTreeNodePaddingIndent=\"24\"\r\n >\r\n <button mat-icon-button disabled class=\"tree-button\"></button>\r\n <mat-checkbox\r\n class=\"checklist-leaf-node\"\r\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\r\n (change)=\"treeNodeSelectionToggle(node)\"\r\n >{{ getTreeItem(node) }}</mat-checkbox\r\n >\r\n </mat-tree-node>\r\n\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node; when: hasChild\"\r\n matTreeNodePadding\r\n matTreeNodePaddingIndent=\"24\"\r\n >\r\n <button\r\n mat-icon-button\r\n matTreeNodeToggle\r\n class=\"tree-button\"\r\n [attr.aria-label]=\"'Toggle ' + node.item\"\r\n >\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{ treeControl!.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\r\n </mat-icon>\r\n </button>\r\n <mat-checkbox\r\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\r\n [indeterminate]=\"descendantsPartiallySelected(node)\"\r\n (change)=\"treeNodeSelectionToggle(node)\"\r\n >{{ getTreeItem(node) }}</mat-checkbox\r\n >\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n\r\n <mat-paginator\r\n *ngIf=\"smartGrid.paginator && !treeControl\"\r\n #paginator\r\n [length]=\"length\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onChangePage($event)\"\r\n ></mat-paginator>\r\n</div>\r\n", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.smartGrid-data-number{padding-bottom:1rem}.cards-container{display:grid;grid-gap:1rem;gap:1rem;padding:1rem}.smartGrid-card-container{height:auto;border:1px solid black;border-radius:8px}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column;gap:1rem}.smart-grid-toolbar{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.smart-grid-toolbar smart-ui-action-toolbar{width:100%}.smart-grid-edit-icon{color:var(--light-gray)}.tree-button{width:24px!important;height:24px!important}\n"] }]
10541
- }], ctorParameters: function () { return [{ type: SmartGridService }, { type: ComponentFactoryService }, { type: i1$1.MatDialog }, { type: UiActionDescriptorService }]; }, propDecorators: { smartGrid: [{
10543
+ }], ctorParameters: function () {
10544
+ return [{ type: SmartGridService }, { type: ComponentFactoryService }, { type: i1$1.MatDialog }, { type: UiActionDescriptorService }, { type: undefined, decorators: [{
10545
+ type: Inject,
10546
+ args: ['gridMenuIcon']
10547
+ }] }];
10548
+ }, propDecorators: { smartGrid: [{
10542
10549
  type: Input
10543
10550
  }], uuid: [{
10544
10551
  type: Input
@@ -10627,7 +10634,7 @@ SmartGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version
10627
10634
  SmartformModule,
10628
10635
  MatSelectModule,
10629
10636
  SmartViewContextModule], exports: [SmartGridComponent] });
10630
- SmartGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridModule, imports: [[
10637
+ SmartGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridModule, providers: [{ provide: 'gridMenuIcon', useValue: 'more_vert' }], imports: [[
10631
10638
  BrowserModule,
10632
10639
  SmartIconModule,
10633
10640
  SmarttableModule,
@@ -10667,6 +10674,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
10667
10674
  SmartViewContextModule,
10668
10675
  ],
10669
10676
  exports: [SmartGridComponent],
10677
+ providers: [{ provide: 'gridMenuIcon', useValue: 'more_vert' }],
10670
10678
  }]
10671
10679
  }] });
10672
10680