@quadrel-enterprise-ui/framework 18.31.4 → 18.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/esm2022/lib/comments/add-comment/add-comment-dialog.component.mjs +3 -4
  2. package/esm2022/lib/forms/checkbox-chips/checkbox-chips.component.mjs +3 -3
  3. package/esm2022/lib/forms/checkboxes/checkboxes.component.mjs +3 -3
  4. package/esm2022/lib/forms/datepicker/datepicker.component.mjs +3 -3
  5. package/esm2022/lib/forms/dropdown/dropdown.component.mjs +3 -3
  6. package/esm2022/lib/forms/file-upload/file-upload.component.mjs +3 -3
  7. package/esm2022/lib/forms/input/input.component.mjs +3 -3
  8. package/esm2022/lib/forms/multi-input/multi-input.component.mjs +3 -3
  9. package/esm2022/lib/forms/pin-code/pin-code.component.mjs +3 -3
  10. package/esm2022/lib/forms/radio-buttons/radio-buttons.component.mjs +3 -3
  11. package/esm2022/lib/forms/richtext/richtext.component.mjs +3 -3
  12. package/esm2022/lib/forms/switches/switches.component.mjs +3 -3
  13. package/esm2022/lib/forms/textarea/textarea.component.mjs +3 -3
  14. package/esm2022/lib/page/object-header/page-object-header.component.mjs +8 -4
  15. package/esm2022/lib/page/page.component.mjs +8 -2
  16. package/esm2022/lib/page/shared/services/form-group-manager.service.mjs +59 -14
  17. package/esm2022/lib/page/shared/services/page-submit-action.service.mjs +4 -2
  18. package/esm2022/lib/quick-edit/quick-edit.component.mjs +2 -2
  19. package/esm2022/lib/table/store/table.reducer.mjs +1 -1
  20. package/fesm2022/quadrel-enterprise-ui-framework.mjs +103 -47
  21. package/fesm2022/quadrel-enterprise-ui-framework.mjs.map +1 -1
  22. package/lib/comments/add-comment/add-comment-dialog.component.d.ts +0 -4
  23. package/lib/comments/add-comment/add-comment-dialog.component.d.ts.map +1 -1
  24. package/lib/page/object-header/page-object-header.component.d.ts.map +1 -1
  25. package/lib/page/page.component.d.ts +1 -0
  26. package/lib/page/page.component.d.ts.map +1 -1
  27. package/lib/page/shared/services/form-group-manager.service.d.ts +10 -0
  28. package/lib/page/shared/services/form-group-manager.service.d.ts.map +1 -1
  29. package/lib/page/shared/services/page-submit-action.service.d.ts +1 -0
  30. package/lib/page/shared/services/page-submit-action.service.d.ts.map +1 -1
  31. package/package.json +1 -1
  32. package/esm2022/index.mjs +0 -74
  33. package/esm2022/lib/table/__mocks__/mock-secondary-actions.service.mjs +0 -26
  34. package/index.d.ts.map +0 -1
  35. package/lib/table/__mocks__/mock-secondary-actions.service.d.ts +0 -14
  36. package/lib/table/__mocks__/mock-secondary-actions.service.d.ts.map +0 -1
@@ -350,11 +350,11 @@ export class QdQuickEditComponent {
350
350
  .subscribe();
351
351
  }
