@seniorsistemas/angular-components 19.9.5 → 19.9.6-develop-0a6c6c51

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 (123) hide show
  1. package/accordion/package.json +3 -0
  2. package/alert/package.json +3 -0
  3. package/autocomplete/package.json +3 -0
  4. package/badge/package.json +3 -0
  5. package/bignumber-input/package.json +3 -0
  6. package/breadcrumb/package.json +3 -0
  7. package/button/package.json +3 -0
  8. package/calendar-mask/package.json +3 -0
  9. package/card/package.json +3 -0
  10. package/chat/package.json +3 -0
  11. package/checkbox/package.json +3 -0
  12. package/checkbox-list/package.json +3 -0
  13. package/chips/lib/chips/chip-item/chip-item.component.d.ts +10 -4
  14. package/chips/lib/chips/chips/chips.component.d.ts +0 -1
  15. package/chips/package.json +3 -0
  16. package/chips/public-api.d.ts +3 -2
  17. package/code-editor/package.json +3 -0
  18. package/collapse-link/package.json +3 -0
  19. package/common/deprecated-selector/package.json +3 -0
  20. package/common/package.json +3 -0
  21. package/confirm-dialog/package.json +3 -0
  22. package/content-generator/package.json +3 -0
  23. package/control-errors/package.json +3 -0
  24. package/country-phone-picker/package.json +3 -0
  25. package/currency/package.json +3 -0
  26. package/custom-fields/package.json +3 -0
  27. package/datepicker/package.json +3 -0
  28. package/dialog/package.json +3 -0
  29. package/drawer/package.json +3 -0
  30. package/dynamic-form/package.json +3 -0
  31. package/editable-overlay/package.json +3 -0
  32. package/editor/package.json +3 -0
  33. package/empty-state/package.json +3 -0
  34. package/esm2022/alert/lib/alert/alert.component.mjs +3 -3
  35. package/esm2022/chips/lib/chips/chip-item/chip-item.component.mjs +17 -10
  36. package/esm2022/chips/lib/chips/chips/chips.component.mjs +4 -13
  37. package/esm2022/chips/public-api.mjs +4 -3
  38. package/esm2022/shared/lib/shared/helpers.mjs +24 -1
  39. package/esm2022/token-list/lib/token-list/token-list.component.mjs +26 -7
  40. package/esm2022/token-list/lib/token-list/token-list.module.mjs +2 -2
  41. package/fesm2022/seniorsistemas-angular-components-alert.mjs +2 -2
  42. package/fesm2022/seniorsistemas-angular-components-alert.mjs.map +1 -1
  43. package/fesm2022/seniorsistemas-angular-components-chips.mjs +20 -22
  44. package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
  45. package/fesm2022/seniorsistemas-angular-components-shared.mjs +24 -1
  46. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  47. package/fesm2022/seniorsistemas-angular-components-token-list.mjs +26 -7
  48. package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
  49. package/fieldset/package.json +3 -0
  50. package/file-picker/package.json +3 -0
  51. package/file-upload/package.json +3 -0
  52. package/gantt/package.json +3 -0
  53. package/global-search/package.json +3 -0
  54. package/grid-menu/package.json +3 -0
  55. package/help-popover/package.json +3 -0
  56. package/ia-insight/package.json +3 -0
  57. package/image-cropper/package.json +3 -0
  58. package/infinite-scroll/package.json +3 -0
  59. package/info-sign/package.json +3 -0
  60. package/inline-edit/package.json +3 -0
  61. package/input-mask/package.json +3 -0
  62. package/input-text/package.json +3 -0
  63. package/insights/package.json +3 -0
  64. package/interactive-content/package.json +3 -0
  65. package/kanban/package.json +3 -0
  66. package/label-value/package.json +3 -0
  67. package/loading-state/package.json +3 -0
  68. package/locale/package.json +3 -0
  69. package/localized-number-input/package.json +3 -0
  70. package/mask/package.json +3 -0
  71. package/mouse-events/package.json +3 -0
  72. package/navigation-button/package.json +3 -0
  73. package/number-input/package.json +3 -0
  74. package/numeric/package.json +3 -0
  75. package/numeric-mask/package.json +3 -0
  76. package/object-card/package.json +3 -0
  77. package/optional-fields/editor/package.json +3 -0
  78. package/package.json +398 -398
  79. package/paginator/package.json +3 -0
  80. package/panel/package.json +3 -0
  81. package/password-strength/package.json +3 -0
  82. package/picklist/package.json +3 -0
  83. package/pin-code-field/package.json +3 -0
  84. package/product-header/package.json +3 -0
  85. package/profile-picture-picker/package.json +3 -0
  86. package/progressbar/package.json +3 -0
  87. package/radio-button/package.json +3 -0
  88. package/rating-scale/package.json +3 -0
  89. package/select/package.json +3 -0
  90. package/select-button/package.json +3 -0
  91. package/shared/lib/shared/helpers.d.ts +23 -0
  92. package/shared/package.json +3 -0
  93. package/side-sheet/package.json +3 -0
  94. package/sidebar/package.json +3 -0
  95. package/slide-in-bar/package.json +3 -0
  96. package/slider/package.json +3 -0
  97. package/speech-recognition/package.json +3 -0
  98. package/split-button/package.json +3 -0
  99. package/spotlight/package.json +3 -0
  100. package/star-rating/package.json +3 -0
  101. package/stats-card/package.json +3 -0
  102. package/stepper/package.json +3 -0
  103. package/structure/package.json +3 -0
  104. package/switch/package.json +3 -0
  105. package/table/package.json +3 -0
  106. package/table-header/package.json +3 -0
  107. package/tabs/package.json +3 -0
  108. package/template/package.json +3 -0
  109. package/text-area/package.json +3 -0
  110. package/text-area-ia/package.json +3 -0
  111. package/thumbnail/package.json +3 -0
  112. package/thumbnails/package.json +3 -0
  113. package/tiered-menu/package.json +3 -0
  114. package/tile/package.json +3 -0
  115. package/timeline/package.json +3 -0
  116. package/toast/package.json +3 -0
  117. package/token-list/lib/token-list/token-list.component.d.ts +7 -3
  118. package/token-list/package.json +3 -0
  119. package/tooltip/package.json +3 -0
  120. package/topbar/package.json +3 -0
  121. package/tree/package.json +3 -0
  122. package/utils/package.json +3 -0
  123. package/workspace-switch/package.json +3 -0
@@ -4,7 +4,7 @@ import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
4
4
  import { KeyFilter } from 'primeng/keyfilter';
5
5
  import { TemplateDirective } from '@seniorsistemas/angular-components/template';
6
6
  import { isNullOrUndefined, randomHash } from '@seniorsistemas/angular-components/utils';
7
- import { CheckDisabled } from '@seniorsistemas/angular-components/shared';
7
+ import { CheckDisabled, restoreFocusAfterRemoval } from '@seniorsistemas/angular-components/shared';
8
8
  import { ChipItemComponent } from '../chip-item/chip-item.component';
9
9
  import * as i0 from "@angular/core";
10
10
  import * as i1 from "@angular/forms";
@@ -141,7 +141,7 @@ export class ChipsComponent {
141
141
  this.value.splice(itemIndex, 1);
142
142
  this.removed.emit({ value: _removedItem, originalEvent: event });
143
143
  this.cdr.detectChanges();
144
- this.restoreFocusAfterRemove(itemIndex);
144
+ restoreFocusAfterRemoval(this.chipItems?.toArray() ?? [], itemIndex, () => this.input?.nativeElement.focus());
145
145
  }
146
146
  onChipClicked({ event, data }) {
147
147
  this.chipClicked.emit({ value: data, originalEvent: event });
@@ -191,15 +191,6 @@ export class ChipsComponent {
191
191
  }
192
192
  });
193
193
  }
194
- restoreFocusAfterRemove(removedIndex) {
195
- const items = this.chipItems?.toArray() ?? [];
196
- if (items.length) {
197
- items[Math.min(removedIndex, items.length - 1)].focus();
198
- }
199
- else {
200
- this.input?.nativeElement.focus();
201
- }
202
- }
203
194
  storeValue(value) {
204
195
  this.value = [...this.value, value];
205
196
  this.added.emit({ value });
@@ -215,7 +206,7 @@ export class ChipsComponent {
215
206
  useExisting: forwardRef(() => ChipsComponent),
216
207
  multi: true,
217
208
  },
218
- ], queries: [{ propertyName: "templates", predicate: TemplateDirective }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, read: ElementRef }, { propertyName: "chipItems", predicate: ChipItemComponent, descendants: true }], ngImport: i0, template: "<ul\n role=\"list\"\n class=\"chips-container w-full p-1.5 flex flex-wrap items-center rounded-small border border-grayscale-30 bg-grayscale-0 list-none gap-2 min-h-[35px] focus-within:outline focus-within:outline-2 focus-within:outline-criticality-blue\">\n @for(item of value; track $index) {\n <li role=\"listitem\">\n <s-chip-item\n [templateRef]=\"chipTemplate\"\n [dataRender]=\"item\"\n [objectField]=\"field\"\n [itemIndex]=\"$index\"\n [disabled]=\"disabled\"\n [showTooltip]=\"showTooltip\"\n [maxLengthRenderWithoutTooltip]=\"maxLengthRenderWithoutTooltip\"\n (clickRemove)=\"removeItem($event)\"\n (chipClicked)=\"onChipClicked($event)\">\n </s-chip-item>\n </li>\n }\n\n @if(keyFilter) {\n <input\n #input\n class=\"bg-grayscale-0 w-full border-none flex-1 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n [pKeyFilter]=\"keyFilter\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }@else {\n <input\n #input\n class=\"bg-grayscale-0 w-full border-none flex-1 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }\n</ul>\n@if(infoLabel) {\n <span class=\"text-grayscale-50 text-xs\">\n {{ infoLabel }}\n </span>\n}\n", styles: [":host.ng-invalid.ng-dirty .chips-container{--tw-border-opacity: 1;border-color:rgb(193 48 24 / var(--tw-border-opacity, 1))}\n"], dependencies: [{ kind: "component", type: ChipItemComponent, selector: "s-chip-item", inputs: ["dataRender", "objectField", "disabled", "templateRef", "itemIndex", "showTooltip", "maxLengthRenderWithoutTooltip"], outputs: ["clickRemove", "chipClicked"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: KeyFilter, selector: "[pKeyFilter]", inputs: ["pValidateOnly", "pKeyFilter"], outputs: ["ngModelChange"] }] });
209
+ ], queries: [{ propertyName: "templates", predicate: TemplateDirective }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, read: ElementRef }, { propertyName: "chipItems", predicate: ChipItemComponent, descendants: true }], ngImport: i0, template: "<ul\n role=\"list\"\n class=\"chips-container w-full p-1.5 flex flex-wrap items-center rounded-small border border-grayscale-30 bg-grayscale-0 list-none gap-2 min-h-[35px] focus-within:outline focus-within:outline-2 focus-within:outline-criticality-blue\">\n @for(item of value; track $index) {\n <li role=\"listitem\">\n <s-chip-item\n [templateRef]=\"chipTemplate\"\n [dataRender]=\"item\"\n [objectField]=\"field\"\n [itemIndex]=\"$index\"\n [disabled]=\"disabled\"\n [showTooltip]=\"showTooltip\"\n [maxLengthRenderWithoutTooltip]=\"maxLengthRenderWithoutTooltip\"\n (clickRemove)=\"removeItem($event)\"\n (chipClicked)=\"onChipClicked($event)\">\n </s-chip-item>\n </li>\n }\n\n @if(keyFilter) {\n <input\n #input\n class=\"bg-grayscale-0 w-full border-none flex-1 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n [pKeyFilter]=\"keyFilter\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }@else {\n <input\n #input\n class=\"bg-grayscale-0 w-full border-none flex-1 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }\n</ul>\n@if(infoLabel) {\n <span class=\"text-grayscale-50 text-xs\">\n {{ infoLabel }}\n </span>\n}\n", styles: [":host.ng-invalid.ng-dirty .chips-container{--tw-border-opacity: 1;border-color:rgb(193 48 24 / var(--tw-border-opacity, 1))}\n"], dependencies: [{ kind: "component", type: ChipItemComponent, selector: "s-chip-item", inputs: ["dataRender", "objectField", "disabled", "templateRef", "itemIndex", "showTooltip", "maxLengthRenderWithoutTooltip", "showRemove", "removeIconClass", "hidePointerEvents"], outputs: ["clickRemove", "chipClicked"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: KeyFilter, selector: "[pKeyFilter]", inputs: ["pValidateOnly", "pKeyFilter"], outputs: ["ngModelChange"] }] });
219
210
  }
220
211
  __decorate([
221
212
  CheckDisabled()
@@ -288,4 +279,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
288
279
  type: ViewChildren,
289
280
  args: [ChipItemComponent]
290
281
  }], onKeydown: [], onInputLostFocus: [] } });
