@alauda-fe/common 1.1.1 → 1.2.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 (98) hide show
  1. package/a-chart/base-chart.d.ts +4 -3
  2. package/a-chart/types.d.ts +5 -0
  3. package/a-chart/utils.d.ts +1 -1
  4. package/a-metric-chart/a-metric-chart.component.d.ts +5 -1
  5. package/a-metric-chart/stat-chart/stat-chart.component.d.ts +5 -1
  6. package/a-metric-chart/types.d.ts +15 -0
  7. package/a-metric-chart/utils/util.d.ts +6 -1
  8. package/array-form-table/string-array-form/component.d.ts +2 -1
  9. package/core/constants/tokens.d.ts +1 -1
  10. package/core/pipes/cron-human-readable.pipe.d.ts +1 -6
  11. package/core/pipes/k8s-util.pipe.d.ts +1 -9
  12. package/core/pipes/k8s-util.pipe.module.d.ts +3 -3
  13. package/core/pipes/parse-json-translate.pipe.d.ts +4 -4
  14. package/core/services/aui-paginator-intl.service.d.ts +1 -1
  15. package/core/services/k8s-util.service.d.ts +3 -1
  16. package/core/types/k8s/crd.d.ts +1 -4
  17. package/esm2022/a-chart/base-chart.mjs +47 -33
  18. package/esm2022/a-chart/chart.component.mjs +9 -5
  19. package/esm2022/a-chart/types.mjs +1 -1
  20. package/esm2022/a-chart/utils.mjs +3 -3
  21. package/esm2022/a-metric-chart/a-metric-chart.component.mjs +53 -19
  22. package/esm2022/a-metric-chart/a-metric-chart.module.mjs +1 -1
  23. package/esm2022/a-metric-chart/stat-chart/stat-chart.component.mjs +63 -25
  24. package/esm2022/a-metric-chart/table-chart/table-chart.component.mjs +2 -2
  25. package/esm2022/a-metric-chart/types.mjs +9 -1
  26. package/esm2022/a-metric-chart/utils/util.mjs +20 -2
  27. package/esm2022/array-form-table/string-array-form/component.mjs +32 -22
  28. package/esm2022/business/resource-select/internals/data-grid/component.mjs +2 -2
  29. package/esm2022/business/resource-select/internals/namespace-list/component.mjs +5 -5
  30. package/esm2022/core/constants/tokens.mjs +15 -16
  31. package/esm2022/core/pipes/cron-human-readable.pipe.mjs +3 -6
  32. package/esm2022/core/pipes/k8s-util.pipe.mjs +2 -24
  33. package/esm2022/core/pipes/k8s-util.pipe.module.mjs +2 -5
  34. package/esm2022/core/pipes/parse-json-translate.pipe.mjs +1 -1
  35. package/esm2022/core/services/k8s-util.service.mjs +4 -5
  36. package/esm2022/core/services/time.service.mjs +3 -5
  37. package/esm2022/core/types/k8s/crd.mjs +1 -1
  38. package/esm2022/core/utils/common.mjs +7 -1
  39. package/esm2022/metric-chart/types.mjs +1 -1
  40. package/esm2022/notification/notification-util.service.mjs +2 -3
  41. package/esm2022/page-scaffold/navigation/nav-menu/nav-menu.component.mjs +2 -2
  42. package/esm2022/page-scaffold/page-header/account-menu/component/component.mjs +78 -81
  43. package/esm2022/page-scaffold/page-header/account-menu/module.mjs +1 -1
  44. package/esm2022/page-scaffold/page-header/common-layout/namespace-select/component.mjs +2 -2
  45. package/esm2022/table/component.mjs +12 -5
  46. package/esm2022/translate/constants.mjs +2 -6
  47. package/esm2022/translate/helpers.mjs +4 -18
  48. package/esm2022/translate/i18n-assets-loader.mjs +58 -0
  49. package/esm2022/translate/i18n-config.mjs +25 -0
  50. package/esm2022/translate/public-api.mjs +3 -1
  51. package/esm2022/translate/tokens.mjs +3 -8
  52. package/esm2022/translate/translate.module.mjs +1 -52
  53. package/esm2022/translate/translate.pipe.mjs +4 -6
  54. package/esm2022/translate/translate.service.mjs +44 -76
  55. package/esm2022/translate/types.mjs +1 -1
  56. package/esm2022/view-zchart/units.mjs +3 -3
  57. package/esm2022/widget/date-range-picker/component.mjs +14 -23
  58. package/esm2022/widget/foldable-item-in-table/component.mjs +3 -3
  59. package/esm2022/widget/password-input/component.mjs +5 -3
  60. package/esm2022/widget/search-panel/component.mjs +2 -2
  61. package/esm2022/widget/tags-label/component.mjs +8 -6
  62. package/esm2022/xterm/xterm.component.mjs +2 -2
  63. package/metric-chart/types.d.ts +1 -1
  64. package/package.json +2 -1
  65. package/page-scaffold/page-header/account-menu/component/component.d.ts +6 -2
  66. package/page-scaffold/page-header/component.d.ts +1 -1
  67. package/styles/global.scss +3 -3
  68. package/styles/mixins.scss +13 -3
  69. package/styles/tailwind-preset.scss +1 -1
  70. package/table/component.d.ts +3 -1
  71. package/translate/constants.d.ts +1 -7
  72. package/translate/helpers.d.ts +1 -10
  73. package/translate/i18n-assets-loader.d.ts +19 -0
  74. package/translate/i18n-config.d.ts +12 -0
  75. package/translate/public-api.d.ts +2 -0
  76. package/translate/tokens.d.ts +3 -7
  77. package/translate/translate.module.d.ts +0 -1214
  78. package/translate/translate.pipe.d.ts +4 -4
  79. package/translate/translate.service.d.ts +15 -21
  80. package/translate/types.d.ts +8 -8
  81. package/widget/date-range-picker/component.d.ts +3 -7
  82. package/widget/foldable-item-in-table/component.d.ts +1 -2
  83. package/widget/tags-label/component.d.ts +6 -1
  84. package/assets/icons/bicolor-icons.js +0 -1
  85. package/assets/icons/navigation-icons.js +0 -1
  86. package/assets/icons/prod-icons.js +0 -1
  87. package/esm2022/graphql/graphql.module.mjs +0 -62
  88. package/esm2022/graphql/graphql.service.mjs +0 -45
  89. package/esm2022/graphql/public-api.mjs +0 -4
  90. package/esm2022/graphql/queries.mjs +0 -29
  91. package/esm2022/graphql/types.mjs +0 -6
  92. package/esm2022/translate/en.json +0 -602
  93. package/esm2022/translate/zh.json +0 -600
  94. package/graphql/graphql.module.d.ts +0 -12
  95. package/graphql/graphql.service.d.ts +0 -14
  96. package/graphql/public-api.d.ts +0 -3
  97. package/graphql/queries.d.ts +0 -5
  98. package/graphql/types.d.ts +0 -46
@@ -4,10 +4,10 @@ import { ChangeDetectionStrategy, Component, Injector, Input, Optional, } from '
4
4
  import { ControlContainer, ReactiveFormsModule, } from '@angular/forms';
5
5
  import { BaseResourceFormComponent } from 'ng-resource-form-util';
6
6
  import { DUPLICATE_ERROR_KEY, DUPLICATION_JUSTIFY_STRATEGY, ValidateRowDuplicateService, } from '../../core/public-api';
7
- import { DisabledContainerModule } from '../../disabled-container/public-api';
7
+ import { DisabledContainerComponent } from '../../disabled-container/public-api';
8
8
  import { EffectDirectiveModule } from '../../effect-directive/public-api';
9
- import { ErrorsMapperModule } from '../../form/public-api';
10
- import { TranslateModule, TranslateService } from '../../translate/public-api';
9
+ import { ERRORS_MAPPER_MODULE } from '../../form/public-api';
10
+ import { TRANSLATE_MODULE, TranslateService } from '../../translate/public-api';
11
11
  import { ArrayFormTableModule } from '../form/module';
12
12
  import * as i0 from "@angular/core";
13
13
  import * as i1 from "@angular/forms";
@@ -15,10 +15,9 @@ import * as i2 from "../../core/public-api";
15
15
  import * as i3 from "../../translate/public-api";
16
16
  import * as i4 from "../form/component";
17
17
  import * as i5 from "@alauda/ui";
18
- import * as i6 from "../../form/errors-mapper/errors-mapper-component/component";
19
- import * as i7 from "../../disabled-container/disabled-container.component";
18
+ import * as i6 from "../../effect-directive/e2e-attribute-binding.directive";
19
+ import * as i7 from "../../form/errors-mapper/errors-mapper-component/component";
20
20
  import * as i8 from "../../translate/translate.pipe";
21
- import * as i9 from "../../effect-directive/e2e-attribute-binding.directive";
22
21
  function StringArrayFormTableComponent_ng_container_1_input_2_Template(rf, ctx) { if (rf & 1) {
23
22
  const _r9 = i0.ɵɵgetCurrentView();
24
23
  i0.ɵɵelementStart(0, "input", 7);
@@ -145,7 +144,7 @@ export class StringArrayFormTableComponent extends BaseResourceFormComponent {
145
144
  get length() {
146
145
  return this.form.length;
147
146
  }
148
- ngOnChanges({ validators }) {
147
+ ngOnChanges({ validators, enableDuplicateCheck }) {
149
148
  if (validators?.currentValue && this.form) {
150
149
  this.form.controls.forEach(formControl => {
151
150
  formControl.setValidators(validators.currentValue);
@@ -153,6 +152,16 @@ export class StringArrayFormTableComponent extends BaseResourceFormComponent {
153
152
  formControl.updateValueAndValidity();
154
153
  });
155
154
  }
155
+ if (enableDuplicateCheck?.currentValue !==
156
+ enableDuplicateCheck?.previousValue &&
157
+ this.form) {
158
+ this.form.controls.forEach(formControl => {
159
+ formControl[enableDuplicateCheck?.currentValue
160
+ ? 'addValidators'
161
+ : 'removeValidators'](this.duplicateValidator);
162
+ formControl.updateValueAndValidity();
163
+ });
164
+ }
156
165
  }
157
166
  createForm() {
158
167
  return this.fb.array([]);
@@ -182,16 +191,16 @@ export class StringArrayFormTableComponent extends BaseResourceFormComponent {
182
191
  this.cdr.markForCheck();
183
192
  }
184
193
  getOnFormArrayResizeFn() {
185
- return () => this.fb.control('', [
186
- ...(this.validators ?? []),
187
- this.enableDuplicateCheck &&
188
- this.rowDup.createFormArrayValidator({
189
- rowKeys: ['0'],
190
- valueMapFn: (value) => value,
191
- formArray: this.form,
192
- strategy: DUPLICATION_JUSTIFY_STRATEGY.FULL,
193
- }),
194
- ].filter(Boolean));
194
+ this.duplicateValidator =
195
+ this.duplicateValidator ||
196
+ (this.enableDuplicateCheck &&
197
+ this.rowDup.createFormArrayValidator({
198
+ rowKeys: ['0'],
199
+ valueMapFn: (value) => value,
200
+ formArray: this.form,
201
+ strategy: DUPLICATION_JUSTIFY_STRATEGY.FULL,
202
+ }));
203
+ return () => this.fb.control('', [...(this.validators ?? []), this.duplicateValidator].filter(Boolean));
195
204
  }
196
205
  isItemReadonly(index) {
197
206
  const control = this.form.controls[index];
@@ -220,7 +229,8 @@ export class StringArrayFormTableComponent extends BaseResourceFormComponent {
220
229
  } if (rf & 2) {
221
230
  i0.ɵɵproperty("resourceName", ctx.resourceName)("resourceNameTranslated", ctx.resourceNameTranslated)("rows", ctx.form.controls);
222
231
  } }, dependencies: [ArrayFormTableModule, i4.ArrayFormTableComponent, i4.ArrayFormTableFooterDirective, i4.ArrayFormTableRowControlDirective, i4.ArrayFormTableRowDirective, i4.ArrayFormTableRowErrorDirective, NgIf,
223
- InputModule, i5.InputComponent, ReactiveFormsModule, i1.DefaultValueAccessor, i1.NgControlStatus, i1.FormControlDirective, ButtonModule, i5.ButtonComponent, IconModule, i5.IconComponent, TooltipModule, i5.TooltipDirective, ErrorsMapperModule, i6.ErrorsMapperComponent, DisabledContainerModule, i7.DisabledContainerComponent, TranslateModule, i8.TranslatePipe, EffectDirectiveModule, i9.E2eAttributeBindingDirective], styles: ["[_nghost-%COMP%]{display:block;flex:1}[_nghost-%COMP%] .textarea-wrapper[_ngcontent-%COMP%]{display:grid;align-items:stretch}[_nghost-%COMP%] .textarea-wrapper[_ngcontent-%COMP%]:after, [_nghost-%COMP%] .textarea-wrapper[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{grid-area:1/1;width:auto;padding:3px 5px;font:inherit;resize:none;max-height:252px}[_nghost-%COMP%] .textarea-wrapper[_ngcontent-%COMP%]:after{content:attr(data-value) \" \";visibility:hidden;white-space:pre-wrap}[_nghost-%COMP%] .textarea-wrapper[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{overflow:auto;height:auto!important}[_nghost-%COMP%] .textarea-wrapper[_ngcontent-%COMP%]:focus-within textarea[_ngcontent-%COMP%]:focus{outline:none}[_nghost-%COMP%] acl-disabled-container[_ngcontent-%COMP%]{flex:1;display:flex}[_nghost-%COMP%] .acl-disabled-container{flex:1;display:flex}"], changeDetection: 0 }); }
232
+ InputModule, i5.InputComponent, ReactiveFormsModule, i1.DefaultValueAccessor, i1.NgControlStatus, i1.FormControlDirective, ButtonModule, i5.ButtonComponent, IconModule, i5.IconComponent, TooltipModule, i5.TooltipDirective, DisabledContainerComponent,
233
+ EffectDirectiveModule, i6.E2eAttributeBindingDirective, i7.ErrorsMapperComponent, i8.TranslatePipe], styles: ["[_nghost-%COMP%]{display:block;flex:1}[_nghost-%COMP%] .textarea-wrapper[_ngcontent-%COMP%]{display:grid;align-items:stretch}[_nghost-%COMP%] .textarea-wrapper[_ngcontent-%COMP%]:after, [_nghost-%COMP%] .textarea-wrapper[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{grid-area:1/1;width:auto;padding:3px 5px;font:inherit;resize:none;max-height:252px}[_nghost-%COMP%] .textarea-wrapper[_ngcontent-%COMP%]:after{content:attr(data-value) \" \";visibility:hidden;white-space:pre-wrap}[_nghost-%COMP%] .textarea-wrapper[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{overflow:auto;height:auto!important}[_nghost-%COMP%] .textarea-wrapper[_ngcontent-%COMP%]:focus-within textarea[_ngcontent-%COMP%]:focus{outline:none}[_nghost-%COMP%] acl-disabled-container[_ngcontent-%COMP%]{flex:1;display:flex}[_nghost-%COMP%] .acl-disabled-container{flex:1;display:flex}"], changeDetection: 0 }); }
224
234
  }