352
352
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdQuickEditComponent, deps: [{ token: i1.FormBuilder }, { token: i2.QdPageFooterService, optional: true }, { token: i3.QdPageStoreService, optional: true }, { token: i4.QdSectionToolbarActionService, optional: true }, { token: i5.QdContainerActionService, optional: true }, { token: i6.QdEventBrokerService, optional: true }, { token: i0.ChangeDetectorRef }, { token: i1.ControlContainer, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
353
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: QdQuickEditComponent, selector: "qd-quick-edit", inputs: { config: "config", data: "data", testId: ["data-test-id", "testId"] }, outputs: { formGroupChange: "formGroupChange", addNewClicked: "addNewClicked" }, viewQueries: [{ propertyName: "customForDirective", first: true, predicate: QdCustomForDirective, descendants: true }, { propertyName: "focusables", predicate: QdFocusableDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"editable-actions\" *ngIf=\"showStandaloneCreate\">\n <button\n qdButton\n qdButtonGhost\n icon=\"plus\"\n (click)=\"createRow()\"\n [data-test-id]=\"testId + '-button-add-new'\"\n class=\"create-button-standalone\"\n >\n {{ config.standaloneCreateLabel?.i18n ?? \"i18n.qd.quick.edit.createButtonLabel\" | translate }}\n </button>\n</div>\n\n<div class=\"table\" [formGroup]=\"control\">\n <div class=\"table-header\" *ngIf=\"!config.canAdd || templateData.length > 0 || config.emptyStateView\">\n <div class=\"table-row\">\n <div class=\"table-cell\" *ngFor=\"let header of visibleColumns\">\n {{ header?.i18n | translate }}\n <qd-icon\n *ngIf=\"hasTooltip(header?.tooltip)\"\n icon=\"circleInfo\"\n class=\"additional-info\"\n qdTooltipOnClick\n [qdTooltipContent]=\"header?.tooltip?.content\"\n ></qd-icon>\n </div>\n <div class=\"table-cell actions-column\" *ngIf=\"config?.secondaryActions?.length > 0\">\n <button class=\"menu-button\">\n <qd-icon icon=\"overflowMenuHorizontal\"></qd-icon>\n </button>\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <div\n class=\"table-row\"\n *qdCustomFor=\"let row of templateData; let rowIndex = index; toggler: togglerDrawing\"\n [formGroupName]=\"rowIndex\"\n >\n <ng-container *ngFor=\"let column of visibleColumns\">\n <div class=\"table-cell\">\n <qd-dropdown\n [config]=\"{\n filter: column.filter,\n options: column.options,\n placeholder: column.placeholder,\n placeholderPrefix: column.placeholderPrefix,\n viewonly: (viewonly$ | async) === true || !column.isEditable(row, column.name)\n }\"\n [data-test-id]=\"column.name + rowIndex\"\n *ngIf=\"column.type === 'enum'; else otherTypes\"\n [dense]=\"true\"\n [formControl]=\"$any(control.controls[rowIndex])?.controls[column.name]\"\n qdFocusable\n class=\"dropdown\"\n >\n </qd-dropdown>\n\n <ng-template #otherTypes>\n <qd-input\n [data-test-id]=\"column.name + rowIndex\"\n [formControlName]=\"column.name\"\n *ngIf=\"column.type !== 'enum' && $any(control.controls[rowIndex])?.controls[column.name]\"\n [config]=\"{\n inputType: column.type === 'integer' ? 'number' : 'text',\n viewonly: (viewonly$ | async) === true || !column.isEditable(row, column.name)\n }\"\n qdFocusable\n ></qd-input>\n </ng-template>\n </div>\n </ng-container>\n <td\n *ngIf=\"config.secondaryActions?.length > 0 || canAdd\"\n class=\"table-cell actions\"\n [attr.data-test-id]=\"testId + '-cell-inline-actions'\"\n >\n <button\n type=\"button\"\n [qdPopoverOnClick]=\"menu\"\n [qdPopoverCloseStrategy]=\"'onEveryClick'\"\n [qdPopoverStopPropagation]=\"true\"\n class=\"menu-button\"\n data-test=\"secondary-actions-toggler\"\n >\n <qd-icon icon=\"overflowMenuHorizontal\"></qd-icon>\n </button>\n\n <ng-template #menu>\n <button\n *ngFor=\"let secondaryAction of actions$ | async\"\n class=\"secondary-actions\"\n [ngClass]=\"{ disabled: secondaryAction.isDisabled }\"\n (click)=\"handleSecondaryAction(secondaryAction, rowIndex)\"\n >\n {{ secondaryAction.label.i18n | translate }}\n </button>\n <button\n *ngIf=\"canAdd && (viewonly$ | async) === false\"\n class=\"secondary-actions\"\n (click)=\"removeRow(rowIndex)\"\n >\n {{ \"i18n.qd.quick.edit.removeButtonLabel\" | translate }}\n </button>\n </ng-template>\n </td>\n </div>\n </div>\n <div class=\"empty-body\" *ngIf=\"config.emptyStateView && !config.emptyStateView.disabled && templateData.length === 0\">\n <p>{{ config.emptyStateView.i18n | translate }}</p>\n </div>\n</div>\n", styles: [".table{display:flex;width:100%;flex-direction:column;margin:1.25rem auto;background-color:#fff;font-size:.875rem}.table ::ng-deep .qd-input-input{margin-bottom:0!important}.table-header .table-row{padding-top:.125rem;padding-bottom:.125rem;background-color:#e5e5e5;font-weight:700}.table-header .table-row .actions-column{flex:0;border-right:none;visibility:hidden}.table-header,.table-body{display:flex;flex-direction:column}.table-row{display:flex;flex-direction:row;padding:.25rem 1rem;border-bottom:.0625rem solid rgb(213,213,213);gap:1rem}.table-row ::ng-deep qd-form-label,.table-row ::ng-deep qd-form-hint{display:none!important}.table-row ::ng-deep qd-input{margin-bottom:0!important}.table-cell{display:flex;height:37px;flex:1;align-items:center;text-align:left}.table-cell.actions{flex:0}.table-row:last-child{border-bottom:none}.table-cell:last-child{border-right:none}.editable-actions{display:flex;justify-content:flex-end;margin-right:.625rem;gap:.625rem}.menu-button{display:flex;padding:0 .625rem 0 .375rem;background:unset;color:#454545;font-size:2rem;vertical-align:middle}.menu-button:hover,.menu-button:focus{color:#000;outline:0!important}.secondary-actions{display:block;width:100%;min-height:2rem;padding:0 1rem;background:#fff0;font-size:.75rem;text-align:left}.secondary-actions:hover{background-color:#f2f7fa}.secondary-actions.disabled{color:#b4b4b4;cursor:not-allowed}.secondary-actions.disabled:hover{background-color:#fff0}.dropdown{min-width:160px}.empty-body{padding:1.5rem;background:#fff}.empty-body p{margin:0 0 .5rem}.additional-info{align-self:center;margin-left:.25rem;color:#069;cursor:pointer;font-size:1rem;font-weight:400;transform:translateY(.0625rem)}.additional-info:hover,.additional-info:focus,.additional-info:active{color:#14516f}\n"], dependencies: [{ kind: "component", type: i7.QdButtonComponent, selector: "button[qdButton], a[qdButton], button[qd-button]", inputs: ["disabled", "color", "icon", "data-test-id", "additionalInfo"] }, { kind: "directive", type: i8.QdButtonGhostDirective, selector: "button[qdButtonGhost], a[qdButtonGhost]" }, { kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i10.QdDropdownComponent, selector: "qd-dropdown", inputs: ["value", "id", "formControlName", "config", "data-test-id", "qdPopoverMaxHeight", "dense"], outputs: ["valueChange", "enterClick", "clickHint", "clickReadonly", "clickViewonly"] }, { kind: "component", type: i11.QdInputComponent, selector: "qd-input", inputs: ["formControlName", "value", "config", "isError", "data-test-id"], outputs: ["valueChange", "enterClick", "clickClear", "clickHint", "clickReadonly", "clickViewonly"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i12.QdIconComponent, selector: "qd-icon", inputs: ["icon"] }, { kind: "directive", type: i13.QdPopoverOnClickDirective, selector: "[qdPopoverOnClick]", inputs: ["qdPopoverOnClick", "positionStrategy", "qdPopoverCloseStrategy", "qdPopoverDisabled", "qdPopoverStopPropagation", "qdPopoverBackgroundColor", "qdPopoverMaxHeight", "qdPopoverMinWidth", "qdPopoverMaxWidth", "qdPopoverAutoSize", "qdPopoverEnableKeyControl"], outputs: ["opened", "closed"], exportAs: ["qdPopoverOnClick"] }, { kind: "directive", type: i14.QdFocusableDirective, selector: "[qdFocusable]" }, { kind: "directive", type: i15.QdTooltipOnClickDirective, selector: "[qdTooltipOnClick]", inputs: ["qdTooltipContent"] }, { kind: "directive", type: i16.QdCustomForDirective, selector: "[qdCustomFor]", inputs: ["qdCustomForOf", "qdCustomForToggler"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i17.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
353
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: QdQuickEditComponent, selector: "qd-quick-edit", inputs: { config: "config", data: "data", testId: ["data-test-id", "testId"] }, outputs: { formGroupChange: "formGroupChange", addNewClicked: "addNewClicked" }, viewQueries: [{ propertyName: "customForDirective", first: true, predicate: QdCustomForDirective, descendants: true }, { propertyName: "focusables", predicate: QdFocusableDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"editable-actions\" *ngIf=\"showStandaloneCreate\">\n <button\n qdButton\n qdButtonGhost\n icon=\"plus\"\n (click)=\"createRow()\"\n [data-test-id]=\"testId + '-button-add-new'\"\n class=\"create-button-standalone\"\n >\n {{ config.standaloneCreateLabel?.i18n ?? \"i18n.qd.quick.edit.createButtonLabel\" | translate }}\n </button>\n</div>\n\n<div class=\"table\" [formGroup]=\"control\">\n <div class=\"table-header\" *ngIf=\"!config.canAdd || templateData.length > 0 || config.emptyStateView\">\n <div class=\"table-row\">\n <div class=\"table-cell\" *ngFor=\"let header of visibleColumns\">\n {{ header?.i18n | translate }}\n <qd-icon\n *ngIf=\"hasTooltip(header?.tooltip)\"\n icon=\"circleInfo\"\n class=\"additional-info\"\n qdTooltipOnClick\n [qdTooltipContent]=\"header?.tooltip?.content\"\n ></qd-icon>\n </div>\n <div class=\"table-cell actions-column\" *ngIf=\"config?.secondaryActions?.length > 0\">\n <button class=\"menu-button\">\n <qd-icon icon=\"overflowMenuHorizontal\"></qd-icon>\n </button>\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <div\n class=\"table-row\"\n *qdCustomFor=\"let row of templateData; let rowIndex = index; toggler: togglerDrawing\"\n [formGroupName]=\"rowIndex\"\n >\n <ng-container *ngFor=\"let column of visibleColumns\">\n <div class=\"table-cell\">\n <qd-dropdown\n [config]=\"{\n filter: column.filter,\n options: column.options,\n placeholder: column.placeholder,\n placeholderPrefix: column.placeholderPrefix,\n viewonly: (viewonly$ | async) === true || !column.isEditable(row, column.name)\n }\"\n [data-test-id]=\"column.name + rowIndex\"\n *ngIf=\"column.type === 'enum'; else otherTypes\"\n [dense]=\"true\"\n [formControl]=\"$any(control.controls[rowIndex])?.controls[column.name]\"\n qdFocusable\n class=\"dropdown\"\n >\n </qd-dropdown>\n\n <ng-template #otherTypes>\n <qd-input\n [data-test-id]=\"column.name + rowIndex\"\n [formControlName]=\"column.name\"\n *ngIf=\"column.type !== 'enum' && $any(control.controls[rowIndex])?.controls[column.name]\"\n [config]=\"{\n inputType: column.type === 'integer' ? 'number' : 'text',\n viewonly: (viewonly$ | async) === true || !column.isEditable(row, column.name)\n }\"\n qdFocusable\n ></qd-input>\n </ng-template>\n </div>\n </ng-container>\n <td\n *ngIf=\"config.secondaryActions?.length > 0 || canAdd\"\n class=\"table-cell actions\"\n [attr.data-test-id]=\"testId + '-cell-inline-actions'\"\n >\n <button\n type=\"button\"\n [qdPopoverOnClick]=\"menu\"\n [qdPopoverCloseStrategy]=\"'onEveryClick'\"\n [qdPopoverStopPropagation]=\"true\"\n class=\"menu-button\"\n data-test=\"secondary-actions-toggler\"\n >\n <qd-icon icon=\"overflowMenuHorizontal\"></qd-icon>\n </button>\n\n <ng-template #menu>\n <button\n *ngFor=\"let secondaryAction of actions$ | async\"\n class=\"secondary-actions\"\n [ngClass]=\"{ disabled: secondaryAction.isDisabled }\"\n (click)=\"handleSecondaryAction(secondaryAction, rowIndex)\"\n >\n {{ secondaryAction.label.i18n | translate }}\n </button>\n <button\n *ngIf=\"canAdd && (viewonly$ | async) === false\"\n class=\"secondary-actions\"\n (click)=\"removeRow(rowIndex)\"\n >\n {{ \"i18n.qd.quick.edit.removeButtonLabel\" | translate }}\n </button>\n </ng-template>\n </td>\n </div>\n </div>\n <div class=\"empty-body\" *ngIf=\"config.emptyStateView && !config.emptyStateView.disabled && templateData.length === 0\">\n <p>{{ config.emptyStateView.i18n | translate }}</p>\n </div>\n</div>\n", styles: [".table{display:flex;width:100%;flex-direction:column;margin:1.25rem auto;background-color:#fff;font-size:.875rem}.table ::ng-deep .qd-input-input{margin-bottom:0!important}.table-header .table-row{padding-top:.125rem;padding-bottom:.125rem;background-color:#e5e5e5;font-weight:700}.table-header .table-row .actions-column{flex:0;border-right:none;visibility:hidden}.table-header,.table-body{display:flex;flex-direction:column}.table-row{display:flex;flex-direction:row;padding:.25rem 1rem;border-bottom:.0625rem solid rgb(213,213,213);gap:1rem}.table-row ::ng-deep qd-form-label{display:none!important}.table-row ::ng-deep qd-form-hint .qd-form-hint{display:none}.table-row ::ng-deep qd-input{margin-bottom:0!important}.table-cell{display:flex;height:37px;flex:1;align-items:center;text-align:left}.table-cell:has(.qd-input-error),.table-cell:has(.qd-dropdown-error){height:auto;align-items:flex-start}.table-cell.actions{flex:0}.table-row:last-child{border-bottom:none}.table-cell:last-child{border-right:none}.editable-actions{display:flex;justify-content:flex-end;margin-right:.625rem;gap:.625rem}.menu-button{display:flex;padding:0 .625rem 0 .375rem;background:unset;color:#454545;font-size:2rem;vertical-align:middle}.menu-button:hover,.menu-button:focus{color:#000;outline:0!important}.secondary-actions{display:block;width:100%;min-height:2rem;padding:0 1rem;background:#fff0;font-size:.75rem;text-align:left}.secondary-actions:hover{background-color:#f2f7fa}.secondary-actions.disabled{color:#b4b4b4;cursor:not-allowed}.secondary-actions.disabled:hover{background-color:#fff0}.dropdown{min-width:160px}.empty-body{padding:1.5rem;background:#fff}.empty-body p{margin:0 0 .5rem}.additional-info{align-self:center;margin-left:.25rem;color:#069;cursor:pointer;font-size:1rem;font-weight:400;transform:translateY(.0625rem)}.additional-info:hover,.additional-info:focus,.additional-info:active{color:#14516f}\n"], dependencies: [{ kind: "component", type: i7.QdButtonComponent, selector: "button[qdButton], a[qdButton], button[qd-button]", inputs: ["disabled", "color", "icon", "data-test-id", "additionalInfo"] }, { kind: "directive", type: i8.QdButtonGhostDirective, selector: "button[qdButtonGhost], a[qdButtonGhost]" }, { kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i10.QdDropdownComponent, selector: "qd-dropdown", inputs: ["value", "id", "formControlName", "config", "data-test-id", "qdPopoverMaxHeight", "dense"], outputs: ["valueChange", "enterClick", "clickHint", "clickReadonly", "clickViewonly"] }, { kind: "component", type: i11.QdInputComponent, selector: "qd-input", inputs: ["formControlName", "value", "config", "isError", "data-test-id"], outputs: ["valueChange", "enterClick", "clickClear", "clickHint", "clickReadonly", "clickViewonly"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i12.QdIconComponent, selector: "qd-icon", inputs: ["icon"] }, { kind: "directive", type: i13.QdPopoverOnClickDirective, selector: "[qdPopoverOnClick]", inputs: ["qdPopoverOnClick", "positionStrategy", "qdPopoverCloseStrategy", "qdPopoverDisabled", "qdPopoverStopPropagation", "qdPopoverBackgroundColor", "qdPopoverMaxHeight", "qdPopoverMinWidth", "qdPopoverMaxWidth", "qdPopoverAutoSize", "qdPopoverEnableKeyControl"], outputs: ["opened", "closed"], exportAs: ["qdPopoverOnClick"] }, { kind: "directive", type: i14.QdFocusableDirective, selector: "[qdFocusable]" }, { kind: "directive", type: i15.QdTooltipOnClickDirective, selector: "[qdTooltipOnClick]", inputs: ["qdTooltipContent"] }, { kind: "directive", type: i16.QdCustomForDirective, selector: "[qdCustomFor]", inputs: ["qdCustomForOf", "qdCustomForToggler"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i17.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
354
354
  }
355
355
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdQuickEditComponent, decorators: [{
356
356
  type: Component,
357
- args: [{ selector: 'qd-quick-edit', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"editable-actions\" *ngIf=\"showStandaloneCreate\">\n <button\n qdButton\n qdButtonGhost\n icon=\"plus\"\n (click)=\"createRow()\"\n [data-test-id]=\"testId + '-button-add-new'\"\n class=\"create-button-standalone\"\n >\n {{ config.standaloneCreateLabel?.i18n ?? \"i18n.qd.quick.edit.createButtonLabel\" | translate }}\n </button>\n</div>\n\n<div class=\"table\" [formGroup]=\"control\">\n <div class=\"table-header\" *ngIf=\"!config.canAdd || templateData.length > 0 || config.emptyStateView\">\n <div class=\"table-row\">\n <div class=\"table-cell\" *ngFor=\"let header of visibleColumns\">\n {{ header?.i18n | translate }}\n <qd-icon\n *ngIf=\"hasTooltip(header?.tooltip)\"\n icon=\"circleInfo\"\n class=\"additional-info\"\n qdTooltipOnClick\n [qdTooltipContent]=\"header?.tooltip?.content\"\n ></qd-icon>\n </div>\n <div class=\"table-cell actions-column\" *ngIf=\"config?.secondaryActions?.length > 0\">\n <button class=\"menu-button\">\n <qd-icon icon=\"overflowMenuHorizontal\"></qd-icon>\n </button>\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <div\n class=\"table-row\"\n *qdCustomFor=\"let row of templateData; let rowIndex = index; toggler: togglerDrawing\"\n [formGroupName]=\"rowIndex\"\n >\n <ng-container *ngFor=\"let column of visibleColumns\">\n <div class=\"table-cell\">\n <qd-dropdown\n [config]=\"{\n filter: column.filter,\n options: column.options,\n placeholder: column.placeholder,\n placeholderPrefix: column.placeholderPrefix,\n viewonly: (viewonly$ | async) === true || !column.isEditable(row, column.name)\n }\"\n [data-test-id]=\"column.name + rowIndex\"\n *ngIf=\"column.type === 'enum'; else otherTypes\"\n [dense]=\"true\"\n [formControl]=\"$any(control.controls[rowIndex])?.controls[column.name]\"\n qdFocusable\n class=\"dropdown\"\n >\n </qd-dropdown>\n\n <ng-template #otherTypes>\n <qd-input\n [data-test-id]=\"column.name + rowIndex\"\n [formControlName]=\"column.name\"\n *ngIf=\"column.type !== 'enum' && $any(control.controls[rowIndex])?.controls[column.name]\"\n [config]=\"{\n inputType: column.type === 'integer' ? 'number' : 'text',\n viewonly: (viewonly$ | async) === true || !column.isEditable(row, column.name)\n }\"\n qdFocusable\n ></qd-input>\n </ng-template>\n </div>\n </ng-container>\n <td\n *ngIf=\"config.secondaryActions?.length > 0 || canAdd\"\n class=\"table-cell actions\"\n [attr.data-test-id]=\"testId + '-cell-inline-actions'\"\n >\n <button\n type=\"button\"\n [qdPopoverOnClick]=\"menu\"\n [qdPopoverCloseStrategy]=\"'onEveryClick'\"\n [qdPopoverStopPropagation]=\"true\"\n class=\"menu-button\"\n data-test=\"secondary-actions-toggler\"\n >\n <qd-icon icon=\"overflowMenuHorizontal\"></qd-icon>\n </button>\n\n <ng-template #menu>\n <button\n *ngFor=\"let secondaryAction of actions$ | async\"\n class=\"secondary-actions\"\n [ngClass]=\"{ disabled: secondaryAction.isDisabled }\"\n (click)=\"handleSecondaryAction(secondaryAction, rowIndex)\"\n >\n {{ secondaryAction.label.i18n | translate }}\n </button>\n <button\n *ngIf=\"canAdd && (viewonly$ | async) === false\"\n class=\"secondary-actions\"\n (click)=\"removeRow(rowIndex)\"\n >\n {{ \"i18n.qd.quick.edit.removeButtonLabel\" | translate }}\n </button>\n </ng-template>\n </td>\n </div>\n </div>\n <div class=\"empty-body\" *ngIf=\"config.emptyStateView && !config.emptyStateView.disabled && templateData.length === 0\">\n <p>{{ config.emptyStateView.i18n | translate }}</p>\n </div>\n</div>\n", styles: [".table{display:flex;width:100%;flex-direction:column;margin:1.25rem auto;background-color:#fff;font-size:.875rem}.table ::ng-deep .qd-input-input{margin-bottom:0!important}.table-header .table-row{padding-top:.125rem;padding-bottom:.125rem;background-color:#e5e5e5;font-weight:700}.table-header .table-row .actions-column{flex:0;border-right:none;visibility:hidden}.table-header,.table-body{display:flex;flex-direction:column}.table-row{display:flex;flex-direction:row;padding:.25rem 1rem;border-bottom:.0625rem solid rgb(213,213,213);gap:1rem}.table-row ::ng-deep qd-form-label,.table-row ::ng-deep qd-form-hint{display:none!important}.table-row ::ng-deep qd-input{margin-bottom:0!important}.table-cell{display:flex;height:37px;flex:1;align-items:center;text-align:left}.table-cell.actions{flex:0}.table-row:last-child{border-bottom:none}.table-cell:last-child{border-right:none}.editable-actions{display:flex;justify-content:flex-end;margin-right:.625rem;gap:.625rem}.menu-button{display:flex;padding:0 .625rem 0 .375rem;background:unset;color:#454545;font-size:2rem;vertical-align:middle}.menu-button:hover,.menu-button:focus{color:#000;outline:0!important}.secondary-actions{display:block;width:100%;min-height:2rem;padding:0 1rem;background:#fff0;font-size:.75rem;text-align:left}.secondary-actions:hover{background-color:#f2f7fa}.secondary-actions.disabled{color:#b4b4b4;cursor:not-allowed}.secondary-actions.disabled:hover{background-color:#fff0}.dropdown{min-width:160px}.empty-body{padding:1.5rem;background:#fff}.empty-body p{margin:0 0 .5rem}.additional-info{align-self:center;margin-left:.25rem;color:#069;cursor:pointer;font-size:1rem;font-weight:400;transform:translateY(.0625rem)}.additional-info:hover,.additional-info:focus,.additional-info:active{color:#14516f}\n"] }]
357
+ args: [{ selector: 'qd-quick-edit', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"editable-actions\" *ngIf=\"showStandaloneCreate\">\n <button\n qdButton\n qdButtonGhost\n icon=\"plus\"\n (click)=\"createRow()\"\n [data-test-id]=\"testId + '-button-add-new'\"\n class=\"create-button-standalone\"\n >\n {{ config.standaloneCreateLabel?.i18n ?? \"i18n.qd.quick.edit.createButtonLabel\" | translate }}\n </button>\n</div>\n\n<div class=\"table\" [formGroup]=\"control\">\n <div class=\"table-header\" *ngIf=\"!config.canAdd || templateData.length > 0 || config.emptyStateView\">\n <div class=\"table-row\">\n <div class=\"table-cell\" *ngFor=\"let header of visibleColumns\">\n {{ header?.i18n | translate }}\n <qd-icon\n *ngIf=\"hasTooltip(header?.tooltip)\"\n icon=\"circleInfo\"\n class=\"additional-info\"\n qdTooltipOnClick\n [qdTooltipContent]=\"header?.tooltip?.content\"\n ></qd-icon>\n </div>\n <div class=\"table-cell actions-column\" *ngIf=\"config?.secondaryActions?.length > 0\">\n <button class=\"menu-button\">\n <qd-icon icon=\"overflowMenuHorizontal\"></qd-icon>\n </button>\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <div\n class=\"table-row\"\n *qdCustomFor=\"let row of templateData; let rowIndex = index; toggler: togglerDrawing\"\n [formGroupName]=\"rowIndex\"\n >\n <ng-container *ngFor=\"let column of visibleColumns\">\n <div class=\"table-cell\">\n <qd-dropdown\n [config]=\"{\n filter: column.filter,\n options: column.options,\n placeholder: column.placeholder,\n placeholderPrefix: column.placeholderPrefix,\n viewonly: (viewonly$ | async) === true || !column.isEditable(row, column.name)\n }\"\n [data-test-id]=\"column.name + rowIndex\"\n *ngIf=\"column.type === 'enum'; else otherTypes\"\n [dense]=\"true\"\n [formControl]=\"$any(control.controls[rowIndex])?.controls[column.name]\"\n qdFocusable\n class=\"dropdown\"\n >\n </qd-dropdown>\n\n <ng-template #otherTypes>\n <qd-input\n [data-test-id]=\"column.name + rowIndex\"\n [formControlName]=\"column.name\"\n *ngIf=\"column.type !== 'enum' && $any(control.controls[rowIndex])?.controls[column.name]\"\n [config]=\"{\n inputType: column.type === 'integer' ? 'number' : 'text',\n viewonly: (viewonly$ | async) === true || !column.isEditable(row, column.name)\n }\"\n qdFocusable\n ></qd-input>\n </ng-template>\n </div>\n </ng-container>\n <td\n *ngIf=\"config.secondaryActions?.length > 0 || canAdd\"\n class=\"table-cell actions\"\n [attr.data-test-id]=\"testId + '-cell-inline-actions'\"\n >\n <button\n type=\"button\"\n [qdPopoverOnClick]=\"menu\"\n [qdPopoverCloseStrategy]=\"'onEveryClick'\"\n [qdPopoverStopPropagation]=\"true\"\n class=\"menu-button\"\n data-test=\"secondary-actions-toggler\"\n >\n <qd-icon icon=\"overflowMenuHorizontal\"></qd-icon>\n </button>\n\n <ng-template #menu>\n <button\n *ngFor=\"let secondaryAction of actions$ | async\"\n class=\"secondary-actions\"\n [ngClass]=\"{ disabled: secondaryAction.isDisabled }\"\n (click)=\"handleSecondaryAction(secondaryAction, rowIndex)\"\n >\n {{ secondaryAction.label.i18n | translate }}\n </button>\n <button\n *ngIf=\"canAdd && (viewonly$ | async) === false\"\n class=\"secondary-actions\"\n (click)=\"removeRow(rowIndex)\"\n >\n {{ \"i18n.qd.quick.edit.removeButtonLabel\" | translate }}\n </button>\n </ng-template>\n </td>\n </div>\n </div>\n <div class=\"empty-body\" *ngIf=\"config.emptyStateView && !config.emptyStateView.disabled && templateData.length === 0\">\n <p>{{ config.emptyStateView.i18n | translate }}</p>\n </div>\n</div>\n", styles: [".table{display:flex;width:100%;flex-direction:column;margin:1.25rem auto;background-color:#fff;font-size:.875rem}.table ::ng-deep .qd-input-input{margin-bottom:0!important}.table-header .table-row{padding-top:.125rem;padding-bottom:.125rem;background-color:#e5e5e5;font-weight:700}.table-header .table-row .actions-column{flex:0;border-right:none;visibility:hidden}.table-header,.table-body{display:flex;flex-direction:column}.table-row{display:flex;flex-direction:row;padding:.25rem 1rem;border-bottom:.0625rem solid rgb(213,213,213);gap:1rem}.table-row ::ng-deep qd-form-label{display:none!important}.table-row ::ng-deep qd-form-hint .qd-form-hint{display:none}.table-row ::ng-deep qd-input{margin-bottom:0!important}.table-cell{display:flex;height:37px;flex:1;align-items:center;text-align:left}.table-cell:has(.qd-input-error),.table-cell:has(.qd-dropdown-error){height:auto;align-items:flex-start}.table-cell.actions{flex:0}.table-row:last-child{border-bottom:none}.table-cell:last-child{border-right:none}.editable-actions{display:flex;justify-content:flex-end;margin-right:.625rem;gap:.625rem}.menu-button{display:flex;padding:0 .625rem 0 .375rem;background:unset;color:#454545;font-size:2rem;vertical-align:middle}.menu-button:hover,.menu-button:focus{color:#000;outline:0!important}.secondary-actions{display:block;width:100%;min-height:2rem;padding:0 1rem;background:#fff0;font-size:.75rem;text-align:left}.secondary-actions:hover{background-color:#f2f7fa}.secondary-actions.disabled{color:#b4b4b4;cursor:not-allowed}.secondary-actions.disabled:hover{background-color:#fff0}.dropdown{min-width:160px}.empty-body{padding:1.5rem;background:#fff}.empty-body p{margin:0 0 .5rem}.additional-info{align-self:center;margin-left:.25rem;color:#069;cursor:pointer;font-size:1rem;font-weight:400;transform:translateY(.0625rem)}.additional-info:hover,.additional-info:focus,.additional-info:active{color:#14516f}\n"] }]
358
358
  }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.QdPageFooterService, decorators: [{
359
359
  type: Optional
360
360
  }] }, { type: i3.QdPageStoreService, decorators: [{
@@ -28,4 +28,4 @@ const _tableReducer = createReducer(initialState, on(QdTableActions.initTableSta
28
28
  export function tableReducer(state, action) {
29
29
  return _tableReducer(state, action);
30
30
  }
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi90YWJsZS9zdG9yZS90YWJsZS5yZWR1Y2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR2hELE9BQU8sRUFDTCxPQUFPLEVBQ1Asb0JBQW9CLEVBQ3BCLE9BQU8sRUFDUCxhQUFhLEVBQ2IsV0FBVyxFQUNYLGVBQWUsRUFDZixPQUFPLEVBQ1AsZUFBZSxFQUNmLFNBQVMsRUFDVCxVQUFVLEVBQ1YsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixxQ0FBcUMsRUFDckMsNEJBQTRCLEVBQzdCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUcvQixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQTBCLEVBQUUsQ0FBQztBQUV0RCxTQUFTLFVBQVUsQ0FBQyxJQUFhO0lBQy9CLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFFRCxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQ2pDLFlBQVksRUFFWixFQUFFLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFO0lBQ3JHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRW5DLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElB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QUFDLGVBQWUsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLENBQ3RFLGVBQWUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUM5QyxFQUVELEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLENBQ2xHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxjQUFjLENBQUMsQ0FDMUUsRUFFRCxFQUFFLENBQUMsY0FBYyxDQUFDLG9CQUFvQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUVyRyxFQUFFLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FDekYsQ0FBQztBQUVGLE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBVSxFQUFFLE1BQVc7SUFDbEQsT0FBTyxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZWR1Y2VyLCBvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuaW1wb3J0IHsgUWRUYWJsZVN0b3JlRGF0YSB9IGZyb20gJy4uL21vZGVsL3RhYmxlLXN0b3JlLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBjb25uZWN0LFxuICByZXNldENvbm5lY3RvclN0YXRlcyxcbiAgc2V0UGFnZSxcbiAgc2V0UGFnZVBhcmFtcyxcbiAgc2V0UGFnZVNpemUsXG4gIHNldFJlcXVlc3RTdGF0ZSxcbiAgc2V0U29ydCxcbiAgc2V0dXBQYWdpbmF0aW9uLFxuICBzZXR1cFNvcnQsXG4gIHVwZGF0ZVNvcnQsXG4gIHVwZGF0ZVN0YXRlV2l0aE5ld1RhYmxlLFxuICB1cGRhdGVUYWJsZVN0YXRlRGF0YSxcbiAgdXBkYXRlVGFibGVTdGF0ZVJlY2VudFNlY29uZGFyeUFjdGlvbixcbiAgdXBkYXRlVGFibGVTdGF0ZVNlbGVjdGVkUm93c1xufSBmcm9tICcuL3RhYmxlLXVwZGF0ZS5oZWxwZXInO1xuaW1wb3J0IHsgUWRUYWJsZUFjdGlvbnMgfSBmcm9tICcuL3RhYmxlLmFjdGlvbnMnO1xuaW1wb3J0IG9taXQgZnJvbSAnbG9kYXNoL29taXQnO1xuaW1wb3J0IHsgUWRUcmVlRGF0YSB9IGZyb20gJ0BxZC11aS9xZC11aSc7XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsU3RhdGU6IFFkVGFibGVTdG9yZURhdGE8YW55PiA9IHt9O1xuXG5mdW5jdGlvbiBpc1RyZWVEYXRhKGRhdGE6IHVua25vd24pOiBkYXRhIGlzIFFkVHJlZURhdGE8c3RyaW5nPiB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGRhdGEpICYmIGRhdGEuc29tZShpdGVtID0+ICdjaGlsZHJlbicgaW4gaXRlbSk7XG59XG5cbmNvbnN0IF90YWJsZVJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFxuICBpbml0aWFsU3RhdGUsXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMuaW5pdFRhYmxlU3RhdGUsIChzdGF0ZSwgeyB0YWJsZUlkLCBkYXRhLCBoYXNSZXNvbHZlciwgY29ubmVjdG9ycywgaGFzUGFnaW5hdGlvbiB9KSA9PiB7XG4gICAgaWYgKGlzVHJlZURhdGEoZGF0YSkpIHJldHVybiBzdGF0ZTtcblxuICAgIGlmICgoc3RhdGVbdGFibGVJZF0gJiYgSlNPTi5zdHJpbmdpZnkoc3RhdGVbdGFibGVJZF0uZGF0YSkgPT09IEpTT04uc3RyaW5naWZ5KGRhdGEpKSB8fCBzdGF0ZVt0YWJsZUlkXT8uaGFzUmVzb2x2ZXIpXG4gICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICByZXR1cm4gdXBkYXRlU3RhdGVXaXRoTmV3VGFibGUoc3RhdGUsIHRhYmxlSWQsIHtcbiAgICAgIGRhdGEsXG4gICAgICBoYXNSZXNvbHZlcixcbiAgICAgIGNvbm5lY3RvcnMsXG4gICAgICBoYXNQYWdpbmF0aW9uXG4gICAgfSk7XG4gIH0pLFxuXG4gIG9uKFFkVGFibGVBY3Rpb25zLmluaXRUYWJsZVN0YXRlU2VsZWN0ZWRSb3dzLCAoc3RhdGUsIHsgdGFibGVJZCwgc2VsZWN0ZWRSb3dzIH0pID0+IHtcbiAgICBpZiAoc3RhdGVbdGFibGVJZF0uc2VsZWN0ZWRSb3dzKSByZXR1cm4gc3RhdGU7XG5cbiAgICByZXR1cm4gdXBkYXRlVGFibGVTdGF0ZVNlbGVjdGVkUm93cyhzdGF0ZSwgdGFibGVJZCwgc2VsZWN0ZWRSb3dzKTtcbiAgfSksXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMudXBkYXRlVGFibGVTdGF0ZURhdGEsIChzdGF0ZSwgeyB0YWJsZUlkLCBkYXRhIH0pID0+IHVwZGF0ZVRhYmxlU3RhdGVEYXRhKHN0YXRlLCB0YWJsZUlkLCBkYXRhKSksXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMudXBkYXRlVGFibGVTdGF0ZVJvd1RvU2VsZWN0ZWQsIChzdGF0ZSwgeyB0YWJsZUlkLCByb3dJbmRleCB9KSA9PlxuICAgIHVwZGF0ZVRhYmxlU3RhdGVTZWxlY3RlZFJvd3Moc3RhdGUsIHRhYmxlSWQsIFtcbiAgICAgIC4uLihzdGF0ZVt0YWJsZUlkXS5zZWxlY3RlZFJvd3MgPz8gW10pLFxuICAgICAgc3RhdGVbdGFibGVJZF0uZGF0YVtyb3dJbmRleF0udWlkIHx8IHJvd0luZGV4XG4gICAgXSlcbiAgKSxcblxuICBvbihRZFRhYmxlQWN0aW9ucy51cGRhdGVUYWJsZVN0YXRlU2luZ2xlUm93VG9TZWxlY3RlZCwgKHN0YXRlLCB7IHRhYmxlSWQsIHJvd0luZGV4IH0pID0+XG4gICAgdXBkYXRlVGFibGVTdGF0ZVNlbGVjdGVkUm93cyhzdGF0ZSwgdGFibGVJZCwgW3N0YXRlW3RhYmxlSWRdLmRhdGFbcm93SW5kZXhdLnVpZCB8fCByb3dJbmRleF0pXG4gICksXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMudXBkYXRlVGFibGVTdGF0ZVJvd1RvVW5zZWxlY3RlZCwgKHN0YXRlLCB7IHRhYmxlSWQsIHJvd0luZGV4IH0pID0+XG4gICAgdXBkYXRlVGFibGVTdGF0ZVNlbGVjdGVkUm93cyhcbiAgICAgIHN0YXRlLFxuICAgICAgdGFibGVJZCxcbiAgICAgIChzdGF0ZVt0YWJsZUlkXS5zZWxlY3RlZFJvd3MgPz8gW10pLmZpbHRlcihcbiAgICAgICAgcm93SWRlbnRpZmllciA9PiByb3dJZGVudGlmaWVyICE9PSByb3dJbmRleCAmJiByb3dJZGVudGlmaWVyICE9PSBzdGF0ZVt0YWJsZUlkXS5kYXRhW3Jvd0luZGV4XS51aWRcbiAgICAgIClcbiAgICApXG4gICksXG5cbiAgb24oXG4gICAgUWRUYWJsZUFjdGlvbnMudXBkYXRlVGFibGVTdGF0ZVJlY2VudFNlY29uZGFyeUFjdGlvbixcbiAgICAoc3RhdGUsIHsgdGFibGVJZCwgcmVjZW50U2Vjb25kYXJ5QWN0aW9uOiByZWNlbnRTZWNvbmRhcnlBY3Rpb24gfSkgPT5cbiAgICAgIHVwZGF0ZVRhYmxlU3RhdGVSZWNlbnRTZWNvbmRhcnlBY3Rpb24oc3RhdGUsIHRhYmxlSWQsIHJlY2VudFNlY29uZGFyeUFjdGlvbilcbiAgKSxcblxuICBvbihRZFRhYmxlQWN0aW9ucy5zZXR1cFBhZ2luYXRpb24sIChzdGF0ZSwgeyB0YWJsZUlkLCBwYWdlU2l6ZSB9KSA9PiBzZXR1cFBhZ2luYXRpb24oc3RhdGUsIHRhYmxlSWQsIHBhZ2VTaXplKSksXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMuc2V0UGFnZSwgKHN0YXRlLCB7IHRhYmxlSWQsIHBhZ2VJbmRleCwgcGFnZVNpemUsIHRvdGFsQ291bnQsIGRhdGEgfSkgPT5cbiAgICBzZXRQYWdlKHN0YXRlLCB0YWJsZUlkLCBwYWdlSW5kZXgsIHBhZ2VTaXplLCB0b3RhbENvdW50LCBkYXRhKVxuICApLFxuXG4gIG9uKFFkVGFibGVBY3Rpb25zLnNldFBhZ2VTaXplLCAoc3RhdGUsIHsgdGFibGVJZCwgcGFnZVNpemUgfSkgPT4gc2V0UGFnZVNpemUoc3RhdGUsIHRhYmxlSWQsIHBhZ2VTaXplKSksXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMuc2V0UGFnZVBhcmFtcywgKHN0YXRlLCB7IHRhYmxlSWQsIHBhZ2VJbmRleCwgcGFnZVNpemUsIHRvdGFsQ291bnQgfSkgPT5cbiAgICBzZXRQYWdlUGFyYW1zKHN0YXRlLCB0YWJsZUlkLCBwYWdlSW5kZXgsIHBhZ2VTaXplLCB0b3RhbENvdW50KVxuICApLFxuXG4gIG9uKFFkVGFibGVBY3Rpb25zLnNldHVwU29ydCwgKHN0YXRlLCB7IHRhYmxlSWQsIGNvbHVtbnMgfSkgPT4gc2V0dXBTb3J0KHN0YXRlLCB0YWJsZUlkLCBjb2x1bW5zKSksXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMuc2V0U29ydCwgKHN0YXRlLCB7IHRhYmxlSWQsIGNvbHVtbiwgZGlyZWN0aW9uIH0pID0+IHNldFNvcnQoc3RhdGUsIHRhYmxlSWQsIGNvbHVtbiwgZGlyZWN0aW9uKSksXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMudXBkYXRlU29ydCwgKHN0YXRlLCB7IHRhYmxlSWQsIGNvbHVtbiwgZGlyZWN0aW9uIH0pID0+XG4gICAgdXBkYXRlU29ydChzdGF0ZSwgdGFibGVJZCwgY29sdW1uLCBkaXJlY3Rpb24pXG4gICksXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMuc2V0UmVxdWVzdFN0YXRlLCAoc3RhdGUsIHsgdGFibGVJZCwgcmVxdWVzdFN0YXRlIH0pID0+XG4gICAgc2V0UmVxdWVzdFN0YXRlKHN0YXRlLCB0YWJsZUlkLCByZXF1ZXN0U3RhdGUpXG4gICksXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMuY29ubmVjdCwgKHN0YXRlLCB7IHRhYmxlSWQsIGNvbm5lY3Rvck5hbWUsIGNvbm5lY3RvckNyaXRlcmlhLCBjb25uZWN0b3JTdGF0ZSB9KSA9PlxuICAgIGNvbm5lY3Qoc3RhdGUsIHRhYmxlSWQsIGNvbm5lY3RvckNyaXRlcmlhLCBjb25uZWN0b3JOYW1lLCBjb25uZWN0b3JTdGF0ZSlcbiAgKSxcblxuICBvbihRZFRhYmxlQWN0aW9ucy5yZXNldENvbm5lY3RvclN0YXRlcywgKHN0YXRlLCB7IHRhYmxlSWQgfSkgPT4gcmVzZXRDb25uZWN0b3JTdGF0ZXMoc3RhdGUsIHRhYmxlSWQpKSxcblxuICBvbihRZFRhYmxlQWN0aW9ucy5kZWxldGVUYWJsZVN0YXRlLCAoc3RhdGUsIHsgdGFibGVJZCB9KSA9PiBvbWl0KHsgLi4uc3RhdGUgfSwgdGFibGVJZCkpXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGVSZWR1Y2VyKHN0YXRlOiBhbnksIGFjdGlvbjogYW55KTogUWRUYWJsZVN0b3JlRGF0YTxhbnk+IHtcbiAgcmV0dXJuIF90YWJsZVJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XG59XG4iXX0=
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi90YWJsZS9zdG9yZS90YWJsZS5yZWR1Y2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR2hELE9BQU8sRUFDTCxPQUFPLEVBQ1Asb0JBQW9CLEVBQ3BCLE9BQU8sRUFDUCxhQUFhLEVBQ2IsV0FBVyxFQUNYLGVBQWUsRUFDZixPQUFPLEVBQ1AsZUFBZSxFQUNmLFNBQVMsRUFDVCxVQUFVLEVBQ1YsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixxQ0FBcUMsRUFDckMsNEJBQTRCLEVBQzdCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUcvQixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQTBCLEVBQUUsQ0FBQztBQUV0RCxTQUFTLFVBQVUsQ0FBQyxJQUFhO0lBQy9CLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFFRCxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQ2pDLFlBQVksRUFFWixFQUFFLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFO0lBQ3JHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRW5DLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElB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QUFDLGVBQWUsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLENBQ3RFLGVBQWUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUM5QyxFQUVELEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLENBQ2xHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxjQUFjLENBQUMsQ0FDMUUsRUFFRCxFQUFFLENBQUMsY0FBYyxDQUFDLG9CQUFvQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUVyRyxFQUFFLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FDekYsQ0FBQztBQUVGLE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBVSxFQUFFLE1BQVc7SUFDbEQsT0FBTyxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZWR1Y2VyLCBvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuaW1wb3J0IHsgUWRUYWJsZVN0b3JlRGF0YSB9IGZyb20gJy4uL21vZGVsL3RhYmxlLXN0b3JlLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBjb25uZWN0LFxuICByZXNldENvbm5lY3RvclN0YXRlcyxcbiAgc2V0UGFnZSxcbiAgc2V0UGFnZVBhcmFtcyxcbiAgc2V0UGFnZVNpemUsXG4gIHNldFJlcXVlc3RTdGF0ZSxcbiAgc2V0U29ydCxcbiAgc2V0dXBQYWdpbmF0aW9uLFxuICBzZXR1cFNvcnQsXG4gIHVwZGF0ZVNvcnQsXG4gIHVwZGF0ZVN0YXRlV2l0aE5ld1RhYmxlLFxuICB1cGRhdGVUYWJsZVN0YXRlRGF0YSxcbiAgdXBkYXRlVGFibGVTdGF0ZVJlY2VudFNlY29uZGFyeUFjdGlvbixcbiAgdXBkYXRlVGFibGVTdGF0ZVNlbGVjdGVkUm93c1xufSBmcm9tICcuL3RhYmxlLXVwZGF0ZS5oZWxwZXInO1xuaW1wb3J0IHsgUWRUYWJsZUFjdGlvbnMgfSBmcm9tICcuL3RhYmxlLmFjdGlvbnMnO1xuaW1wb3J0IG9taXQgZnJvbSAnbG9kYXNoL29taXQnO1xuaW1wb3J0IHsgUWRUcmVlRGF0YSB9IGZyb20gJy4uLy4uL3RyZWUvbW9kZWwvdHJlZS1kYXRhLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsU3RhdGU6IFFkVGFibGVTdG9yZURhdGE8YW55PiA9IHt9O1xuXG5mdW5jdGlvbiBpc1RyZWVEYXRhKGRhdGE6IHVua25vd24pOiBkYXRhIGlzIFFkVHJlZURhdGE8c3RyaW5nPiB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGRhdGEpICYmIGRhdGEuc29tZShpdGVtID0+ICdjaGlsZHJlbicgaW4gaXRlbSk7XG59XG5cbmNvbnN0IF90YWJsZVJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFxuICBpbml0aWFsU3RhdGUsXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMuaW5pdFRhYmxlU3RhdGUsIChzdGF0ZSwgeyB0YWJsZUlkLCBkYXRhLCBoYXNSZXNvbHZlciwgY29ubmVjdG9ycywgaGFzUGFnaW5hdGlvbiB9KSA9PiB7XG4gICAgaWYgKGlzVHJlZURhdGEoZGF0YSkpIHJldHVybiBzdGF0ZTtcblxuICAgIGlmICgoc3RhdGVbdGFibGVJZF0gJiYgSlNPTi5zdHJpbmdpZnkoc3RhdGVbdGFibGVJZF0uZGF0YSkgPT09IEpTT04uc3RyaW5naWZ5KGRhdGEpKSB8fCBzdGF0ZVt0YWJsZUlkXT8uaGFzUmVzb2x2ZXIpXG4gICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICByZXR1cm4gdXBkYXRlU3RhdGVXaXRoTmV3VGFibGUoc3RhdGUsIHRhYmxlSWQsIHtcbiAgICAgIGRhdGEsXG4gICAgICBoYXNSZXNvbHZlcixcbiAgICAgIGNvbm5lY3RvcnMsXG4gICAgICBoYXNQYWdpbmF0aW9uXG4gICAgfSk7XG4gIH0pLFxuXG4gIG9uKFFkVGFibGVBY3Rpb25zLmluaXRUYWJsZVN0YXRlU2VsZWN0ZWRSb3dzLCAoc3RhdGUsIHsgdGFibGVJZCwgc2VsZWN0ZWRSb3dzIH0pID0+IHtcbiAgICBpZiAoc3RhdGVbdGFibGVJZF0uc2VsZWN0ZWRSb3dzKSByZXR1cm4gc3RhdGU7XG5cbiAgICByZXR1cm4gdXBkYXRlVGFibGVTdGF0ZVNlbGVjdGVkUm93cyhzdGF0ZSwgdGFibGVJZCwgc2VsZWN0ZWRSb3dzKTtcbiAgfSksXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMudXBkYXRlVGFibGVTdGF0ZURhdGEsIChzdGF0ZSwgeyB0YWJsZUlkLCBkYXRhIH0pID0+IHVwZGF0ZVRhYmxlU3RhdGVEYXRhKHN0YXRlLCB0YWJsZUlkLCBkYXRhKSksXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMudXBkYXRlVGFibGVTdGF0ZVJvd1RvU2VsZWN0ZWQsIChzdGF0ZSwgeyB0YWJsZUlkLCByb3dJbmRleCB9KSA9PlxuICAgIHVwZGF0ZVRhYmxlU3RhdGVTZWxlY3RlZFJvd3Moc3RhdGUsIHRhYmxlSWQsIFtcbiAgICAgIC4uLihzdGF0ZVt0YWJsZUlkXS5zZWxlY3RlZFJvd3MgPz8gW10pLFxuICAgICAgc3RhdGVbdGFibGVJZF0uZGF0YVtyb3dJbmRleF0udWlkIHx8IHJvd0luZGV4XG4gICAgXSlcbiAgKSxcblxuICBvbihRZFRhYmxlQWN0aW9ucy51cGRhdGVUYWJsZVN0YXRlU2luZ2xlUm93VG9TZWxlY3RlZCwgKHN0YXRlLCB7IHRhYmxlSWQsIHJvd0luZGV4IH0pID0+XG4gICAgdXBkYXRlVGFibGVTdGF0ZVNlbGVjdGVkUm93cyhzdGF0ZSwgdGFibGVJZCwgW3N0YXRlW3RhYmxlSWRdLmRhdGFbcm93SW5kZXhdLnVpZCB8fCByb3dJbmRleF0pXG4gICksXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMudXBkYXRlVGFibGVTdGF0ZVJvd1RvVW5zZWxlY3RlZCwgKHN0YXRlLCB7IHRhYmxlSWQsIHJvd0luZGV4IH0pID0+XG4gICAgdXBkYXRlVGFibGVTdGF0ZVNlbGVjdGVkUm93cyhcbiAgICAgIHN0YXRlLFxuICAgICAgdGFibGVJZCxcbiAgICAgIChzdGF0ZVt0YWJsZUlkXS5zZWxlY3RlZFJvd3MgPz8gW10pLmZpbHRlcihcbiAgICAgICAgcm93SWRlbnRpZmllciA9PiByb3dJZGVudGlmaWVyICE9PSByb3dJbmRleCAmJiByb3dJZGVudGlmaWVyICE9PSBzdGF0ZVt0YWJsZUlkXS5kYXRhW3Jvd0luZGV4XS51aWRcbiAgICAgIClcbiAgICApXG4gICksXG5cbiAgb24oXG4gICAgUWRUYWJsZUFjdGlvbnMudXBkYXRlVGFibGVTdGF0ZVJlY2VudFNlY29uZGFyeUFjdGlvbixcbiAgICAoc3RhdGUsIHsgdGFibGVJZCwgcmVjZW50U2Vjb25kYXJ5QWN0aW9uOiByZWNlbnRTZWNvbmRhcnlBY3Rpb24gfSkgPT5cbiAgICAgIHVwZGF0ZVRhYmxlU3RhdGVSZWNlbnRTZWNvbmRhcnlBY3Rpb24oc3RhdGUsIHRhYmxlSWQsIHJlY2VudFNlY29uZGFyeUFjdGlvbilcbiAgKSxcblxuICBvbihRZFRhYmxlQWN0aW9ucy5zZXR1cFBhZ2luYXRpb24sIChzdGF0ZSwgeyB0YWJsZUlkLCBwYWdlU2l6ZSB9KSA9PiBzZXR1cFBhZ2luYXRpb24oc3RhdGUsIHRhYmxlSWQsIHBhZ2VTaXplKSksXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMuc2V0UGFnZSwgKHN0YXRlLCB7IHRhYmxlSWQsIHBhZ2VJbmRleCwgcGFnZVNpemUsIHRvdGFsQ291bnQsIGRhdGEgfSkgPT5cbiAgICBzZXRQYWdlKHN0YXRlLCB0YWJsZUlkLCBwYWdlSW5kZXgsIHBhZ2VTaXplLCB0b3RhbENvdW50LCBkYXRhKVxuICApLFxuXG4gIG9uKFFkVGFibGVBY3Rpb25zLnNldFBhZ2VTaXplLCAoc3RhdGUsIHsgdGFibGVJZCwgcGFnZVNpemUgfSkgPT4gc2V0UGFnZVNpemUoc3RhdGUsIHRhYmxlSWQsIHBhZ2VTaXplKSksXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMuc2V0UGFnZVBhcmFtcywgKHN0YXRlLCB7IHRhYmxlSWQsIHBhZ2VJbmRleCwgcGFnZVNpemUsIHRvdGFsQ291bnQgfSkgPT5cbiAgICBzZXRQYWdlUGFyYW1zKHN0YXRlLCB0YWJsZUlkLCBwYWdlSW5kZXgsIHBhZ2VTaXplLCB0b3RhbENvdW50KVxuICApLFxuXG4gIG9uKFFkVGFibGVBY3Rpb25zLnNldHVwU29ydCwgKHN0YXRlLCB7IHRhYmxlSWQsIGNvbHVtbnMgfSkgPT4gc2V0dXBTb3J0KHN0YXRlLCB0YWJsZUlkLCBjb2x1bW5zKSksXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMuc2V0U29ydCwgKHN0YXRlLCB7IHRhYmxlSWQsIGNvbHVtbiwgZGlyZWN0aW9uIH0pID0+IHNldFNvcnQoc3RhdGUsIHRhYmxlSWQsIGNvbHVtbiwgZGlyZWN0aW9uKSksXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMudXBkYXRlU29ydCwgKHN0YXRlLCB7IHRhYmxlSWQsIGNvbHVtbiwgZGlyZWN0aW9uIH0pID0+XG4gICAgdXBkYXRlU29ydChzdGF0ZSwgdGFibGVJZCwgY29sdW1uLCBkaXJlY3Rpb24pXG4gICksXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMuc2V0UmVxdWVzdFN0YXRlLCAoc3RhdGUsIHsgdGFibGVJZCwgcmVxdWVzdFN0YXRlIH0pID0+XG4gICAgc2V0UmVxdWVzdFN0YXRlKHN0YXRlLCB0YWJsZUlkLCByZXF1ZXN0U3RhdGUpXG4gICksXG5cbiAgb24oUWRUYWJsZUFjdGlvbnMuY29ubmVjdCwgKHN0YXRlLCB7IHRhYmxlSWQsIGNvbm5lY3Rvck5hbWUsIGNvbm5lY3RvckNyaXRlcmlhLCBjb25uZWN0b3JTdGF0ZSB9KSA9PlxuICAgIGNvbm5lY3Qoc3RhdGUsIHRhYmxlSWQsIGNvbm5lY3RvckNyaXRlcmlhLCBjb25uZWN0b3JOYW1lLCBjb25uZWN0b3JTdGF0ZSlcbiAgKSxcblxuICBvbihRZFRhYmxlQWN0aW9ucy5yZXNldENvbm5lY3RvclN0YXRlcywgKHN0YXRlLCB7IHRhYmxlSWQgfSkgPT4gcmVzZXRDb25uZWN0b3JTdGF0ZXMoc3RhdGUsIHRhYmxlSWQpKSxcblxuICBvbihRZFRhYmxlQWN0aW9ucy5kZWxldGVUYWJsZVN0YXRlLCAoc3RhdGUsIHsgdGFibGVJZCB9KSA9PiBvbWl0KHsgLi4uc3RhdGUgfSwgdGFibGVJZCkpXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGVSZWR1Y2VyKHN0YXRlOiBhbnksIGFjdGlvbjogYW55KTogUWRUYWJsZVN0b3JlRGF0YTxhbnk+IHtcbiAgcmV0dXJuIF90YWJsZVJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XG59XG4iXX0=