291
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NoaXBzL3NyYy9saWIvY2hpcHMvY2hpcHMvY2hpcHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NoaXBzL3NyYy9saWIvY2hpcHMvY2hpcHMvY2hpcHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUdOLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEYsT0FBTyxFQUFvQixTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDekYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFFckU7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBZUgsTUFBTSxPQUFPLGNBQWM7SUFDTixHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFMUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNiLFlBQVksQ0FBb0I7SUFFdkMsMkVBQTJFO0lBRXBFLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFeEIsMEdBQTBHO0lB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Z0JBS0EsV0FBVztzQkFEakIsTUFBTTtnQkFLQSxXQUFXO3NCQURqQixNQUFNO2dCQUlVLFNBQVM7c0JBRHpCLGVBQWU7dUJBQUMsaUJBQWlCO2dCQUlqQixLQUFLO3NCQURyQixTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSXZCLFNBQVM7c0JBRHpCLFlBQVk7dUJBQUMsaUJBQWlCO2dCQXNDeEIsU0FBUyxNQTBCVCxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIGZvcndhcmRSZWYsXHJcbiAgICBJbnB1dCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgVmlld0NoaWxkcmVuLFxyXG4gICAgaW5qZWN0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgS2V5RmlsdGVyUGF0dGVybiwgS2V5RmlsdGVyIH0gZnJvbSAncHJpbWVuZy9rZXlmaWx0ZXInO1xyXG5cclxuaW1wb3J0IHsgQ2hpcEFkZEV2ZW50LCBDaGlwQ2xpY2tFdmVudCwgQ2hpcFJlbW92ZUV2ZW50IH0gZnJvbSAnLi4vbW9kZWxzL2NoaXAtbW9kZWxzJztcclxuaW1wb3J0IHsgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3RlbXBsYXRlJztcclxuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQsIHJhbmRvbUhhc2ggfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3V0aWxzJztcclxuaW1wb3J0IHsgQ2hlY2tEaXNhYmxlZCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvc2hhcmVkJztcclxuaW1wb3J0IHsgQ2hpcEl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9jaGlwLWl0ZW0vY2hpcC1pdGVtLmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgZW50cmFkYSBkZSB0YWdzL2NoaXBzIHF1ZSBwZXJtaXRlIGFkaWNpb25hciBlIHJlbW92ZXJcclxuICogaXRlbnMgZGUgdGV4dG8gbGl2cmVtZW50ZSBvdSBhIHBhcnRpciBkZSB1bWEgbGlzdGEuIFN1cG9ydGEgdGVtcGxhdGVzIHBlcnNvbmFsaXphZG9zXHJcbiAqIHBhcmEgcmVuZGVyaXphw6fDo28gZGUgY2FkYSBjaGlwLCBmaWx0cm8gZGUgdGVjbGFzLCBsaW1pdGUgZGUgaXRlbnMgZSBkdXBsaWNhw6fDo28gY29uZmlndXLDoXZlbC5cclxuICogSW1wbGVtZW50YSB7QGxpbmsgQ29udHJvbFZhbHVlQWNjZXNzb3J9IHBhcmEgdXNvIGVtIGZvcm11bMOhcmlvcyBBbmd1bGFyLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBodG1sXHJcbiAqIDxzLWNoaXBzXHJcbiAqICAgZm9ybUNvbnRyb2xOYW1lPVwidGFnc1wiXHJcbiAqICAgcGxhY2Vob2xkZXI9XCJBZGljaW9uYXIgdGFnLi4uXCJcclxuICogICBbbWF4XT1cIjEwXCJcclxuICogICBbYWxsb3dEdXBsaWNhdGVkXT1cImZhbHNlXCJcclxuICogICAoYWRkZWQpPVwib25BZGRlZCgkZXZlbnQpXCIgLz5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBJbnB1dHNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzLWNoaXBzJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jaGlwcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9jaGlwcy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ2hpcHNDb21wb25lbnQpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbQ2hpcEl0ZW1Db21wb25lbnQsIEZvcm1zTW9kdWxlLCBLZXlGaWx0ZXJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hpcHNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gICAgcHVibGljIG5ld0l0ZW0gPSAnJztcclxuICAgIHB1YmxpYyBjaGlwVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVzYWJpbGl0YSBhIGludGVyYcOnw6NvIGNvbSBvIGNvbXBvbmVudGUuIEBkZWZhdWx0IGZhbHNlICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDaGF2ZSBkbyBvYmpldG8gdXNhZGEgcGFyYSBleGliacOnw6NvIHF1YW5kbyBvcyBpdGVucyBzw6NvIG9iamV0b3MgY29tcGxleG9zLiBAZGVmYXVsdCAnJyAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmaWVsZCA9ICcnO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gTGlzdGEgZGUgY2hpcHMgYXR1YWxtZW50ZSBleGliaWRvcy4gQGRlZmF1bHQgW10gKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdmFsdWU6IGFueVtdID0gW107XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUZXh0byBkZSBwbGFjZWhvbGRlciBleGliaWRvIG5vIGNhbXBvIGRlIGVudHJhZGEgcXVhbmRvIHZhemlvLiAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gTsO6bWVybyBtw6F4aW1vIGRlIGNoaXBzIHBlcm1pdGlkb3MuIEBkZWZhdWx0IEluZmluaXR5ICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIG1heCA9IEluZmluaXR5O1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ29tcHJpbWVudG8gbcOheGltbyBkbyB0ZXh0byBkZSBjYWRhIGNoaXAuIEBkZWZhdWx0IEluZmluaXR5ICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIG1heExlbmd0aCA9IEluZmluaXR5O1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gSWRlbnRpZmljYWRvciBkbyBlbGVtZW50byBgPGlucHV0PmAgaW50ZXJuby4gR2VyYWRvIGF1dG9tYXRpY2FtZW50ZSBzZSBuw6NvIGluZm9ybWFkby4gKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaW5wdXRJZCA9IGBjaGlwcy0ke3JhbmRvbUhhc2goKX1gO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gUGVybWl0ZSBhIGFkacOnw6NvIGRlIGNoaXBzIGNvbSB2YWxvciBkdXBsaWNhZG8uIEBkZWZhdWx0IHRydWUgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYWxsb3dEdXBsaWNhdGVkID0gdHJ1ZTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIFF1YW5kbyBgZmFsc2VgLCBhIGNvbXBhcmHDp8OjbyBkZSBkdXBsaWNhdGFzIMOpIGNhc2UtaW5zZW5zaXRpdmUuIEBkZWZhdWx0IGZhbHNlICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNhc2VTZW5zaXRpdmVEdXBsaWNhdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQWRpY2lvbmEgbyBjaGlwIGFvIHByZXNzaW9uYXIgVGFiLiBAZGVmYXVsdCB0cnVlICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGFkZE9uVGFiID0gdHJ1ZTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFkaWNpb25hIG8gY2hpcCBhbyBwZXJkZXIgbyBmb2NvIChibHVyKS4gQGRlZmF1bHQgdHJ1ZSAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhZGRPbkJsdXIgPSB0cnVlO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ2FyYWN0ZXJlIHNlcGFyYWRvciBxdWUsIHF1YW5kbyBkaWdpdGFkbywgY29uZmlybWEgYSBhZGnDp8OjbyBkZSB1bSBub3ZvIGNoaXAuIEBkZWZhdWx0ICcnICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNlcGFyYXRvciA9ICcnO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ29sb2NhIG8gZm9jbyBhdXRvbWF0aWNhbWVudGUgbm8gY2FtcG8gZGUgZW50cmFkYSBhbyByZW5kZXJpemFyIG8gY29tcG9uZW50ZS4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYXV0b2ZvY3VzID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUZXh0byBpbmZvcm1hdGl2byBleGliaWRvIGFiYWl4byBkbyBjYW1wbyBkZSBlbnRyYWRhLiBAZGVmYXVsdCAnJyAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpbmZvTGFiZWwgPSAnJztcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEV4cHJlc3PDo28gcmVndWxhciBvdSBwYWRyw6NvIHByZWRlZmluaWRvIChQcmltZU5HIEtleUZpbHRlclBhdHRlcm4pIHBhcmEgZmlsdHJhciB0ZWNsYXMgYWNlaXRhcy4gKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMga2V5RmlsdGVyPzogUmVnRXhwIHwgS2V5RmlsdGVyUGF0dGVybjtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEV4aWJlIHRvb2x0aXAgYW8gcGFzc2FyIG8gbW91c2Ugc29icmUgY2hpcHMgY29tIHRleHRvIHRydW5jYWRvLiBAZGVmYXVsdCB0cnVlICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNob3dUb29sdGlwID0gdHJ1ZTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIE7Dum1lcm8gbcOheGltbyBkZSBjYXJhY3RlcmVzIGV4aWJpZG9zIGRpcmV0YW1lbnRlIG5vIGNoaXAgc2VtIGFwbGljYXIgdHJ1bmNhbWVudG8uIEBkZWZhdWx0IDIwICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIG1heExlbmd0aFJlbmRlcldpdGhvdXRUb29sdGlwID0gMjA7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyB1bSBub3ZvIGNoaXAgw6kgYWRpY2lvbmFkbyBjb20gc3VjZXNzby4gKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxDaGlwQWRkRXZlbnQ+KCk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyB1bSBjaGlwIMOpIHJlbW92aWRvIHBlbG8gdXN1w6FyaW8uICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyByZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxDaGlwUmVtb3ZlRXZlbnQ+KCk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIGNhbXBvIGRlIGVudHJhZGEgcmVjZWJlIGZvY28uICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBmb2N1c2VkID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyBjYW1wbyBkZSBlbnRyYWRhIHBlcmRlIG8gZm9jby4gKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGZvY3VzTG9zdCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdXN1w6FyaW8gY2xpY2EgZW0gdW0gY2hpcCBleGlzdGVudGUuICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBjaGlwQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hpcENsaWNrRXZlbnQ+KCk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHNlbXByZSBxdWUgYSBsaXN0YSBkZSBjaGlwcyDDqSBhbHRlcmFkYSAoYWRpw6fDo28gb3UgcmVtb8Onw6NvKS4gKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXSB8IGFueVtdPigpO1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oVGVtcGxhdGVEaXJlY3RpdmUpXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlbXBsYXRlczogUXVlcnlMaXN0PFRlbXBsYXRlRGlyZWN0aXZlPiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIEBWaWV3Q2hpbGRyZW4oQ2hpcEl0ZW1Db21wb25lbnQpXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoaXBJdGVtczogUXVlcnlMaXN0PENoaXBJdGVtQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIHB1YmxpYyBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmdbXSB8IGFueVtdKSA9PiB2b2lkID0gKCkgPT4ge307XHJcbiAgICBwdWJsaWMgb25Ub3VjaGVkOiAodmFsdWU6IHN0cmluZ1tdIHwgYW55W10pID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuXHJcbiAgICBwcml2YXRlIGlzVGFiRXZlbnRBY3RpdmUgPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmF1dG9mb2N1cyAmJiB0aGlzLmlucHV0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy50ZW1wbGF0ZXMpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGlwVGVtcGxhdGUgPSB0aGlzLnRlbXBsYXRlcy5maW5kKCh4KSA9PiB4LnR5cGUgPT09ICdjaGlwLWNvbnRhaW5lcicpPy50ZW1wbGF0ZTtcclxuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IHN0cmluZ1tdIHwgYW55W10pOiB2b2lkIHtcclxuICAgICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQob2JqKSkge1xyXG4gICAgICAgICAgICBvYmogPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IG9iajtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmdbXSB8IGFueVtdKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIEBDaGVja0Rpc2FibGVkKClcclxuICAgIHB1YmxpYyBvbktleWRvd24oJGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9ICRldmVudC5rZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNTZXBhcmF0b3IgPSB0aGlzLnNlcGFyYXRvciAmJiAkZXZlbnQua2V5ID09PSB0aGlzLnNlcGFyYXRvcjtcclxuICAgICAgICBjb25zdCBldmVudEtleUlzVGFiID0gJGV2ZW50LmtleSA9PT0gJ1RhYic7XHJcbiAgICAgICAgaWYgKGV2ZW50S2V5SXNUYWIpIHtcclxuICAgICAgICAgICAgY29uc3QgdGFiVGltZW91dFRpbWUgPSA1MDtcclxuICAgICAgICAgICAgdGhpcy5pc1RhYkV2ZW50QWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzVGFiRXZlbnRBY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSwgdGFiVGltZW91dFRpbWUpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hZGRPblRhYikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRJdGVtKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNFbnRlciB8fCBpc1NlcGFyYXRvcikge1xyXG4gICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgdGhpcy5hZGRJdGVtKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbklucHV0Rm9jdXMoJGV2ZW50OiBGb2N1c0V2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5mb2N1c2VkLmVtaXQoJGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBAQ2hlY2tEaXNhYmxlZCgpXHJcbiAgICBwdWJsaWMgb25JbnB1dExvc3RGb2N1cygkZXZlbnQ6IEZvY3VzRXZlbnQpIHtcclxuICAgICAgICBpZiAoIXRoaXMuYWRkT25CbHVyIHx8IHRoaXMuaXNUYWJFdmVudEFjdGl2ZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYWRkSXRlbSgpO1xyXG4gICAgICAgIHRoaXMuZm9jdXNMb3N0LmVtaXQoJGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVtb3ZlSXRlbSh7IGl0ZW1JbmRleCwgZXZlbnQgfTogeyBpdGVtSW5kZXg6IG51bWJlcjsgZXZlbnQ6IEV2ZW50IH0pIHtcclxuICAgICAgICBjb25zdCBfcmVtb3ZlZEl0ZW0gPSB0aGlzLnZhbHVlW2l0ZW1JbmRleF07XHJcbiAgICAgICAgdGhpcy52YWx1ZS5zcGxpY2UoaXRlbUluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLnJlbW92ZWQuZW1pdCh7IHZhbHVlOiBfcmVtb3ZlZEl0ZW0sIG9yaWdpbmFsRXZlbnQ6IGV2ZW50IH0pO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLnJlc3RvcmVGb2N1c0FmdGVyUmVtb3ZlKGl0ZW1JbmRleCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uQ2hpcENsaWNrZWQoeyBldmVudCwgZGF0YSB9OiB7IGV2ZW50OiBFdmVudDsgZGF0YTogc3RyaW5nIHwgT2JqZWN0IH0pIHtcclxuICAgICAgICB0aGlzLmNoaXBDbGlja2VkLmVtaXQoeyB2YWx1ZTogZGF0YSwgb3JpZ2luYWxFdmVudDogZXZlbnQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRJdGVtKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5oYXNWYWx1ZVRvQWRkKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5pc01heFJlYWNoZWQoKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkSXRlbUxlbmd0aCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdmFsdWVUb0FkZCA9IHRoaXMuZ2V0VmFsdWVUb0FkZCgpO1xyXG4gICAgICAgIGlmICghdGhpcy5oYXNEdXBsaWNhdGVkSXRlbSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVWYWx1ZSh2YWx1ZVRvQWRkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5uZXdJdGVtID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYXNWYWx1ZVRvQWRkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhIXRoaXMubmV3SXRlbTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzTWF4UmVhY2hlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gISEodGhpcy5tYXggJiYgdGhpcy52YWx1ZS5sZW5ndGggPT09IHRoaXMubWF4KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzVmFsaWRJdGVtTGVuZ3RoKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1heExlbmd0aCA/IHRoaXMubmV3SXRlbS5sZW5ndGggPD0gdGhpcy5tYXhMZW5ndGggOiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0TWFwcGVkVmFsdWVzKCk6IHN0cmluZ1tdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maWVsZCA/IHRoaXMudmFsdWUubWFwKCh4KSA9PiB4W3RoaXMuZmllbGRdKSA6IHRoaXMudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRWYWx1ZVRvQWRkKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQgPyB7IFt0aGlzLmZpZWxkXTogdGhpcy5uZXdJdGVtIH0gOiB0aGlzLm5ld0l0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYXNEdXBsaWNhdGVkSXRlbSgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5hbGxvd0R1cGxpY2F0ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtYXBwZWRWYWx1ZXMgPSB0aGlzLmdldE1hcHBlZFZhbHVlcygpO1xyXG4gICAgICAgIHJldHVybiAhIW1hcHBlZFZhbHVlcy5maW5kKCh4KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNhc2VTZW5zaXRpdmVEdXBsaWNhdGlvbikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHggPT09IHRoaXMubmV3SXRlbTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB4LnRvTG93ZXJDYXNlKCkgPT09IHRoaXMubmV3SXRlbS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZXN0b3JlRm9jdXNBZnRlclJlbW92ZShyZW1vdmVkSW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5jaGlwSXRlbXM/LnRvQXJyYXkoKSA/PyBbXTtcclxuICAgICAgICBpZiAoaXRlbXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGl0ZW1zW01hdGgubWluKHJlbW92ZWRJbmRleCwgaXRlbXMubGVuZ3RoIC0gMSldLmZvY3VzKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0b3JlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy52YWx1ZSwgdmFsdWVdO1xyXG4gICAgICAgIHRoaXMuYWRkZWQuZW1pdCh7IHZhbHVlIH0pO1xyXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgICAgICB0aGlzLndyaXRlVmFsdWUodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxufVxyXG4iLCI8dWxcbiAgICByb2xlPVwibGlzdFwiXG4gICAgY2xhc3M9XCJjaGlwcy1jb250YWluZXIgdy1mdWxsIHAtMS41IGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciByb3VuZGVkLXNtYWxsIGJvcmRlciBib3JkZXItZ3JheXNjYWxlLTMwIGJnLWdyYXlzY2FsZS0wIGxpc3Qtbm9uZSBnYXAtMiBtaW4taC1bMzVweF0gZm9jdXMtd2l0aGluOm91dGxpbmUgZm9jdXMtd2l0aGluOm91dGxpbmUtMiBmb2N1cy13aXRoaW46b3V0bGluZS1jcml0aWNhbGl0eS1ibHVlXCI+XG4gICAgQGZvcihpdGVtIG9mIHZhbHVlOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGxpIHJvbGU9XCJsaXN0aXRlbVwiPlxuICAgICAgICAgICAgPHMtY2hpcC1pdGVtXG4gICAgICAgICAgICAgICAgW3RlbXBsYXRlUmVmXT1cImNoaXBUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2RhdGFSZW5kZXJdPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgW29iamVjdEZpZWxkXT1cImZpZWxkXCJcbiAgICAgICAgICAgICAgICBbaXRlbUluZGV4XT1cIiRpbmRleFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbc2hvd1Rvb2x0aXBdPVwic2hvd1Rvb2x0aXBcIlxuICAgICAgICAgICAgICAgIFttYXhMZW5ndGhSZW5kZXJXaXRob3V0VG9vbHRpcF09XCJtYXhMZW5ndGhSZW5kZXJXaXRob3V0VG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrUmVtb3ZlKT1cInJlbW92ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNoaXBDbGlja2VkKT1cIm9uQ2hpcENsaWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9zLWNoaXAtaXRlbT5cbiAgICAgICAgPC9saT5cbiAgICB9XG5cbiAgICBAaWYoa2V5RmlsdGVyKSB7XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICBjbGFzcz1cImJnLWdyYXlzY2FsZS0wIHctZnVsbCBib3JkZXItbm9uZSBmbGV4LTEgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IG1heCA9PT0gdmFsdWUubGVuZ3RoXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8fCAnJ1wiXG4gICAgICAgICAgICBbbWF4bGVuZ3RoXT1cIm1heExlbmd0aFwiXG4gICAgICAgICAgICBbaWRdPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm5ld0l0ZW1cIlxuICAgICAgICAgICAgW3BLZXlGaWx0ZXJdPVwia2V5RmlsdGVyXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAoYmx1cik9XCJvbklucHV0TG9zdEZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIj5cbiAgICB9QGVsc2Uge1xuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJiZy1ncmF5c2NhbGUtMCB3LWZ1bGwgYm9yZGVyLW5vbmUgZmxleC0xIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBtYXggPT09IHZhbHVlLmxlbmd0aFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfHwgJydcIlxuICAgICAgICAgICAgW21heGxlbmd0aF09XCJtYXhMZW5ndGhcIlxuICAgICAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJuZXdJdGVtXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAoYmx1cik9XCJvbklucHV0TG9zdEZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIj5cbiAgICB9XG48L3VsPlxuQGlmKGluZm9MYWJlbCkge1xuICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ncmF5c2NhbGUtNTAgdGV4dC14c1wiPlxuICAgICAgICB7eyBpbmZvTGFiZWwgfX1cbiAgICA8L3NwYW4+XG59XG4iXX0=
282
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NoaXBzL3NyYy9saWIvY2hpcHMvY2hpcHMvY2hpcHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NoaXBzL3NyYy9saWIvY2hpcHMvY2hpcHMvY2hpcHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUdOLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEYsT0FBTyxFQUFvQixTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDekYsT0FBTyxFQUFFLGFBQWEsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFFckU7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBZUgsTUFBTSxPQUFPLGNBQWM7SUFDTixHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFMUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNiLFlBQVksQ0FBb0I7SUFFdkMsMkVBQTJFO0lBRXBFLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFF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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIGZvcndhcmRSZWYsXHJcbiAgICBJbnB1dCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgVmlld0NoaWxkcmVuLFxyXG4gICAgaW5qZWN0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgS2V5RmlsdGVyUGF0dGVybiwgS2V5RmlsdGVyIH0gZnJvbSAncHJpbWVuZy9rZXlmaWx0ZXInO1xyXG5cclxuaW1wb3J0IHsgQ2hpcEFkZEV2ZW50LCBDaGlwQ2xpY2tFdmVudCwgQ2hpcFJlbW92ZUV2ZW50IH0gZnJvbSAnLi4vbW9kZWxzL2NoaXAtbW9kZWxzJztcclxuaW1wb3J0IHsgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3RlbXBsYXRlJztcclxuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQsIHJhbmRvbUhhc2ggfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3V0aWxzJztcclxuaW1wb3J0IHsgQ2hlY2tEaXNhYmxlZCwgcmVzdG9yZUZvY3VzQWZ0ZXJSZW1vdmFsIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9zaGFyZWQnO1xyXG5pbXBvcnQgeyBDaGlwSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2NoaXAtaXRlbS9jaGlwLWl0ZW0uY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50ZSBkZSBlbnRyYWRhIGRlIHRhZ3MvY2hpcHMgcXVlIHBlcm1pdGUgYWRpY2lvbmFyIGUgcmVtb3ZlclxyXG4gKiBpdGVucyBkZSB0ZXh0byBsaXZyZW1lbnRlIG91IGEgcGFydGlyIGRlIHVtYSBsaXN0YS4gU3Vwb3J0YSB0ZW1wbGF0ZXMgcGVyc29uYWxpemFkb3NcclxuICogcGFyYSByZW5kZXJpemHDp8OjbyBkZSBjYWRhIGNoaXAsIGZpbHRybyBkZSB0ZWNsYXMsIGxpbWl0ZSBkZSBpdGVucyBlIGR1cGxpY2HDp8OjbyBjb25maWd1csOhdmVsLlxyXG4gKiBJbXBsZW1lbnRhIHtAbGluayBDb250cm9sVmFsdWVBY2Nlc3Nvcn0gcGFyYSB1c28gZW0gZm9ybXVsw6FyaW9zIEFuZ3VsYXIuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYGh0bWxcclxuICogPHMtY2hpcHNcclxuICogICBmb3JtQ29udHJvbE5hbWU9XCJ0YWdzXCJcclxuICogICBwbGFjZWhvbGRlcj1cIkFkaWNpb25hciB0YWcuLi5cIlxyXG4gKiAgIFttYXhdPVwiMTBcIlxyXG4gKiAgIFthbGxvd0R1cGxpY2F0ZWRdPVwiZmFsc2VcIlxyXG4gKiAgIChhZGRlZCk9XCJvbkFkZGVkKCRldmVudClcIiAvPlxyXG4gKiBgYGBcclxuICpcclxuICogQGNhdGVnb3J5IElucHV0c1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3MtY2hpcHMnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NoaXBzLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2NoaXBzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaGlwc0NvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtDaGlwSXRlbUNvbXBvbmVudCwgRm9ybXNNb2R1bGUsIEtleUZpbHRlcl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGlwc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgICBwdWJsaWMgbmV3SXRlbSA9ICcnO1xyXG4gICAgcHVibGljIGNoaXBUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEZXNhYmlsaXRhIGEgaW50ZXJhw6fDo28gY29tIG8gY29tcG9uZW50ZS4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIENoYXZlIGRvIG9iamV0byB1c2FkYSBwYXJhIGV4aWJpw6fDo28gcXVhbmRvIG9zIGl0ZW5zIHPDo28gb2JqZXRvcyBjb21wbGV4b3MuIEBkZWZhdWx0ICcnICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGZpZWxkID0gJyc7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBMaXN0YSBkZSBjaGlwcyBhdHVhbG1lbnRlIGV4aWJpZG9zLiBAZGVmYXVsdCBbXSAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB2YWx1ZTogYW55W10gPSBbXTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRleHRvIGRlIHBsYWNlaG9sZGVyIGV4aWJpZG8gbm8gY2FtcG8gZGUgZW50cmFkYSBxdWFuZG8gdmF6aW8uICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBOw7ptZXJvIG3DoXhpbW8gZGUgY2hpcHMgcGVybWl0aWRvcy4gQGRlZmF1bHQgSW5maW5pdHkgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbWF4ID0gSW5maW5pdHk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDb21wcmltZW50byBtw6F4aW1vIGRvIHRleHRvIGRlIGNhZGEgY2hpcC4gQGRlZmF1bHQgSW5maW5pdHkgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbWF4TGVuZ3RoID0gSW5maW5pdHk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJZGVudGlmaWNhZG9yIGRvIGVsZW1lbnRvIGA8aW5wdXQ+YCBpbnRlcm5vLiBHZXJhZG8gYXV0b21hdGljYW1lbnRlIHNlIG7Do28gaW5mb3JtYWRvLiAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpbnB1dElkID0gYGNoaXBzLSR7cmFuZG9tSGFzaCgpfWA7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQZXJtaXRlIGEgYWRpw6fDo28gZGUgY2hpcHMgY29tIHZhbG9yIGR1cGxpY2Fkby4gQGRlZmF1bHQgdHJ1ZSAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhbGxvd0R1cGxpY2F0ZWQgPSB0cnVlO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gUXVhbmRvIGBmYWxzZWAsIGEgY29tcGFyYcOnw6NvIGRlIGR1cGxpY2F0YXMgw6kgY2FzZS1pbnNlbnNpdGl2ZS4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY2FzZVNlbnNpdGl2ZUR1cGxpY2F0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBZGljaW9uYSBvIGNoaXAgYW8gcHJlc3Npb25hciBUYWIuIEBkZWZhdWx0IHRydWUgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYWRkT25UYWIgPSB0cnVlO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQWRpY2lvbmEgbyBjaGlwIGFvIHBlcmRlciBvIGZvY28gKGJsdXIpLiBAZGVmYXVsdCB0cnVlICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGFkZE9uQmx1ciA9IHRydWU7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDYXJhY3RlcmUgc2VwYXJhZG9yIHF1ZSwgcXVhbmRvIGRpZ2l0YWRvLCBjb25maXJtYSBhIGFkacOnw6NvIGRlIHVtIG5vdm8gY2hpcC4gQGRlZmF1bHQgJycgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2VwYXJhdG9yID0gJyc7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDb2xvY2EgbyBmb2NvIGF1dG9tYXRpY2FtZW50ZSBubyBjYW1wbyBkZSBlbnRyYWRhIGFvIHJlbmRlcml6YXIgbyBjb21wb25lbnRlLiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhdXRvZm9jdXMgPSBmYWxzZTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRleHRvIGluZm9ybWF0aXZvIGV4aWJpZG8gYWJhaXhvIGRvIGNhbXBvIGRlIGVudHJhZGEuIEBkZWZhdWx0ICcnICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGluZm9MYWJlbCA9ICcnO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRXhwcmVzc8OjbyByZWd1bGFyIG91IHBhZHLDo28gcHJlZGVmaW5pZG8gKFByaW1lTkcgS2V5RmlsdGVyUGF0dGVybikgcGFyYSBmaWx0cmFyIHRlY2xhcyBhY2VpdGFzLiAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBrZXlGaWx0ZXI/OiBSZWdFeHAgfCBLZXlGaWx0ZXJQYXR0ZXJuO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRXhpYmUgdG9vbHRpcCBhbyBwYXNzYXIgbyBtb3VzZSBzb2JyZSBjaGlwcyBjb20gdGV4dG8gdHJ1bmNhZG8uIEBkZWZhdWx0IHRydWUgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2hvd1Rvb2x0aXAgPSB0cnVlO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gTsO6bWVybyBtw6F4aW1vIGRlIGNhcmFjdGVyZXMgZXhpYmlkb3MgZGlyZXRhbWVudGUgbm8gY2hpcCBzZW0gYXBsaWNhciB0cnVuY2FtZW50by4gQGRlZmF1bHQgMjAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbWF4TGVuZ3RoUmVuZGVyV2l0aG91dFRvb2x0aXAgPSAyMDtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIHVtIG5vdm8gY2hpcCDDqSBhZGljaW9uYWRvIGNvbSBzdWNlc3NvLiAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgYWRkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENoaXBBZGRFdmVudD4oKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIHVtIGNoaXAgw6kgcmVtb3ZpZG8gcGVsbyB1c3XDoXJpby4gKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENoaXBSZW1vdmVFdmVudD4oKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gY2FtcG8gZGUgZW50cmFkYSByZWNlYmUgZm9jby4gKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGZvY3VzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+KCk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIGNhbXBvIGRlIGVudHJhZGEgcGVyZGUgbyBmb2NvLiAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgZm9jdXNMb3N0ID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyB1c3XDoXJpbyBjbGljYSBlbSB1bSBjaGlwIGV4aXN0ZW50ZS4gKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGNoaXBDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDaGlwQ2xpY2tFdmVudD4oKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gc2VtcHJlIHF1ZSBhIGxpc3RhIGRlIGNoaXBzIMOpIGFsdGVyYWRhIChhZGnDp8OjbyBvdSByZW1vw6fDo28pLiAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdIHwgYW55W10+KCk7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSlcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8VGVtcGxhdGVEaXJlY3RpdmU+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgQFZpZXdDaGlsZHJlbihDaGlwSXRlbUNvbXBvbmVudClcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hpcEl0ZW1zOiBRdWVyeUxpc3Q8Q2hpcEl0ZW1Db21wb25lbnQ+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgcHVibGljIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZ1tdIHwgYW55W10pID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICAgIHB1YmxpYyBvblRvdWNoZWQ6ICh2YWx1ZTogc3RyaW5nW10gfCBhbnlbXSkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG5cclxuICAgIHByaXZhdGUgaXNUYWJFdmVudEFjdGl2ZSA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuYXV0b2ZvY3VzICYmIHRoaXMuaW5wdXQpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnRlbXBsYXRlcykge1xyXG4gICAgICAgICAgICB0aGlzLmNoaXBUZW1wbGF0ZSA9IHRoaXMudGVtcGxhdGVzLmZpbmQoKHgpID0+IHgudHlwZSA9PT0gJ2NoaXAtY29udGFpbmVyJyk/LnRlbXBsYXRlO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKG9iajogc3RyaW5nW10gfCBhbnlbXSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZChvYmopKSB7XHJcbiAgICAgICAgICAgIG9iaiA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnZhbHVlID0gb2JqO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZ1tdIHwgYW55W10pID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgQENoZWNrRGlzYWJsZWQoKVxyXG4gICAgcHVibGljIG9uS2V5ZG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgICAgICBjb25zdCBpc0VudGVyID0gJGV2ZW50LmtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc1NlcGFyYXRvciA9IHRoaXMuc2VwYXJhdG9yICYmICRldmVudC5rZXkgPT09IHRoaXMuc2VwYXJhdG9yO1xyXG4gICAgICAgIGNvbnN0IGV2ZW50S2V5SXNUYWIgPSAkZXZlbnQua2V5ID09PSAnVGFiJztcclxuICAgICAgICBpZiAoZXZlbnRLZXlJc1RhYikge1xyXG4gICAgICAgICAgICBjb25zdCB0YWJUaW1lb3V0VGltZSA9IDUwO1xyXG4gICAgICAgICAgICB0aGlzLmlzVGFiRXZlbnRBY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNUYWJFdmVudEFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LCB0YWJUaW1lb3V0VGltZSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFkZE9uVGFiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEl0ZW0oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc0VudGVyIHx8IGlzU2VwYXJhdG9yKSB7XHJcbiAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB0aGlzLmFkZEl0ZW0oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uSW5wdXRGb2N1cygkZXZlbnQ6IEZvY3VzRXZlbnQpIHtcclxuICAgICAgICB0aGlzLmZvY3VzZWQuZW1pdCgkZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIEBDaGVja0Rpc2FibGVkKClcclxuICAgIHB1YmxpYyBvbklucHV0TG9zdEZvY3VzKCRldmVudDogRm9jdXNFdmVudCkge1xyXG4gICAgICAgIGlmICghdGhpcy5hZGRPbkJsdXIgfHwgdGhpcy5pc1RhYkV2ZW50QWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hZGRJdGVtKCk7XHJcbiAgICAgICAgdGhpcy5mb2N1c0xvc3QuZW1pdCgkZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZW1vdmVJdGVtKHsgaXRlbUluZGV4LCBldmVudCB9OiB7IGl0ZW1JbmRleDogbnVtYmVyOyBldmVudDogRXZlbnQgfSkge1xyXG4gICAgICAgIGNvbnN0IF9yZW1vdmVkSXRlbSA9IHRoaXMudmFsdWVbaXRlbUluZGV4XTtcclxuICAgICAgICB0aGlzLnZhbHVlLnNwbGljZShpdGVtSW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMucmVtb3ZlZC5lbWl0KHsgdmFsdWU6IF9yZW1vdmVkSXRlbSwgb3JpZ2luYWxFdmVudDogZXZlbnQgfSk7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJlc3RvcmVGb2N1c0FmdGVyUmVtb3ZhbCh0aGlzLmNoaXBJdGVtcz8udG9BcnJheSgpID8/IFtdLCBpdGVtSW5kZXgsICgpID0+IHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uQ2hpcENsaWNrZWQoeyBldmVudCwgZGF0YSB9OiB7IGV2ZW50OiBFdmVudDsgZGF0YTogc3RyaW5nIHwgT2JqZWN0IH0pIHtcclxuICAgICAgICB0aGlzLmNoaXBDbGlja2VkLmVtaXQoeyB2YWx1ZTogZGF0YSwgb3JpZ2luYWxFdmVudDogZXZlbnQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRJdGVtKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5oYXNWYWx1ZVRvQWRkKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5pc01heFJlYWNoZWQoKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkSXRlbUxlbmd0aCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdmFsdWVUb0FkZCA9IHRoaXMuZ2V0VmFsdWVUb0FkZCgpO1xyXG4gICAgICAgIGlmICghdGhpcy5oYXNEdXBsaWNhdGVkSXRlbSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVWYWx1ZSh2YWx1ZVRvQWRkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5uZXdJdGVtID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYXNWYWx1ZVRvQWRkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhIXRoaXMubmV3SXRlbTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzTWF4UmVhY2hlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gISEodGhpcy5tYXggJiYgdGhpcy52YWx1ZS5sZW5ndGggPT09IHRoaXMubWF4KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzVmFsaWRJdGVtTGVuZ3RoKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1heExlbmd0aCA/IHRoaXMubmV3SXRlbS5sZW5ndGggPD0gdGhpcy5tYXhMZW5ndGggOiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0TWFwcGVkVmFsdWVzKCk6IHN0cmluZ1tdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maWVsZCA/IHRoaXMudmFsdWUubWFwKCh4KSA9PiB4W3RoaXMuZmllbGRdKSA6IHRoaXMudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRWYWx1ZVRvQWRkKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQgPyB7IFt0aGlzLmZpZWxkXTogdGhpcy5uZXdJdGVtIH0gOiB0aGlzLm5ld0l0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYXNEdXBsaWNhdGVkSXRlbSgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5hbGxvd0R1cGxpY2F0ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtYXBwZWRWYWx1ZXMgPSB0aGlzLmdldE1hcHBlZFZhbHVlcygpO1xyXG4gICAgICAgIHJldHVybiAhIW1hcHBlZFZhbHVlcy5maW5kKCh4KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNhc2VTZW5zaXRpdmVEdXBsaWNhdGlvbikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHggPT09IHRoaXMubmV3SXRlbTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB4LnRvTG93ZXJDYXNlKCkgPT09IHRoaXMubmV3SXRlbS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdG9yZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gWy4uLnRoaXMudmFsdWUsIHZhbHVlXTtcclxuICAgICAgICB0aGlzLmFkZGVkLmVtaXQoeyB2YWx1ZSB9KTtcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQodGhpcy52YWx1ZSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPHVsXG4gICAgcm9sZT1cImxpc3RcIlxuICAgIGNsYXNzPVwiY2hpcHMtY29udGFpbmVyIHctZnVsbCBwLTEuNSBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgcm91bmRlZC1zbWFsbCBib3JkZXIgYm9yZGVyLWdyYXlzY2FsZS0zMCBiZy1ncmF5c2NhbGUtMCBsaXN0LW5vbmUgZ2FwLTIgbWluLWgtWzM1cHhdIGZvY3VzLXdpdGhpbjpvdXRsaW5lIGZvY3VzLXdpdGhpbjpvdXRsaW5lLTIgZm9jdXMtd2l0aGluOm91dGxpbmUtY3JpdGljYWxpdHktYmx1ZVwiPlxuICAgIEBmb3IoaXRlbSBvZiB2YWx1ZTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxsaSByb2xlPVwibGlzdGl0ZW1cIj5cbiAgICAgICAgICAgIDxzLWNoaXAtaXRlbVxuICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZVJlZl09XCJjaGlwVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtkYXRhUmVuZGVyXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgIFtvYmplY3RGaWVsZF09XCJmaWVsZFwiXG4gICAgICAgICAgICAgICAgW2l0ZW1JbmRleF09XCIkaW5kZXhcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW3Nob3dUb29sdGlwXT1cInNob3dUb29sdGlwXCJcbiAgICAgICAgICAgICAgICBbbWF4TGVuZ3RoUmVuZGVyV2l0aG91dFRvb2x0aXBdPVwibWF4TGVuZ3RoUmVuZGVyV2l0aG91dFRvb2x0aXBcIlxuICAgICAgICAgICAgICAgIChjbGlja1JlbW92ZSk9XCJyZW1vdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChjaGlwQ2xpY2tlZCk9XCJvbkNoaXBDbGlja2VkKCRldmVudClcIj5cbiAgICAgICAgICAgIDwvcy1jaGlwLWl0ZW0+XG4gICAgICAgIDwvbGk+XG4gICAgfVxuXG4gICAgQGlmKGtleUZpbHRlcikge1xuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJiZy1ncmF5c2NhbGUtMCB3LWZ1bGwgYm9yZGVyLW5vbmUgZmxleC0xIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBtYXggPT09IHZhbHVlLmxlbmd0aFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfHwgJydcIlxuICAgICAgICAgICAgW21heGxlbmd0aF09XCJtYXhMZW5ndGhcIlxuICAgICAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJuZXdJdGVtXCJcbiAgICAgICAgICAgIFtwS2V5RmlsdGVyXT1cImtleUZpbHRlclwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25JbnB1dEZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25JbnB1dExvc3RGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCI+XG4gICAgfUBlbHNlIHtcbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgIGNsYXNzPVwiYmctZ3JheXNjYWxlLTAgdy1mdWxsIGJvcmRlci1ub25lIGZsZXgtMSBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbWF4ID09PSB2YWx1ZS5sZW5ndGhcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHx8ICcnXCJcbiAgICAgICAgICAgIFttYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAgICAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwibmV3SXRlbVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25JbnB1dEZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25JbnB1dExvc3RGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCI+XG4gICAgfVxuPC91bD5cbkBpZihpbmZvTGFiZWwpIHtcbiAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JheXNjYWxlLTUwIHRleHQteHNcIj5cbiAgICAgICAge3sgaW5mb0xhYmVsIH19XG4gICAgPC9zcGFuPlxufVxuIl19
@@ -1,3 +1,4 @@
1
- export { ChipsModule } from "./lib/chips/chips.module";
2
- export { ChipsComponent } from "./lib/chips/chips/chips.component";
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9jaGlwcy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQ2hpcHNNb2R1bGUgfSBmcm9tIFwiLi9saWIvY2hpcHMvY2hpcHMubW9kdWxlXCI7XG5leHBvcnQgeyBDaGlwc0NvbXBvbmVudCB9IGZyb20gXCIuL2xpYi9jaGlwcy9jaGlwcy9jaGlwcy5jb21wb25lbnRcIjtcblxuZXhwb3J0IHR5cGUgeyBDaGlwQWRkRXZlbnQsIENoaXBDbGlja0V2ZW50LCBDaGlwUmVtb3ZlRXZlbnQsIENoaXBFdmVudCB9IGZyb20gJy4vbGliL2NoaXBzL21vZGVscy9jaGlwLW1vZGVscyc7XG4iXX0=
1
+ export { ChipsModule } from './lib/chips/chips.module';
2
+ export { ChipsComponent } from './lib/chips/chips/chips.component';
3
+ export { ChipItemComponent } from './lib/chips/chip-item/chip-item.component';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9jaGlwcy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQ2hpcHNNb2R1bGUgfSBmcm9tICcuL2xpYi9jaGlwcy9jaGlwcy5tb2R1bGUnO1xuZXhwb3J0IHsgQ2hpcHNDb21wb25lbnQgfSBmcm9tICcuL2xpYi9jaGlwcy9jaGlwcy9jaGlwcy5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ2hpcEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2xpYi9jaGlwcy9jaGlwLWl0ZW0vY2hpcC1pdGVtLmNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIHsgQ2hpcEFkZEV2ZW50LCBDaGlwQ2xpY2tFdmVudCwgQ2hpcFJlbW92ZUV2ZW50LCBDaGlwRXZlbnQgfSBmcm9tICcuL2xpYi9jaGlwcy9tb2RlbHMvY2hpcC1tb2RlbHMnO1xuXG4iXX0=
@@ -28,4 +28,27 @@ export function CheckDisabled(disabledField = 'disabled') {
28
28
  return descriptor;
29
29
  };