225
235
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StringArrayFormTableComponent, [{
226
236
  type: Component,
@@ -232,10 +242,10 @@ export class StringArrayFormTableComponent extends BaseResourceFormComponent {
232
242
  ButtonModule,
233
243
  IconModule,
234
244
  TooltipModule,
235
- ErrorsMapperModule,
236
- DisabledContainerModule,
237
- TranslateModule,
245
+ DisabledContainerComponent,
238
246
  EffectDirectiveModule,
247
+ ERRORS_MAPPER_MODULE,
248
+ TRANSLATE_MODULE,
239
249
  ], providers: [ValidateRowDuplicateService], template: "<acl-array-form-table\n [resourceName]=\"resourceName\"\n [resourceNameTranslated]=\"resourceNameTranslated\"\n (add)=\"add(form.length)\"\n (remove)=\"remove($event)\"\n [rows]=\"form.controls\"\n>\n <!-- Input row -->\n <ng-container *aclArrayFormTableRow=\"let control; let index = index\">\n <td>\n <input\n *ngIf=\"!multiLineValue\"\n (blur)=\"onBlur()\"\n aui-input\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"isItemReadonly(index)\"\n />\n\n <div\n *ngIf=\"multiLineValue\"\n class=\"textarea-wrapper\"\n [attr.data-value]=\"control.value\"\n >\n <textarea\n (blur)=\"onBlur()\"\n [placeholder]=\"placeholder\"\n aui-input\n [formControl]=\"control\"\n [readonly]=\"isItemReadonly(index)\"\n rows=\"1\"\n ></textarea>\n </div>\n </td>\n </ng-container>\n\n <ng-container *aclArrayFormTableRowControl=\"let control; let index = index\">\n <button\n aui-button=\"text\"\n type=\"button\"\n [square]=\"true\"\n [plain]=\"true\"\n [disabled]=\"(minLines && minLines >= length) || isItemReadonly(index)\"\n (click)=\"remove(index)\"\n >\n <aui-icon\n icon=\"minus_circle\"\n [auiTooltip]=\"isItemReadonly(index) && readonlyTooltip\"\n [auiTooltipDisabled]=\"!isItemReadonly(index)\"\n ></aui-icon>\n </button>\n </ng-container>\n\n <!-- Input error row -->\n <ng-container *aclArrayFormTableRowError=\"let control\">\n <td\n class=\"acl-table-form-error-hint\"\n colspan=\"2\"\n *ngIf=\"control.dirty || $any(controlContainer?.formDirective)?.submitted\"\n >\n <acl-errors-mapper\n [errors]=\"control.errors\"\n [errorsMapper]=\"errorMapper\"\n ></acl-errors-mapper>\n </td>\n </ng-container>\n\n <ng-container *aclArrayFormTableFooter>\n <acl-disabled-container\n [isAllowed]=\"true\"\n [isDisabled]=\"maxLines && length >= maxLines\"\n [tooltip]=\"maxLinesTooltip\"\n >\n <button\n aui-button=\"primary\"\n type=\"button\"\n size=\"mini\"\n [plain]=\"true\"\n (click)=\"add(length)\"\n >\n <aui-icon icon=\"plus_circle\"></aui-icon>\n {{ 'add' | translate }}\n </button>\n </acl-disabled-container>\n </ng-container>\n</acl-array-form-table>\n", styles: [":host{display:block;flex:1}:host .textarea-wrapper{display:grid;align-items:stretch}:host .textarea-wrapper:after,:host .textarea-wrapper textarea{grid-area:1/1;width:auto;padding:3px 5px;font:inherit;resize:none;max-height:252px}:host .textarea-wrapper:after{content:attr(data-value) \" \";visibility:hidden;white-space:pre-wrap}:host .textarea-wrapper textarea{overflow:auto;height:auto!important}:host .textarea-wrapper:focus-within textarea:focus{outline:none}:host acl-disabled-container{flex:1;display:flex}:host ::ng-deep .acl-disabled-container{flex:1;display:flex}\n"] }]
240
250
  }], function () { return [{ type: i0.Injector }, { type: i1.ControlContainer, decorators: [{
241
251
  type: Optional
@@ -264,4 +274,4 @@ export class StringArrayFormTableComponent extends BaseResourceFormComponent {
264
274
  }], readonlyTooltip: [{
265
275
  type: Input
266
276
  }] }); })();
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FycmF5LWZvcm0tdGFibGUvc3RyaW5nLWFycmF5LWZvcm0vY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FycmF5LWZvcm0tdGFibGUvc3RyaW5nLWFycmF5LWZvcm0vdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsYUFBYSxHQUNkLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUdMLFFBQVEsR0FFVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZ0JBQWdCLEVBRWhCLG1CQUFtQixHQUVwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsNEJBQTRCLEVBRTVCLDJCQUEyQixHQUM1QixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7OztJQ3pCaEQsZ0NBT0U7SUFMQSx5TEFBUSxl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LElBQUMsbUhBQ2Qsa0JBQWMsSUFEQTtZQUt4QixnR0EwQmU7WUFFZixnR0FlZTtZQUdmLGdHQVdlO1lBRWYsZ0dBaUJlO1lBQ2pCLGlCQUF1Qjs7WUFwRnJCLCtDQUE2QixzREFBQSwyQkFBQTs0QkQyQzNCLG9CQUFvQix5S0FDcEIsSUFBSTtZQUNKLFdBQVcscUJBQ1gsbUJBQW1CLHdFQUNuQixZQUFZLHNCQUNaLFVBQVUsb0JBQ1YsYUFBYSx1QkFDYixrQkFBa0IsNEJBQ2xCLHVCQUF1QixpQ0FDdkIsZUFBZSxvQkFDZixxQkFBcUI7O3VGQUlaLDZCQUE2QjtjQXJCekMsU0FBUzsyQkFDRSw2QkFBNkIsbUJBR3RCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO29CQUNQLG9CQUFvQjtvQkFDcEIsSUFBSTtvQkFDSixXQUFXO29CQUNYLG1CQUFtQjtvQkFDbkIsWUFBWTtvQkFDWixVQUFVO29CQUNWLGFBQWE7b0JBQ2Isa0JBQWtCO29CQUNsQix1QkFBdUI7b0JBQ3ZCLGVBQWU7b0JBQ2YscUJBQXFCO2lCQUN0QixhQUNVLENBQUMsMkJBQTJCLENBQUM7O3NCQXNEckMsUUFBUTtpR0EvQ1gsY0FBYztrQkFEYixLQUFLO1lBSU4sWUFBWTtrQkFEWCxLQUFLO1lBSU4sc0JBQXNCO2tCQURyQixLQUFLO1lBSU4sV0FBVztrQkFEVixLQUFLO1lBSU4sVUFBVTtrQkFEVCxLQUFLO1lBSU4sb0JBQW9CO2tCQURuQixLQUFLO1lBSUYsV0FBVztrQkFEZCxLQUFLO1lBWUcsUUFBUTtrQkFBaEIsS0FBSztZQUVHLGVBQWU7a0JBQXZCLEtBQUs7WUFFRyxRQUFRO2tCQUFoQixLQUFLO1lBR04sYUFBYTtrQkFEWixLQUFLO1lBSU4sZUFBZTtrQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQnV0dG9uTW9kdWxlLFxuICBJY29uTW9kdWxlLFxuICBJbnB1dE1vZHVsZSxcbiAgVG9vbHRpcE1vZHVsZSxcbn0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xDb250YWluZXIsXG4gIEZvcm1BcnJheSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9yRm4sXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJhc2VSZXNvdXJjZUZvcm1Db21wb25lbnQgfSBmcm9tICduZy1yZXNvdXJjZS1mb3JtLXV0aWwnO1xuXG5pbXBvcnQge1xuICBEVVBMSUNBVEVfRVJST1JfS0VZLFxuICBEVVBMSUNBVElPTl9KVVNUSUZZX1NUUkFURUdZLFxuICBTdHJpbmdNYXAsXG4gIFZhbGlkYXRlUm93RHVwbGljYXRlU2VydmljZSxcbn0gZnJvbSAnLi4vLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IERpc2FibGVkQ29udGFpbmVyTW9kdWxlIH0gZnJvbSAnLi4vLi4vZGlzYWJsZWQtY29udGFpbmVyL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgRWZmZWN0RGlyZWN0aXZlTW9kdWxlIH0gZnJvbSAnLi4vLi4vZWZmZWN0LWRpcmVjdGl2ZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IEVycm9yc01hcHBlck1vZHVsZSB9IGZyb20gJy4uLy4uL2Zvcm0vcHVibGljLWFwaSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi90cmFuc2xhdGUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBBcnJheUZvcm1UYWJsZU1vZHVsZSB9IGZyb20gJy4uL2Zvcm0vbW9kdWxlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLXN0cmluZy1hcnJheS1mb3JtLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdHlsZXMuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFycmF5Rm9ybVRhYmxlTW9kdWxlLFxuICAgIE5nSWYsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICAgIEVycm9yc01hcHBlck1vZHVsZSxcbiAgICBEaXNhYmxlZENvbnRhaW5lck1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgRWZmZWN0RGlyZWN0aXZlTW9kdWxlLFxuICBdLFxuICBwcm92aWRlcnM6IFtWYWxpZGF0ZVJvd0R1cGxpY2F0ZVNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBTdHJpbmdBcnJheUZvcm1UYWJsZUNvbXBvbmVudFxuICBleHRlbmRzIEJhc2VSZXNvdXJjZUZvcm1Db21wb25lbnQ8c3RyaW5nW10sIHN0cmluZ1tdLCBGb3JtQXJyYXk+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgQElucHV0KClcbiAgbXVsdGlMaW5lVmFsdWU6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgcmVzb3VyY2VOYW1lOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcmVzb3VyY2VOYW1lVHJhbnNsYXRlZDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyID0gJyc7XG5cbiAgQElucHV0KClcbiAgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGVuYWJsZUR1cGxpY2F0ZUNoZWNrID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc2V0IGVycm9yTWFwcGVyKGVycm9yTWFwcGVyOiBTdHJpbmdNYXApIHtcbiAgICB0aGlzLl9lcnJvck1hcHBlciA9IHtcbiAgICAgIC4uLnRoaXMuX2Vycm9yTWFwcGVyLFxuICAgICAgLi4uZXJyb3JNYXBwZXIsXG4gICAgfTtcbiAgfVxuXG4gIGdldCBlcnJvck1hcHBlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JNYXBwZXI7XG4gIH1cblxuICBASW5wdXQoKSBtYXhMaW5lcyA9IDA7XG5cbiAgQElucHV0KCkgbWF4TGluZXNUb29sdGlwID0gJyc7XG5cbiAgQElucHV0KCkgbWluTGluZXMgPSAwO1xuXG4gIEBJbnB1dCgpXG4gIHJlYWRvbmx5SXRlbXM6IEFycmF5PHN0cmluZyB8IFJlZ0V4cD4gPSBbXTtcblxuICBASW5wdXQoKVxuICByZWFkb25seVRvb2x0aXA6IHN0cmluZztcblxuICBwcml2YXRlIF9lcnJvck1hcHBlcjogU3RyaW5nTWFwID0ge1xuICAgIFtEVVBMSUNBVEVfRVJST1JfS0VZXTogdGhpcy50cmFuc2xhdGUuZ2V0KCd2YWx1ZV9kdXBsaWNhdGlvbicpLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBvdmVycmlkZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3dEdXA6IFZhbGlkYXRlUm93RHVwbGljYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgZ2V0IGxlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmxlbmd0aDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHsgdmFsaWRhdG9ycyB9OiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKHZhbGlkYXRvcnM/LmN1cnJlbnRWYWx1ZSAmJiB0aGlzLmZvcm0pIHtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5mb3JFYWNoKGZvcm1Db250cm9sID0+IHtcbiAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIC8vIOmBv+WFjeWKqOaAgeWinuWKoOaIluiAheenu+mZpCB2YWxpZGF0b3JzIOeahOaXtuWAmeihqOWNleagoemqjOS4jeeUn+aViFxuICAgICAgICBmb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVGb3JtKCkge1xuICAgIHJldHVybiB0aGlzLmZiLmFycmF5KFtdKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFkYXB0UmVzb3VyY2VNb2RlbChyZXNvdXJjZTogc3RyaW5nW10pIHtcbiAgICBpZiAoIXJlc291cmNlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc291cmNlLnNvcnQoKHYxOiBzdHJpbmcsIHYyOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGlzUmVhZG9ubHkxID0gdGhpcy5pc1JlYWRvbmx5KHYxKTtcbiAgICAgIGNvbnN0IGlzUmVhZG9ubHkyID0gdGhpcy5pc1JlYWRvbmx5KHYyKTtcblxuICAgICAgaWYgKGlzUmVhZG9ubHkxID09PSBpc1JlYWRvbmx5Mikge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc1JlYWRvbmx5MSA/IC0xIDogMTtcbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldERlZmF1bHRGb3JtTW9kZWwoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGFkZChpbmRleCA9IHRoaXMuZm9ybS5sZW5ndGgpIHtcbiAgICB0aGlzLmZvcm0uaW5zZXJ0KGluZGV4LCB0aGlzLmdldE9uRm9ybUFycmF5UmVzaXplRm4oKSgpKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlbW92ZShpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5mb3JtLnJlbW92ZUF0KGluZGV4KTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldE9uRm9ybUFycmF5UmVzaXplRm4oKSB7XG4gICAgcmV0dXJuICgpID0+XG4gICAgICB0aGlzLmZiLmNvbnRyb2woXG4gICAgICAgICcnLFxuICAgICAgICBbXG4gICAgICAgICAgLi4uKHRoaXMudmFsaWRhdG9ycyA/PyBbXSksXG4gICAgICAgICAgdGhpcy5lbmFibGVEdXBsaWNhdGVDaGVjayAmJlxuICAgICAgICAgICAgdGhpcy5yb3dEdXAuY3JlYXRlRm9ybUFycmF5VmFsaWRhdG9yKHtcbiAgICAgICAgICAgICAgcm93S2V5czogWycwJ10sXG4gICAgICAgICAgICAgIHZhbHVlTWFwRm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZSxcbiAgICAgICAgICAgICAgZm9ybUFycmF5OiB0aGlzLmZvcm0sXG4gICAgICAgICAgICAgIHN0cmF0ZWd5OiBEVVBMSUNBVElPTl9KVVNUSUZZX1NUUkFURUdZLkZVTEwsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgXS5maWx0ZXIoQm9vbGVhbiksXG4gICAgICApO1xuICB9XG5cbiAgaXNJdGVtUmVhZG9ubHkoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uY29udHJvbHNbaW5kZXhdO1xuICAgIHJldHVybiBjb250cm9sLnZhbGlkICYmIHRoaXMuaXNSZWFkb25seShjb250cm9sLnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNSZWFkb25seShpdGVtOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seUl0ZW1zLnNvbWUoY2hlY2tlZEl0ZW0gPT4ge1xuICAgICAgaWYgKCFjaGVja2VkSXRlbSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGNoZWNrZWRJdGVtID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gY2hlY2tlZEl0ZW0gPT09IGl0ZW07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjaGVja2VkSXRlbS50ZXN0KGl0ZW0pO1xuICAgIH0pO1xuICB9XG59XG4iLCI8YWNsLWFycmF5LWZvcm0tdGFibGVcbiAgW3Jlc291cmNlTmFtZV09XCJyZXNvdXJjZU5hbWVcIlxuICBbcmVzb3VyY2VOYW1lVHJhbnNsYXRlZF09XCJyZXNvdXJjZU5hbWVUcmFuc2xhdGVkXCJcbiAgKGFkZCk9XCJhZGQoZm9ybS5sZW5ndGgpXCJcbiAgKHJlbW92ZSk9XCJyZW1vdmUoJGV2ZW50KVwiXG4gIFtyb3dzXT1cImZvcm0uY29udHJvbHNcIlxuPlxuICA8IS0tIElucHV0IHJvdyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqYWNsQXJyYXlGb3JtVGFibGVSb3c9XCJsZXQgY29udHJvbDsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICA8dGQ+XG4gICAgICA8aW5wdXRcbiAgICAgICAgKm5nSWY9XCIhbXVsdGlMaW5lVmFsdWVcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgIGF1aS1pbnB1dFxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgIFtyZWFkb25seV09XCJpc0l0ZW1SZWFkb25seShpbmRleClcIlxuICAgICAgLz5cblxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIm11bHRpTGluZVZhbHVlXCJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0YXJlYS13cmFwcGVyXCJcbiAgICAgICAgW2F0dHIuZGF0YS12YWx1ZV09XCJjb250cm9sLnZhbHVlXCJcbiAgICAgID5cbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgYXVpLWlucHV0XG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgIFtyZWFkb25seV09XCJpc0l0ZW1SZWFkb25seShpbmRleClcIlxuICAgICAgICAgIHJvd3M9XCIxXCJcbiAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICphY2xBcnJheUZvcm1UYWJsZVJvd0NvbnRyb2w9XCJsZXQgY29udHJvbDsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICA8YnV0dG9uXG4gICAgICBhdWktYnV0dG9uPVwidGV4dFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtzcXVhcmVdPVwidHJ1ZVwiXG4gICAgICBbcGxhaW5dPVwidHJ1ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiKG1pbkxpbmVzICYmIG1pbkxpbmVzID49IGxlbmd0aCkgfHwgaXNJdGVtUmVhZG9ubHkoaW5kZXgpXCJcbiAgICAgIChjbGljayk9XCJyZW1vdmUoaW5kZXgpXCJcbiAgICA+XG4gICAgICA8YXVpLWljb25cbiAgICAgICAgaWNvbj1cIm1pbnVzX2NpcmNsZVwiXG4gICAgICAgIFthdWlUb29sdGlwXT1cImlzSXRlbVJlYWRvbmx5KGluZGV4KSAmJiByZWFkb25seVRvb2x0aXBcIlxuICAgICAgICBbYXVpVG9vbHRpcERpc2FibGVkXT1cIiFpc0l0ZW1SZWFkb25seShpbmRleClcIlxuICAgICAgPjwvYXVpLWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gSW5wdXQgZXJyb3Igcm93IC0tPlxuICA8bmctY29udGFpbmVyICphY2xBcnJheUZvcm1UYWJsZVJvd0Vycm9yPVwibGV0IGNvbnRyb2xcIj5cbiAgICA8dGRcbiAgICAgIGNsYXNzPVwiYWNsLXRhYmxlLWZvcm0tZXJyb3ItaGludFwiXG4gICAgICBjb2xzcGFuPVwiMlwiXG4gICAgICAqbmdJZj1cImNvbnRyb2wuZGlydHkgfHwgJGFueShjb250cm9sQ29udGFpbmVyPy5mb3JtRGlyZWN0aXZlKT8uc3VibWl0dGVkXCJcbiAgICA+XG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgW2Vycm9yc109XCJjb250cm9sLmVycm9yc1wiXG4gICAgICAgIFtlcnJvcnNNYXBwZXJdPVwiZXJyb3JNYXBwZXJcIlxuICAgICAgPjwvYWNsLWVycm9ycy1tYXBwZXI+XG4gICAgPC90ZD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqYWNsQXJyYXlGb3JtVGFibGVGb290ZXI+XG4gICAgPGFjbC1kaXNhYmxlZC1jb250YWluZXJcbiAgICAgIFtpc0FsbG93ZWRdPVwidHJ1ZVwiXG4gICAgICBbaXNEaXNhYmxlZF09XCJtYXhMaW5lcyAmJiBsZW5ndGggPj0gbWF4TGluZXNcIlxuICAgICAgW3Rvb2x0aXBdPVwibWF4TGluZXNUb29sdGlwXCJcbiAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGF1aS1idXR0b249XCJwcmltYXJ5XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHNpemU9XCJtaW5pXCJcbiAgICAgICAgW3BsYWluXT1cInRydWVcIlxuICAgICAgICAoY2xpY2spPVwiYWRkKGxlbmd0aClcIlxuICAgICAgPlxuICAgICAgICA8YXVpLWljb24gaWNvbj1cInBsdXNfY2lyY2xlXCI+PC9hdWktaWNvbj5cbiAgICAgICAge3sgJ2FkZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvYWNsLWRpc2FibGVkLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2FjbC1hcnJheS1mb3JtLXRhYmxlPlxuIl19
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FycmF5LWZvcm0tdGFibGUvc3RyaW5nLWFycmF5LWZvcm0vY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FycmF5LWZvcm0tdGFibGUvc3RyaW5nLWFycmF5LWZvcm0vdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsYUFBYSxHQUNkLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUdMLFFBQVEsR0FFVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZ0JBQWdCLEVBRWhCLG1CQUFtQixHQUVwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsNEJBQTRCLEVBRTVCLDJCQUEyQixHQUM1QixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7SUN6QmhELGdDQU9FO0lBTEEseUxBQVEs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YztrQkFEYixLQUFLO1lBSU4sWUFBWTtrQkFEWCxLQUFLO1lBSU4sc0JBQXNCO2tCQURyQixLQUFLO1lBSU4sV0FBVztrQkFEVixLQUFLO1lBSU4sVUFBVTtrQkFEVCxLQUFLO1lBSU4sb0JBQW9CO2tCQURuQixLQUFLO1lBSUYsV0FBVztrQkFEZCxLQUFLO1lBWUcsUUFBUTtrQkFBaEIsS0FBSztZQUVHLGVBQWU7a0JBQXZCLEtBQUs7WUFFRyxRQUFRO2tCQUFoQixLQUFLO1lBR04sYUFBYTtrQkFEWixLQUFLO1lBSU4sZUFBZTtrQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQnV0dG9uTW9kdWxlLFxuICBJY29uTW9kdWxlLFxuICBJbnB1dE1vZHVsZSxcbiAgVG9vbHRpcE1vZHVsZSxcbn0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xDb250YWluZXIsXG4gIEZvcm1BcnJheSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9yRm4sXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJhc2VSZXNvdXJjZUZvcm1Db21wb25lbnQgfSBmcm9tICduZy1yZXNvdXJjZS1mb3JtLXV0aWwnO1xuXG5pbXBvcnQge1xuICBEVVBMSUNBVEVfRVJST1JfS0VZLFxuICBEVVBMSUNBVElPTl9KVVNUSUZZX1NUUkFURUdZLFxuICBTdHJpbmdNYXAsXG4gIFZhbGlkYXRlUm93RHVwbGljYXRlU2VydmljZSxcbn0gZnJvbSAnLi4vLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IERpc2FibGVkQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGlzYWJsZWQtY29udGFpbmVyL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgRWZmZWN0RGlyZWN0aXZlTW9kdWxlIH0gZnJvbSAnLi4vLi4vZWZmZWN0LWRpcmVjdGl2ZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IEVSUk9SU19NQVBQRVJfTU9EVUxFIH0gZnJvbSAnLi4vLi4vZm9ybS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IFRSQU5TTEFURV9NT0RVTEUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi90cmFuc2xhdGUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBBcnJheUZvcm1UYWJsZU1vZHVsZSB9IGZyb20gJy4uL2Zvcm0vbW9kdWxlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLXN0cmluZy1hcnJheS1mb3JtLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdHlsZXMuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFycmF5Rm9ybVRhYmxlTW9kdWxlLFxuICAgIE5nSWYsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICAgIERpc2FibGVkQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIEVmZmVjdERpcmVjdGl2ZU1vZHVsZSxcbiAgICBFUlJPUlNfTUFQUEVSX01PRFVMRSxcbiAgICBUUkFOU0xBVEVfTU9EVUxFLFxuICBdLFxuICBwcm92aWRlcnM6IFtWYWxpZGF0ZVJvd0R1cGxpY2F0ZVNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBTdHJpbmdBcnJheUZvcm1UYWJsZUNvbXBvbmVudFxuICBleHRlbmRzIEJhc2VSZXNvdXJjZUZvcm1Db21wb25lbnQ8c3RyaW5nW10sIHN0cmluZ1tdLCBGb3JtQXJyYXk+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgQElucHV0KClcbiAgbXVsdGlMaW5lVmFsdWU6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgcmVzb3VyY2VOYW1lOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcmVzb3VyY2VOYW1lVHJhbnNsYXRlZDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyID0gJyc7XG5cbiAgQElucHV0KClcbiAgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGVuYWJsZUR1cGxpY2F0ZUNoZWNrID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc2V0IGVycm9yTWFwcGVyKGVycm9yTWFwcGVyOiBTdHJpbmdNYXApIHtcbiAgICB0aGlzLl9lcnJvck1hcHBlciA9IHtcbiAgICAgIC4uLnRoaXMuX2Vycm9yTWFwcGVyLFxuICAgICAgLi4uZXJyb3JNYXBwZXIsXG4gICAgfTtcbiAgfVxuXG4gIGdldCBlcnJvck1hcHBlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JNYXBwZXI7XG4gIH1cblxuICBASW5wdXQoKSBtYXhMaW5lcyA9IDA7XG5cbiAgQElucHV0KCkgbWF4TGluZXNUb29sdGlwID0gJyc7XG5cbiAgQElucHV0KCkgbWluTGluZXMgPSAwO1xuXG4gIEBJbnB1dCgpXG4gIHJlYWRvbmx5SXRlbXM6IEFycmF5PHN0cmluZyB8IFJlZ0V4cD4gPSBbXTtcblxuICBASW5wdXQoKVxuICByZWFkb25seVRvb2x0aXA6IHN0cmluZztcblxuICBwcml2YXRlIF9lcnJvck1hcHBlcjogU3RyaW5nTWFwID0ge1xuICAgIFtEVVBMSUNBVEVfRVJST1JfS0VZXTogdGhpcy50cmFuc2xhdGUuZ2V0KCd2YWx1ZV9kdXBsaWNhdGlvbicpLFxuICB9O1xuXG4gIHByaXZhdGUgZHVwbGljYXRlVmFsaWRhdG9yOiBWYWxpZGF0b3JGbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgb3ZlcnJpZGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyByZWFkb25seSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm93RHVwOiBWYWxpZGF0ZVJvd0R1cGxpY2F0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgfVxuXG4gIGdldCBsZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5sZW5ndGg7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyh7IHZhbGlkYXRvcnMsIGVuYWJsZUR1cGxpY2F0ZUNoZWNrIH06IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAodmFsaWRhdG9ycz8uY3VycmVudFZhbHVlICYmIHRoaXMuZm9ybSkge1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmZvckVhY2goZm9ybUNvbnRyb2wgPT4ge1xuICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMuY3VycmVudFZhbHVlKTtcbiAgICAgICAgLy8g6YG/5YWN5Yqo5oCB5aKe5Yqg5oiW6ICF56e76ZmkIHZhbGlkYXRvcnMg55qE5pe25YCZ6KGo5Y2V5qCh6aqM5LiN55Sf5pWIXG4gICAgICAgIGZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBlbmFibGVEdXBsaWNhdGVDaGVjaz8uY3VycmVudFZhbHVlICE9PVxuICAgICAgICBlbmFibGVEdXBsaWNhdGVDaGVjaz8ucHJldmlvdXNWYWx1ZSAmJlxuICAgICAgdGhpcy5mb3JtXG4gICAgKSB7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuZm9yRWFjaChmb3JtQ29udHJvbCA9PiB7XG4gICAgICAgIGZvcm1Db250cm9sW1xuICAgICAgICAgIGVuYWJsZUR1cGxpY2F0ZUNoZWNrPy5jdXJyZW50VmFsdWVcbiAgICAgICAgICAgID8gJ2FkZFZhbGlkYXRvcnMnXG4gICAgICAgICAgICA6ICdyZW1vdmVWYWxpZGF0b3JzJ1xuICAgICAgICBdKHRoaXMuZHVwbGljYXRlVmFsaWRhdG9yKTtcbiAgICAgICAgZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlRm9ybSgpIHtcbiAgICByZXR1cm4gdGhpcy5mYi5hcnJheShbXSk7XG4gIH1cblxuICBvdmVycmlkZSBhZGFwdFJlc291cmNlTW9kZWwocmVzb3VyY2U6IHN0cmluZ1tdKSB7XG4gICAgaWYgKCFyZXNvdXJjZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvdXJjZS5zb3J0KCh2MTogc3RyaW5nLCB2Mjogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBpc1JlYWRvbmx5MSA9IHRoaXMuaXNSZWFkb25seSh2MSk7XG4gICAgICBjb25zdCBpc1JlYWRvbmx5MiA9IHRoaXMuaXNSZWFkb25seSh2Mik7XG5cbiAgICAgIGlmIChpc1JlYWRvbmx5MSA9PT0gaXNSZWFkb25seTIpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNSZWFkb25seTEgPyAtMSA6IDE7XG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBnZXREZWZhdWx0Rm9ybU1vZGVsKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBhZGQoaW5kZXggPSB0aGlzLmZvcm0ubGVuZ3RoKSB7XG4gICAgdGhpcy5mb3JtLmluc2VydChpbmRleCwgdGhpcy5nZXRPbkZvcm1BcnJheVJlc2l6ZUZuKCkoKSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZW1vdmUoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuZm9ybS5yZW1vdmVBdChpbmRleCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvdmVycmlkZSBnZXRPbkZvcm1BcnJheVJlc2l6ZUZuKCkge1xuICAgIHRoaXMuZHVwbGljYXRlVmFsaWRhdG9yID1cbiAgICAgIHRoaXMuZHVwbGljYXRlVmFsaWRhdG9yIHx8XG4gICAgICAodGhpcy5lbmFibGVEdXBsaWNhdGVDaGVjayAmJlxuICAgICAgICB0aGlzLnJvd0R1cC5jcmVhdGVGb3JtQXJyYXlWYWxpZGF0b3Ioe1xuICAgICAgICAgIHJvd0tleXM6IFsnMCddLFxuICAgICAgICAgIHZhbHVlTWFwRm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZSxcbiAgICAgICAgICBmb3JtQXJyYXk6IHRoaXMuZm9ybSxcbiAgICAgICAgICBzdHJhdGVneTogRFVQTElDQVRJT05fSlVTVElGWV9TVFJBVEVHWS5GVUxMLFxuICAgICAgICB9KSk7XG5cbiAgICByZXR1cm4gKCkgPT5cbiAgICAgIHRoaXMuZmIuY29udHJvbChcbiAgICAgICAgJycsXG4gICAgICAgIFsuLi4odGhpcy52YWxpZGF0b3JzID8/IFtdKSwgdGhpcy5kdXBsaWNhdGVWYWxpZGF0b3JdLmZpbHRlcihCb29sZWFuKSxcbiAgICAgICk7XG4gIH1cblxuICBpc0l0ZW1SZWFkb25seShpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5jb250cm9sc1tpbmRleF07XG4gICAgcmV0dXJuIGNvbnRyb2wudmFsaWQgJiYgdGhpcy5pc1JlYWRvbmx5KGNvbnRyb2wudmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1JlYWRvbmx5KGl0ZW06IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnJlYWRvbmx5SXRlbXMuc29tZShjaGVja2VkSXRlbSA9PiB7XG4gICAgICBpZiAoIWNoZWNrZWRJdGVtKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgY2hlY2tlZEl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBjaGVja2VkSXRlbSA9PT0gaXRlbTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNoZWNrZWRJdGVtLnRlc3QoaXRlbSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxhY2wtYXJyYXktZm9ybS10YWJsZVxuICBbcmVzb3VyY2VOYW1lXT1cInJlc291cmNlTmFtZVwiXG4gIFtyZXNvdXJjZU5hbWVUcmFuc2xhdGVkXT1cInJlc291cmNlTmFtZVRyYW5zbGF0ZWRcIlxuICAoYWRkKT1cImFkZChmb3JtLmxlbmd0aClcIlxuICAocmVtb3ZlKT1cInJlbW92ZSgkZXZlbnQpXCJcbiAgW3Jvd3NdPVwiZm9ybS5jb250cm9sc1wiXG4+XG4gIDwhLS0gSW5wdXQgcm93IC0tPlxuICA8bmctY29udGFpbmVyICphY2xBcnJheUZvcm1UYWJsZVJvdz1cImxldCBjb250cm9sOyBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgIDx0ZD5cbiAgICAgIDxpbnB1dFxuICAgICAgICAqbmdJZj1cIiFtdWx0aUxpbmVWYWx1ZVwiXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgYXVpLWlucHV0XG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cImlzSXRlbVJlYWRvbmx5KGluZGV4KVwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwibXVsdGlMaW5lVmFsdWVcIlxuICAgICAgICBjbGFzcz1cInRleHRhcmVhLXdyYXBwZXJcIlxuICAgICAgICBbYXR0ci5kYXRhLXZhbHVlXT1cImNvbnRyb2wudmFsdWVcIlxuICAgICAgPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBhdWktaW5wdXRcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgW3JlYWRvbmx5XT1cImlzSXRlbVJlYWRvbmx5KGluZGV4KVwiXG4gICAgICAgICAgcm93cz1cIjFcIlxuICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGQ+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKmFjbEFycmF5Rm9ybVRhYmxlUm93Q29udHJvbD1cImxldCBjb250cm9sOyBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgIDxidXR0b25cbiAgICAgIGF1aS1idXR0b249XCJ0ZXh0XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW3NxdWFyZV09XCJ0cnVlXCJcbiAgICAgIFtwbGFpbl09XCJ0cnVlXCJcbiAgICAgIFtkaXNhYmxlZF09XCIobWluTGluZXMgJiYgbWluTGluZXMgPj0gbGVuZ3RoKSB8fCBpc0l0ZW1SZWFkb25seShpbmRleClcIlxuICAgICAgKGNsaWNrKT1cInJlbW92ZShpbmRleClcIlxuICAgID5cbiAgICAgIDxhdWktaWNvblxuICAgICAgICBpY29uPVwibWludXNfY2lyY2xlXCJcbiAgICAgICAgW2F1aVRvb2x0aXBdPVwiaXNJdGVtUmVhZG9ubHkoaW5kZXgpICYmIHJlYWRvbmx5VG9vbHRpcFwiXG4gICAgICAgIFthdWlUb29sdGlwRGlzYWJsZWRdPVwiIWlzSXRlbVJlYWRvbmx5KGluZGV4KVwiXG4gICAgICA+PC9hdWktaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBJbnB1dCBlcnJvciByb3cgLS0+XG4gIDxuZy1jb250YWluZXIgKmFjbEFycmF5Rm9ybVRhYmxlUm93RXJyb3I9XCJsZXQgY29udHJvbFwiPlxuICAgIDx0ZFxuICAgICAgY2xhc3M9XCJhY2wtdGFibGUtZm9ybS1lcnJvci1oaW50XCJcbiAgICAgIGNvbHNwYW49XCIyXCJcbiAgICAgICpuZ0lmPVwiY29udHJvbC5kaXJ0eSB8fCAkYW55KGNvbnRyb2xDb250YWluZXI/LmZvcm1EaXJlY3RpdmUpPy5zdWJtaXR0ZWRcIlxuICAgID5cbiAgICAgIDxhY2wtZXJyb3JzLW1hcHBlclxuICAgICAgICBbZXJyb3JzXT1cImNvbnRyb2wuZXJyb3JzXCJcbiAgICAgICAgW2Vycm9yc01hcHBlcl09XCJlcnJvck1hcHBlclwiXG4gICAgICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgICA8L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICphY2xBcnJheUZvcm1UYWJsZUZvb3Rlcj5cbiAgICA8YWNsLWRpc2FibGVkLWNvbnRhaW5lclxuICAgICAgW2lzQWxsb3dlZF09XCJ0cnVlXCJcbiAgICAgIFtpc0Rpc2FibGVkXT1cIm1heExpbmVzICYmIGxlbmd0aCA+PSBtYXhMaW5lc1wiXG4gICAgICBbdG9vbHRpcF09XCJtYXhMaW5lc1Rvb2x0aXBcIlxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAgYXVpLWJ1dHRvbj1cInByaW1hcnlcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgc2l6ZT1cIm1pbmlcIlxuICAgICAgICBbcGxhaW5dPVwidHJ1ZVwiXG4gICAgICAgIChjbGljayk9XCJhZGQobGVuZ3RoKVwiXG4gICAgICA+XG4gICAgICAgIDxhdWktaWNvbiBpY29uPVwicGx1c19jaXJjbGVcIj48L2F1aS1pY29uPlxuICAgICAgICB7eyAnYWRkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9hY2wtZGlzYWJsZWQtY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvYWNsLWFycmF5LWZvcm0tdGFibGU+XG4iXX0=
@@ -546,7 +546,7 @@ export class ResourceDataGridComponent {
546
546
  i0.ɵɵproperty("ngIf", !ctx.loading && i0.ɵɵpipeBind3(15, 21, i0.ɵɵpipeBind2(16, 25, i0.ɵɵpipeBind1(17, 28, ctx.displayData$), ctx.sortWithoutIstio), ctx.filterDisabledData, ctx.context));
547
547
  i0.ɵɵadvance(4);
548
548
  i0.ɵɵproperty("ngIf", ctx.loading);
549
- } }, styles: ["[_nghost-%COMP%]{display:flex;flex-direction:column;box-shadow:0 0 4px rgba(var(--aui-color-n-1),.16);padding:22px 20px 20px;background-color:rgb(var(--aui-color-n-10));border-radius:4px}.header[_ngcontent-%COMP%]{display:flex;align-items:center;margin-bottom:20px;height:28px}.header[_ngcontent-%COMP%] aui-search[_ngcontent-%COMP%]{width:260px}.header__title[_ngcontent-%COMP%]{font-size:18px;font-weight:500;line-height:28px;color:rgb(var(--aui-color-n-1))}.header__title--lite[_ngcontent-%COMP%]{font-size:16px;font-weight:700;line-height:22px}.header__desc[_ngcontent-%COMP%]{color:rgb(var(--aui-color-n-4))}.header__custom[_ngcontent-%COMP%]{flex:1;padding:0 36px}.header__display-mode[_ngcontent-%COMP%]{display:flex;border:1px solid rgb(var(--aui-color-n-7));background-color:rgb(var(--aui-color-n-9));border-radius:var(--aui-border-radius-m);margin-left:16px;padding:1px}.switch-btn[_ngcontent-%COMP%]{cursor:pointer;width:24px;height:24px;border-radius:var(--aui-border-radius-m);display:inline-flex;align-items:center;justify-content:center}.switch-btn[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:12px;height:12px}.switch-btn--selected[_ngcontent-%COMP%]{background-color:rgb(var(--aui-color-n-10));color:rgb(var(--aui-color-primary))}.grid[_ngcontent-%COMP%]{overflow-y:auto;padding:20px;background-color:rgb(var(--aui-color-n-9));border-radius:var(--aui-border-radius-l)}.grid[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}.grid[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{border-radius:2px;background-color:rgba(var(--aui-color-n-1),.2)}.grid[_ngcontent-%COMP%]::-webkit-scrollbar-corner{background-color:transparent}.grid__item[_ngcontent-%COMP%]{display:flex;position:relative;flex-direction:row;border-radius:var(--aui-border-radius-l);padding:9px 20px;min-height:60px;color:rgb(var(--aui-color-n-1));align-items:center;cursor:pointer;background-color:rgb(var(--aui-color-n-10))}.grid__item[_ngcontent-%COMP%]:not(:last-child){margin-bottom:8px}.grid__item[_ngcontent-%COMP%]:not(.grid__item--disabled):hover{border-color:rgb(var(--aui-color-primary));box-shadow:0 0 8px rgba(var(--aui-color-primary),.5)}.grid__item--disabled[_ngcontent-%COMP%]{cursor:default}.grid__item--disabled[_ngcontent-%COMP%], .grid__item--disabled[_ngcontent-%COMP%]:hover{background-color:rgb(var(--aui-color-n-9))}.grid__item--disabled[_ngcontent-%COMP%] .grid__field[_ngcontent-%COMP%]{opacity:.3}.grid__item--disabled[_ngcontent-%COMP%] .grid__field-servicemesh[_ngcontent-%COMP%], .grid__item--disabled[_ngcontent-%COMP%] .grid__field-action[_ngcontent-%COMP%]{opacity:1}.grid__field[_ngcontent-%COMP%]{flex:2;line-height:20px}.grid__field[_ngcontent-%COMP%]:not(.grid__field-status){white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.grid__field[_ngcontent-%COMP%]:not(:last-child){margin-right:20px}.grid__field-servicemesh[_ngcontent-%COMP%]{flex:2;align-items:stretch;max-width:400px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grid__field-servicemesh[_ngcontent-%COMP%] .des[_ngcontent-%COMP%]{font-size:12px;line-height:16px;color:rgb(var(--aui-color-n-4))}.grid__field-servicemesh[_ngcontent-%COMP%] aui-tag[_ngcontent-%COMP%]{margin-left:8px}.grid__field-status[_ngcontent-%COMP%]{display:flex;align-items:center}.grid__field-status[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{font-size:16px;display:inline-flex;margin-right:4px}.grid__field-status[_ngcontent-%COMP%] .with-colon[_ngcontent-%COMP%]{display:none}.grid__field-icon[_ngcontent-%COMP%]{max-width:30px;display:inline-flex}.grid__field-name[_ngcontent-%COMP%]{flex:2;flex-direction:column;max-width:280px}.grid__field-name[_ngcontent-%COMP%] .name[_ngcontent-%COMP%], .grid__field-name[_ngcontent-%COMP%] .des[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grid__field-name[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{font-size:14px;font-weight:500;line-height:20px}.grid__field-name[_ngcontent-%COMP%] .name[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{margin-left:4px}.grid__field-name[_ngcontent-%COMP%] .des[_ngcontent-%COMP%]{font-size:12px;line-height:16px;color:rgb(var(--aui-color-n-4))}.grid__field-action[_ngcontent-%COMP%]{max-width:30px}.grid--popup[_ngcontent-%COMP%]{max-height:382px;padding:12px}.grid--popup[_ngcontent-%COMP%] .grid__field-name[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{font-size:var(--aui-font-size-xl);line-height:var(--aui-line-height-xl);font-weight:var(--aui-font-weight-normal)}.grid--popup[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item[_ngcontent-%COMP%]{padding:10px 20px;min-height:60px;font-size:14px;background-color:rgb(var(--aui-color-n-10))}.grid--popup[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item--selected[_ngcontent-%COMP%]{border:1px solid rgb(var(--aui-color-n-7));border-radius:var(--aui-border-radius-l);background-color:rgb(var(--aui-color-primary));border-color:rgb(var(--aui-color-primary));color:#fff;cursor:default}.grid--popup[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item--selected[_ngcontent-%COMP%]:hover{box-shadow:none}.grid--popup[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item--selected[_ngcontent-%COMP%] .highlighted[_ngcontent-%COMP%]{color:rgb(var(--aui-color-primary));background-color:rgb(var(--aui-color-n-10))}.grid--popup[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item--selected[_ngcontent-%COMP%] .with-colon[_ngcontent-%COMP%]{font-weight:500}.grid--popup[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item--selected[_ngcontent-%COMP%] .des[_ngcontent-%COMP%]{color:#fff}.grid--popup[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item--selected[_ngcontent-%COMP%] .aui-tag--primary{background-color:#fff;color:rgb(var(--aui-color-primary))}.grid--popup--lite[_ngcontent-%COMP%]{background-color:rgb(var(--aui-color-n-10));padding:0}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%]{padding:10px 14px;min-height:44px;border:1px solid rgb(var(--aui-color-n-7))}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] .grid__field[_ngcontent-%COMP%]:not(:last-child){margin-right:12px}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] .grid__field-name[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{font-size:14px;line-height:25px;font-weight:400}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] .grid__field-icon[_ngcontent-%COMP%]{max-width:24px}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] .grid__item-selected-icon[_ngcontent-%COMP%]{display:inline-flex}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] .highlighted[_ngcontent-%COMP%]{color:rgb(var(--aui-color-primary));background-color:rgb(var(--aui-color-n-10))}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] .with-colon[_ngcontent-%COMP%]{font-weight:500}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] .des[_ngcontent-%COMP%]{color:#fff}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] .aui-tag--primary{background-color:#fff;color:rgb(var(--aui-color-primary))}.grid--popup--lite[_ngcontent-%COMP%] .grid__item--selected[_ngcontent-%COMP%]{background-color:rgb(var(--aui-color-b-7));border:1px solid rgb(var(--aui-color-primary))}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%]:hover{border:1px solid rgb(var(--aui-color-primary));box-shadow:none}.grid--card[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(208px,1fr));gap:20px 20px}.grid--card[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%]{margin-bottom:0;height:290px;display:block;text-align:center;padding:40px 20px;border-radius:var(--aui-border-radius-l);position:relative}.grid--card[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] .belonged-cluster[_ngcontent-%COMP%]{position:static;padding-right:0}.grid--card[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] aui-tag[_ngcontent-%COMP%]{position:absolute;top:8px;right:8px}.grid--card[_ngcontent-%COMP%] .grid__field[_ngcontent-%COMP%]{margin-right:0;justify-content:center}.grid--card[_ngcontent-%COMP%] .grid__field-icon[_ngcontent-%COMP%]{max-width:100%;vertical-align:middle}.grid--card[_ngcontent-%COMP%] .grid__field-name[_ngcontent-%COMP%]{margin:20px 0 24px}.grid--card[_ngcontent-%COMP%] .grid__field-name[_ngcontent-%COMP%] .name[_ngcontent-%COMP%], .grid--card[_ngcontent-%COMP%] .grid__field-name[_ngcontent-%COMP%] .des[_ngcontent-%COMP%]{justify-content:center}.grid--card[_ngcontent-%COMP%] .grid__field-name[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{font-size:20px;font-weight:500;line-height:28px;margin-bottom:2px}.grid--card[_ngcontent-%COMP%] .grid__field-name[_ngcontent-%COMP%] .des[_ngcontent-%COMP%]{font-size:14px;height:20px}.grid--card[_ngcontent-%COMP%] .grid__field-name[_ngcontent-%COMP%] ~ .grid__field[_ngcontent-%COMP%]:not(.grid__field-status){line-height:20px;font-size:14px;text-align:center}.grid--card[_ngcontent-%COMP%] .grid__field-status[_ngcontent-%COMP%] .with-colon[_ngcontent-%COMP%]{display:inline}.grid--card[_ngcontent-%COMP%] .grid__field-servicemesh[_ngcontent-%COMP%]:not(:last-of-type){margin-bottom:4px}.grid--card[_ngcontent-%COMP%] .grid__field-cluster[_ngcontent-%COMP%]{margin-bottom:4px}.grid--card[_ngcontent-%COMP%] .grid__field-action[_ngcontent-%COMP%]{position:absolute;right:10px;top:10px}.grid[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item[_ngcontent-%COMP%]:not(.grid__item--selected){position:relative}.grid[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item[_ngcontent-%COMP%]:not(.grid__item--selected):after{position:absolute;content:\"\";top:0;right:0;bottom:0;left:0;border:1px solid rgb(var(--aui-color-n-7));border-radius:4px;pointer-events:none;transition:all .2s ease-in-out}.grid[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item[_ngcontent-%COMP%]:not(.grid__item--selected).disabled{background-color:rgb(var(--aui-color-n-8));color:rgb(var(--aui-color-n-6));cursor:not-allowed}.grid[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item[_ngcontent-%COMP%]:not(.grid__item--selected):not(.disabled):hover:after{top:-4px;right:-4px;bottom:-4px;left:-4px;border-color:rgb(var(--aui-color-primary));box-shadow:inset 0 0 0 4px rgb(var(--aui-color-n-10)),0 0 8px rgba(var(--aui-color-primary),.5)}.grid[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item[_ngcontent-%COMP%]:not(.grid__item--selected):not(.disabled):active:after{top:0;right:0;bottom:0;left:0;box-shadow:0 0 4px rgba(var(--aui-color-primary),.5)}.flex[_ngcontent-%COMP%]{display:flex}.highlighted[_ngcontent-%COMP%]{color:rgb(var(--aui-color-primary));background-color:rgb(var(--aui-color-n-8))}.with-colon[_ngcontent-%COMP%]{font-weight:500}.with-colon[_ngcontent-%COMP%]:after{content:\":\";margin-right:8px}.icon-normal[_ngcontent-%COMP%], .icon-enabled[_ngcontent-%COMP%]{color:rgb(var(--aui-color-green))}.icon-abnormal[_ngcontent-%COMP%]{color:rgb(var(--aui-color-red))}.icon-disabled[_ngcontent-%COMP%]{color:rgb(var(--aui-color-n-6))}.belonged-cluster[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;padding-right:44px}.belonged-cluster[_ngcontent-%COMP%] .with-colon[_ngcontent-%COMP%] + span[_ngcontent-%COMP%]{margin-right:8px}.belonged-cluster[_ngcontent-%COMP%] aui-tag[_ngcontent-%COMP%]{display:inline-flex}.loading[_ngcontent-%COMP%]{display:flex;height:60px;align-items:center;justify-content:center}acl-resource-no-data[_ngcontent-%COMP%]{flex:1;margin:40px 0 80px}acl-zero-state[_ngcontent-%COMP%] .zero-placeholder{min-height:44px;padding:12px 10px}"], changeDetection: 0 }); }
549
+ } }, styles: ["[_nghost-%COMP%]{display:flex;flex-direction:column;box-shadow:0 0 4px rgba(var(--aui-color-n-1),.16);padding:22px 20px 20px;background-color:rgb(var(--aui-color-n-10));border-radius:4px}.header[_ngcontent-%COMP%]{display:flex;align-items:center;margin-bottom:20px;height:28px}.header[_ngcontent-%COMP%] aui-search[_ngcontent-%COMP%]{width:260px}.header__title[_ngcontent-%COMP%]{font-size:18px;font-weight:500;line-height:28px;color:rgb(var(--aui-color-n-1))}.header__title--lite[_ngcontent-%COMP%]{font-size:16px;font-weight:700;line-height:22px}.header__desc[_ngcontent-%COMP%]{color:rgb(var(--aui-color-n-4))}.header__custom[_ngcontent-%COMP%]{flex:1;padding:0 36px}.header__display-mode[_ngcontent-%COMP%]{display:flex;border:1px solid rgb(var(--aui-color-n-7));background-color:rgb(var(--aui-color-n-9));border-radius:var(--aui-border-radius-m);margin-left:16px;padding:1px}.switch-btn[_ngcontent-%COMP%]{cursor:pointer;width:24px;height:24px;border-radius:var(--aui-border-radius-m);display:inline-flex;align-items:center;justify-content:center}.switch-btn[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:12px;height:12px}.switch-btn--selected[_ngcontent-%COMP%]{background-color:rgb(var(--aui-color-n-10));color:rgb(var(--aui-color-primary))}.grid[_ngcontent-%COMP%]{overflow-y:auto;padding:20px;background-color:rgb(var(--aui-color-n-9));border-radius:var(--aui-border-radius-l)}.grid[_ngcontent-%COMP%]::-webkit-scrollbar{width:8px;height:4px}.grid[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgb(var(--aui-color-n-7))}.grid[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background-color:rgb(var(--aui-color-n-5))}.grid[_ngcontent-%COMP%]::-webkit-scrollbar-corner{background-color:transparent}.grid__item[_ngcontent-%COMP%]{display:flex;position:relative;flex-direction:row;border-radius:var(--aui-border-radius-l);padding:9px 20px;min-height:60px;color:rgb(var(--aui-color-n-1));align-items:center;cursor:pointer;background-color:rgb(var(--aui-color-n-10))}.grid__item[_ngcontent-%COMP%]:not(:last-child){margin-bottom:8px}.grid__item[_ngcontent-%COMP%]:not(.grid__item--disabled):hover{border-color:rgb(var(--aui-color-primary));box-shadow:0 0 8px rgba(var(--aui-color-primary),.5)}.grid__item--disabled[_ngcontent-%COMP%]{cursor:default}.grid__item--disabled[_ngcontent-%COMP%], .grid__item--disabled[_ngcontent-%COMP%]:hover{background-color:rgb(var(--aui-color-n-9))}.grid__item--disabled[_ngcontent-%COMP%] .grid__field[_ngcontent-%COMP%]{opacity:.3}.grid__item--disabled[_ngcontent-%COMP%] .grid__field-servicemesh[_ngcontent-%COMP%], .grid__item--disabled[_ngcontent-%COMP%] .grid__field-action[_ngcontent-%COMP%]{opacity:1}.grid__field[_ngcontent-%COMP%]{flex:2;line-height:20px}.grid__field[_ngcontent-%COMP%]:not(.grid__field-status){white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.grid__field[_ngcontent-%COMP%]:not(:last-child){margin-right:20px}.grid__field-servicemesh[_ngcontent-%COMP%]{flex:2;align-items:stretch;max-width:400px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grid__field-servicemesh[_ngcontent-%COMP%] .des[_ngcontent-%COMP%]{font-size:12px;line-height:16px;color:rgb(var(--aui-color-n-4))}.grid__field-servicemesh[_ngcontent-%COMP%] aui-tag[_ngcontent-%COMP%]{margin-left:8px}.grid__field-status[_ngcontent-%COMP%]{display:flex;align-items:center}.grid__field-status[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{font-size:16px;display:inline-flex;margin-right:4px}.grid__field-status[_ngcontent-%COMP%] .with-colon[_ngcontent-%COMP%]{display:none}.grid__field-icon[_ngcontent-%COMP%]{max-width:30px;display:inline-flex}.grid__field-name[_ngcontent-%COMP%]{flex:2;flex-direction:column;max-width:280px}.grid__field-name[_ngcontent-%COMP%] .name[_ngcontent-%COMP%], .grid__field-name[_ngcontent-%COMP%] .des[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grid__field-name[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{font-size:14px;font-weight:500;line-height:20px}.grid__field-name[_ngcontent-%COMP%] .name[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{margin-left:4px}.grid__field-name[_ngcontent-%COMP%] .des[_ngcontent-%COMP%]{font-size:12px;line-height:16px;color:rgb(var(--aui-color-n-4))}.grid__field-action[_ngcontent-%COMP%]{max-width:30px}.grid--popup[_ngcontent-%COMP%]{max-height:382px;padding:12px}.grid--popup[_ngcontent-%COMP%] .grid__field-name[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{font-size:var(--aui-font-size-xl);line-height:var(--aui-line-height-xl);font-weight:var(--aui-font-weight-normal)}.grid--popup[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item[_ngcontent-%COMP%]{padding:10px 20px;min-height:60px;font-size:14px;background-color:rgb(var(--aui-color-n-10))}.grid--popup[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item--selected[_ngcontent-%COMP%]{border:1px solid rgb(var(--aui-color-n-7));border-radius:var(--aui-border-radius-l);background-color:rgb(var(--aui-color-primary));border-color:rgb(var(--aui-color-primary));color:#fff;cursor:default}.grid--popup[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item--selected[_ngcontent-%COMP%]:hover{box-shadow:none}.grid--popup[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item--selected[_ngcontent-%COMP%] .highlighted[_ngcontent-%COMP%]{color:rgb(var(--aui-color-primary));background-color:rgb(var(--aui-color-n-10))}.grid--popup[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item--selected[_ngcontent-%COMP%] .with-colon[_ngcontent-%COMP%]{font-weight:500}.grid--popup[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item--selected[_ngcontent-%COMP%] .des[_ngcontent-%COMP%]{color:#fff}.grid--popup[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item--selected[_ngcontent-%COMP%] .aui-tag--primary{background-color:#fff;color:rgb(var(--aui-color-primary))}.grid--popup--lite[_ngcontent-%COMP%]{background-color:rgb(var(--aui-color-n-10));padding:0}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%]{padding:10px 14px;min-height:44px;border:1px solid rgb(var(--aui-color-n-7))}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] .grid__field[_ngcontent-%COMP%]:not(:last-child){margin-right:12px}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] .grid__field-name[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{font-size:14px;line-height:25px;font-weight:400}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] .grid__field-icon[_ngcontent-%COMP%]{max-width:24px}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] .grid__item-selected-icon[_ngcontent-%COMP%]{display:inline-flex}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] .highlighted[_ngcontent-%COMP%]{color:rgb(var(--aui-color-primary));background-color:rgb(var(--aui-color-n-10))}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] .with-colon[_ngcontent-%COMP%]{font-weight:500}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] .des[_ngcontent-%COMP%]{color:#fff}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] .aui-tag--primary{background-color:#fff;color:rgb(var(--aui-color-primary))}.grid--popup--lite[_ngcontent-%COMP%] .grid__item--selected[_ngcontent-%COMP%]{background-color:rgb(var(--aui-color-b-7));border:1px solid rgb(var(--aui-color-primary))}.grid--popup--lite[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%]:hover{border:1px solid rgb(var(--aui-color-primary));box-shadow:none}.grid--card[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(208px,1fr));gap:20px 20px}.grid--card[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%]{margin-bottom:0;height:290px;display:block;text-align:center;padding:40px 20px;border-radius:var(--aui-border-radius-l);position:relative}.grid--card[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] .belonged-cluster[_ngcontent-%COMP%]{position:static;padding-right:0}.grid--card[_ngcontent-%COMP%] .grid__item[_ngcontent-%COMP%] aui-tag[_ngcontent-%COMP%]{position:absolute;top:8px;right:8px}.grid--card[_ngcontent-%COMP%] .grid__field[_ngcontent-%COMP%]{margin-right:0;justify-content:center}.grid--card[_ngcontent-%COMP%] .grid__field-icon[_ngcontent-%COMP%]{max-width:100%;vertical-align:middle}.grid--card[_ngcontent-%COMP%] .grid__field-name[_ngcontent-%COMP%]{margin:20px 0 24px}.grid--card[_ngcontent-%COMP%] .grid__field-name[_ngcontent-%COMP%] .name[_ngcontent-%COMP%], .grid--card[_ngcontent-%COMP%] .grid__field-name[_ngcontent-%COMP%] .des[_ngcontent-%COMP%]{justify-content:center}.grid--card[_ngcontent-%COMP%] .grid__field-name[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{font-size:20px;font-weight:500;line-height:28px;margin-bottom:2px}.grid--card[_ngcontent-%COMP%] .grid__field-name[_ngcontent-%COMP%] .des[_ngcontent-%COMP%]{font-size:14px;height:20px}.grid--card[_ngcontent-%COMP%] .grid__field-name[_ngcontent-%COMP%] ~ .grid__field[_ngcontent-%COMP%]:not(.grid__field-status){line-height:20px;font-size:14px;text-align:center}.grid--card[_ngcontent-%COMP%] .grid__field-status[_ngcontent-%COMP%] .with-colon[_ngcontent-%COMP%]{display:inline}.grid--card[_ngcontent-%COMP%] .grid__field-servicemesh[_ngcontent-%COMP%]:not(:last-of-type){margin-bottom:4px}.grid--card[_ngcontent-%COMP%] .grid__field-cluster[_ngcontent-%COMP%]{margin-bottom:4px}.grid--card[_ngcontent-%COMP%] .grid__field-action[_ngcontent-%COMP%]{position:absolute;right:10px;top:10px}.grid[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item[_ngcontent-%COMP%]:not(.grid__item--selected){position:relative}.grid[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item[_ngcontent-%COMP%]:not(.grid__item--selected):after{position:absolute;content:\"\";top:0;right:0;bottom:0;left:0;border:1px solid rgb(var(--aui-color-n-7));border-radius:4px;pointer-events:none;transition:all .2s ease-in-out}.grid[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item[_ngcontent-%COMP%]:not(.grid__item--selected).disabled{background-color:rgb(var(--aui-color-n-8));color:rgb(var(--aui-color-n-6));cursor:not-allowed}.grid[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item[_ngcontent-%COMP%]:not(.grid__item--selected):not(.disabled):hover:after{top:-4px;right:-4px;bottom:-4px;left:-4px;border-color:rgb(var(--aui-color-primary));box-shadow:inset 0 0 0 4px rgb(var(--aui-color-n-10)),0 0 8px rgba(var(--aui-color-primary),.5)}.grid[_ngcontent-%COMP%]:not(.grid--popup--lite) .grid__item[_ngcontent-%COMP%]:not(.grid__item--selected):not(.disabled):active:after{top:0;right:0;bottom:0;left:0;box-shadow:0 0 4px rgba(var(--aui-color-primary),.5)}.flex[_ngcontent-%COMP%]{display:flex}.highlighted[_ngcontent-%COMP%]{color:rgb(var(--aui-color-primary));background-color:rgb(var(--aui-color-n-8))}.with-colon[_ngcontent-%COMP%]{font-weight:500}.with-colon[_ngcontent-%COMP%]:after{content:\":\";margin-right:8px}.icon-normal[_ngcontent-%COMP%], .icon-enabled[_ngcontent-%COMP%]{color:rgb(var(--aui-color-green))}.icon-abnormal[_ngcontent-%COMP%]{color:rgb(var(--aui-color-red))}.icon-disabled[_ngcontent-%COMP%]{color:rgb(var(--aui-color-n-6))}.belonged-cluster[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;padding-right:44px}.belonged-cluster[_ngcontent-%COMP%] .with-colon[_ngcontent-%COMP%] + span[_ngcontent-%COMP%]{margin-right:8px}.belonged-cluster[_ngcontent-%COMP%] aui-tag[_ngcontent-%COMP%]{display:inline-flex}.loading[_ngcontent-%COMP%]{display:flex;height:60px;align-items:center;justify-content:center}acl-resource-no-data[_ngcontent-%COMP%]{flex:1;margin:40px 0 80px}acl-zero-state[_ngcontent-%COMP%] .zero-placeholder{min-height:44px;padding:12px 10px}"], changeDetection: 0 }); }
550
550
  }