30
30
  }
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zaGFyZWQvc3JjL2xpYi9zaGFyZWQvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsYUFBYSxHQUFHLFVBQVU7SUFDcEQsT0FBTyxVQUFVLE9BQVksRUFBRSxZQUFvQixFQUFFLFVBQThCO1FBQy9FLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDeEMsVUFBVSxDQUFDLEtBQUssR0FBRyxVQUFVLEdBQUcsSUFBVztZQUN2QyxNQUFNLElBQUksR0FBRyxJQUEyQixDQUFDO1lBQ3pDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLE9BQU87WUFDWCxDQUFDO1lBQ0QsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUM7UUFFRixPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIGRlY29yYXRvciB0aGF0IGNhbiBiZSB1c2VkIHRvIGRpc2FibGUgZnVuY3Rpb25zIGJhc2VkIG9uIGEgYm9vbGVhbiBwcm9wZXJ0eSBvbiB0aGUgY29tcG9uZW50LlxuICpcbiAqIEBwYXJhbSBkaXNhYmxlZEZpZWxkIFRoZSBuYW1lIG9mIHRoZSBib29sZWFuIHByb3BlcnR5IHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgZGVjb3JhdGVkXG4gKiBmdW5jdGlvbiBzaG91bGQgYmUgZGlzYWJsZWQuIERlZmF1bHRzIHRvICdkaXNhYmxlZCcuXG4gKiBAcmV0dXJucyBBIGRlY29yYXRvciBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlY29yYXRlIGEgZnVuY3Rpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIGNsYXNzIE15Q29tcG9uZW50IHtcbiAqICAgZGlzYWJsZWQgPSB0cnVlO1xuICpcbiAqICAgQENoZWNrRGlzYWJsZWQoKVxuICogICBvbkNsaWNrKCkge1xuICogICAgIGNvbnNvbGUubG9nKCdCdXR0b24gd2FzIGNsaWNrZWQnKTtcbiAqICAgfVxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gQ2hlY2tEaXNhYmxlZChkaXNhYmxlZEZpZWxkID0gJ2Rpc2FibGVkJykge1xuICAgIHJldHVybiBmdW5jdGlvbiAoX3RhcmdldDogYW55LCBfcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICAgICAgZGVzY3JpcHRvci52YWx1ZSA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXMgYXMgUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICAgICAgICAgIGlmIChzZWxmW2Rpc2FibGVkRmllbGRdKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH07XG59XG4iXX0=
31
+ /**
32
+ * @description Restaura o foco após a remoção de um item de uma lista de itens focáveis (ex: chips),
33
+ * movendo-o para o item que passou a ocupar o índice removido. Se a lista ficou vazia, executa
34
+ * `fallbackFocus` (ex: focar um campo de entrada relacionado), quando informado.
35
+ *
36
+ * @param items Itens focáveis já atualizados (sem o item removido).
37
+ * @param removedIndex Índice, na lista anterior, do item que foi removido.
38
+ * @param fallbackFocus Executado quando não sobra nenhum item para focar.
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * this.value.splice(itemIndex, 1);
43
+ * this.cdr.detectChanges();
44
+ * restoreFocusAfterRemoval(this.chipItems.toArray(), itemIndex, () => this.input?.nativeElement.focus());
45
+ * ```
46
+ */
47
+ export function restoreFocusAfterRemoval(items, removedIndex, fallbackFocus) {
48
+ if (items.length) {
49
+ items[Math.min(removedIndex, items.length - 1)].focus();
50
+ return;
51
+ }
52
+ fallbackFocus?.();
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zaGFyZWQvc3JjL2xpYi9zaGFyZWQvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsYUFBYSxHQUFHLFVBQVU7SUFDcEQsT0FBTyxVQUFVLE9BQVksRUFBRSxZQUFvQixFQUFFLFVBQThCO1FBQy9FLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDeEMsVUFBVSxDQUFDLEtBQUssR0FBRyxVQUFVLEdBQUcsSUFBVztZQUN2QyxNQUFNLElBQUksR0FBRyxJQUEyQixDQUFDO1lBQ3pDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLE9BQU87WUFDWCxDQUFDO1lBQ0QsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUM7UUFFRixPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDLENBQUM7QUFDTixDQUFDO0FBU0Q7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUNwQyxLQUFVLEVBQ1YsWUFBb0IsRUFDcEIsYUFBMEI7SUFFMUIsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hELE9BQU87SUFDWCxDQUFDO0lBQ0QsYUFBYSxFQUFFLEVBQUUsQ0FBQztBQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIGRlY29yYXRvciB0aGF0IGNhbiBiZSB1c2VkIHRvIGRpc2FibGUgZnVuY3Rpb25zIGJhc2VkIG9uIGEgYm9vbGVhbiBwcm9wZXJ0eSBvbiB0aGUgY29tcG9uZW50LlxuICpcbiAqIEBwYXJhbSBkaXNhYmxlZEZpZWxkIFRoZSBuYW1lIG9mIHRoZSBib29sZWFuIHByb3BlcnR5IHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgZGVjb3JhdGVkXG4gKiBmdW5jdGlvbiBzaG91bGQgYmUgZGlzYWJsZWQuIERlZmF1bHRzIHRvICdkaXNhYmxlZCcuXG4gKiBAcmV0dXJucyBBIGRlY29yYXRvciBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlY29yYXRlIGEgZnVuY3Rpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIGNsYXNzIE15Q29tcG9uZW50IHtcbiAqICAgZGlzYWJsZWQgPSB0cnVlO1xuICpcbiAqICAgQENoZWNrRGlzYWJsZWQoKVxuICogICBvbkNsaWNrKCkge1xuICogICAgIGNvbnNvbGUubG9nKCdCdXR0b24gd2FzIGNsaWNrZWQnKTtcbiAqICAgfVxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gQ2hlY2tEaXNhYmxlZChkaXNhYmxlZEZpZWxkID0gJ2Rpc2FibGVkJykge1xuICAgIHJldHVybiBmdW5jdGlvbiAoX3RhcmdldDogYW55LCBfcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICAgICAgZGVzY3JpcHRvci52YWx1ZSA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXMgYXMgUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICAgICAgICAgIGlmIChzZWxmW2Rpc2FibGVkRmllbGRdKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH07XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEl0ZW0gY2FwYXogZGUgcmVjZWJlciBmb2NvIHByb2dyYW1hdGljYW1lbnRlLCBjb21vIHVtIHtAbGluayBDaGlwSXRlbUNvbXBvbmVudH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9jdXNhYmxlIHtcbiAgICBmb2N1cygpOiB2b2lkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXN0YXVyYSBvIGZvY28gYXDDs3MgYSByZW1vw6fDo28gZGUgdW0gaXRlbSBkZSB1bWEgbGlzdGEgZGUgaXRlbnMgZm9jw6F2ZWlzIChleDogY2hpcHMpLFxuICogbW92ZW5kby1vIHBhcmEgbyBpdGVtIHF1ZSBwYXNzb3UgYSBvY3VwYXIgbyDDrW5kaWNlIHJlbW92aWRvLiBTZSBhIGxpc3RhIGZpY291IHZhemlhLCBleGVjdXRhXG4gKiBgZmFsbGJhY2tGb2N1c2AgKGV4OiBmb2NhciB1bSBjYW1wbyBkZSBlbnRyYWRhIHJlbGFjaW9uYWRvKSwgcXVhbmRvIGluZm9ybWFkby5cbiAqXG4gKiBAcGFyYW0gaXRlbXMgSXRlbnMgZm9jw6F2ZWlzIGrDoSBhdHVhbGl6YWRvcyAoc2VtIG8gaXRlbSByZW1vdmlkbykuXG4gKiBAcGFyYW0gcmVtb3ZlZEluZGV4IMONbmRpY2UsIG5hIGxpc3RhIGFudGVyaW9yLCBkbyBpdGVtIHF1ZSBmb2kgcmVtb3ZpZG8uXG4gKiBAcGFyYW0gZmFsbGJhY2tGb2N1cyBFeGVjdXRhZG8gcXVhbmRvIG7Do28gc29icmEgbmVuaHVtIGl0ZW0gcGFyYSBmb2Nhci5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIHRoaXMudmFsdWUuc3BsaWNlKGl0ZW1JbmRleCwgMSk7XG4gKiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gKiByZXN0b3JlRm9jdXNBZnRlclJlbW92YWwodGhpcy5jaGlwSXRlbXMudG9BcnJheSgpLCBpdGVtSW5kZXgsICgpID0+IHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc3RvcmVGb2N1c0FmdGVyUmVtb3ZhbDxUIGV4dGVuZHMgRm9jdXNhYmxlPihcbiAgICBpdGVtczogVFtdLFxuICAgIHJlbW92ZWRJbmRleDogbnVtYmVyLFxuICAgIGZhbGxiYWNrRm9jdXM/OiAoKSA9PiB2b2lkLFxuKTogdm9pZCB7XG4gICAgaWYgKGl0ZW1zLmxlbmd0aCkge1xuICAgICAgICBpdGVtc1tNYXRoLm1pbihyZW1vdmVkSW5kZXgsIGl0ZW1zLmxlbmd0aCAtIDEpXS5mb2N1cygpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGZhbGxiYWNrRm9jdXM/LigpO1xufVxuIl19
@@ -1,5 +1,7 @@
1
- import { NgClass } from '@angular/common';
2
- import { Component, EventEmitter, Input, Output } from '@angular/core';
1
+ import { Component, DestroyRef, EventEmitter, inject, Input, Output, ViewChildren, } from '@angular/core';
2
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
+ import { ChipItemComponent } from '@seniorsistemas/angular-components/chips';
4
+ import { restoreFocusAfterRemoval } from '@seniorsistemas/angular-components/shared';
3
5
  import * as i0 from "@angular/core";
4
6
  /**
5
7
  * @description Componente de lista de tokens (etiquetas) clicáveis e opcionalmente
@@ -18,6 +20,9 @@ import * as i0 from "@angular/core";
18
20
  */
19
21
  export class TokenListComponent {
20
22
  static nextId = 0;
23
+ destroyRef = inject(DestroyRef);
24
+ pendingFocusIndex = null;
25
+ chipItems;
21
26
  /** @description Identificador único do componente no DOM. Gerado automaticamente se não informado. */
22
27
  id = `s-token-list-${TokenListComponent.nextId++}`;
23
28
  /** @description Lista de tokens exibidos. Campo obrigatório. */
@@ -32,23 +37,37 @@ export class TokenListComponent {
32
37
  tokenSelected = new EventEmitter();
33
38
  /** @description Emitido quando o usuário remove um token não desabilitado. */
34
39
  tokenRemoved = new EventEmitter();
40
+ ngAfterViewInit() {
41
+ this.chipItems.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
42
+ if (this.pendingFocusIndex === null) {
43
+ return;
44
+ }
45
+ const focusIndex = this.pendingFocusIndex;
46
+ this.pendingFocusIndex = null;
47
+ restoreFocusAfterRemoval(this.chipItems.toArray(), focusIndex);
48
+ });
49
+ }
35
50
  onTokenSelected(token) {
36
51
  if (!token.disabled) {
37
52
  this.tokenSelected.next(token);
38
53
  }
39
54
  }
40
- onTokenRemoved(token) {
55
+ onTokenRemoved(token, index) {
41
56
  if (!token.disabled) {
57
+ this.pendingFocusIndex = index;
42
58
  this.tokenRemoved.next(token);
43
59
  }
44
60
  }
45
61
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
46
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TokenListComponent, isStandalone: true, selector: "s-token-list", inputs: { id: "id", tokens: "tokens", removableTokens: "removableTokens", hidePointerEvents: "hidePointerEvents", removeIconClass: "removeIconClass" }, outputs: { tokenSelected: "tokenSelected", tokenRemoved: "tokenRemoved" }, ngImport: i0, template: "<div\n [id]=\"id\"\n class=\"token-list\"\n>\n @for (token of tokens; track $index) {\n <span\n [id]=\"token.id\"\n class=\"token\"\n [ngClass]=\"{\n 'no-pointer-events': hidePointerEvents,\n 'token--disabled': token.disabled,\n }\"\n >\n <a\n [id]=\"(token.id || 'token') + '-label'\"\n class=\"token-label\"\n (click)=\"onTokenSelected(token)\"\n >\n {{ token.label }}\n </a>\n @if (removableTokens && !token.notRemovable) {\n <span\n [id]=\"token.id + '-remove'\"\n [class]=\"removeIconClass\"\n (click)=\"onTokenRemoved(token)\"\n >\n </span>\n }\n </span>\n }\n</div>\n", styles: [".no-pointer-events{pointer-events:none}.token-list{align-items:center;display:inline-flex;flex-wrap:wrap;max-width:100%;padding:0 10px;text-transform:none}.token-list .token{align-items:center;background-color:#e5eaea;border:1px solid #697882;border-radius:4px;color:#212533;display:flex;font:400 12px/150% Open Sans,sans-serif;gap:8px;margin:2px 5px 0 0;max-width:100%;padding:2px 8px;-webkit-user-select:none;user-select:none}.token-list .token-label{max-width:50ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.token-list .token:not(.token--disabled):hover,.token-list .token:not(.token--disabled):focus{background-color:#ccc}.token-list .token a{text-decoration:none;color:#212533}.token-list .token--disabled{opacity:50%}.token-list .token--disabled a{cursor:default}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
62
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TokenListComponent, isStandalone: true, selector: "s-token-list", inputs: { id: "id", tokens: "tokens", removableTokens: "removableTokens", hidePointerEvents: "hidePointerEvents", removeIconClass: "removeIconClass" }, outputs: { tokenSelected: "tokenSelected", tokenRemoved: "tokenRemoved" }, viewQueries: [{ propertyName: "chipItems", predicate: ChipItemComponent, descendants: true }], ngImport: i0, template: "<div\n [id]=\"id\"\n class=\"token-list inline-flex max-w-full flex-wrap items-center gap-2 px-[10px] py-0 normal-case\"\n>\n @for (token of tokens; track $index) {\n <s-chip-item\n [dataRender]=\"token.label\"\n [itemIndex]=\"$index\"\n [disabled]=\"token.disabled ?? false\"\n [showTooltip]=\"false\"\n [removeIconClass]=\"removeIconClass\"\n [hidePointerEvents]=\"hidePointerEvents\"\n [showRemove]=\"removableTokens && !token.notRemovable\"\n (clickRemove)=\"onTokenRemoved(token, $index)\"\n (chipClicked)=\"onTokenSelected(token)\"\n >\n </s-chip-item>\n }\n</div>\n\n", dependencies: [{ kind: "component", type: ChipItemComponent, selector: "s-chip-item", inputs: ["dataRender", "objectField", "disabled", "templateRef", "itemIndex", "showTooltip", "maxLengthRenderWithoutTooltip", "showRemove", "removeIconClass", "hidePointerEvents"], outputs: ["clickRemove", "chipClicked"] }] });
47
63
  }
48
64
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenListComponent, decorators: [{
49
65
  type: Component,
50
- args: [{ selector: 's-token-list', standalone: true, imports: [NgClass], template: "<div\n [id]=\"id\"\n class=\"token-list\"\n>\n @for (token of tokens; track $index) {\n <span\n [id]=\"token.id\"\n class=\"token\"\n [ngClass]=\"{\n 'no-pointer-events': hidePointerEvents,\n 'token--disabled': token.disabled,\n }\"\n >\n <a\n [id]=\"(token.id || 'token') + '-label'\"\n class=\"token-label\"\n (click)=\"onTokenSelected(token)\"\n >\n {{ token.label }}\n </a>\n @if (removableTokens && !token.notRemovable) {\n <span\n [id]=\"token.id + '-remove'\"\n [class]=\"removeIconClass\"\n (click)=\"onTokenRemoved(token)\"\n >\n </span>\n }\n </span>\n }\n</div>\n", styles: [".no-pointer-events{pointer-events:none}.token-list{align-items:center;display:inline-flex;flex-wrap:wrap;max-width:100%;padding:0 10px;text-transform:none}.token-list .token{align-items:center;background-color:#e5eaea;border:1px solid #697882;border-radius:4px;color:#212533;display:flex;font:400 12px/150% Open Sans,sans-serif;gap:8px;margin:2px 5px 0 0;max-width:100%;padding:2px 8px;-webkit-user-select:none;user-select:none}.token-list .token-label{max-width:50ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.token-list .token:not(.token--disabled):hover,.token-list .token:not(.token--disabled):focus{background-color:#ccc}.token-list .token a{text-decoration:none;color:#212533}.token-list .token--disabled{opacity:50%}.token-list .token--disabled a{cursor:default}\n"] }]
51
- }], propDecorators: { id: [{
66
+ args: [{ selector: 's-token-list', standalone: true, imports: [ChipItemComponent], template: "<div\n [id]=\"id\"\n class=\"token-list inline-flex max-w-full flex-wrap items-center gap-2 px-[10px] py-0 normal-case\"\n>\n @for (token of tokens; track $index) {\n <s-chip-item\n [dataRender]=\"token.label\"\n [itemIndex]=\"$index\"\n [disabled]=\"token.disabled ?? false\"\n [showTooltip]=\"false\"\n [removeIconClass]=\"removeIconClass\"\n [hidePointerEvents]=\"hidePointerEvents\"\n [showRemove]=\"removableTokens && !token.notRemovable\"\n (clickRemove)=\"onTokenRemoved(token, $index)\"\n (chipClicked)=\"onTokenSelected(token)\"\n >\n </s-chip-item>\n }\n</div>\n\n" }]
67
+ }], propDecorators: { chipItems: [{
68
+ type: ViewChildren,
69
+ args: [ChipItemComponent]
70
+ }], id: [{
52
71
  type: Input
53
72
  }], tokens: [{
54
73
  type: Input,
@@ -64,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
64
83
  }], tokenRemoved: [{
65
84
  type: Output
66
85
  }] } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9rZW4tbGlzdC9zcmMvbGliL3Rva2VuLWxpc3QvdG9rZW4tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9rZW4tbGlzdC9zcmMvbGliL3Rva2VuLWxpc3QvdG9rZW4tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJdkU7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFRSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ3BCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRXpCLHNHQUFzRztJQUUvRixFQUFFLEdBQUcsZ0JBQWdCLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFFMUQsZ0VBQWdFO0lBRXpELE1BQU0sQ0FBWTtJQUV6QiwwRUFBMEU7SUFFbkUsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUUvQiwwR0FBMEc7SUFFbkcsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBRWpDLHNGQUFzRjtJQUUvRSxlQUFlLEdBQUcsY0FBYyxDQUFDO0lBRXhDLGdGQUFnRjtJQUV6RSxhQUFhLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFaEUsOEVBQThFO0lBRXZFLFlBQVksR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUV4RCxlQUFlLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0wsQ0FBQzt3R0F6Q1Esa0JBQWtCOzRGQUFsQixrQkFBa0IsMlNDM0IvQixvNEJBK0JBLDYwQkROYyxPQUFPOzs0RkFFUixrQkFBa0I7a0JBUDlCLFNBQVM7K0JBQ0ksY0FBYyxjQUdaLElBQUksV0FDUCxDQUFDLE9BQU8sQ0FBQzs4QkFPWCxFQUFFO3NCQURSLEtBQUs7Z0JBS0MsTUFBTTtzQkFEWixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFLbEIsZUFBZTtzQkFEckIsS0FBSztnQkFLQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBS0MsZUFBZTtzQkFEckIsS0FBSztnQkFLQyxhQUFhO3NCQURuQixNQUFNO2dCQUtBLFlBQVk7c0JBRGxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IElUb2tlbiB9IGZyb20gJy4vbW9kZWxzL3Rva2VuJztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50ZSBkZSBsaXN0YSBkZSB0b2tlbnMgKGV0aXF1ZXRhcykgY2xpY8OhdmVpcyBlIG9wY2lvbmFsbWVudGVcclxuICogcmVtb3bDrXZlaXMuIEVtaXRlIGV2ZW50b3MgYW8gc2VsZWNpb25hciBvdSByZW1vdmVyIHVtIHRva2VuLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBodG1sXHJcbiAqIDxzLXRva2VuLWxpc3RcclxuICogICBbdG9rZW5zXT1cImxpc3RhRGVUb2tlbnNcIlxyXG4gKiAgIFtyZW1vdmFibGVUb2tlbnNdPVwidHJ1ZVwiXHJcbiAqICAgKHRva2VuU2VsZWN0ZWQpPVwib25Ub2tlblNlbGVjaW9uYWRvKCRldmVudClcIlxyXG4gKiAgICh0b2tlblJlbW92ZWQpPVwib25Ub2tlblJlbW92aWRvKCRldmVudClcIiAvPlxyXG4gKiBgYGBcclxuICpcclxuICogQGNhdGVnb3J5IFN1bW1hcnlcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzLXRva2VuLWxpc3QnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rva2VuLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdG9rZW4tbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtOZ0NsYXNzXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRva2VuTGlzdENvbXBvbmVudCB7XHJcbiAgICBwdWJsaWMgc3RhdGljIG5leHRJZCA9IDA7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJZGVudGlmaWNhZG9yIMO6bmljbyBkbyBjb21wb25lbnRlIG5vIERPTS4gR2VyYWRvIGF1dG9tYXRpY2FtZW50ZSBzZSBuw6NvIGluZm9ybWFkby4gKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaWQgPSBgcy10b2tlbi1saXN0LSR7VG9rZW5MaXN0Q29tcG9uZW50Lm5leHRJZCsrfWA7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBMaXN0YSBkZSB0b2tlbnMgZXhpYmlkb3MuIENhbXBvIG9icmlnYXTDs3Jpby4gKi9cclxuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgdG9rZW5zITogSVRva2VuW107XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFeGliZSBvIGJvdMOjbyBkZSByZW1vw6fDo28gZW0gY2FkYSB0b2tlbi4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcmVtb3ZhYmxlVG9rZW5zID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCByZW1vdmUgb3MgZXZlbnRvcyBkZSBwb250ZWlybyAoaG92ZXIvY2xpcXVlKSBkb3MgdG9rZW5zLiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBoaWRlUG9pbnRlckV2ZW50cyA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ2xhc3NlIGRvIMOtY29uZSBkbyBib3TDo28gZGUgcmVtb3ZlciB0b2tlbi4gQGRlZmF1bHQgJ2ZhciBmYS10aW1lcycgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcmVtb3ZlSWNvbkNsYXNzID0gJ2ZhciBmYS10aW1lcyc7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIHVzdcOhcmlvIGNsaWNhIGVtIHVtIHRva2VuIG7Do28gZGVzYWJpbGl0YWRvLiAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgdG9rZW5TZWxlY3RlZDogRXZlbnRFbWl0dGVyPElUb2tlbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIHVzdcOhcmlvIHJlbW92ZSB1bSB0b2tlbiBuw6NvIGRlc2FiaWxpdGFkby4gKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHRva2VuUmVtb3ZlZDogRXZlbnRFbWl0dGVyPElUb2tlbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgcHVibGljIG9uVG9rZW5TZWxlY3RlZCh0b2tlbjogSVRva2VuKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0b2tlbi5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRva2VuU2VsZWN0ZWQubmV4dCh0b2tlbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvblRva2VuUmVtb3ZlZCh0b2tlbjogSVRva2VuKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0b2tlbi5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRva2VuUmVtb3ZlZC5uZXh0KHRva2VuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdlxuICAgIFtpZF09XCJpZFwiXG4gICAgY2xhc3M9XCJ0b2tlbi1saXN0XCJcbj5cbiAgICBAZm9yICh0b2tlbiBvZiB0b2tlbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2lkXT1cInRva2VuLmlkXCJcbiAgICAgICAgICAgIGNsYXNzPVwidG9rZW5cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICduby1wb2ludGVyLWV2ZW50cyc6IGhpZGVQb2ludGVyRXZlbnRzLFxuICAgICAgICAgICAgICAgICd0b2tlbi0tZGlzYWJsZWQnOiB0b2tlbi5kaXNhYmxlZCxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIFtpZF09XCIodG9rZW4uaWQgfHwgJ3Rva2VuJykgKyAnLWxhYmVsJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0b2tlbi1sYWJlbFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9rZW5TZWxlY3RlZCh0b2tlbilcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHRva2VuLmxhYmVsIH19XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICBAaWYgKHJlbW92YWJsZVRva2VucyAmJiAhdG9rZW4ubm90UmVtb3ZhYmxlKSB7XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cInRva2VuLmlkICsgJy1yZW1vdmUnXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInJlbW92ZUljb25DbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblRva2VuUmVtb3ZlZCh0b2tlbilcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvc3Bhbj5cbiAgICB9XG48L2Rpdj5cbiJdfQ==
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9rZW4tbGlzdC9zcmMvbGliL3Rva2VuLWxpc3QvdG9rZW4tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9rZW4tbGlzdC9zcmMvbGliL3Rva2VuLWxpc3QvdG9rZW4tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBRU4sWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOztBQUdyRjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQU9ILE1BQU0sT0FBTyxrQkFBa0I7SUFDcEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFUixVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pDLGlCQUFpQixHQUFrQixJQUFJLENBQUM7SUFHL0IsU0FBUyxDQUFnQztJQUUxRCxzR0FBc0c7SUFFL0YsRUFBRSxHQUFHLGdCQUFnQixrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBRTFELGdFQUFnRTtJQUV6RCxNQUFNLENBQVk7SUFFekIsMEVBQTBFO0lBRW5FLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFFL0IsMEdBQTBHO0lBRW5HLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUVqQyxzRkFBc0Y7SUFFL0UsZUFBZSxHQUFHLGNBQWMsQ0FBQztJQUV4QyxnRkFBZ0Y7SUFFekUsYUFBYSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRWhFLDhFQUE4RTtJQUV2RSxZQUFZLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFeEQsZUFBZTtRQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM1RSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDbEMsT0FBTztZQUNYLENBQUM7WUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUM5Qix3QkFBd0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ25FLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFhO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNMLENBQUM7SUFFTSxjQUFjLENBQUMsS0FBYSxFQUFFLEtBQWE7UUFDOUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDTCxDQUFDO3dHQTNEUSxrQkFBa0I7NEZBQWxCLGtCQUFrQix5VUFNYixpQkFBaUIsZ0RDNUNuQyxvc0JBb0JBLDRDRGdCYyxpQkFBaUI7OzRGQUVsQixrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0ksY0FBYyxjQUVaLElBQUksV0FDUCxDQUFDLGlCQUFpQixDQUFDOzhCQVNYLFNBQVM7c0JBRHpCLFlBQVk7dUJBQUMsaUJBQWlCO2dCQUt4QixFQUFFO3NCQURSLEtBQUs7Z0JBS0MsTUFBTTtzQkFEWixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFLbEIsZUFBZTtzQkFEckIsS0FBSztnQkFLQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBS0MsZUFBZTtzQkFEckIsS0FBSztnQkFLQyxhQUFhO3NCQURuQixNQUFNO2dCQUtBLFlBQVk7c0JBRGxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENvbXBvbmVudCxcclxuICAgIERlc3Ryb3lSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBpbmplY3QsXHJcbiAgICBJbnB1dCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFZpZXdDaGlsZHJlbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuaW1wb3J0IHsgQ2hpcEl0ZW1Db21wb25lbnQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2NoaXBzJztcclxuaW1wb3J0IHsgcmVzdG9yZUZvY3VzQWZ0ZXJSZW1vdmFsIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9zaGFyZWQnO1xyXG5pbXBvcnQgeyBJVG9rZW4gfSBmcm9tICcuL21vZGVscy90b2tlbic7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgbGlzdGEgZGUgdG9rZW5zIChldGlxdWV0YXMpIGNsaWPDoXZlaXMgZSBvcGNpb25hbG1lbnRlXHJcbiAqIHJlbW92w612ZWlzLiBFbWl0ZSBldmVudG9zIGFvIHNlbGVjaW9uYXIgb3UgcmVtb3ZlciB1bSB0b2tlbi5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgaHRtbFxyXG4gKiA8cy10b2tlbi1saXN0XHJcbiAqICAgW3Rva2Vuc109XCJsaXN0YURlVG9rZW5zXCJcclxuICogICBbcmVtb3ZhYmxlVG9rZW5zXT1cInRydWVcIlxyXG4gKiAgICh0b2tlblNlbGVjdGVkKT1cIm9uVG9rZW5TZWxlY2lvbmFkbygkZXZlbnQpXCJcclxuICogICAodG9rZW5SZW1vdmVkKT1cIm9uVG9rZW5SZW1vdmlkbygkZXZlbnQpXCIgLz5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBTdW1tYXJ5XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncy10b2tlbi1saXN0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90b2tlbi1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbQ2hpcEl0ZW1Db21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9rZW5MaXN0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgICBwdWJsaWMgc3RhdGljIG5leHRJZCA9IDA7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG4gICAgcHJpdmF0ZSBwZW5kaW5nRm9jdXNJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgQFZpZXdDaGlsZHJlbihDaGlwSXRlbUNvbXBvbmVudClcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hpcEl0ZW1zITogUXVlcnlMaXN0PENoaXBJdGVtQ29tcG9uZW50PjtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIElkZW50aWZpY2Fkb3Igw7puaWNvIGRvIGNvbXBvbmVudGUgbm8gRE9NLiBHZXJhZG8gYXV0b21hdGljYW1lbnRlIHNlIG7Do28gaW5mb3JtYWRvLiAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpZCA9IGBzLXRva2VuLWxpc3QtJHtUb2tlbkxpc3RDb21wb25lbnQubmV4dElkKyt9YDtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIExpc3RhIGRlIHRva2VucyBleGliaWRvcy4gQ2FtcG8gb2JyaWdhdMOzcmlvLiAqL1xyXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICAgIHB1YmxpYyB0b2tlbnMhOiBJVG9rZW5bXTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEV4aWJlIG8gYm90w6NvIGRlIHJlbW/Dp8OjbyBlbSBjYWRhIHRva2VuLiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyByZW1vdmFibGVUb2tlbnMgPSBmYWxzZTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIFF1YW5kbyBgdHJ1ZWAsIHJlbW92ZSBvcyBldmVudG9zIGRlIHBvbnRlaXJvIChob3Zlci9jbGlxdWUpIGRvcyB0b2tlbnMuIEBkZWZhdWx0IGZhbHNlICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGhpZGVQb2ludGVyRXZlbnRzID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDbGFzc2UgZG8gw61jb25lIGRvIGJvdMOjbyBkZSByZW1vdmVyIHRva2VuLiBAZGVmYXVsdCAnZmFyIGZhLXRpbWVzJyAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyByZW1vdmVJY29uQ2xhc3MgPSAnZmFyIGZhLXRpbWVzJztcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdXN1w6FyaW8gY2xpY2EgZW0gdW0gdG9rZW4gbsOjbyBkZXNhYmlsaXRhZG8uICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyB0b2tlblNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8SVRva2VuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdXN1w6FyaW8gcmVtb3ZlIHVtIHRva2VuIG7Do28gZGVzYWJpbGl0YWRvLiAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgdG9rZW5SZW1vdmVkOiBFdmVudEVtaXR0ZXI8SVRva2VuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2hpcEl0ZW1zLmNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucGVuZGluZ0ZvY3VzSW5kZXggPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBmb2N1c0luZGV4ID0gdGhpcy5wZW5kaW5nRm9jdXNJbmRleDtcclxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nRm9jdXNJbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1c0FmdGVyUmVtb3ZhbCh0aGlzLmNoaXBJdGVtcy50b0FycmF5KCksIGZvY3VzSW5kZXgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvblRva2VuU2VsZWN0ZWQodG9rZW46IElUb2tlbik6IHZvaWQge1xyXG4gICAgICAgIGlmICghdG9rZW4uZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy50b2tlblNlbGVjdGVkLm5leHQodG9rZW4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25Ub2tlblJlbW92ZWQodG9rZW46IElUb2tlbiwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGlmICghdG9rZW4uZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nRm9jdXNJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgICB0aGlzLnRva2VuUmVtb3ZlZC5uZXh0KHRva2VuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdlxuICAgIFtpZF09XCJpZFwiXG4gICAgY2xhc3M9XCJ0b2tlbi1saXN0IGlubGluZS1mbGV4IG1heC13LWZ1bGwgZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMiBweC1bMTBweF0gcHktMCBub3JtYWwtY2FzZVwiXG4+XG4gICAgQGZvciAodG9rZW4gb2YgdG9rZW5zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPHMtY2hpcC1pdGVtXG4gICAgICAgICAgICBbZGF0YVJlbmRlcl09XCJ0b2tlbi5sYWJlbFwiXG4gICAgICAgICAgICBbaXRlbUluZGV4XT1cIiRpbmRleFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwidG9rZW4uZGlzYWJsZWQgPz8gZmFsc2VcIlxuICAgICAgICAgICAgW3Nob3dUb29sdGlwXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtyZW1vdmVJY29uQ2xhc3NdPVwicmVtb3ZlSWNvbkNsYXNzXCJcbiAgICAgICAgICAgIFtoaWRlUG9pbnRlckV2ZW50c109XCJoaWRlUG9pbnRlckV2ZW50c1wiXG4gICAgICAgICAgICBbc2hvd1JlbW92ZV09XCJyZW1vdmFibGVUb2tlbnMgJiYgIXRva2VuLm5vdFJlbW92YWJsZVwiXG4gICAgICAgICAgICAoY2xpY2tSZW1vdmUpPVwib25Ub2tlblJlbW92ZWQodG9rZW4sICRpbmRleClcIlxuICAgICAgICAgICAgKGNoaXBDbGlja2VkKT1cIm9uVG9rZW5TZWxlY3RlZCh0b2tlbilcIlxuICAgICAgICA+XG4gICAgICAgIDwvcy1jaGlwLWl0ZW0+XG4gICAgfVxuPC9kaXY+XG5cbiJdfQ==
@@ -4,7 +4,7 @@ import * as i0 from "@angular/core";
4
4
  export class TokenListModule {
5
5
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6
6
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: TokenListModule, imports: [TokenListComponent], exports: [TokenListComponent] });
7
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenListModule });
7
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenListModule, imports: [TokenListComponent] });
8
8
  }