551
551
  __decorate([
552
552
  ObservableInput(),
@@ -554,7 +554,7 @@ __decorate([
554
554
  ], ResourceDataGridComponent.prototype, "data$", void 0);
555
555
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ResourceDataGridComponent, [{
556
556
  type: Component,
557
- args: [{ selector: 'acl-resource-data-grid', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"header\">\n <span\n class=\"header__title\"\n [ngClass]=\"{ 'header__title--lite': popupLite }\"\n >\n <span>{{ type | pure: pluralForm | translate }}</span\n ><span class=\"header__desc\"\n >\uFF08{{ (displayData$ | async)?.length || 0 }}\uFF09</span\n >\n </span>\n <div\n class=\"header__custom\"\n *ngIf=\"!popupLite\"\n >\n <ng-content select=\"[aclResourceGridHeader]\"></ng-content>\n </div>\n <div\n class=\"tw-flex-1\"\n *ngIf=\"popupLite\"\n ></div>\n <aui-search\n [searchButton]=\"false\"\n [placeholder]=\"'filter_by_name' | translate\"\n [keyword]=\"keyword\"\n (keywordChange)=\"keywordChange($event)\"\n [clearable]=\"true\"\n size=\"small\"\n ></aui-search>\n <span\n class=\"header__display-mode\"\n *ngIf=\"context === 'page'\"\n >\n <span\n class=\"switch-btn\"\n [ngClass]=\"{ 'switch-btn--selected': displayMode !== 'card' }\"\n (click)=\"setDisplayMode('row')\"\n >\n <aui-icon icon=\"list\"></aui-icon>\n </span>\n <span\n class=\"switch-btn\"\n [ngClass]=\"{ 'switch-btn--selected': displayMode === 'card' }\"\n (click)=\"setDisplayMode('card')\"\n >\n <aui-icon icon=\"grid\"></aui-icon>\n </span>\n </span>\n</div>\n<ng-container\n *ngIf=\"\n !loading &&\n (displayData$\n | async\n | pure: sortWithoutIstio\n | pure: filterDisabledData:context) as displayData\n \"\n>\n <div\n class=\"grid\"\n *ngIf=\"displayData.length\"\n #grid\n [ngClass]=\"{\n 'grid--card': displayMode === 'card' && context !== 'popup',\n 'grid--popup': context === 'popup',\n 'grid--popup--lite': context === 'popup' && popupLite\n }\"\n >\n <div\n class=\"grid__item\"\n *ngFor=\"let item of displayData\"\n [ngClass]=\"{\n 'grid__item--selected':\n context === 'popup' && selectedUid === item.__origin.metadata.uid,\n 'grid__item--disabled': item.state?.disabled\n }\"\n (click)=\"onSelect(item)\"\n [attr.data-test]=\"item.name + '/' + item.cluster\"\n [auiTooltip]=\"item.state?.tooltip\"\n [auiTooltipDisabled]=\"!item.state?.disabled || !item.state?.tooltip\"\n >\n <aui-icon\n *ngIf=\"selectedUid === item.__origin.metadata.uid\"\n class=\"check-triangle-badge\"\n icon=\"check\"\n ></aui-icon>\n <!-- icon -->\n <div class=\"grid__field grid__field-icon\">\n <acl-resource-icon\n [type]=\"type\"\n [color]=\"\n context === 'popup' &&\n !popupLite &&\n selectedUid === item.__origin.metadata.uid\n ? 'white'\n : 'blue'\n \"\n [displayMode]=\"displayMode\"\n ></acl-resource-icon>\n </div>\n <!-- name -->\n <div class=\"grid__field grid__field-name\">\n <div class=\"name\">\n <ng-container *ngFor=\"let str of getHighlightedNameStrs(item)\">\n <span [ngClass]=\"{ highlighted: str.isHighlighted }\">{{\n str.text\n }}</span>\n </ng-container>\n </div>\n <div\n class=\"des\"\n *ngIf=\"!popupLite\"\n >\n <ng-container *ngIf=\"item.displayName\">{{\n item.displayName\n }}</ng-container>\n </div>\n </div>\n <!-- ns: cluster -->\n <div\n class=\"grid__field flex grid__field-cluster\"\n *ngIf=\"fields.includes(fieldsDef.Cluster)\"\n >\n <span\n class=\"belonged-cluster tw-flex\"\n auiTooltip=\"{{\n ('belonged_cluster' | translate) + ': ' + item.cluster\n }}\"\n >\n <span class=\"with-colon\">{{ 'belonged_cluster' | translate }}</span>\n <span class=\"tw-text-ellipsis tw-overflow-hidden\"\n >{{ item.cluster\n }}<ng-container *ngIf=\"item.clusterDisplayName\"\n >({{ item.clusterDisplayName }})</ng-container\n >\n </span>\n <aui-tag\n type=\"primary\"\n size=\"mini\"\n *ngIf=\"item.clusterArch\"\n >\n {{ item.clusterArch }}\n </aui-tag>\n </span>\n </div>\n <!-- project: status -->\n <div\n class=\"grid__field grid__field-status {{\n 'grid__field-status--' + item.status\n }}\"\n *ngIf=\"fields.includes(fieldsDef.Status)\"\n >\n <label\n *ngIf=\"popupLite\"\n class=\"tw-text-help-text tw-mr-8\"\n >{{ 'status' | translate }}:</label\n >\n <span class=\"with-colon\">{{ 'status' | translate }}</span>\n <aui-icon\n [icon]=\"statusIcon[item.status]\"\n [background]=\"\n statusIcon[item.status].endsWith('_triangle_s')\n ? 'triangle'\n : 'circle'\n \"\n class=\"{{ 'icon-' + item.status }}\"\n ></aui-icon>\n {{ item.status | translate }}\n </div>\n <!-- asm: service mesh -->\n <div\n class=\"grid__field grid__field-servicemesh\"\n *ngIf=\"fields.includes(fieldsDef.ServiceMesh)\"\n >\n <span class=\"with-colon\">{{ 'belonged_servicemesh' | translate }}</span>\n <span> {{ item.serviceMeshName }} </span>\n <div class=\"des\">\n <ng-container *ngIf=\"item.serviceMeshIstioVersion\"\n >(Istio {{ item.serviceMeshIstioVersion }})</ng-container\n >\n </div>\n </div>\n\n <div\n class=\"grid__field grid__field-servicemesh\"\n *ngIf=\"fields.includes(fieldsDef.ServiceMesh)\"\n >\n <span class=\"with-colon\">{{ 'cluster' | translate }}</span>\n <span\n >{{ item.cluster\n }}<ng-container *ngIf=\"item.clusterDisplayName\"\n >({{ item.clusterDisplayName }})</ng-container\n >\n </span>\n <aui-tag\n type=\"primary\"\n size=\"mini\"\n *ngIf=\"item.clusterArch\"\n >\n {{ item.clusterArch }}\n </aui-tag>\n </div>\n\n <!-- mesh group -->\n\n <div\n class=\"grid__field grid__field-servicemesh\"\n *ngIf=\"fields.includes(fieldsDef.ServiceMeshGroup)\"\n >\n <span class=\"with-colon\">{{ 'cluster' | translate }}</span>\n <span>{{ item.cluster }} </span>\n </div>\n <!-- asm: istio -->\n <div\n class=\"grid__field grid__field-servicemesh\"\n *ngIf=\"fields.includes(fieldsDef.ServiceMeshGroup)\"\n >\n <span class=\"with-colon\">{{ 'Istio' }}</span>\n <span\n >{{ item.serviceMeshIstioVersion || ('not_deployed' | translate) }}\n </span>\n </div>\n\n <!-- time -->\n <div\n class=\"grid__field grid__field-time\"\n *ngIf=\"fields.includes(fieldsDef.Time) && !popupLite\"\n >\n <span class=\"with-colon\">{{ 'created_at' | translate }}</span>\n <span>{{ item.timestamp | aclRelativeTime }}</span>\n </div>\n <!-- action -->\n <div\n class=\"grid__field grid__field-action\"\n (click)=\"$event.stopPropagation()\"\n *ngIf=\"\n fields.includes(fieldsDef.Action) &&\n actionTemplateRef &&\n context !== 'popup'\n \"\n >\n <ng-container\n [ngTemplateOutlet]=\"actionTemplateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.__origin\n }\"\n ></ng-container>\n </div>\n </div>\n </div>\n <acl-resource-no-data\n *ngIf=\"!popupLite && !(displayData$ | async)?.length\"\n [isFiltered]=\"!!keyword\"\n [type]=\"type\"\n (refresh)=\"reload.emit()\"\n (clear)=\"keywordChange('')\"\n ></acl-resource-no-data>\n <acl-zero-state\n *ngIf=\"popupLite && !(displayData$ | async)?.length\"\n context=\"table\"\n ></acl-zero-state>\n</ng-container>\n<div\n class=\"loading\"\n *ngIf=\"loading\"\n>\n <acl-loading-mask\n [loading]=\"loading\"\n type=\"content\"\n ></acl-loading-mask>\n</div>\n", styles: [":host{display:flex;flex-direction:column;box-shadow:0 0 4px rgba(var(--aui-color-n-1),.16);padding:22px 20px 20px;background-color:rgb(var(--aui-color-n-10));border-radius:4px}.header{display:flex;align-items:center;margin-bottom:20px;height:28px}.header aui-search{width:260px}.header__title{font-size:18px;font-weight:500;line-height:28px;color:rgb(var(--aui-color-n-1))}.header__title--lite{font-size:16px;font-weight:700;line-height:22px}.header__desc{color:rgb(var(--aui-color-n-4))}.header__custom{flex:1;padding:0 36px}.header__display-mode{display:flex;border:1px solid rgb(var(--aui-color-n-7));background-color:rgb(var(--aui-color-n-9));border-radius:var(--aui-border-radius-m);margin-left:16px;padding:1px}.switch-btn{cursor:pointer;width:24px;height:24px;border-radius:var(--aui-border-radius-m);display:inline-flex;align-items:center;justify-content:center}.switch-btn img{width:12px;height:12px}.switch-btn--selected{background-color:rgb(var(--aui-color-n-10));color:rgb(var(--aui-color-primary))}.grid{overflow-y:auto;padding:20px;background-color:rgb(var(--aui-color-n-9));border-radius:var(--aui-border-radius-l)}.grid::-webkit-scrollbar{width:4px;height:4px}.grid::-webkit-scrollbar-thumb{border-radius:2px;background-color:rgba(var(--aui-color-n-1),.2)}.grid::-webkit-scrollbar-corner{background-color:transparent}.grid__item{display:flex;position:relative;flex-direction:row;border-radius:var(--aui-border-radius-l);padding:9px 20px;min-height:60px;color:rgb(var(--aui-color-n-1));align-items:center;cursor:pointer;background-color:rgb(var(--aui-color-n-10))}.grid__item:not(:last-child){margin-bottom:8px}.grid__item:not(.grid__item--disabled):hover{border-color:rgb(var(--aui-color-primary));box-shadow:0 0 8px rgba(var(--aui-color-primary),.5)}.grid__item--disabled{cursor:default}.grid__item--disabled,.grid__item--disabled:hover{background-color:rgb(var(--aui-color-n-9))}.grid__item--disabled .grid__field{opacity:.3}.grid__item--disabled .grid__field-servicemesh,.grid__item--disabled .grid__field-action{opacity:1}.grid__field{flex:2;line-height:20px}.grid__field:not(.grid__field-status){white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.grid__field:not(:last-child){margin-right:20px}.grid__field-servicemesh{flex:2;align-items:stretch;max-width:400px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grid__field-servicemesh .des{font-size:12px;line-height:16px;color:rgb(var(--aui-color-n-4))}.grid__field-servicemesh aui-tag{margin-left:8px}.grid__field-status{display:flex;align-items:center}.grid__field-status aui-icon{font-size:16px;display:inline-flex;margin-right:4px}.grid__field-status .with-colon{display:none}.grid__field-icon{max-width:30px;display:inline-flex}.grid__field-name{flex:2;flex-direction:column;max-width:280px}.grid__field-name .name,.grid__field-name .des{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grid__field-name .name{font-size:14px;font-weight:500;line-height:20px}.grid__field-name .name aui-icon{margin-left:4px}.grid__field-name .des{font-size:12px;line-height:16px;color:rgb(var(--aui-color-n-4))}.grid__field-action{max-width:30px}.grid--popup{max-height:382px;padding:12px}.grid--popup .grid__field-name .name{font-size:var(--aui-font-size-xl);line-height:var(--aui-line-height-xl);font-weight:var(--aui-font-weight-normal)}.grid--popup:not(.grid--popup--lite) .grid__item{padding:10px 20px;min-height:60px;font-size:14px;background-color:rgb(var(--aui-color-n-10))}.grid--popup:not(.grid--popup--lite) .grid__item--selected{border:1px solid rgb(var(--aui-color-n-7));border-radius:var(--aui-border-radius-l);background-color:rgb(var(--aui-color-primary));border-color:rgb(var(--aui-color-primary));color:#fff;cursor:default}.grid--popup:not(.grid--popup--lite) .grid__item--selected:hover{box-shadow:none}.grid--popup:not(.grid--popup--lite) .grid__item--selected .highlighted{color:rgb(var(--aui-color-primary));background-color:rgb(var(--aui-color-n-10))}.grid--popup:not(.grid--popup--lite) .grid__item--selected .with-colon{font-weight:500}.grid--popup:not(.grid--popup--lite) .grid__item--selected .des{color:#fff}.grid--popup:not(.grid--popup--lite) .grid__item--selected ::ng-deep .aui-tag--primary{background-color:#fff;color:rgb(var(--aui-color-primary))}.grid--popup--lite{background-color:rgb(var(--aui-color-n-10));padding:0}.grid--popup--lite .grid__item{padding:10px 14px;min-height:44px;border:1px solid rgb(var(--aui-color-n-7))}.grid--popup--lite .grid__item .grid__field:not(:last-child){margin-right:12px}.grid--popup--lite .grid__item .grid__field-name .name{font-size:14px;line-height:25px;font-weight:400}.grid--popup--lite .grid__item .grid__field-icon{max-width:24px}.grid--popup--lite .grid__item .grid__item-selected-icon{display:inline-flex}.grid--popup--lite .grid__item .highlighted{color:rgb(var(--aui-color-primary));background-color:rgb(var(--aui-color-n-10))}.grid--popup--lite .grid__item .with-colon{font-weight:500}.grid--popup--lite .grid__item .des{color:#fff}.grid--popup--lite .grid__item ::ng-deep .aui-tag--primary{background-color:#fff;color:rgb(var(--aui-color-primary))}.grid--popup--lite .grid__item--selected{background-color:rgb(var(--aui-color-b-7));border:1px solid rgb(var(--aui-color-primary))}.grid--popup--lite .grid__item:hover{border:1px solid rgb(var(--aui-color-primary));box-shadow:none}.grid--card{display:grid;grid-template-columns:repeat(auto-fill,minmax(208px,1fr));gap:20px 20px}.grid--card .grid__item{margin-bottom:0;height:290px;display:block;text-align:center;padding:40px 20px;border-radius:var(--aui-border-radius-l);position:relative}.grid--card .grid__item .belonged-cluster{position:static;padding-right:0}.grid--card .grid__item aui-tag{position:absolute;top:8px;right:8px}.grid--card .grid__field{margin-right:0;justify-content:center}.grid--card .grid__field-icon{max-width:100%;vertical-align:middle}.grid--card .grid__field-name{margin:20px 0 24px}.grid--card .grid__field-name .name,.grid--card .grid__field-name .des{justify-content:center}.grid--card .grid__field-name .name{font-size:20px;font-weight:500;line-height:28px;margin-bottom:2px}.grid--card .grid__field-name .des{font-size:14px;height:20px}.grid--card .grid__field-name~.grid__field:not(.grid__field-status){line-height:20px;font-size:14px;text-align:center}.grid--card .grid__field-status .with-colon{display:inline}.grid--card .grid__field-servicemesh:not(:last-of-type){margin-bottom:4px}.grid--card .grid__field-cluster{margin-bottom:4px}.grid--card .grid__field-action{position:absolute;right:10px;top:10px}.grid:not(.grid--popup--lite) .grid__item:not(.grid__item--selected){position:relative}.grid:not(.grid--popup--lite) .grid__item:not(.grid__item--selected):after{position:absolute;content:\"\";top:0;right:0;bottom:0;left:0;border:1px solid rgb(var(--aui-color-n-7));border-radius:4px;pointer-events:none;transition:all .2s ease-in-out}.grid:not(.grid--popup--lite) .grid__item:not(.grid__item--selected).disabled{background-color:rgb(var(--aui-color-n-8));color:rgb(var(--aui-color-n-6));cursor:not-allowed}.grid:not(.grid--popup--lite) .grid__item:not(.grid__item--selected):not(.disabled):hover:after{top:-4px;right:-4px;bottom:-4px;left:-4px;border-color:rgb(var(--aui-color-primary));box-shadow:inset 0 0 0 4px rgb(var(--aui-color-n-10)),0 0 8px rgba(var(--aui-color-primary),.5)}.grid:not(.grid--popup--lite) .grid__item:not(.grid__item--selected):not(.disabled):active:after{top:0;right:0;bottom:0;left:0;box-shadow:0 0 4px rgba(var(--aui-color-primary),.5)}.flex{display:flex}.highlighted{color:rgb(var(--aui-color-primary));background-color:rgb(var(--aui-color-n-8))}.with-colon{font-weight:500}.with-colon:after{content:\":\";margin-right:8px}.icon-normal,.icon-enabled{color:rgb(var(--aui-color-green))}.icon-abnormal{color:rgb(var(--aui-color-red))}.icon-disabled{color:rgb(var(--aui-color-n-6))}.belonged-cluster{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;padding-right:44px}.belonged-cluster .with-colon+span{margin-right:8px}.belonged-cluster aui-tag{display:inline-flex}.loading{display:flex;height:60px;align-items:center;justify-content:center}acl-resource-no-data{flex:1;margin:40px 0 80px}acl-zero-state ::ng-deep .zero-placeholder{min-height:44px;padding:12px 10px}\n"] }]
557
+ args: [{ selector: 'acl-resource-data-grid', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"header\">\n <span\n class=\"header__title\"\n [ngClass]=\"{ 'header__title--lite': popupLite }\"\n >\n <span>{{ type | pure: pluralForm | translate }}</span\n ><span class=\"header__desc\"\n >\uFF08{{ (displayData$ | async)?.length || 0 }}\uFF09</span\n >\n </span>\n <div\n class=\"header__custom\"\n *ngIf=\"!popupLite\"\n >\n <ng-content select=\"[aclResourceGridHeader]\"></ng-content>\n </div>\n <div\n class=\"tw-flex-1\"\n *ngIf=\"popupLite\"\n ></div>\n <aui-search\n [searchButton]=\"false\"\n [placeholder]=\"'filter_by_name' | translate\"\n [keyword]=\"keyword\"\n (keywordChange)=\"keywordChange($event)\"\n [clearable]=\"true\"\n size=\"small\"\n ></aui-search>\n <span\n class=\"header__display-mode\"\n *ngIf=\"context === 'page'\"\n >\n <span\n class=\"switch-btn\"\n [ngClass]=\"{ 'switch-btn--selected': displayMode !== 'card' }\"\n (click)=\"setDisplayMode('row')\"\n >\n <aui-icon icon=\"list\"></aui-icon>\n </span>\n <span\n class=\"switch-btn\"\n [ngClass]=\"{ 'switch-btn--selected': displayMode === 'card' }\"\n (click)=\"setDisplayMode('card')\"\n >\n <aui-icon icon=\"grid\"></aui-icon>\n </span>\n </span>\n</div>\n<ng-container\n *ngIf=\"\n !loading &&\n (displayData$\n | async\n | pure: sortWithoutIstio\n | pure: filterDisabledData:context) as displayData\n \"\n>\n <div\n class=\"grid\"\n *ngIf=\"displayData.length\"\n #grid\n [ngClass]=\"{\n 'grid--card': displayMode === 'card' && context !== 'popup',\n 'grid--popup': context === 'popup',\n 'grid--popup--lite': context === 'popup' && popupLite\n }\"\n >\n <div\n class=\"grid__item\"\n *ngFor=\"let item of displayData\"\n [ngClass]=\"{\n 'grid__item--selected':\n context === 'popup' && selectedUid === item.__origin.metadata.uid,\n 'grid__item--disabled': item.state?.disabled\n }\"\n (click)=\"onSelect(item)\"\n [attr.data-test]=\"item.name + '/' + item.cluster\"\n [auiTooltip]=\"item.state?.tooltip\"\n [auiTooltipDisabled]=\"!item.state?.disabled || !item.state?.tooltip\"\n >\n <aui-icon\n *ngIf=\"selectedUid === item.__origin.metadata.uid\"\n class=\"check-triangle-badge\"\n icon=\"check\"\n ></aui-icon>\n <!-- icon -->\n <div class=\"grid__field grid__field-icon\">\n <acl-resource-icon\n [type]=\"type\"\n [color]=\"\n context === 'popup' &&\n !popupLite &&\n selectedUid === item.__origin.metadata.uid\n ? 'white'\n : 'blue'\n \"\n [displayMode]=\"displayMode\"\n ></acl-resource-icon>\n </div>\n <!-- name -->\n <div class=\"grid__field grid__field-name\">\n <div class=\"name\">\n <ng-container *ngFor=\"let str of getHighlightedNameStrs(item)\">\n <span [ngClass]=\"{ highlighted: str.isHighlighted }\">{{\n str.text\n }}</span>\n </ng-container>\n </div>\n <div\n class=\"des\"\n *ngIf=\"!popupLite\"\n >\n <ng-container *ngIf=\"item.displayName\">{{\n item.displayName\n }}</ng-container>\n </div>\n </div>\n <!-- ns: cluster -->\n <div\n class=\"grid__field flex grid__field-cluster\"\n *ngIf=\"fields.includes(fieldsDef.Cluster)\"\n >\n <span\n class=\"belonged-cluster tw-flex\"\n auiTooltip=\"{{\n ('belonged_cluster' | translate) + ': ' + item.cluster\n }}\"\n >\n <span class=\"with-colon\">{{ 'belonged_cluster' | translate }}</span>\n <span class=\"tw-text-ellipsis tw-overflow-hidden\"\n >{{ item.cluster\n }}<ng-container *ngIf=\"item.clusterDisplayName\"\n >({{ item.clusterDisplayName }})</ng-container\n >\n </span>\n <aui-tag\n type=\"primary\"\n size=\"mini\"\n *ngIf=\"item.clusterArch\"\n >\n {{ item.clusterArch }}\n </aui-tag>\n </span>\n </div>\n <!-- project: status -->\n <div\n class=\"grid__field grid__field-status {{\n 'grid__field-status--' + item.status\n }}\"\n *ngIf=\"fields.includes(fieldsDef.Status)\"\n >\n <label\n *ngIf=\"popupLite\"\n class=\"tw-text-help-text tw-mr-8\"\n >{{ 'status' | translate }}:</label\n >\n <span class=\"with-colon\">{{ 'status' | translate }}</span>\n <aui-icon\n [icon]=\"statusIcon[item.status]\"\n [background]=\"\n statusIcon[item.status].endsWith('_triangle_s')\n ? 'triangle'\n : 'circle'\n \"\n class=\"{{ 'icon-' + item.status }}\"\n ></aui-icon>\n {{ item.status | translate }}\n </div>\n <!-- asm: service mesh -->\n <div\n class=\"grid__field grid__field-servicemesh\"\n *ngIf=\"fields.includes(fieldsDef.ServiceMesh)\"\n >\n <span class=\"with-colon\">{{ 'belonged_servicemesh' | translate }}</span>\n <span> {{ item.serviceMeshName }} </span>\n <div class=\"des\">\n <ng-container *ngIf=\"item.serviceMeshIstioVersion\"\n >(Istio {{ item.serviceMeshIstioVersion }})</ng-container\n >\n </div>\n </div>\n\n <div\n class=\"grid__field grid__field-servicemesh\"\n *ngIf=\"fields.includes(fieldsDef.ServiceMesh)\"\n >\n <span class=\"with-colon\">{{ 'cluster' | translate }}</span>\n <span\n >{{ item.cluster\n }}<ng-container *ngIf=\"item.clusterDisplayName\"\n >({{ item.clusterDisplayName }})</ng-container\n >\n </span>\n <aui-tag\n type=\"primary\"\n size=\"mini\"\n *ngIf=\"item.clusterArch\"\n >\n {{ item.clusterArch }}\n </aui-tag>\n </div>\n\n <!-- mesh group -->\n\n <div\n class=\"grid__field grid__field-servicemesh\"\n *ngIf=\"fields.includes(fieldsDef.ServiceMeshGroup)\"\n >\n <span class=\"with-colon\">{{ 'cluster' | translate }}</span>\n <span>{{ item.cluster }} </span>\n </div>\n <!-- asm: istio -->\n <div\n class=\"grid__field grid__field-servicemesh\"\n *ngIf=\"fields.includes(fieldsDef.ServiceMeshGroup)\"\n >\n <span class=\"with-colon\">{{ 'Istio' }}</span>\n <span\n >{{ item.serviceMeshIstioVersion || ('not_deployed' | translate) }}\n </span>\n </div>\n\n <!-- time -->\n <div\n class=\"grid__field grid__field-time\"\n *ngIf=\"fields.includes(fieldsDef.Time) && !popupLite\"\n >\n <span class=\"with-colon\">{{ 'created_at' | translate }}</span>\n <span>{{ item.timestamp | aclRelativeTime }}</span>\n </div>\n <!-- action -->\n <div\n class=\"grid__field grid__field-action\"\n (click)=\"$event.stopPropagation()\"\n *ngIf=\"\n fields.includes(fieldsDef.Action) &&\n actionTemplateRef &&\n context !== 'popup'\n \"\n >\n <ng-container\n [ngTemplateOutlet]=\"actionTemplateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.__origin\n }\"\n ></ng-container>\n </div>\n </div>\n </div>\n <acl-resource-no-data\n *ngIf=\"!popupLite && !(displayData$ | async)?.length\"\n [isFiltered]=\"!!keyword\"\n [type]=\"type\"\n (refresh)=\"reload.emit()\"\n (clear)=\"keywordChange('')\"\n ></acl-resource-no-data>\n <acl-zero-state\n *ngIf=\"popupLite && !(displayData$ | async)?.length\"\n context=\"table\"\n ></acl-zero-state>\n</ng-container>\n<div\n class=\"loading\"\n *ngIf=\"loading\"\n>\n <acl-loading-mask\n [loading]=\"loading\"\n type=\"content\"\n ></acl-loading-mask>\n</div>\n", styles: [":host{display:flex;flex-direction:column;box-shadow:0 0 4px rgba(var(--aui-color-n-1),.16);padding:22px 20px 20px;background-color:rgb(var(--aui-color-n-10));border-radius:4px}.header{display:flex;align-items:center;margin-bottom:20px;height:28px}.header aui-search{width:260px}.header__title{font-size:18px;font-weight:500;line-height:28px;color:rgb(var(--aui-color-n-1))}.header__title--lite{font-size:16px;font-weight:700;line-height:22px}.header__desc{color:rgb(var(--aui-color-n-4))}.header__custom{flex:1;padding:0 36px}.header__display-mode{display:flex;border:1px solid rgb(var(--aui-color-n-7));background-color:rgb(var(--aui-color-n-9));border-radius:var(--aui-border-radius-m);margin-left:16px;padding:1px}.switch-btn{cursor:pointer;width:24px;height:24px;border-radius:var(--aui-border-radius-m);display:inline-flex;align-items:center;justify-content:center}.switch-btn img{width:12px;height:12px}.switch-btn--selected{background-color:rgb(var(--aui-color-n-10));color:rgb(var(--aui-color-primary))}.grid{overflow-y:auto;padding:20px;background-color:rgb(var(--aui-color-n-9));border-radius:var(--aui-border-radius-l)}.grid::-webkit-scrollbar{width:8px;height:4px}.grid::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgb(var(--aui-color-n-7))}.grid::-webkit-scrollbar-thumb:hover{background-color:rgb(var(--aui-color-n-5))}.grid::-webkit-scrollbar-corner{background-color:transparent}.grid__item{display:flex;position:relative;flex-direction:row;border-radius:var(--aui-border-radius-l);padding:9px 20px;min-height:60px;color:rgb(var(--aui-color-n-1));align-items:center;cursor:pointer;background-color:rgb(var(--aui-color-n-10))}.grid__item:not(:last-child){margin-bottom:8px}.grid__item:not(.grid__item--disabled):hover{border-color:rgb(var(--aui-color-primary));box-shadow:0 0 8px rgba(var(--aui-color-primary),.5)}.grid__item--disabled{cursor:default}.grid__item--disabled,.grid__item--disabled:hover{background-color:rgb(var(--aui-color-n-9))}.grid__item--disabled .grid__field{opacity:.3}.grid__item--disabled .grid__field-servicemesh,.grid__item--disabled .grid__field-action{opacity:1}.grid__field{flex:2;line-height:20px}.grid__field:not(.grid__field-status){white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.grid__field:not(:last-child){margin-right:20px}.grid__field-servicemesh{flex:2;align-items:stretch;max-width:400px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grid__field-servicemesh .des{font-size:12px;line-height:16px;color:rgb(var(--aui-color-n-4))}.grid__field-servicemesh aui-tag{margin-left:8px}.grid__field-status{display:flex;align-items:center}.grid__field-status aui-icon{font-size:16px;display:inline-flex;margin-right:4px}.grid__field-status .with-colon{display:none}.grid__field-icon{max-width:30px;display:inline-flex}.grid__field-name{flex:2;flex-direction:column;max-width:280px}.grid__field-name .name,.grid__field-name .des{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grid__field-name .name{font-size:14px;font-weight:500;line-height:20px}.grid__field-name .name aui-icon{margin-left:4px}.grid__field-name .des{font-size:12px;line-height:16px;color:rgb(var(--aui-color-n-4))}.grid__field-action{max-width:30px}.grid--popup{max-height:382px;padding:12px}.grid--popup .grid__field-name .name{font-size:var(--aui-font-size-xl);line-height:var(--aui-line-height-xl);font-weight:var(--aui-font-weight-normal)}.grid--popup:not(.grid--popup--lite) .grid__item{padding:10px 20px;min-height:60px;font-size:14px;background-color:rgb(var(--aui-color-n-10))}.grid--popup:not(.grid--popup--lite) .grid__item--selected{border:1px solid rgb(var(--aui-color-n-7));border-radius:var(--aui-border-radius-l);background-color:rgb(var(--aui-color-primary));border-color:rgb(var(--aui-color-primary));color:#fff;cursor:default}.grid--popup:not(.grid--popup--lite) .grid__item--selected:hover{box-shadow:none}.grid--popup:not(.grid--popup--lite) .grid__item--selected .highlighted{color:rgb(var(--aui-color-primary));background-color:rgb(var(--aui-color-n-10))}.grid--popup:not(.grid--popup--lite) .grid__item--selected .with-colon{font-weight:500}.grid--popup:not(.grid--popup--lite) .grid__item--selected .des{color:#fff}.grid--popup:not(.grid--popup--lite) .grid__item--selected ::ng-deep .aui-tag--primary{background-color:#fff;color:rgb(var(--aui-color-primary))}.grid--popup--lite{background-color:rgb(var(--aui-color-n-10));padding:0}.grid--popup--lite .grid__item{padding:10px 14px;min-height:44px;border:1px solid rgb(var(--aui-color-n-7))}.grid--popup--lite .grid__item .grid__field:not(:last-child){margin-right:12px}.grid--popup--lite .grid__item .grid__field-name .name{font-size:14px;line-height:25px;font-weight:400}.grid--popup--lite .grid__item .grid__field-icon{max-width:24px}.grid--popup--lite .grid__item .grid__item-selected-icon{display:inline-flex}.grid--popup--lite .grid__item .highlighted{color:rgb(var(--aui-color-primary));background-color:rgb(var(--aui-color-n-10))}.grid--popup--lite .grid__item .with-colon{font-weight:500}.grid--popup--lite .grid__item .des{color:#fff}.grid--popup--lite .grid__item ::ng-deep .aui-tag--primary{background-color:#fff;color:rgb(var(--aui-color-primary))}.grid--popup--lite .grid__item--selected{background-color:rgb(var(--aui-color-b-7));border:1px solid rgb(var(--aui-color-primary))}.grid--popup--lite .grid__item:hover{border:1px solid rgb(var(--aui-color-primary));box-shadow:none}.grid--card{display:grid;grid-template-columns:repeat(auto-fill,minmax(208px,1fr));gap:20px 20px}.grid--card .grid__item{margin-bottom:0;height:290px;display:block;text-align:center;padding:40px 20px;border-radius:var(--aui-border-radius-l);position:relative}.grid--card .grid__item .belonged-cluster{position:static;padding-right:0}.grid--card .grid__item aui-tag{position:absolute;top:8px;right:8px}.grid--card .grid__field{margin-right:0;justify-content:center}.grid--card .grid__field-icon{max-width:100%;vertical-align:middle}.grid--card .grid__field-name{margin:20px 0 24px}.grid--card .grid__field-name .name,.grid--card .grid__field-name .des{justify-content:center}.grid--card .grid__field-name .name{font-size:20px;font-weight:500;line-height:28px;margin-bottom:2px}.grid--card .grid__field-name .des{font-size:14px;height:20px}.grid--card .grid__field-name~.grid__field:not(.grid__field-status){line-height:20px;font-size:14px;text-align:center}.grid--card .grid__field-status .with-colon{display:inline}.grid--card .grid__field-servicemesh:not(:last-of-type){margin-bottom:4px}.grid--card .grid__field-cluster{margin-bottom:4px}.grid--card .grid__field-action{position:absolute;right:10px;top:10px}.grid:not(.grid--popup--lite) .grid__item:not(.grid__item--selected){position:relative}.grid:not(.grid--popup--lite) .grid__item:not(.grid__item--selected):after{position:absolute;content:\"\";top:0;right:0;bottom:0;left:0;border:1px solid rgb(var(--aui-color-n-7));border-radius:4px;pointer-events:none;transition:all .2s ease-in-out}.grid:not(.grid--popup--lite) .grid__item:not(.grid__item--selected).disabled{background-color:rgb(var(--aui-color-n-8));color:rgb(var(--aui-color-n-6));cursor:not-allowed}.grid:not(.grid--popup--lite) .grid__item:not(.grid__item--selected):not(.disabled):hover:after{top:-4px;right:-4px;bottom:-4px;left:-4px;border-color:rgb(var(--aui-color-primary));box-shadow:inset 0 0 0 4px rgb(var(--aui-color-n-10)),0 0 8px rgba(var(--aui-color-primary),.5)}.grid:not(.grid--popup--lite) .grid__item:not(.grid__item--selected):not(.disabled):active:after{top:0;right:0;bottom:0;left:0;box-shadow:0 0 4px rgba(var(--aui-color-primary),.5)}.flex{display:flex}.highlighted{color:rgb(var(--aui-color-primary));background-color:rgb(var(--aui-color-n-8))}.with-colon{font-weight:500}.with-colon:after{content:\":\";margin-right:8px}.icon-normal,.icon-enabled{color:rgb(var(--aui-color-green))}.icon-abnormal{color:rgb(var(--aui-color-red))}.icon-disabled{color:rgb(var(--aui-color-n-6))}.belonged-cluster{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;padding-right:44px}.belonged-cluster .with-colon+span{margin-right:8px}.belonged-cluster aui-tag{display:inline-flex}.loading{display:flex;height:60px;align-items:center;justify-content:center}acl-resource-no-data{flex:1;margin:40px 0 80px}acl-zero-state ::ng-deep .zero-placeholder{min-height:44px;padding:12px 10px}\n"] }]
558
558
  }], null, { grid: [{
559
559
  type: ViewChild,
560
560
  args: ['grid']