9
9
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenListModule, decorators: [{
10
10
  type: NgModule,
@@ -13,4 +13,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
13
13
  exports: [TokenListComponent],
14
14
  }]
15
15
  }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tbGlzdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9rZW4tbGlzdC9zcmMvbGliL3Rva2VuLWxpc3QvdG9rZW4tbGlzdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFNNUQsTUFBTSxPQUFPLGVBQWU7d0dBQWYsZUFBZTt5R0FBZixlQUFlLFlBSGQsa0JBQWtCLGFBQ2xCLGtCQUFrQjt5R0FFbkIsZUFBZTs7NEZBQWYsZUFBZTtrQkFKM0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDN0IsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFRva2VuTGlzdENvbXBvbmVudCB9IGZyb20gJy4vdG9rZW4tbGlzdC5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtUb2tlbkxpc3RDb21wb25lbnRdLFxyXG4gICAgZXhwb3J0czogW1Rva2VuTGlzdENvbXBvbmVudF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb2tlbkxpc3RNb2R1bGUge31cclxuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tbGlzdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9rZW4tbGlzdC9zcmMvbGliL3Rva2VuLWxpc3QvdG9rZW4tbGlzdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFNNUQsTUFBTSxPQUFPLGVBQWU7d0dBQWYsZUFBZTt5R0FBZixlQUFlLFlBSGQsa0JBQWtCLGFBQ2xCLGtCQUFrQjt5R0FFbkIsZUFBZSxZQUhkLGtCQUFrQjs7NEZBR25CLGVBQWU7a0JBSjNCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBUb2tlbkxpc3RDb21wb25lbnQgfSBmcm9tICcuL3Rva2VuLWxpc3QuY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBpbXBvcnRzOiBbVG9rZW5MaXN0Q29tcG9uZW50XSxcclxuICAgIGV4cG9ydHM6IFtUb2tlbkxpc3RDb21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9rZW5MaXN0TW9kdWxlIHt9XHJcbiJdfQ==
@@ -71,11 +71,11 @@ class AlertComponent {
71
71
  }
72
72
  _isOpen = true;
73
73
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
74
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AlertComponent, isStandalone: true, selector: "s-alert", inputs: { severity: { classPropertyName: "severity", publicName: "severity", isSignal: false, isRequired: false, transformFunction: null }, summary: { classPropertyName: "summary", publicName: "summary", isSignal: false, isRequired: true, transformFunction: null }, detail: { classPropertyName: "detail", publicName: "detail", isSignal: false, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: false, isRequired: false, transformFunction: null }, escape: { classPropertyName: "escape", publicName: "escape", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, ngImport: i0, template: "@if (isOpen) {\n <div\n class=\"alert m-2 flex items-center justify-between gap-4 rounded-medium border-l-4 px-4 py-3 shadow-[1px_1px_2px_rgba(0,0,0,0.2)]\"\n [ngClass]=\"{\n 'alert--info': severity === 'info',\n 'alert--success': severity === 'success',\n 'alert--warning': severity === 'warning',\n 'alert--error': severity === 'error',\n 'border-primary bg-hippie-blue-50': severity === 'info',\n 'border-criticality-green bg-teal-50': severity === 'success',\n 'border-criticality-yellow bg-buttercup-50': severity === 'warning',\n 'border-criticality-red bg-sunset-orange-50': severity === 'error',\n }\"\n >\n <div class=\"content flex items-center gap-4\">\n <div\n class=\"icon-container inline-flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-[50%]\"\n [ngClass]=\"{\n 'bg-primary': severity === 'info',\n 'bg-criticality-green': severity === 'success',\n 'bg-criticality-yellow': severity === 'warning',\n 'bg-criticality-red': severity === 'error',\n }\"\n >\n <i\n class=\"fas\"\n [ngClass]=\"{\n 'fa-info': severity === 'info',\n 'fa-check': severity === 'success',\n 'fa-exclamation-triangle': severity === 'warning',\n 'fa-times': severity === 'error',\n 'text-grayscale-0': severity !== 'warning',\n 'text-grayscale-90': severity === 'warning',\n }\"\n ></i>\n </div>\n <div class=\"text-container flex flex-col gap-4\">\n <div class=\"text flex flex-col justify-start\">\n @if (summary) {\n <span class=\"summary font-open-sans text-sm font-bold text-grayscale-90\">{{ summary }}</span>\n }\n\n @if (detail) {\n @if (escape()) {\n <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n {{ detail }}\n </span>\n } @else {\n <span\n class=\"detail font-open-sans text-sm text-grayscale-90\"\n [innerHTML]=\"detail\"\n ></span>\n }\n } @else {\n <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n <ng-content />\n </span>\n }\n </div>\n </div>\n </div>\n @if (closable) {\n <button\n class=\"close-option cursor-pointer border-0 bg-transparent p-1 text-base text-grayscale-90\"\n (click)=\"onClose()\"\n >\n <i class=\"fas fa-times\"></i>\n </button>\n }\n </div>\n}\n\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
74
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AlertComponent, isStandalone: true, selector: "s-alert", inputs: { severity: { classPropertyName: "severity", publicName: "severity", isSignal: false, isRequired: false, transformFunction: null }, summary: { classPropertyName: "summary", publicName: "summary", isSignal: false, isRequired: true, transformFunction: null }, detail: { classPropertyName: "detail", publicName: "detail", isSignal: false, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: false, isRequired: false, transformFunction: null }, escape: { classPropertyName: "escape", publicName: "escape", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, ngImport: i0, template: "@if (isOpen) {\n <div\n class=\"alert my-2 flex items-center justify-between gap-4 rounded-medium border-l-4 px-4 py-3 shadow-[1px_1px_2px_rgba(0,0,0,0.2)]\"\n [ngClass]=\"{\n 'alert--info': severity === 'info',\n 'alert--success': severity === 'success',\n 'alert--warning': severity === 'warning',\n 'alert--error': severity === 'error',\n 'border-primary bg-hippie-blue-50': severity === 'info',\n 'border-criticality-green bg-teal-50': severity === 'success',\n 'border-criticality-yellow bg-buttercup-50': severity === 'warning',\n 'border-criticality-red bg-sunset-orange-50': severity === 'error',\n }\"\n >\n <div class=\"content flex items-center gap-4\">\n <div\n class=\"icon-container inline-flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-[50%]\"\n [ngClass]=\"{\n 'bg-primary': severity === 'info',\n 'bg-criticality-green': severity === 'success',\n 'bg-criticality-yellow': severity === 'warning',\n 'bg-criticality-red': severity === 'error',\n }\"\n >\n <i\n class=\"fas\"\n [ngClass]=\"{\n 'fa-info': severity === 'info',\n 'fa-check': severity === 'success',\n 'fa-exclamation-triangle': severity === 'warning',\n 'fa-times': severity === 'error',\n 'text-grayscale-0': severity !== 'warning',\n 'text-grayscale-90': severity === 'warning',\n }\"\n ></i>\n </div>\n <div class=\"text-container flex flex-col gap-4\">\n <div class=\"text flex flex-col justify-start\">\n @if (summary) {\n <span class=\"summary font-open-sans text-sm font-bold text-grayscale-90\">{{ summary }}</span>\n }\n\n @if (detail) {\n @if (escape()) {\n <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n {{ detail }}\n </span>\n } @else {\n <span\n class=\"detail font-open-sans text-sm text-grayscale-90\"\n [innerHTML]=\"detail\"\n ></span>\n }\n } @else {\n <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n <ng-content />\n </span>\n }\n </div>\n </div>\n </div>\n @if (closable) {\n <button\n class=\"close-option cursor-pointer border-0 bg-transparent p-1 text-base text-grayscale-90\"\n (click)=\"onClose()\"\n >\n <i class=\"fas fa-times\"></i>\n </button>\n }\n </div>\n}\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
75
75
  }
76
76
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertComponent, decorators: [{
77
77
  type: Component,
78
- args: [{ selector: 's-alert', standalone: true, imports: [NgClass], template: "@if (isOpen) {\n <div\n class=\"alert m-2 flex items-center justify-between gap-4 rounded-medium border-l-4 px-4 py-3 shadow-[1px_1px_2px_rgba(0,0,0,0.2)]\"\n [ngClass]=\"{\n 'alert--info': severity === 'info',\n 'alert--success': severity === 'success',\n 'alert--warning': severity === 'warning',\n 'alert--error': severity === 'error',\n 'border-primary bg-hippie-blue-50': severity === 'info',\n 'border-criticality-green bg-teal-50': severity === 'success',\n 'border-criticality-yellow bg-buttercup-50': severity === 'warning',\n 'border-criticality-red bg-sunset-orange-50': severity === 'error',\n }\"\n >\n <div class=\"content flex items-center gap-4\">\n <div\n class=\"icon-container inline-flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-[50%]\"\n [ngClass]=\"{\n 'bg-primary': severity === 'info',\n 'bg-criticality-green': severity === 'success',\n 'bg-criticality-yellow': severity === 'warning',\n 'bg-criticality-red': severity === 'error',\n }\"\n >\n <i\n class=\"fas\"\n [ngClass]=\"{\n 'fa-info': severity === 'info',\n 'fa-check': severity === 'success',\n 'fa-exclamation-triangle': severity === 'warning',\n 'fa-times': severity === 'error',\n 'text-grayscale-0': severity !== 'warning',\n 'text-grayscale-90': severity === 'warning',\n }\"\n ></i>\n </div>\n <div class=\"text-container flex flex-col gap-4\">\n <div class=\"text flex flex-col justify-start\">\n @if (summary) {\n <span class=\"summary font-open-sans text-sm font-bold text-grayscale-90\">{{ summary }}</span>\n }\n\n @if (detail) {\n @if (escape()) {\n <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n {{ detail }}\n </span>\n } @else {\n <span\n class=\"detail font-open-sans text-sm text-grayscale-90\"\n [innerHTML]=\"detail\"\n ></span>\n }\n } @else {\n <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n <ng-content />\n </span>\n }\n </div>\n </div>\n </div>\n @if (closable) {\n <button\n class=\"close-option cursor-pointer border-0 bg-transparent p-1 text-base text-grayscale-90\"\n (click)=\"onClose()\"\n >\n <i class=\"fas fa-times\"></i>\n </button>\n }\n </div>\n}\n\n" }]
78
+ args: [{ selector: 's-alert', standalone: true, imports: [NgClass], template: "@if (isOpen) {\n <div\n class=\"alert my-2 flex items-center justify-between gap-4 rounded-medium border-l-4 px-4 py-3 shadow-[1px_1px_2px_rgba(0,0,0,0.2)]\"\n [ngClass]=\"{\n 'alert--info': severity === 'info',\n 'alert--success': severity === 'success',\n 'alert--warning': severity === 'warning',\n 'alert--error': severity === 'error',\n 'border-primary bg-hippie-blue-50': severity === 'info',\n 'border-criticality-green bg-teal-50': severity === 'success',\n 'border-criticality-yellow bg-buttercup-50': severity === 'warning',\n 'border-criticality-red bg-sunset-orange-50': severity === 'error',\n }\"\n >\n <div class=\"content flex items-center gap-4\">\n <div\n class=\"icon-container inline-flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-[50%]\"\n [ngClass]=\"{\n 'bg-primary': severity === 'info',\n 'bg-criticality-green': severity === 'success',\n 'bg-criticality-yellow': severity === 'warning',\n 'bg-criticality-red': severity === 'error',\n }\"\n >\n <i\n class=\"fas\"\n [ngClass]=\"{\n 'fa-info': severity === 'info',\n 'fa-check': severity === 'success',\n 'fa-exclamation-triangle': severity === 'warning',\n 'fa-times': severity === 'error',\n 'text-grayscale-0': severity !== 'warning',\n 'text-grayscale-90': severity === 'warning',\n }\"\n ></i>\n </div>\n <div class=\"text-container flex flex-col gap-4\">\n <div class=\"text flex flex-col justify-start\">\n @if (summary) {\n <span class=\"summary font-open-sans text-sm font-bold text-grayscale-90\">{{ summary }}</span>\n }\n\n @if (detail) {\n @if (escape()) {\n <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n {{ detail }}\n </span>\n } @else {\n <span\n class=\"detail font-open-sans text-sm text-grayscale-90\"\n [innerHTML]=\"detail\"\n ></span>\n }\n } @else {\n <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n <ng-content />\n </span>\n }\n </div>\n </div>\n </div>\n @if (closable) {\n <button\n class=\"close-option cursor-pointer border-0 bg-transparent p-1 text-base text-grayscale-90\"\n (click)=\"onClose()\"\n >\n <i class=\"fas fa-times\"></i>\n </button>\n }\n </div>\n}\n" }]
79
79
  }], propDecorators: { severity: [{
80
80
  type: Input
81
81
  }], summary: [{
@@ -1 +1 @@
1
- {"version":3,"file":"seniorsistemas-angular-components-alert.mjs","sources":["../../projects/angular-components/alert/src/lib/alert/alert.component.ts","../../projects/angular-components/alert/src/lib/alert/alert.component.html","../../projects/angular-components/alert/src/lib/alert/alert.module.ts","../../projects/angular-components/alert/src/seniorsistemas-angular-components-alert.ts"],"sourcesContent":["import { NgClass } from '@angular/common';\r\nimport { Component, EventEmitter, input, Input, Output } from '@angular/core';\r\n\r\n/**\r\n * @description Componente de alerta que exibe mensagens informativas, de sucesso, aviso ou erro.\r\n * Suporta fechamento manual pelo usuário e emite um evento ao ser fechado.\r\n *\r\n * @example\r\n * ```html\r\n * <s-alert\r\n * severity=\"warning\"\r\n * summary=\"Atenção\"\r\n * detail=\"Verifique os dados antes de continuar.\"\r\n * (closed)=\"onAlertClosed()\"\r\n * />\r\n * ```\r\n *\r\n * @category Feedback\r\n */\r\n@Component({\r\n selector: 's-alert',\r\n templateUrl: './alert.component.html',\r\n standalone: true,\r\n imports: [NgClass],\r\n})\r\nexport class AlertComponent {\r\n /**\r\n * @description Nível de severidade do alerta, que define a cor e o ícone exibidos.\r\n * - `'info'`: alerta informativo (padrão).\r\n * - `'success'`: alerta de sucesso.\r\n * - `'warning'`: alerta de aviso.\r\n * - `'error'`: alerta de erro.\r\n *\r\n * @default 'info'\r\n */\r\n // sonar-ignore: Refactor this union type to have less than 3 elements\r\n @Input()\r\n public severity: 'info' | 'success' | 'warning' | 'error' = 'info';\r\n\r\n /**\r\n * @description Título principal do alerta exibido em destaque. Campo obrigatório.\r\n */\r\n @Input({ required: true })\r\n public summary!: string;\r\n\r\n /**\r\n * @description Mensagem detalhada exibida abaixo do título do alerta. Campo obrigatório.\r\n */\r\n @Input()\r\n public detail!: string;\r\n\r\n /**\r\n * @description Quando `true`, exibe o botão de fechar o alerta.\r\n * Quando `false`, o alerta não pode ser dispensado pelo usuário.\r\n *\r\n * @default true\r\n */\r\n @Input()\r\n public closable = true;\r\n\r\n /**\r\n * @description Quando `true`, o conteúdo do alerta é escapado para evitar a execução de HTML ou scripts.\r\n * Quando `false`, o conteúdo do alerta é renderizado como HTML, permitindo a inclusão de links, negrito, etc.\r\n *\r\n * @default true\r\n */\r\n escape = input<boolean>(true);\r\n\r\n /**\r\n * @description Emitido quando o usuário fecha o alerta clicando no botão de fechar.\r\n */\r\n @Output()\r\n public closed = new EventEmitter<void>();\r\n\r\n public get isOpen(): boolean {\r\n return this._isOpen;\r\n }\r\n\r\n public closeAlert(): void {\r\n this._isOpen = false;\r\n }\r\n\r\n public showAlert(): void {\r\n this._isOpen = true;\r\n }\r\n\r\n public onClose(): void {\r\n this.closed.emit();\r\n this.closeAlert();\r\n }\r\n\r\n private _isOpen = true;\r\n}\r\n","@if (isOpen) {\n <div\n class=\"alert m-2 flex items-center justify-between gap-4 rounded-medium border-l-4 px-4 py-3 shadow-[1px_1px_2px_rgba(0,0,0,0.2)]\"\n [ngClass]=\"{\n 'alert--info': severity === 'info',\n 'alert--success': severity === 'success',\n 'alert--warning': severity === 'warning',\n 'alert--error': severity === 'error',\n 'border-primary bg-hippie-blue-50': severity === 'info',\n 'border-criticality-green bg-teal-50': severity === 'success',\n 'border-criticality-yellow bg-buttercup-50': severity === 'warning',\n 'border-criticality-red bg-sunset-orange-50': severity === 'error',\n }\"\n >\n <div class=\"content flex items-center gap-4\">\n <div\n class=\"icon-container inline-flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-[50%]\"\n [ngClass]=\"{\n 'bg-primary': severity === 'info',\n 'bg-criticality-green': severity === 'success',\n 'bg-criticality-yellow': severity === 'warning',\n 'bg-criticality-red': severity === 'error',\n }\"\n >\n <i\n class=\"fas\"\n [ngClass]=\"{\n 'fa-info': severity === 'info',\n 'fa-check': severity === 'success',\n 'fa-exclamation-triangle': severity === 'warning',\n 'fa-times': severity === 'error',\n 'text-grayscale-0': severity !== 'warning',\n 'text-grayscale-90': severity === 'warning',\n }\"\n ></i>\n </div>\n <div class=\"text-container flex flex-col gap-4\">\n <div class=\"text flex flex-col justify-start\">\n @if (summary) {\n <span class=\"summary font-open-sans text-sm font-bold text-grayscale-90\">{{ summary }}</span>\n }\n\n @if (detail) {\n @if (escape()) {\n <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n {{ detail }}\n </span>\n } @else {\n <span\n class=\"detail font-open-sans text-sm text-grayscale-90\"\n [innerHTML]=\"detail\"\n ></span>\n }\n } @else {\n <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n <ng-content />\n </span>\n }\n </div>\n </div>\n </div>\n @if (closable) {\n <button\n class=\"close-option cursor-pointer border-0 bg-transparent p-1 text-base text-grayscale-90\"\n (click)=\"onClose()\"\n >\n <i class=\"fas fa-times\"></i>\n </button>\n }\n </div>\n}\n\n","import { NgModule } from '@angular/core';\r\n\r\nimport { AlertComponent } from './alert.component';\r\n\r\n@NgModule({\r\n imports: [AlertComponent],\r\n exports: [AlertComponent],\r\n})\r\nexport class AlertModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seniorsistemas-angular-components-alert.mjs","sources":["../../projects/angular-components/alert/src/lib/alert/alert.component.ts","../../projects/angular-components/alert/src/lib/alert/alert.component.html","../../projects/angular-components/alert/src/lib/alert/alert.module.ts","../../projects/angular-components/alert/src/seniorsistemas-angular-components-alert.ts"],"sourcesContent":["import { NgClass } from '@angular/common';\r\nimport { Component, EventEmitter, input, Input, Output } from '@angular/core';\r\n\r\n/**\r\n * @description Componente de alerta que exibe mensagens informativas, de sucesso, aviso ou erro.\r\n * Suporta fechamento manual pelo usuário e emite um evento ao ser fechado.\r\n *\r\n * @example\r\n * ```html\r\n * <s-alert\r\n * severity=\"warning\"\r\n * summary=\"Atenção\"\r\n * detail=\"Verifique os dados antes de continuar.\"\r\n * (closed)=\"onAlertClosed()\"\r\n * />\r\n * ```\r\n *\r\n * @category Feedback\r\n */\r\n@Component({\r\n selector: 's-alert',\r\n templateUrl: './alert.component.html',\r\n standalone: true,\r\n imports: [NgClass],\r\n})\r\nexport class AlertComponent {\r\n /**\r\n * @description Nível de severidade do alerta, que define a cor e o ícone exibidos.\r\n * - `'info'`: alerta informativo (padrão).\r\n * - `'success'`: alerta de sucesso.\r\n * - `'warning'`: alerta de aviso.\r\n * - `'error'`: alerta de erro.\r\n *\r\n * @default 'info'\r\n */\r\n // sonar-ignore: Refactor this union type to have less than 3 elements\r\n @Input()\r\n public severity: 'info' | 'success' | 'warning' | 'error' = 'info';\r\n\r\n /**\r\n * @description Título principal do alerta exibido em destaque. Campo obrigatório.\r\n */\r\n @Input({ required: true })\r\n public summary!: string;\r\n\r\n /**\r\n * @description Mensagem detalhada exibida abaixo do título do alerta. Campo obrigatório.\r\n */\r\n @Input()\r\n public detail!: string;\r\n\r\n /**\r\n * @description Quando `true`, exibe o botão de fechar o alerta.\r\n * Quando `false`, o alerta não pode ser dispensado pelo usuário.\r\n *\r\n * @default true\r\n */\r\n @Input()\r\n public closable = true;\r\n\r\n /**\r\n * @description Quando `true`, o conteúdo do alerta é escapado para evitar a execução de HTML ou scripts.\r\n * Quando `false`, o conteúdo do alerta é renderizado como HTML, permitindo a inclusão de links, negrito, etc.\r\n *\r\n * @default true\r\n */\r\n escape = input<boolean>(true);\r\n\r\n /**\r\n * @description Emitido quando o usuário fecha o alerta clicando no botão de fechar.\r\n */\r\n @Output()\r\n public closed = new EventEmitter<void>();\r\n\r\n public get isOpen(): boolean {\r\n return this._isOpen;\r\n }\r\n\r\n public closeAlert(): void {\r\n this._isOpen = false;\r\n }\r\n\r\n public showAlert(): void {\r\n this._isOpen = true;\r\n }\r\n\r\n public onClose(): void {\r\n this.closed.emit();\r\n this.closeAlert();\r\n }\r\n\r\n private _isOpen = true;\r\n}\r\n","@if (isOpen) {\n <div\n class=\"alert my-2 flex items-center justify-between gap-4 rounded-medium border-l-4 px-4 py-3 shadow-[1px_1px_2px_rgba(0,0,0,0.2)]\"\n [ngClass]=\"{\n 'alert--info': severity === 'info',\n 'alert--success': severity === 'success',\n 'alert--warning': severity === 'warning',\n 'alert--error': severity === 'error',\n 'border-primary bg-hippie-blue-50': severity === 'info',\n 'border-criticality-green bg-teal-50': severity === 'success',\n 'border-criticality-yellow bg-buttercup-50': severity === 'warning',\n 'border-criticality-red bg-sunset-orange-50': severity === 'error',\n }\"\n >\n <div class=\"content flex items-center gap-4\">\n <div\n class=\"icon-container inline-flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-[50%]\"\n [ngClass]=\"{\n 'bg-primary': severity === 'info',\n 'bg-criticality-green': severity === 'success',\n 'bg-criticality-yellow': severity === 'warning',\n 'bg-criticality-red': severity === 'error',\n }\"\n >\n <i\n class=\"fas\"\n [ngClass]=\"{\n 'fa-info': severity === 'info',\n 'fa-check': severity === 'success',\n 'fa-exclamation-triangle': severity === 'warning',\n 'fa-times': severity === 'error',\n 'text-grayscale-0': severity !== 'warning',\n 'text-grayscale-90': severity === 'warning',\n }\"\n ></i>\n </div>\n <div class=\"text-container flex flex-col gap-4\">\n <div class=\"text flex flex-col justify-start\">\n @if (summary) {\n <span class=\"summary font-open-sans text-sm font-bold text-grayscale-90\">{{ summary }}</span>\n }\n\n @if (detail) {\n @if (escape()) {\n <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n {{ detail }}\n </span>\n } @else {\n <span\n class=\"detail font-open-sans text-sm text-grayscale-90\"\n [innerHTML]=\"detail\"\n ></span>\n }\n } @else {\n <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n <ng-content />\n </span>\n }\n </div>\n </div>\n </div>\n @if (closable) {\n <button\n class=\"close-option cursor-pointer border-0 bg-transparent p-1 text-base text-grayscale-90\"\n (click)=\"onClose()\"\n >\n <i class=\"fas fa-times\"></i>\n </button>\n }\n </div>\n}\n","import { NgModule } from '@angular/core';\r\n\r\nimport { AlertComponent } from './alert.component';\r\n\r\n@NgModule({\r\n imports: [AlertComponent],\r\n exports: [AlertComponent],\r\n})\r\nexport class AlertModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}