@seniorsistemas/angular-components 19.9.4 → 19.9.5

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 (60) hide show
  1. package/autocomplete/README.md +4 -0
  2. package/autocomplete/lib/autocomplete/autocomplete.component.d.ts +7 -1
  3. package/autocomplete/lib/autocomplete/components/autocomplete-chip/autocomplete-chip.component.d.ts +3 -1
  4. package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +10 -4
  5. package/esm2022/autocomplete/lib/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +5 -3
  6. package/esm2022/dynamic-form/dynamic-form/form-field/fields/select/select-field.component.mjs +2 -2
  7. package/esm2022/editor/lib/editor/editor.component.mjs +3 -3
  8. package/esm2022/insights/lib/insights/components/insights-card/insights-card.component.mjs +21 -3
  9. package/esm2022/insights/lib/insights/components/insights-sidebar/insights-sidebar.component.mjs +14 -3
  10. package/esm2022/insights/lib/insights/insights.component.mjs +15 -4
  11. package/esm2022/paginator/lib/paginator/paginator.component.mjs +2 -2
  12. package/esm2022/rating-scale/lib/rating-scale/models/rating-scale-node.mjs +1 -1
  13. package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +23 -3
  14. package/esm2022/select/lib/select/components/select-option/select-option.component.mjs +5 -3
  15. package/esm2022/select/lib/select/select.component.mjs +6 -4
  16. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +7 -3
  17. package/esm2022/split-button/lib/split-button/split-button.component.mjs +11 -3
  18. package/esm2022/table/lib/table/table-column/table-columns.component.mjs +1 -1
  19. package/esm2022/text-area/lib/text-area/text-area.component.mjs +1 -1
  20. package/esm2022/token-list/lib/token-list/token-list.component.mjs +7 -3
  21. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +13 -5
  22. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -1
  23. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +1 -1
  24. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  25. package/fesm2022/seniorsistemas-angular-components-editor.mjs +2 -2
  26. package/fesm2022/seniorsistemas-angular-components-editor.mjs.map +1 -1
  27. package/fesm2022/seniorsistemas-angular-components-insights.mjs +47 -7
  28. package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
  29. package/fesm2022/seniorsistemas-angular-components-paginator.mjs +1 -1
  30. package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
  31. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +22 -2
  32. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
  33. package/fesm2022/seniorsistemas-angular-components-select.mjs +9 -5
  34. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  35. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +6 -2
  36. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
  37. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +10 -2
  38. package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
  39. package/fesm2022/seniorsistemas-angular-components-table.mjs +1 -1
  40. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  41. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +1 -1
  42. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  43. package/fesm2022/seniorsistemas-angular-components-token-list.mjs +6 -2
  44. package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
  45. package/insights/README.md +12 -0
  46. package/insights/lib/insights/components/insights-card/insights-card.component.d.ts +22 -1
  47. package/insights/lib/insights/components/insights-sidebar/insights-sidebar.component.d.ts +9 -1
  48. package/insights/lib/insights/insights.component.d.ts +9 -1
  49. package/package.json +7 -7
  50. package/rating-scale/README.md +38 -13
  51. package/rating-scale/lib/rating-scale/models/rating-scale-node.d.ts +8 -0
  52. package/rating-scale/lib/rating-scale/rating-scale.component.d.ts +4 -1
  53. package/select/README.md +2 -0
  54. package/select/lib/select/components/select-option/select-option.component.d.ts +3 -1
  55. package/select/lib/select/select.component.d.ts +3 -1
  56. package/speech-recognition/README.md +1 -0
  57. package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +3 -1
  58. package/split-button/README.md +2 -0
  59. package/split-button/lib/split-button/split-button.component.d.ts +5 -1
  60. package/token-list/lib/token-list/token-list.component.d.ts +3 -1
@@ -51,6 +51,8 @@ export class SpeechRecognitionComponent {
51
51
  keepContext = false;
52
52
  /** @description Placeholder exibido no textarea durante o reconhecimento de voz. @default '' */
53
53
  speechRecognitionPlaceholder = '';
54
+ /** @description Classe do ícone do botão de mais opções. @default 'far fa-ellipsis-h' */
55
+ moreOptionsIconClass = 'far fa-ellipsis-h';
54
56
  _recognizedText = '';
55
57
  originalTextAreaElementText = '';
56
58
  isDoneTextToSpeech = false;
@@ -234,7 +236,7 @@ export class SpeechRecognitionComponent {
234
236
  return this.textAreaElement.value;
235
237
  }
236
238
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpeechRecognitionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
237
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SpeechRecognitionComponent, isStandalone: true, selector: "s-speech-recognition", inputs: { textAreaElement: { classPropertyName: "textAreaElement", publicName: "textAreaElement", isSignal: false, isRequired: true, transformFunction: null }, keepContext: { classPropertyName: "keepContext", publicName: "keepContext", isSignal: false, isRequired: false, transformFunction: null }, speechRecognitionPlaceholder: { classPropertyName: "speechRecognitionPlaceholder", publicName: "speechRecognitionPlaceholder", isSignal: false, isRequired: false, transformFunction: null }, disabledSpeechRecognition: { classPropertyName: "disabledSpeechRecognition", publicName: "disabledSpeechRecognition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { recognizedText: "recognizedText" }, ngImport: i0, template: "@if(hasSpeechRecognitionBrowserApi) {\n <section class=\"speech-recognition\">\n <div class=\"speech-recognition-text\">\n @if(canRenderMicrophone) {\n {{ 'platform.angular_components.text_area_before_speech' | translate }}\n }\n\n @if(isListeningUserVoice) {\n {{ 'platform.angular_components.text_area_while_speech' | translate }}\n }\n\n @if(canRenderAprove && canRenderDiscard) {\n {{ 'platform.angular_components.text_area_end_speech' | translate }}\n }\n </div>\n <div class=\"speech-recognition-buttons\">\n @if(canRenderListeningText) {\n <span\n (click)=\"stopListening()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"disabledSpeechRecognition()\">\n <i class=\"far fa-ellipsis-h\"></i>\n </span>\n }\n\n @if(canRenderMicrophone) {\n <span\n (click)=\"onListen()\"\n class=\"speech-recognition-item speech-recognition-item-microphone\"\n [class.speech-recognition-item-disabled]=\"isDisabledMicrophone || isListening || disabled || disabledSpeechRecognition()\">\n <i class=\"fas fa-microphone\"></i>\n </span>\n }\n\n\n @if(canRenderAprove) {\n <span\n (click)=\"onAprove()\"\n class=\"speech-recognition-item speech-recognition-item-aprove\">\n <i class=\"fas fa-check\"></i>\n </span>\n }\n\n @if(canRenderDiscard) {\n <span\n (click)=\"onDiscard()\"\n class=\"speech-recognition-item speech-recognition-item-discard\">\n <i class=\"fas fa-times\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeech) {\n <span\n (click)=\"onOpenToolbar()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"isDisabledTextToSpeech\">\n <i class=\"fas fa-volume-down\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeechToolbar) {\n <span\n class=\"speech-recognition-item-toolbar\">\n <i class=\"fas\" [class.fa-pause]=\"isPlayingTextToSpeech\" [class.fa-play]=\"!isPlayingTextToSpeech\"\n (click)=\"toggleTextToSpeech()\"></i>\n <i class=\"fas fa-backward\" (click)=\"restartTextToSpeech()\"></i>\n <span (click)=\"updateVoiceSpeed()\">\n {{ voiceSpeed }}x\n </span>\n <i class=\"fas fa-times\" (click)=\"onCloseToolbar()\"></i>\n </span>\n }\n </div>\n </section>\n}\n", styles: [".speech-recognition{display:flex;gap:10px;justify-content:space-between;width:100%}.speech-recognition-buttons{display:flex;gap:10px;position:relative;bottom:15px;margin-right:16px}.speech-recognition-item{display:inline-flex;height:25px;padding:4px 12px;justify-content:center;align-items:center;gap:8px;border-radius:15px;cursor:pointer;transition:background .1s ease-in}.speech-recognition-item i,.speech-recognition-item span{color:#fff}.speech-recognition-item-disabled{cursor:default!important}.speech-recognition-item-disabled *{opacity:.5}.speech-recognition-item-microphone{background:#428bca}.speech-recognition-item-microphone:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-regular{background:#7892a1}.speech-recognition-item-regular:not(.speech-recognition-item-disabled):hover{background:#697882}.speech-recognition-item-aprove{background:#0c9348}.speech-recognition-item-aprove:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-discard{background:#c13018}.speech-recognition-item-discard:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-toolbar{background:#7892a1;display:flex;border-radius:15px;align-items:center;color:#fff;height:25px}.speech-recognition-item-toolbar i,.speech-recognition-item-toolbar span{cursor:pointer}.speech-recognition-item-toolbar i:not(:first-child),.speech-recognition-item-toolbar i:not(:last-child){padding:6px}.speech-recognition-item-toolbar i:first-child{padding-left:10px}.speech-recognition-item-toolbar i:last-child{padding-right:10px}.speech-recognition-text{color:#212533;font-size:12px;font-style:normal;font-weight:400;word-break:break-word}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }] });
239
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SpeechRecognitionComponent, isStandalone: true, selector: "s-speech-recognition", inputs: { textAreaElement: { classPropertyName: "textAreaElement", publicName: "textAreaElement", isSignal: false, isRequired: true, transformFunction: null }, keepContext: { classPropertyName: "keepContext", publicName: "keepContext", isSignal: false, isRequired: false, transformFunction: null }, speechRecognitionPlaceholder: { classPropertyName: "speechRecognitionPlaceholder", publicName: "speechRecognitionPlaceholder", isSignal: false, isRequired: false, transformFunction: null }, moreOptionsIconClass: { classPropertyName: "moreOptionsIconClass", publicName: "moreOptionsIconClass", isSignal: false, isRequired: false, transformFunction: null }, disabledSpeechRecognition: { classPropertyName: "disabledSpeechRecognition", publicName: "disabledSpeechRecognition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { recognizedText: "recognizedText" }, ngImport: i0, template: "@if(hasSpeechRecognitionBrowserApi) {\n <section class=\"speech-recognition\">\n <div class=\"speech-recognition-text\">\n @if(canRenderMicrophone) {\n {{ 'platform.angular_components.text_area_before_speech' | translate }}\n }\n\n @if(isListeningUserVoice) {\n {{ 'platform.angular_components.text_area_while_speech' | translate }}\n }\n\n @if(canRenderAprove && canRenderDiscard) {\n {{ 'platform.angular_components.text_area_end_speech' | translate }}\n }\n </div>\n <div class=\"speech-recognition-buttons\">\n @if(canRenderListeningText) {\n <span\n (click)=\"stopListening()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"disabledSpeechRecognition()\">\n <i [class]=\"moreOptionsIconClass\"></i>\n </span>\n }\n\n @if(canRenderMicrophone) {\n <span\n (click)=\"onListen()\"\n class=\"speech-recognition-item speech-recognition-item-microphone\"\n [class.speech-recognition-item-disabled]=\"isDisabledMicrophone || isListening || disabled || disabledSpeechRecognition()\">\n <i class=\"fas fa-microphone\"></i>\n </span>\n }\n\n\n @if(canRenderAprove) {\n <span\n (click)=\"onAprove()\"\n class=\"speech-recognition-item speech-recognition-item-aprove\">\n <i class=\"fas fa-check\"></i>\n </span>\n }\n\n @if(canRenderDiscard) {\n <span\n (click)=\"onDiscard()\"\n class=\"speech-recognition-item speech-recognition-item-discard\">\n <i class=\"fas fa-times\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeech) {\n <span\n (click)=\"onOpenToolbar()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"isDisabledTextToSpeech\">\n <i class=\"fas fa-volume-down\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeechToolbar) {\n <span\n class=\"speech-recognition-item-toolbar\">\n <i class=\"fas\" [class.fa-pause]=\"isPlayingTextToSpeech\" [class.fa-play]=\"!isPlayingTextToSpeech\"\n (click)=\"toggleTextToSpeech()\"></i>\n <i class=\"fas fa-backward\" (click)=\"restartTextToSpeech()\"></i>\n <span (click)=\"updateVoiceSpeed()\">\n {{ voiceSpeed }}x\n </span>\n <i class=\"fas fa-times\" (click)=\"onCloseToolbar()\"></i>\n </span>\n }\n </div>\n </section>\n}\n", styles: [".speech-recognition{display:flex;gap:10px;justify-content:space-between;width:100%}.speech-recognition-buttons{display:flex;gap:10px;position:relative;bottom:15px;margin-right:16px}.speech-recognition-item{display:inline-flex;height:25px;padding:4px 12px;justify-content:center;align-items:center;gap:8px;border-radius:15px;cursor:pointer;transition:background .1s ease-in}.speech-recognition-item i,.speech-recognition-item span{color:#fff}.speech-recognition-item-disabled{cursor:default!important}.speech-recognition-item-disabled *{opacity:.5}.speech-recognition-item-microphone{background:#428bca}.speech-recognition-item-microphone:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-regular{background:#7892a1}.speech-recognition-item-regular:not(.speech-recognition-item-disabled):hover{background:#697882}.speech-recognition-item-aprove{background:#0c9348}.speech-recognition-item-aprove:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-discard{background:#c13018}.speech-recognition-item-discard:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-toolbar{background:#7892a1;display:flex;border-radius:15px;align-items:center;color:#fff;height:25px}.speech-recognition-item-toolbar i,.speech-recognition-item-toolbar span{cursor:pointer}.speech-recognition-item-toolbar i:not(:first-child),.speech-recognition-item-toolbar i:not(:last-child){padding:6px}.speech-recognition-item-toolbar i:first-child{padding-left:10px}.speech-recognition-item-toolbar i:last-child{padding-right:10px}.speech-recognition-text{color:#212533;font-size:12px;font-style:normal;font-weight:400;word-break:break-word}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }] });
238
240
  }
239
241
  __decorate([
240
242
  SkipIf('disabledSpeechRecognition', 'isDisabledMicrophone', 'isListening')
@@ -265,7 +267,7 @@ __decorate([
265
267
  ], SpeechRecognitionComponent.prototype, "stopListening", null);
266
268
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpeechRecognitionComponent, decorators: [{
267
269
  type: Component,
268
- args: [{ selector: 's-speech-recognition', standalone: true, imports: [TranslatePipe], template: "@if(hasSpeechRecognitionBrowserApi) {\n <section class=\"speech-recognition\">\n <div class=\"speech-recognition-text\">\n @if(canRenderMicrophone) {\n {{ 'platform.angular_components.text_area_before_speech' | translate }}\n }\n\n @if(isListeningUserVoice) {\n {{ 'platform.angular_components.text_area_while_speech' | translate }}\n }\n\n @if(canRenderAprove && canRenderDiscard) {\n {{ 'platform.angular_components.text_area_end_speech' | translate }}\n }\n </div>\n <div class=\"speech-recognition-buttons\">\n @if(canRenderListeningText) {\n <span\n (click)=\"stopListening()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"disabledSpeechRecognition()\">\n <i class=\"far fa-ellipsis-h\"></i>\n </span>\n }\n\n @if(canRenderMicrophone) {\n <span\n (click)=\"onListen()\"\n class=\"speech-recognition-item speech-recognition-item-microphone\"\n [class.speech-recognition-item-disabled]=\"isDisabledMicrophone || isListening || disabled || disabledSpeechRecognition()\">\n <i class=\"fas fa-microphone\"></i>\n </span>\n }\n\n\n @if(canRenderAprove) {\n <span\n (click)=\"onAprove()\"\n class=\"speech-recognition-item speech-recognition-item-aprove\">\n <i class=\"fas fa-check\"></i>\n </span>\n }\n\n @if(canRenderDiscard) {\n <span\n (click)=\"onDiscard()\"\n class=\"speech-recognition-item speech-recognition-item-discard\">\n <i class=\"fas fa-times\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeech) {\n <span\n (click)=\"onOpenToolbar()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"isDisabledTextToSpeech\">\n <i class=\"fas fa-volume-down\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeechToolbar) {\n <span\n class=\"speech-recognition-item-toolbar\">\n <i class=\"fas\" [class.fa-pause]=\"isPlayingTextToSpeech\" [class.fa-play]=\"!isPlayingTextToSpeech\"\n (click)=\"toggleTextToSpeech()\"></i>\n <i class=\"fas fa-backward\" (click)=\"restartTextToSpeech()\"></i>\n <span (click)=\"updateVoiceSpeed()\">\n {{ voiceSpeed }}x\n </span>\n <i class=\"fas fa-times\" (click)=\"onCloseToolbar()\"></i>\n </span>\n }\n </div>\n </section>\n}\n", styles: [".speech-recognition{display:flex;gap:10px;justify-content:space-between;width:100%}.speech-recognition-buttons{display:flex;gap:10px;position:relative;bottom:15px;margin-right:16px}.speech-recognition-item{display:inline-flex;height:25px;padding:4px 12px;justify-content:center;align-items:center;gap:8px;border-radius:15px;cursor:pointer;transition:background .1s ease-in}.speech-recognition-item i,.speech-recognition-item span{color:#fff}.speech-recognition-item-disabled{cursor:default!important}.speech-recognition-item-disabled *{opacity:.5}.speech-recognition-item-microphone{background:#428bca}.speech-recognition-item-microphone:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-regular{background:#7892a1}.speech-recognition-item-regular:not(.speech-recognition-item-disabled):hover{background:#697882}.speech-recognition-item-aprove{background:#0c9348}.speech-recognition-item-aprove:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-discard{background:#c13018}.speech-recognition-item-discard:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-toolbar{background:#7892a1;display:flex;border-radius:15px;align-items:center;color:#fff;height:25px}.speech-recognition-item-toolbar i,.speech-recognition-item-toolbar span{cursor:pointer}.speech-recognition-item-toolbar i:not(:first-child),.speech-recognition-item-toolbar i:not(:last-child){padding:6px}.speech-recognition-item-toolbar i:first-child{padding-left:10px}.speech-recognition-item-toolbar i:last-child{padding-right:10px}.speech-recognition-text{color:#212533;font-size:12px;font-style:normal;font-weight:400;word-break:break-word}\n"] }]
270
+ args: [{ selector: 's-speech-recognition', standalone: true, imports: [TranslatePipe], template: "@if(hasSpeechRecognitionBrowserApi) {\n <section class=\"speech-recognition\">\n <div class=\"speech-recognition-text\">\n @if(canRenderMicrophone) {\n {{ 'platform.angular_components.text_area_before_speech' | translate }}\n }\n\n @if(isListeningUserVoice) {\n {{ 'platform.angular_components.text_area_while_speech' | translate }}\n }\n\n @if(canRenderAprove && canRenderDiscard) {\n {{ 'platform.angular_components.text_area_end_speech' | translate }}\n }\n </div>\n <div class=\"speech-recognition-buttons\">\n @if(canRenderListeningText) {\n <span\n (click)=\"stopListening()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"disabledSpeechRecognition()\">\n <i [class]=\"moreOptionsIconClass\"></i>\n </span>\n }\n\n @if(canRenderMicrophone) {\n <span\n (click)=\"onListen()\"\n class=\"speech-recognition-item speech-recognition-item-microphone\"\n [class.speech-recognition-item-disabled]=\"isDisabledMicrophone || isListening || disabled || disabledSpeechRecognition()\">\n <i class=\"fas fa-microphone\"></i>\n </span>\n }\n\n\n @if(canRenderAprove) {\n <span\n (click)=\"onAprove()\"\n class=\"speech-recognition-item speech-recognition-item-aprove\">\n <i class=\"fas fa-check\"></i>\n </span>\n }\n\n @if(canRenderDiscard) {\n <span\n (click)=\"onDiscard()\"\n class=\"speech-recognition-item speech-recognition-item-discard\">\n <i class=\"fas fa-times\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeech) {\n <span\n (click)=\"onOpenToolbar()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"isDisabledTextToSpeech\">\n <i class=\"fas fa-volume-down\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeechToolbar) {\n <span\n class=\"speech-recognition-item-toolbar\">\n <i class=\"fas\" [class.fa-pause]=\"isPlayingTextToSpeech\" [class.fa-play]=\"!isPlayingTextToSpeech\"\n (click)=\"toggleTextToSpeech()\"></i>\n <i class=\"fas fa-backward\" (click)=\"restartTextToSpeech()\"></i>\n <span (click)=\"updateVoiceSpeed()\">\n {{ voiceSpeed }}x\n </span>\n <i class=\"fas fa-times\" (click)=\"onCloseToolbar()\"></i>\n </span>\n }\n </div>\n </section>\n}\n", styles: [".speech-recognition{display:flex;gap:10px;justify-content:space-between;width:100%}.speech-recognition-buttons{display:flex;gap:10px;position:relative;bottom:15px;margin-right:16px}.speech-recognition-item{display:inline-flex;height:25px;padding:4px 12px;justify-content:center;align-items:center;gap:8px;border-radius:15px;cursor:pointer;transition:background .1s ease-in}.speech-recognition-item i,.speech-recognition-item span{color:#fff}.speech-recognition-item-disabled{cursor:default!important}.speech-recognition-item-disabled *{opacity:.5}.speech-recognition-item-microphone{background:#428bca}.speech-recognition-item-microphone:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-regular{background:#7892a1}.speech-recognition-item-regular:not(.speech-recognition-item-disabled):hover{background:#697882}.speech-recognition-item-aprove{background:#0c9348}.speech-recognition-item-aprove:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-discard{background:#c13018}.speech-recognition-item-discard:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-toolbar{background:#7892a1;display:flex;border-radius:15px;align-items:center;color:#fff;height:25px}.speech-recognition-item-toolbar i,.speech-recognition-item-toolbar span{cursor:pointer}.speech-recognition-item-toolbar i:not(:first-child),.speech-recognition-item-toolbar i:not(:last-child){padding:6px}.speech-recognition-item-toolbar i:first-child{padding-left:10px}.speech-recognition-item-toolbar i:last-child{padding-right:10px}.speech-recognition-text{color:#212533;font-size:12px;font-style:normal;font-weight:400;word-break:break-word}\n"] }]
269
271
  }], propDecorators: { textAreaElement: [{
270
272
  type: Input,
271
273
  args: [{ required: true }]
@@ -273,7 +275,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
273
275
  type: Input
274
276
  }], speechRecognitionPlaceholder: [{
275
277
  type: Input
278
+ }], moreOptionsIconClass: [{
279
+ type: Input
276
280
  }], recognizedText: [{
277
281
  type: Output
278
282
  }], onListen: [], onOpenToolbar: [], onCloseToolbar: [], onDiscard: [], onAprove: [], toggleTextToSpeech: [], restartTextToSpeech: [], updateVoiceSpeed: [], stopListening: [] } });
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlZWNoLXJlY29nbml0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcGVlY2gtcmVjb2duaXRpb24vc3JjL2xpYi9zcGVlY2gtcmVjb2duaXRpb24vc3BlZWNoLXJlY29nbml0aW9uL3NwZWVjaC1yZWNvZ25pdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3BlZWNoLXJlY29nbml0aW9uL3NyYy9saWIvc3BlZWNoLXJlY29nbml0aW9uL3NwZWVjaC1yZWNvZ25pdGlvbi9zcGVlY2gtcmVjb2duaXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUVoRSxTQUFTLE1BQU0sQ0FBQyxHQUFHLFNBQWtEO0lBQ25FLE9BQU8sVUFDTCxPQUFnQixFQUNoQixZQUFvQixFQUNwQixVQUE0RDtRQUU1RCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBRWxDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixVQUFVLENBQUMsS0FBSyxHQUFHLFVBQXFDLEdBQUcs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QixXQUFXO3NCQUFuQixLQUFLO2dCQUVHLDRCQUE0QjtzQkFBcEMsS0FBSztnQkE2QkksY0FBYztzQkFBdkIsTUFBTTtnQkFxQlAsUUFBUSxNQXVDUixhQUFhLE1BV2IsY0FBYyxNQVNkLFNBQVMsTUFjVCxRQUFRLE1BMEJSLGtCQUFrQixNQWNsQixtQkFBbUIsTUFNbkIsZ0JBQWdCLE1BU2hCLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIGluamVjdCwgaW5wdXQsIGlzU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UsIFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNwZWVjaFJlY29nbml0aW9uU2VydmljZSB9IGZyb20gJy4uL3NwZWVjaC1yZWNvZ25pdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGV4dFRvU3BlZWNoU2VydmljZSB9IGZyb20gJy4uL3RleHQtdG8tc3BlZWNoLnNlcnZpY2UnO1xyXG5cclxuZnVuY3Rpb24gU2tpcElmKC4uLnByb3BOYW1lczogQXJyYXk8a2V5b2YgU3BlZWNoUmVjb2duaXRpb25Db21wb25lbnQ+KSB7XHJcbiAgcmV0dXJuIGZ1bmN0aW9uIChcclxuICAgIF90YXJnZXQ6IHVua25vd24sXHJcbiAgICBfcHJvcGVydHlLZXk6IHN0cmluZyxcclxuICAgIGRlc2NyaXB0b3I6IFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPCguLi5hcmdzOiBhbnlbXSkgPT4gYW55PlxyXG4gICkge1xyXG4gICAgY29uc3Qgb3JpZ2luYWwgPSBkZXNjcmlwdG9yLnZhbHVlO1xyXG5cclxuICAgIGlmIChvcmlnaW5hbCkge1xyXG4gICAgICBkZXNjcmlwdG9yLnZhbHVlID0gZnVuY3Rpb24gKHRoaXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIC4uLmFyZ3M6IGFueVtdKSB7XHJcblxyXG4gICAgICAgIGNvbnN0IHNob3VsZFNraXAgPSBwcm9wTmFtZXMuc29tZSgocHJvcE5hbWUpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHRhcmdldFByb3AgPSB0aGlzW3Byb3BOYW1lXTtcclxuXHJcblxyXG4gICAgICAgICAgcmV0dXJuIHR5cGVvZiB0YXJnZXRQcm9wID09PSAnZnVuY3Rpb24nXHJcbiAgICAgICAgICAgID8gQm9vbGVhbih0YXJnZXRQcm9wKCkpXHJcbiAgICAgICAgICAgIDogQm9vbGVhbih0YXJnZXRQcm9wKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHNob3VsZFNraXApIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgcmVjb25oZWNpbWVudG8gZGUgdm96IHF1ZSBpbnRlZ3JhIGEgV2ViIFNwZWVjaCBBUEkgcGFyYVxyXG4gKiB0cmFuc2NyZXZlciBhIGZhbGEgZG8gdXN1w6FyaW8gZW0gdGV4dG8sIGluc2Vyw61kYSBkaXJldGFtZW50ZSBlbSB1bSBgPHRleHRhcmVhPmAgZm9ybmVjaWRvLlxyXG4gKiBTdXBvcnRhIHRhbWLDqW0gdGV4dC10by1zcGVlY2ggcGFyYSBsZWl0dXJhIGVtIHZveiBhbHRhIGRvIGNvbnRlw7pkbyBkbyBjYW1wby5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgaHRtbFxyXG4gKiA8cy1zcGVlY2gtcmVjb2duaXRpb25cclxuICogICBbdGV4dEFyZWFFbGVtZW50XT1cInRleHRBcmVhUmVmLm5hdGl2ZUVsZW1lbnRcIlxyXG4gKiAgIChyZWNvZ25pemVkVGV4dCk9XCJvblRleHRvUmVjb25oZWNpZG8oJGV2ZW50KVwiIC8+XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAY2F0ZWdvcnkgSW5wdXRzXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncy1zcGVlY2gtcmVjb2duaXRpb24nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NwZWVjaC1yZWNvZ25pdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9zcGVlY2gtcmVjb2duaXRpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbVHJhbnNsYXRlUGlwZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlID0gaW5qZWN0KFNwZWVjaFJlY29nbml0aW9uU2VydmljZSk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRUb1NwZWVjaFNlcnZpY2UgPSBpbmplY3QoVGV4dFRvU3BlZWNoU2VydmljZSk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgVE9PTEJBUl9BQ1RJVkUgPSBmYWxzZTtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVmZXLDqm5jaWEgYW8gZWxlbWVudG8gYDx0ZXh0YXJlYT5gIG5hdGl2byBxdWUgcmVjZWJlcsOhIG8gdGV4dG8gdHJhbnNjcml0by4gQ2FtcG8gb2JyaWdhdMOzcmlvLiAqL1xyXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgdGV4dEFyZWFFbGVtZW50ITogSFRNTFRleHRBcmVhRWxlbWVudDtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gUXVhbmRvIGB0cnVlYCwgbWFudMOpbSBvIHRleHRvIGV4aXN0ZW50ZSBubyBjYW1wbyBhbyBpbmljaWFyIG5vdm8gcmVjb25oZWNpbWVudG8uIEBkZWZhdWx0IGZhbHNlICovXHJcbiAgICBASW5wdXQoKSBrZWVwQ29udGV4dCA9IGZhbHNlO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQbGFjZWhvbGRlciBleGliaWRvIG5vIHRleHRhcmVhIGR1cmFudGUgbyByZWNvbmhlY2ltZW50byBkZSB2b3ouIEBkZWZhdWx0ICcnICovXHJcbiAgICBASW5wdXQoKSBzcGVlY2hSZWNvZ25pdGlvblBsYWNlaG9sZGVyID0gJyc7XHJcbiAgICBwcml2YXRlIF9yZWNvZ25pemVkVGV4dCA9ICcnO1xyXG4gICAgcHJpdmF0ZSBvcmlnaW5hbFRleHRBcmVhRWxlbWVudFRleHQgPSAnJztcclxuICAgIHByaXZhdGUgaXNEb25lVGV4dFRvU3BlZWNoID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBWT0lDRV9TUEVFRFMgPSBbMC41LCAxLCAxLjUsIDJdO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBrZXlkb3duRXZlbnRMaXN0ZW5lciA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBkaXNhYmxlZFNwZWVjaFJlY29nbml0aW9uID0gaW5wdXQoZmFsc2UpO1xyXG5cclxuICAgIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBpc0xpc3RlbmluZ1VzZXJWb2ljZSA9IGZhbHNlO1xyXG4gICAgdm9pY2VTcGVlZCA9IDE7XHJcbiAgICBpc0Rpc2FibGVkTWljcm9waG9uZSA9IGZhbHNlO1xyXG5cclxuICAgIGNhblJlbmRlck1pY3JvcGhvbmUgPSB0cnVlO1xyXG4gICAgY2FuUmVuZGVyVGV4dFRvU3BlZWNoID0gdHJ1ZTtcclxuICAgIGNhblJlbmRlckxpc3RlbmluZ1RleHQgPSBmYWxzZTtcclxuICAgIGNhblJlbmRlckRpc2NhcmQgPSBmYWxzZTtcclxuICAgIGNhblJlbmRlckFwcm92ZSA9IGZhbHNlO1xyXG4gICAgY2FuUmVuZGVyVGV4dFRvU3BlZWNoVG9vbGJhciA9IGZhbHNlO1xyXG5cclxuICAgIGlzUGxheWluZ1RleHRUb1NwZWVjaCA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyByZWNvbmhlY2ltZW50byBkZSB2b3ogw6kgY29uY2x1w61kbywgY29tIG8gdGV4dG8gdHJhbnNjcml0by4gKi9cclxuICAgIEBPdXRwdXQoKSByZWNvZ25pemVkVGV4dCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5oYXNTcGVlY2hSZWNvZ25pdGlvbkJyb3dzZXJBcGkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMudGV4dEFyZWFFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndGV4dEFyZWFFbGVtZW50IGlzIHJlcXVpcmVkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudGV4dEFyZWFFbGVtZW50LnBsYWNlaG9sZGVyID0gdGhpcy5zcGVlY2hSZWNvZ25pdGlvblBsYWNlaG9sZGVyXHJcbiAgICAgICAgICAgID8gdGhpcy5zcGVlY2hSZWNvZ25pdGlvblBsYWNlaG9sZGVyXHJcbiAgICAgICAgICAgIDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy50ZXh0X2FyZWFfc3BlZWNoX3JlY29nbml0aW9uX3BsYWNlaG9sZGVyJyk7XHJcbiAgICAgICAgdGhpcy50ZXh0QXJlYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMua2V5ZG93bkV2ZW50TGlzdGVuZXIpO1xyXG4gICAgICAgIHRoaXMuc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlLm1pY3JvcGhvbmVTdGF0dXMkLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzdGF0dXMgPT09ICdhY3RpdmUnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2xvc2VUb29sYmFyKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgQFNraXBJZignZGlzYWJsZWRTcGVlY2hSZWNvZ25pdGlvbicsICdpc0Rpc2FibGVkTWljcm9waG9uZScsICdpc0xpc3RlbmluZycpXHJcbiAgICBvbkxpc3RlbigpIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNhblJlbmRlck1pY3JvcGhvbmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhblJlbmRlckxpc3RlbmluZ1RleHQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMub3JpZ2luYWxUZXh0QXJlYUVsZW1lbnRUZXh0ID0gdGhpcy50ZXh0QXJlYUVsZW1lbnQudmFsdWU7XHJcbiAgICAgICAgdGhpcy50ZXh0QXJlYUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICB0aGlzLmlzTGlzdGVuaW5nVXNlclZvaWNlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNwZWVjaFJlY29nbml0aW9uU2VydmljZVxyXG4gICAgICAgICAgICAubGlzdGVuKClcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAoeyB0ZXh0LCBpc0ZpbmFsIH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZWNvZ25pemVkVGV4dCA9IHRleHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRUZXh0QXJlYVZhbHVlKHRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVGV4dEFyZWFCb3R0b20oKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNGaW5hbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhblJlbmRlckFwcm92ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FuUmVuZGVyRGlzY2FyZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FuUmVuZGVyTGlzdGVuaW5nVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTGlzdGVuaW5nVXNlclZvaWNlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTGlzdGVuaW5nVXNlclZvaWNlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5SZW5kZXJNaWNyb3Bob25lID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRGlzYWJsZWRNaWNyb3Bob25lID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5SZW5kZXJMaXN0ZW5pbmdUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNjcm9sbFRleHRBcmVhQm90dG9tKCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRleHRBcmVhRWxlbWVudC5zY3JvbGxUb3AgPSB0aGlzLnRleHRBcmVhRWxlbWVudC5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgICAgfSwgMTIwKTtcclxuICAgIH1cclxuXHJcbiAgQFNraXBJZignZGlzYWJsZWRTcGVlY2hSZWNvZ25pdGlvbicpXHJcbiAgICBvbk9wZW5Ub29sYmFyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRGlzYWJsZWRUZXh0VG9TcGVlY2gpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNhblJlbmRlclRleHRUb1NwZWVjaFRvb2xiYXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2FuUmVuZGVyVGV4dFRvU3BlZWNoID0gZmFsc2U7XHJcbiAgICAgICAgU3BlZWNoUmVjb2duaXRpb25Db21wb25lbnQuVE9PTEJBUl9BQ1RJVkUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc3BlYWsoKTtcclxuICAgIH1cclxuXHJcbiAgQFNraXBJZignZGlzYWJsZWRTcGVlY2hSZWNvZ25pdGlvbicpXHJcbiAgICBvbkNsb3NlVG9vbGJhcigpIHtcclxuICAgICAgICB0aGlzLmNhblJlbmRlclRleHRUb1NwZWVjaFRvb2xiYXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhblJlbmRlclRleHRUb1NwZWVjaCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zdG9wVGV4dFRvU3BlZWNoKCk7XHJcbiAgICAgICAgdGhpcy52b2ljZVNwZWVkID0gMTtcclxuICAgICAgICBTcGVlY2hSZWNvZ25pdGlvbkNvbXBvbmVudC5UT09MQkFSX0FDVElWRSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICBAU2tpcElmKCdkaXNhYmxlZFNwZWVjaFJlY29nbml0aW9uJylcclxuICAgIG9uRGlzY2FyZCgpIHtcclxuICAgICAgICB0aGlzLmNhblJlbmRlckFwcm92ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2FuUmVuZGVyRGlzY2FyZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2FuUmVuZGVyTWljcm9waG9uZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYW5SZW5kZXJUZXh0VG9TcGVlY2hUb29sYmFyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYW5SZW5kZXJUZXh0VG9TcGVlY2ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX3JlY29nbml6ZWRUZXh0ID0gJyc7XHJcbiAgICAgICAgdGhpcy5zZXRUZXh0QXJlYVZhbHVlKHRoaXMub3JpZ2luYWxUZXh0QXJlYUVsZW1lbnRUZXh0KTtcclxuICAgICAgICB0aGlzLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdG9wVGV4dFRvU3BlZWNoKCk7XHJcbiAgICAgICAgU3BlZWNoUmVjb2duaXRpb25Db21wb25lbnQuVE9PTEJBUl9BQ1RJVkUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgQFNraXBJZignZGlzYWJsZWRTcGVlY2hSZWNvZ25pdGlvbicpXHJcbiAgICBvbkFwcm92ZSgpIHtcclxuICAgICAgICB0aGlzLmNhblJlbmRlckFwcm92ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2FuUmVuZGVyRGlzY2FyZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2FuUmVuZGVyTWljcm9waG9uZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYW5SZW5kZXJUZXh0VG9TcGVlY2hUb29sYmFyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYW5SZW5kZXJUZXh0VG9TcGVlY2ggPSB0cnVlO1xyXG4gICAgICAgIGlmICh0aGlzLmtlZXBDb250ZXh0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJyZWFrTGluZSA9IHRoaXMub3JpZ2luYWxUZXh0QXJlYUVsZW1lbnRUZXh0Lmxlbmd0aCA+IDAgPyAnXFxuJyA6ICcnO1xyXG4gICAgICAgICAgICB0aGlzLm9yaWdpbmFsVGV4dEFyZWFFbGVtZW50VGV4dCArPSBgJHticmVha0xpbmV9JHt0aGlzLl9yZWNvZ25pemVkVGV4dH1gO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub3JpZ2luYWxUZXh0QXJlYUVsZW1lbnRUZXh0ID0gdGhpcy5fcmVjb2duaXplZFRleHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVjb2duaXplZFRleHQuZW1pdCh0aGlzLmtlZXBDb250ZXh0ID8gdGhpcy5vcmlnaW5hbFRleHRBcmVhRWxlbWVudFRleHQgOiB0aGlzLl9yZWNvZ25pemVkVGV4dCk7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxUZXh0QXJlYUJvdHRvbSgpO1xyXG4gICAgICAgIHRoaXMuX3JlY29nbml6ZWRUZXh0ID0gJyc7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudGV4dFRvU3BlZWNoU2VydmljZS5jYW5jZWwoKTtcclxuICAgICAgICBTcGVlY2hSZWNvZ25pdGlvbkNvbXBvbmVudC5UT09MQkFSX0FDVElWRSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25EZXN0cm95JC5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG4gIEBTa2lwSWYoJ2Rpc2FibGVkU3BlZWNoUmVjb2duaXRpb24nKVxyXG4gICAgdG9nZ2xlVGV4dFRvU3BlZWNoKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzUGxheWluZ1RleHRUb1NwZWVjaCkge1xyXG4gICAgICAgICAgICB0aGlzLnRleHRUb1NwZWVjaFNlcnZpY2UucGF1c2UoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc0RvbmVUZXh0VG9TcGVlY2gpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3BlYWsoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGV4dFRvU3BlZWNoU2VydmljZS5yZXN1bWUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzUGxheWluZ1RleHRUb1NwZWVjaCA9ICF0aGlzLmlzUGxheWluZ1RleHRUb1NwZWVjaDtcclxuICAgIH1cclxuXHJcbiAgQFNraXBJZignZGlzYWJsZWRTcGVlY2hSZWNvZ25pdGlvbicpXHJcbiAgICByZXN0YXJ0VGV4dFRvU3BlZWNoKCkge1xyXG4gICAgICAgIHRoaXMudGV4dFRvU3BlZWNoU2VydmljZS5jYW5jZWwoKTtcclxuICAgICAgICB0aGlzLnNwZWFrKCk7XHJcbiAgICB9XHJcblxyXG4gIEBTa2lwSWYoJ2Rpc2FibGVkU3BlZWNoUmVjb2duaXRpb24nKVxyXG4gICAgdXBkYXRlVm9pY2VTcGVlZCgpIHtcclxuICAgICAgICBjb25zdCB2b2ljZVNwZWVkSW5kZXggPSB0aGlzLlZPSUNFX1NQRUVEUy5pbmRleE9mKHRoaXMudm9pY2VTcGVlZCk7XHJcbiAgICAgICAgY29uc3QgbmV4dFZvaWNlU3BlZWRJbmRleCA9IHRoaXMuVk9JQ0VfU1BFRURTW3ZvaWNlU3BlZWRJbmRleCArIDFdID8gdm9pY2VTcGVlZEluZGV4ICsgMSA6IDA7XHJcbiAgICAgICAgdGhpcy52b2ljZVNwZWVkID0gdGhpcy5WT0lDRV9TUEVFRFNbbmV4dFZvaWNlU3BlZWRJbmRleF07XHJcbiAgICAgICAgdGhpcy50ZXh0VG9TcGVlY2hTZXJ2aWNlLmNhbmNlbCgpO1xyXG4gICAgICAgIHRoaXMuc3BlYWsoKTtcclxuICAgIH1cclxuXHJcbiAgICBAU2tpcElmKCdkaXNhYmxlZFNwZWVjaFJlY29nbml0aW9uJylcclxuICAgIHN0b3BMaXN0ZW5pbmcoKSB7XHJcbiAgICAgICAgdGhpcy5zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2Uuc3RvcCgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBnZXQgaXNMaXN0ZW5pbmcoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlLmlzTGlzdGVuaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBoYXNTcGVlY2hSZWNvZ25pdGlvbkJyb3dzZXJBcGkoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlLmhhc1N1cHBvcnRTcGVlY2hSZWNvZ25pdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNEaXNhYmxlZFRleHRUb1NwZWVjaCgpIHtcclxuICAgICAgICBjb25zdCBoYXNUZXh0VG9TcGVlY2hWb2ljZSA9IHRoaXMudGV4dFRvU3BlZWNoU2VydmljZS5oYXNWb2ljZTtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAhdGhpcy50ZXh0VG9TcGVlY2ggfHwgIWhhc1RleHRUb1NwZWVjaFZvaWNlIHx8IHRoaXMuaXNMaXN0ZW5pbmcgfHwgU3BlZWNoUmVjb2duaXRpb25Db21wb25lbnQuVE9PTEJBUl9BQ1RJVkVcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0VGV4dEFyZWFWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy50ZXh0QXJlYUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0b3BUZXh0VG9TcGVlY2goKSB7XHJcbiAgICAgICAgdGhpcy5pc1BsYXlpbmdUZXh0VG9TcGVlY2ggPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRleHRUb1NwZWVjaFNlcnZpY2UuY2FuY2VsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzcGVhaygpIHtcclxuICAgICAgICB0aGlzLmlzRG9uZVRleHRUb1NwZWVjaCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNQbGF5aW5nVGV4dFRvU3BlZWNoID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnRleHRUb1NwZWVjaFNlcnZpY2Uuc3BlYWsodGhpcy50ZXh0VG9TcGVlY2gsIHRoaXMudm9pY2VTcGVlZCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNQbGF5aW5nVGV4dFRvU3BlZWNoID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuaXNEb25lVGV4dFRvU3BlZWNoID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldCB0ZXh0VG9TcGVlY2goKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dEFyZWFFbGVtZW50LnZhbHVlO1xyXG4gICAgfVxyXG59XHJcbiIsIkBpZihoYXNTcGVlY2hSZWNvZ25pdGlvbkJyb3dzZXJBcGkpIHtcbiAgICA8c2VjdGlvbiBjbGFzcz1cInNwZWVjaC1yZWNvZ25pdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3BlZWNoLXJlY29nbml0aW9uLXRleHRcIj5cbiAgICAgICAgICAgIEBpZihjYW5SZW5kZXJNaWNyb3Bob25lKSB7XG4gICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy50ZXh0X2FyZWFfYmVmb3JlX3NwZWVjaCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmKGlzTGlzdGVuaW5nVXNlclZvaWNlKSB7XG4gICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy50ZXh0X2FyZWFfd2hpbGVfc3BlZWNoJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYoY2FuUmVuZGVyQXByb3ZlICYmIGNhblJlbmRlckRpc2NhcmQpIHtcbiAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnRleHRfYXJlYV9lbmRfc3BlZWNoJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNwZWVjaC1yZWNvZ25pdGlvbi1idXR0b25zXCI+XG4gICAgICAgICAgICBAaWYoY2FuUmVuZGVyTGlzdGVuaW5nVGV4dCkge1xuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdG9wTGlzdGVuaW5nKClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNwZWVjaC1yZWNvZ25pdGlvbi1pdGVtIHNwZWVjaC1yZWNvZ25pdGlvbi1pdGVtLXJlZ3VsYXJcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc3BlZWNoLXJlY29nbml0aW9uLWl0ZW0tZGlzYWJsZWRdPVwiZGlzYWJsZWRTcGVlY2hSZWNvZ25pdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWVsbGlwc2lzLWhcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYoY2FuUmVuZGVyTWljcm9waG9uZSkge1xuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkxpc3RlbigpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzcGVlY2gtcmVjb2duaXRpb24taXRlbSBzcGVlY2gtcmVjb2duaXRpb24taXRlbS1taWNyb3Bob25lXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNwZWVjaC1yZWNvZ25pdGlvbi1pdGVtLWRpc2FibGVkXT1cImlzRGlzYWJsZWRNaWNyb3Bob25lIHx8IGlzTGlzdGVuaW5nIHx8IGRpc2FibGVkIHx8IGRpc2FibGVkU3BlZWNoUmVjb2duaXRpb24oKVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1taWNyb3Bob25lXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICBAaWYoY2FuUmVuZGVyQXByb3ZlKSB7XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQXByb3ZlKClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNwZWVjaC1yZWNvZ25pdGlvbi1pdGVtIHNwZWVjaC1yZWNvZ25pdGlvbi1pdGVtLWFwcm92ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGVja1wiPjwvaT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZihjYW5SZW5kZXJEaXNjYXJkKSB7XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGlzY2FyZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzcGVlY2gtcmVjb2duaXRpb24taXRlbSBzcGVlY2gtcmVjb2duaXRpb24taXRlbS1kaXNjYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmKGNhblJlbmRlclRleHRUb1NwZWVjaCkge1xuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk9wZW5Ub29sYmFyKClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNwZWVjaC1yZWNvZ25pdGlvbi1pdGVtIHNwZWVjaC1yZWNvZ25pdGlvbi1pdGVtLXJlZ3VsYXJcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc3BlZWNoLXJlY29nbml0aW9uLWl0ZW0tZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFRleHRUb1NwZWVjaFwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS12b2x1bWUtZG93blwiPjwvaT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZihjYW5SZW5kZXJUZXh0VG9TcGVlY2hUb29sYmFyKSB7XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzcGVlY2gtcmVjb2duaXRpb24taXRlbS10b29sYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhc1wiIFtjbGFzcy5mYS1wYXVzZV09XCJpc1BsYXlpbmdUZXh0VG9TcGVlY2hcIiBbY2xhc3MuZmEtcGxheV09XCIhaXNQbGF5aW5nVGV4dFRvU3BlZWNoXCJcbiAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVUZXh0VG9TcGVlY2goKVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWJhY2t3YXJkXCIgKGNsaWNrKT1cInJlc3RhcnRUZXh0VG9TcGVlY2goKVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJ1cGRhdGVWb2ljZVNwZWVkKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB2b2ljZVNwZWVkIH19eFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIiAoY2xpY2spPVwib25DbG9zZVRvb2xiYXIoKVwiPjwvaT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbn1cbiJdfQ==
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlZWNoLXJlY29nbml0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcGVlY2gtcmVjb2duaXRpb24vc3JjL2xpYi9zcGVlY2gtcmVjb2duaXRpb24vc3BlZWNoLXJlY29nbml0aW9uL3NwZWVjaC1yZWNvZ25pdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3BlZWNoLXJlY29nbml0aW9uL3NyYy9saWIvc3BlZWNoLXJlY29nbml0aW9uL3NwZWVjaC1yZWNvZ25pdGlvbi9zcGVlY2gtcmVjb2duaXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUVoRSxTQUFTLE1BQU0sQ0FBQyxHQUFHLFNBQWtEO0lBQ25FLE9BQU8sVUFDTCxPQUFnQixFQUNoQixZQUFvQixFQUNwQixVQUE0RDtRQUU1RCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBRWxDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixVQUFVLENBQUMsS0FBSyxHQUFHLFVBQXFDLEdBQUcs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QyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFFaEIsV0FBVztzQkFBbkIsS0FBSztnQkFFRyw0QkFBNEI7c0JBQXBDLEtBQUs7Z0JBRUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQThCSSxjQUFjO3NCQUF2QixNQUFNO2dCQXFCUCxRQUFRLE1BdUNSLGFBQWEsTUFXYixjQUFjLE1BU2QsU0FBUyxNQWNULFFBQVEsTUEwQlIsa0JBQWtCLE1BY2xCLG1CQUFtQixNQU1uQixnQkFBZ0IsTUFTaEIsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgaW5qZWN0LCBpbnB1dCwgaXNTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSwgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc3BlZWNoLXJlY29nbml0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUZXh0VG9TcGVlY2hTZXJ2aWNlIH0gZnJvbSAnLi4vdGV4dC10by1zcGVlY2guc2VydmljZSc7XHJcblxyXG5mdW5jdGlvbiBTa2lwSWYoLi4ucHJvcE5hbWVzOiBBcnJheTxrZXlvZiBTcGVlY2hSZWNvZ25pdGlvbkNvbXBvbmVudD4pIHtcclxuICByZXR1cm4gZnVuY3Rpb24gKFxyXG4gICAgX3RhcmdldDogdW5rbm93bixcclxuICAgIF9wcm9wZXJ0eUtleTogc3RyaW5nLFxyXG4gICAgZGVzY3JpcHRvcjogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8KC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+XHJcbiAgKSB7XHJcbiAgICBjb25zdCBvcmlnaW5hbCA9IGRlc2NyaXB0b3IudmFsdWU7XHJcblxyXG4gICAgaWYgKG9yaWdpbmFsKSB7XHJcbiAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiAodGhpczogUmVjb3JkPHN0cmluZywgYW55PiwgLi4uYXJnczogYW55W10pIHtcclxuXHJcbiAgICAgICAgY29uc3Qgc2hvdWxkU2tpcCA9IHByb3BOYW1lcy5zb21lKChwcm9wTmFtZSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgdGFyZ2V0UHJvcCA9IHRoaXNbcHJvcE5hbWVdO1xyXG5cclxuXHJcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIHRhcmdldFByb3AgPT09ICdmdW5jdGlvbidcclxuICAgICAgICAgICAgPyBCb29sZWFuKHRhcmdldFByb3AoKSlcclxuICAgICAgICAgICAgOiBCb29sZWFuKHRhcmdldFByb3ApO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoc2hvdWxkU2tpcCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZXNjcmlwdG9yO1xyXG4gIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50ZSBkZSByZWNvbmhlY2ltZW50byBkZSB2b3ogcXVlIGludGVncmEgYSBXZWIgU3BlZWNoIEFQSSBwYXJhXHJcbiAqIHRyYW5zY3JldmVyIGEgZmFsYSBkbyB1c3XDoXJpbyBlbSB0ZXh0bywgaW5zZXLDrWRhIGRpcmV0YW1lbnRlIGVtIHVtIGA8dGV4dGFyZWE+YCBmb3JuZWNpZG8uXHJcbiAqIFN1cG9ydGEgdGFtYsOpbSB0ZXh0LXRvLXNwZWVjaCBwYXJhIGxlaXR1cmEgZW0gdm96IGFsdGEgZG8gY29udGXDumRvIGRvIGNhbXBvLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBodG1sXHJcbiAqIDxzLXNwZWVjaC1yZWNvZ25pdGlvblxyXG4gKiAgIFt0ZXh0QXJlYUVsZW1lbnRdPVwidGV4dEFyZWFSZWYubmF0aXZlRWxlbWVudFwiXHJcbiAqICAgKHJlY29nbml6ZWRUZXh0KT1cIm9uVGV4dG9SZWNvbmhlY2lkbygkZXZlbnQpXCIgLz5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBJbnB1dHNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzLXNwZWVjaC1yZWNvZ25pdGlvbicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3BlZWNoLXJlY29nbml0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3NwZWVjaC1yZWNvZ25pdGlvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtUcmFuc2xhdGVQaXBlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNwZWVjaFJlY29nbml0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzcGVlY2hSZWNvZ25pdGlvblNlcnZpY2UgPSBpbmplY3QoU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGV4dFRvU3BlZWNoU2VydmljZSA9IGluamVjdChUZXh0VG9TcGVlY2hTZXJ2aWNlKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBUT09MQkFSX0FDVElWRSA9IGZhbHNlO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZWZlcsOqbmNpYSBhbyBlbGVtZW50byBgPHRleHRhcmVhPmAgbmF0aXZvIHF1ZSByZWNlYmVyw6EgbyB0ZXh0byB0cmFuc2NyaXRvLiBDYW1wbyBvYnJpZ2F0w7NyaW8uICovXHJcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSB0ZXh0QXJlYUVsZW1lbnQhOiBIVE1MVGV4dEFyZWFFbGVtZW50O1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCBtYW50w6ltIG8gdGV4dG8gZXhpc3RlbnRlIG5vIGNhbXBvIGFvIGluaWNpYXIgbm92byByZWNvbmhlY2ltZW50by4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIEBJbnB1dCgpIGtlZXBDb250ZXh0ID0gZmFsc2U7XHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIFBsYWNlaG9sZGVyIGV4aWJpZG8gbm8gdGV4dGFyZWEgZHVyYW50ZSBvIHJlY29uaGVjaW1lbnRvIGRlIHZvei4gQGRlZmF1bHQgJycgKi9cclxuICAgIEBJbnB1dCgpIHNwZWVjaFJlY29nbml0aW9uUGxhY2Vob2xkZXIgPSAnJztcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ2xhc3NlIGRvIMOtY29uZSBkbyBib3TDo28gZGUgbWFpcyBvcMOnw7Vlcy4gQGRlZmF1bHQgJ2ZhciBmYS1lbGxpcHNpcy1oJyAqL1xyXG4gICAgQElucHV0KCkgbW9yZU9wdGlvbnNJY29uQ2xhc3MgPSAnZmFyIGZhLWVsbGlwc2lzLWgnO1xyXG4gICAgXHJcbiAgICBwcml2YXRlIF9yZWNvZ25pemVkVGV4dCA9ICcnO1xyXG4gICAgcHJpdmF0ZSBvcmlnaW5hbFRleHRBcmVhRWxlbWVudFRleHQgPSAnJztcclxuICAgIHByaXZhdGUgaXNEb25lVGV4dFRvU3BlZWNoID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBWT0lDRV9TUEVFRFMgPSBbMC41LCAxLCAxLjUsIDJdO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBrZXlkb3duRXZlbnRMaXN0ZW5lciA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBkaXNhYmxlZFNwZWVjaFJlY29nbml0aW9uID0gaW5wdXQoZmFsc2UpO1xyXG5cclxuICAgIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBpc0xpc3RlbmluZ1VzZXJWb2ljZSA9IGZhbHNlO1xyXG4gICAgdm9pY2VTcGVlZCA9IDE7XHJcbiAgICBpc0Rpc2FibGVkTWljcm9waG9uZSA9IGZhbHNlO1xyXG5cclxuICAgIGNhblJlbmRlck1pY3JvcGhvbmUgPSB0cnVlO1xyXG4gICAgY2FuUmVuZGVyVGV4dFRvU3BlZWNoID0gdHJ1ZTtcclxuICAgIGNhblJlbmRlckxpc3RlbmluZ1RleHQgPSBmYWxzZTtcclxuICAgIGNhblJlbmRlckRpc2NhcmQgPSBmYWxzZTtcclxuICAgIGNhblJlbmRlckFwcm92ZSA9IGZhbHNlO1xyXG4gICAgY2FuUmVuZGVyVGV4dFRvU3BlZWNoVG9vbGJhciA9IGZhbHNlO1xyXG5cclxuICAgIGlzUGxheWluZ1RleHRUb1NwZWVjaCA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyByZWNvbmhlY2ltZW50byBkZSB2b3ogw6kgY29uY2x1w61kbywgY29tIG8gdGV4dG8gdHJhbnNjcml0by4gKi9cclxuICAgIEBPdXRwdXQoKSByZWNvZ25pemVkVGV4dCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5oYXNTcGVlY2hSZWNvZ25pdGlvbkJyb3dzZXJBcGkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMudGV4dEFyZWFFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndGV4dEFyZWFFbGVtZW50IGlzIHJlcXVpcmVkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudGV4dEFyZWFFbGVtZW50LnBsYWNlaG9sZGVyID0gdGhpcy5zcGVlY2hSZWNvZ25pdGlvblBsYWNlaG9sZGVyXHJcbiAgICAgICAgICAgID8gdGhpcy5zcGVlY2hSZWNvZ25pdGlvblBsYWNlaG9sZGVyXHJcbiAgICAgICAgICAgIDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy50ZXh0X2FyZWFfc3BlZWNoX3JlY29nbml0aW9uX3BsYWNlaG9sZGVyJyk7XHJcbiAgICAgICAgdGhpcy50ZXh0QXJlYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMua2V5ZG93bkV2ZW50TGlzdGVuZXIpO1xyXG4gICAgICAgIHRoaXMuc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlLm1pY3JvcGhvbmVTdGF0dXMkLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzdGF0dXMgPT09ICdhY3RpdmUnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2xvc2VUb29sYmFyKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgQFNraXBJZignZGlzYWJsZWRTcGVlY2hSZWNvZ25pdGlvbicsICdpc0Rpc2FibGVkTWljcm9waG9uZScsICdpc0xpc3RlbmluZycpXHJcbiAgICBvbkxpc3RlbigpIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNhblJlbmRlck1pY3JvcGhvbmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhblJlbmRlckxpc3RlbmluZ1RleHQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMub3JpZ2luYWxUZXh0QXJlYUVsZW1lbnRUZXh0ID0gdGhpcy50ZXh0QXJlYUVsZW1lbnQudmFsdWU7XHJcbiAgICAgICAgdGhpcy50ZXh0QXJlYUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICB0aGlzLmlzTGlzdGVuaW5nVXNlclZvaWNlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNwZWVjaFJlY29nbml0aW9uU2VydmljZVxyXG4gICAgICAgICAgICAubGlzdGVuKClcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAoeyB0ZXh0LCBpc0ZpbmFsIH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZWNvZ25pemVkVGV4dCA9IHRleHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRUZXh0QXJlYVZhbHVlKHRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVGV4dEFyZWFCb3R0b20oKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNGaW5hbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhblJlbmRlckFwcm92ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FuUmVuZGVyRGlzY2FyZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FuUmVuZGVyTGlzdGVuaW5nVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTGlzdGVuaW5nVXNlclZvaWNlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTGlzdGVuaW5nVXNlclZvaWNlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5SZW5kZXJNaWNyb3Bob25lID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRGlzYWJsZWRNaWNyb3Bob25lID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5SZW5kZXJMaXN0ZW5pbmdUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNjcm9sbFRleHRBcmVhQm90dG9tKCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRleHRBcmVhRWxlbWVudC5zY3JvbGxUb3AgPSB0aGlzLnRleHRBcmVhRWxlbWVudC5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgICAgfSwgMTIwKTtcclxuICAgIH1cclxuXHJcbiAgQFNraXBJZignZGlzYWJsZWRTcGVlY2hSZWNvZ25pdGlvbicpXHJcbiAgICBvbk9wZW5Ub29sYmFyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRGlzYWJsZWRUZXh0VG9TcGVlY2gpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNhblJlbmRlclRleHRUb1NwZWVjaFRvb2xiYXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2FuUmVuZGVyVGV4dFRvU3BlZWNoID0gZmFsc2U7XHJcbiAgICAgICAgU3BlZWNoUmVjb2duaXRpb25Db21wb25lbnQuVE9PTEJBUl9BQ1RJVkUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc3BlYWsoKTtcclxuICAgIH1cclxuXHJcbiAgQFNraXBJZignZGlzYWJsZWRTcGVlY2hSZWNvZ25pdGlvbicpXHJcbiAgICBvbkNsb3NlVG9vbGJhcigpIHtcclxuICAgICAgICB0aGlzLmNhblJlbmRlclRleHRUb1NwZWVjaFRvb2xiYXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhblJlbmRlclRleHRUb1NwZWVjaCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zdG9wVGV4dFRvU3BlZWNoKCk7XHJcbiAgICAgICAgdGhpcy52b2ljZVNwZWVkID0gMTtcclxuICAgICAgICBTcGVlY2hSZWNvZ25pdGlvbkNvbXBvbmVudC5UT09MQkFSX0FDVElWRSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICBAU2tpcElmKCdkaXNhYmxlZFNwZWVjaFJlY29nbml0aW9uJylcclxuICAgIG9uRGlzY2FyZCgpIHtcclxuICAgICAgICB0aGlzLmNhblJlbmRlckFwcm92ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2FuUmVuZGVyRGlzY2FyZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2FuUmVuZGVyTWljcm9waG9uZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYW5SZW5kZXJUZXh0VG9TcGVlY2hUb29sYmFyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYW5SZW5kZXJUZXh0VG9TcGVlY2ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX3JlY29nbml6ZWRUZXh0ID0gJyc7XHJcbiAgICAgICAgdGhpcy5zZXRUZXh0QXJlYVZhbHVlKHRoaXMub3JpZ2luYWxUZXh0QXJlYUVsZW1lbnRUZXh0KTtcclxuICAgICAgICB0aGlzLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdG9wVGV4dFRvU3BlZWNoKCk7XHJcbiAgICAgICAgU3BlZWNoUmVjb2duaXRpb25Db21wb25lbnQuVE9PTEJBUl9BQ1RJVkUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgQFNraXBJZignZGlzYWJsZWRTcGVlY2hSZWNvZ25pdGlvbicpXHJcbiAgICBvbkFwcm92ZSgpIHtcclxuICAgICAgICB0aGlzLmNhblJlbmRlckFwcm92ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2FuUmVuZGVyRGlzY2FyZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2FuUmVuZGVyTWljcm9waG9uZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYW5SZW5kZXJUZXh0VG9TcGVlY2hUb29sYmFyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYW5SZW5kZXJUZXh0VG9TcGVlY2ggPSB0cnVlO1xyXG4gICAgICAgIGlmICh0aGlzLmtlZXBDb250ZXh0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJyZWFrTGluZSA9IHRoaXMub3JpZ2luYWxUZXh0QXJlYUVsZW1lbnRUZXh0Lmxlbmd0aCA+IDAgPyAnXFxuJyA6ICcnO1xyXG4gICAgICAgICAgICB0aGlzLm9yaWdpbmFsVGV4dEFyZWFFbGVtZW50VGV4dCArPSBgJHticmVha0xpbmV9JHt0aGlzLl9yZWNvZ25pemVkVGV4dH1gO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub3JpZ2luYWxUZXh0QXJlYUVsZW1lbnRUZXh0ID0gdGhpcy5fcmVjb2duaXplZFRleHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVjb2duaXplZFRleHQuZW1pdCh0aGlzLmtlZXBDb250ZXh0ID8gdGhpcy5vcmlnaW5hbFRleHRBcmVhRWxlbWVudFRleHQgOiB0aGlzLl9yZWNvZ25pemVkVGV4dCk7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxUZXh0QXJlYUJvdHRvbSgpO1xyXG4gICAgICAgIHRoaXMuX3JlY29nbml6ZWRUZXh0ID0gJyc7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudGV4dFRvU3BlZWNoU2VydmljZS5jYW5jZWwoKTtcclxuICAgICAgICBTcGVlY2hSZWNvZ25pdGlvbkNvbXBvbmVudC5UT09MQkFSX0FDVElWRSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25EZXN0cm95JC5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG4gIEBTa2lwSWYoJ2Rpc2FibGVkU3BlZWNoUmVjb2duaXRpb24nKVxyXG4gICAgdG9nZ2xlVGV4dFRvU3BlZWNoKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzUGxheWluZ1RleHRUb1NwZWVjaCkge1xyXG4gICAgICAgICAgICB0aGlzLnRleHRUb1NwZWVjaFNlcnZpY2UucGF1c2UoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc0RvbmVUZXh0VG9TcGVlY2gpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3BlYWsoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGV4dFRvU3BlZWNoU2VydmljZS5yZXN1bWUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzUGxheWluZ1RleHRUb1NwZWVjaCA9ICF0aGlzLmlzUGxheWluZ1RleHRUb1NwZWVjaDtcclxuICAgIH1cclxuXHJcbiAgQFNraXBJZignZGlzYWJsZWRTcGVlY2hSZWNvZ25pdGlvbicpXHJcbiAgICByZXN0YXJ0VGV4dFRvU3BlZWNoKCkge1xyXG4gICAgICAgIHRoaXMudGV4dFRvU3BlZWNoU2VydmljZS5jYW5jZWwoKTtcclxuICAgICAgICB0aGlzLnNwZWFrKCk7XHJcbiAgICB9XHJcblxyXG4gIEBTa2lwSWYoJ2Rpc2FibGVkU3BlZWNoUmVjb2duaXRpb24nKVxyXG4gICAgdXBkYXRlVm9pY2VTcGVlZCgpIHtcclxuICAgICAgICBjb25zdCB2b2ljZVNwZWVkSW5kZXggPSB0aGlzLlZPSUNFX1NQRUVEUy5pbmRleE9mKHRoaXMudm9pY2VTcGVlZCk7XHJcbiAgICAgICAgY29uc3QgbmV4dFZvaWNlU3BlZWRJbmRleCA9IHRoaXMuVk9JQ0VfU1BFRURTW3ZvaWNlU3BlZWRJbmRleCArIDFdID8gdm9pY2VTcGVlZEluZGV4ICsgMSA6IDA7XHJcbiAgICAgICAgdGhpcy52b2ljZVNwZWVkID0gdGhpcy5WT0lDRV9TUEVFRFNbbmV4dFZvaWNlU3BlZWRJbmRleF07XHJcbiAgICAgICAgdGhpcy50ZXh0VG9TcGVlY2hTZXJ2aWNlLmNhbmNlbCgpO1xyXG4gICAgICAgIHRoaXMuc3BlYWsoKTtcclxuICAgIH1cclxuXHJcbiAgICBAU2tpcElmKCdkaXNhYmxlZFNwZWVjaFJlY29nbml0aW9uJylcclxuICAgIHN0b3BMaXN0ZW5pbmcoKSB7XHJcbiAgICAgICAgdGhpcy5zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2Uuc3RvcCgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBnZXQgaXNMaXN0ZW5pbmcoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlLmlzTGlzdGVuaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBoYXNTcGVlY2hSZWNvZ25pdGlvbkJyb3dzZXJBcGkoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlLmhhc1N1cHBvcnRTcGVlY2hSZWNvZ25pdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNEaXNhYmxlZFRleHRUb1NwZWVjaCgpIHtcclxuICAgICAgICBjb25zdCBoYXNUZXh0VG9TcGVlY2hWb2ljZSA9IHRoaXMudGV4dFRvU3BlZWNoU2VydmljZS5oYXNWb2ljZTtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAhdGhpcy50ZXh0VG9TcGVlY2ggfHwgIWhhc1RleHRUb1NwZWVjaFZvaWNlIHx8IHRoaXMuaXNMaXN0ZW5pbmcgfHwgU3BlZWNoUmVjb2duaXRpb25Db21wb25lbnQuVE9PTEJBUl9BQ1RJVkVcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0VGV4dEFyZWFWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy50ZXh0QXJlYUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0b3BUZXh0VG9TcGVlY2goKSB7XHJcbiAgICAgICAgdGhpcy5pc1BsYXlpbmdUZXh0VG9TcGVlY2ggPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRleHRUb1NwZWVjaFNlcnZpY2UuY2FuY2VsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzcGVhaygpIHtcclxuICAgICAgICB0aGlzLmlzRG9uZVRleHRUb1NwZWVjaCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNQbGF5aW5nVGV4dFRvU3BlZWNoID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnRleHRUb1NwZWVjaFNlcnZpY2Uuc3BlYWsodGhpcy50ZXh0VG9TcGVlY2gsIHRoaXMudm9pY2VTcGVlZCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNQbGF5aW5nVGV4dFRvU3BlZWNoID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuaXNEb25lVGV4dFRvU3BlZWNoID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldCB0ZXh0VG9TcGVlY2goKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dEFyZWFFbGVtZW50LnZhbHVlO1xyXG4gICAgfVxyXG59XHJcbiIsIkBpZihoYXNTcGVlY2hSZWNvZ25pdGlvbkJyb3dzZXJBcGkpIHtcbiAgICA8c2VjdGlvbiBjbGFzcz1cInNwZWVjaC1yZWNvZ25pdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3BlZWNoLXJlY29nbml0aW9uLXRleHRcIj5cbiAgICAgICAgICAgIEBpZihjYW5SZW5kZXJNaWNyb3Bob25lKSB7XG4gICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy50ZXh0X2FyZWFfYmVmb3JlX3NwZWVjaCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmKGlzTGlzdGVuaW5nVXNlclZvaWNlKSB7XG4gICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy50ZXh0X2FyZWFfd2hpbGVfc3BlZWNoJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYoY2FuUmVuZGVyQXByb3ZlICYmIGNhblJlbmRlckRpc2NhcmQpIHtcbiAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnRleHRfYXJlYV9lbmRfc3BlZWNoJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNwZWVjaC1yZWNvZ25pdGlvbi1idXR0b25zXCI+XG4gICAgICAgICAgICBAaWYoY2FuUmVuZGVyTGlzdGVuaW5nVGV4dCkge1xuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdG9wTGlzdGVuaW5nKClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNwZWVjaC1yZWNvZ25pdGlvbi1pdGVtIHNwZWVjaC1yZWNvZ25pdGlvbi1pdGVtLXJlZ3VsYXJcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc3BlZWNoLXJlY29nbml0aW9uLWl0ZW0tZGlzYWJsZWRdPVwiZGlzYWJsZWRTcGVlY2hSZWNvZ25pdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJtb3JlT3B0aW9uc0ljb25DbGFzc1wiPjwvaT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZihjYW5SZW5kZXJNaWNyb3Bob25lKSB7XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTGlzdGVuKClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNwZWVjaC1yZWNvZ25pdGlvbi1pdGVtIHNwZWVjaC1yZWNvZ25pdGlvbi1pdGVtLW1pY3JvcGhvbmVcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc3BlZWNoLXJlY29nbml0aW9uLWl0ZW0tZGlzYWJsZWRdPVwiaXNEaXNhYmxlZE1pY3JvcGhvbmUgfHwgaXNMaXN0ZW5pbmcgfHwgZGlzYWJsZWQgfHwgZGlzYWJsZWRTcGVlY2hSZWNvZ25pdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLW1pY3JvcGhvbmVcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIEBpZihjYW5SZW5kZXJBcHJvdmUpIHtcbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25BcHJvdmUoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3BlZWNoLXJlY29nbml0aW9uLWl0ZW0gc3BlZWNoLXJlY29nbml0aW9uLWl0ZW0tYXByb3ZlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZWNrXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmKGNhblJlbmRlckRpc2NhcmQpIHtcbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EaXNjYXJkKClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNwZWVjaC1yZWNvZ25pdGlvbi1pdGVtIHNwZWVjaC1yZWNvZ25pdGlvbi1pdGVtLWRpc2NhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYoY2FuUmVuZGVyVGV4dFRvU3BlZWNoKSB7XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uT3BlblRvb2xiYXIoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3BlZWNoLXJlY29nbml0aW9uLWl0ZW0gc3BlZWNoLXJlY29nbml0aW9uLWl0ZW0tcmVndWxhclwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zcGVlY2gtcmVjb2duaXRpb24taXRlbS1kaXNhYmxlZF09XCJpc0Rpc2FibGVkVGV4dFRvU3BlZWNoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXZvbHVtZS1kb3duXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmKGNhblJlbmRlclRleHRUb1NwZWVjaFRvb2xiYXIpIHtcbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNwZWVjaC1yZWNvZ25pdGlvbi1pdGVtLXRvb2xiYXJcIj5cbiAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzXCIgW2NsYXNzLmZhLXBhdXNlXT1cImlzUGxheWluZ1RleHRUb1NwZWVjaFwiIFtjbGFzcy5mYS1wbGF5XT1cIiFpc1BsYXlpbmdUZXh0VG9TcGVlY2hcIlxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVRleHRUb1NwZWVjaCgpXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtYmFja3dhcmRcIiAoY2xpY2spPVwicmVzdGFydFRleHRUb1NwZWVjaCgpXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInVwZGF0ZVZvaWNlU3BlZWQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHZvaWNlU3BlZWQgfX14XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10aW1lc1wiIChjbGljayk9XCJvbkNsb3NlVG9vbGJhcigpXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxufVxuIl19
@@ -29,6 +29,10 @@ export class SplitButtonComponent {
29
29
  type = 'primary';
30
30
  /** @description Lista de opções exibidas no dropdown. Campo obrigatório. */
31
31
  options;
32
+ /** @description Classe do ícone exibido quando o dropdown está fechado. @default 'far fa-chevron-down' */
33
+ openIcon = 'far fa-chevron-down';
34
+ /** @description Classe do ícone exibido quando o dropdown está aberto. @default 'far fa-chevron-up' */
35
+ closeIcon = 'far fa-chevron-up';
32
36
  /** @description Emitido quando o usuário clica no botão principal (não no dropdown). */
33
37
  buttonClicked = new EventEmitter();
34
38
  open = false;
@@ -56,11 +60,11 @@ export class SplitButtonComponent {
56
60
  this.open = false;
57
61
  }
58
62
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SplitButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
59
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SplitButtonComponent, isStandalone: true, selector: "s-split-button", inputs: { disabled: "disabled", iconClass: "iconClass", label: "label", type: "type", options: "options" }, outputs: { buttonClicked: "buttonClicked" }, host: { listeners: { "document:click": "onClickout($event)" } }, ngImport: i0, template: "<div\n class=\"split-button\"\n [ngClass]=\"{\n 'split-button--primary': type === 'primary',\n 'split-button--secondary': type === 'secondary',\n 'split-button--default': type === 'default',\n 'split-button--disabled': disabled,\n }\"\n>\n <button\n class=\"button\"\n (click)=\"onButtonClick()\"\n >\n <span\n class=\"button__icon\"\n [ngClass]=\"iconClass\"\n ></span>\n <span class=\"button__label\">{{ label }}</span>\n </button>\n <button\n class=\"dropdown\"\n (click)=\"onDropdownClick()\"\n >\n <span\n class=\"dropdown__icon\"\n [ngClass]=\"{\n far: true,\n 'fa-chevron-down': !open,\n 'fa-chevron-up': open,\n }\"\n >\n </span>\n </button>\n</div>\n\n@if (this.open) {\n <ul class=\"options\">\n @for (option of options; track option.title) {\n <li (click)=\"onOptionClick(option)\">\n {{ option.title }}\n </li>\n }\n </ul>\n}\n", styles: [".split-button{display:flex;-webkit-user-select:none;user-select:none;max-height:35px}.split-button .button{align-items:center;border:none;border-radius:4px 0 0 4px;display:flex;padding:8px 8px 8px 12px;transition:all .3s ease-in-out}.split-button .button__icon{font-size:16px;padding:0 4px}.split-button .button__title{font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;line-height:21px}.split-button .dropdown{align-items:center;border:none;border-left:1px solid #608190;border-radius:0 4px 4px 0;display:flex;justify-content:center;padding:12px 8px;transition:all .3s ease-in-out}.split-button--disabled{opacity:.5}.split-button--primary .button,.split-button--primary .dropdown{background-color:#428bca;color:#fff}.split-button--primary:not(.split-button--primary--disabled) .button,.split-button--primary:not(.split-button--primary--disabled) .dropdown{cursor:pointer}.split-button--primary:not(.split-button--primary--disabled) .button:hover,.split-button--primary:not(.split-button--primary--disabled) .dropdown:hover{background-color:#063951}.split-button--secondary .button,.split-button--secondary .dropdown{background-color:#7892a1;color:#fff}.split-button--secondary:not(.split-button--secondary--disabled) .button,.split-button--secondary:not(.split-button--secondary--disabled) .dropdown{cursor:pointer}.split-button--secondary:not(.split-button--secondary--disabled) .button:hover,.split-button--secondary:not(.split-button--secondary--disabled) .dropdown:hover{background-color:#697882}.split-button--default .button,.split-button--default .dropdown{background-color:unset;border:1px solid #d8d8d8;color:#333}.split-button--default:not(.split-button--default--disabled) .button,.split-button--default:not(.split-button--default--disabled) .dropdown{cursor:pointer}.split-button--default:not(.split-button--default--disabled) .button:hover,.split-button--default:not(.split-button--default--disabled) .dropdown:hover{background-color:#d8d8d8}.options{background-color:#fff;border-radius:4px;box-shadow:0 1px 5px #00000040;display:inline-block;list-style:none;margin:2px 0;padding:8px 0;position:absolute;-webkit-user-select:none;user-select:none;z-index:10}.options li{color:#333;cursor:pointer;font-family:Open Sans,sans-serif;font-weight:400;font-size:14px;line-height:21px;padding:8px 16px}.options li:hover{background-color:#d8d8d8}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
63
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SplitButtonComponent, isStandalone: true, selector: "s-split-button", inputs: { disabled: "disabled", iconClass: "iconClass", label: "label", type: "type", options: "options", openIcon: "openIcon", closeIcon: "closeIcon" }, outputs: { buttonClicked: "buttonClicked" }, host: { listeners: { "document:click": "onClickout($event)" } }, ngImport: i0, template: "<div\n class=\"split-button\"\n [ngClass]=\"{\n 'split-button--primary': type === 'primary',\n 'split-button--secondary': type === 'secondary',\n 'split-button--default': type === 'default',\n 'split-button--disabled': disabled,\n }\"\n>\n <button\n class=\"button\"\n (click)=\"onButtonClick()\"\n >\n <span\n class=\"button__icon\"\n [ngClass]=\"iconClass\"\n ></span>\n <span class=\"button__label\">{{ label }}</span>\n </button>\n <button\n class=\"dropdown\"\n (click)=\"onDropdownClick()\"\n >\n <span\n class=\"dropdown__icon\"\n [class]=\"open ? closeIcon : openIcon\"\n >\n </span>\n </button>\n</div>\n\n@if (this.open) {\n <ul class=\"options\">\n @for (option of options; track option.title) {\n <li (click)=\"onOptionClick(option)\">\n {{ option.title }}\n </li>\n }\n </ul>\n}\n", styles: [".split-button{display:flex;-webkit-user-select:none;user-select:none;max-height:35px}.split-button .button{align-items:center;border:none;border-radius:4px 0 0 4px;display:flex;padding:8px 8px 8px 12px;transition:all .3s ease-in-out}.split-button .button__icon{font-size:16px;padding:0 4px}.split-button .button__title{font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;line-height:21px}.split-button .dropdown{align-items:center;border:none;border-left:1px solid #608190;border-radius:0 4px 4px 0;display:flex;justify-content:center;padding:12px 8px;transition:all .3s ease-in-out}.split-button--disabled{opacity:.5}.split-button--primary .button,.split-button--primary .dropdown{background-color:#428bca;color:#fff}.split-button--primary:not(.split-button--primary--disabled) .button,.split-button--primary:not(.split-button--primary--disabled) .dropdown{cursor:pointer}.split-button--primary:not(.split-button--primary--disabled) .button:hover,.split-button--primary:not(.split-button--primary--disabled) .dropdown:hover{background-color:#063951}.split-button--secondary .button,.split-button--secondary .dropdown{background-color:#7892a1;color:#fff}.split-button--secondary:not(.split-button--secondary--disabled) .button,.split-button--secondary:not(.split-button--secondary--disabled) .dropdown{cursor:pointer}.split-button--secondary:not(.split-button--secondary--disabled) .button:hover,.split-button--secondary:not(.split-button--secondary--disabled) .dropdown:hover{background-color:#697882}.split-button--default .button,.split-button--default .dropdown{background-color:unset;border:1px solid #d8d8d8;color:#333}.split-button--default:not(.split-button--default--disabled) .button,.split-button--default:not(.split-button--default--disabled) .dropdown{cursor:pointer}.split-button--default:not(.split-button--default--disabled) .button:hover,.split-button--default:not(.split-button--default--disabled) .dropdown:hover{background-color:#d8d8d8}.options{background-color:#fff;border-radius:4px;box-shadow:0 1px 5px #00000040;display:inline-block;list-style:none;margin:2px 0;padding:8px 0;position:absolute;-webkit-user-select:none;user-select:none;z-index:10}.options li{color:#333;cursor:pointer;font-family:Open Sans,sans-serif;font-weight:400;font-size:14px;line-height:21px;padding:8px 16px}.options li:hover{background-color:#d8d8d8}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
60
64
  }
61
65
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SplitButtonComponent, decorators: [{
62
66
  type: Component,
63
- args: [{ selector: 's-split-button', standalone: true, imports: [NgClass], template: "<div\n class=\"split-button\"\n [ngClass]=\"{\n 'split-button--primary': type === 'primary',\n 'split-button--secondary': type === 'secondary',\n 'split-button--default': type === 'default',\n 'split-button--disabled': disabled,\n }\"\n>\n <button\n class=\"button\"\n (click)=\"onButtonClick()\"\n >\n <span\n class=\"button__icon\"\n [ngClass]=\"iconClass\"\n ></span>\n <span class=\"button__label\">{{ label }}</span>\n </button>\n <button\n class=\"dropdown\"\n (click)=\"onDropdownClick()\"\n >\n <span\n class=\"dropdown__icon\"\n [ngClass]=\"{\n far: true,\n 'fa-chevron-down': !open,\n 'fa-chevron-up': open,\n }\"\n >\n </span>\n </button>\n</div>\n\n@if (this.open) {\n <ul class=\"options\">\n @for (option of options; track option.title) {\n <li (click)=\"onOptionClick(option)\">\n {{ option.title }}\n </li>\n }\n </ul>\n}\n", styles: [".split-button{display:flex;-webkit-user-select:none;user-select:none;max-height:35px}.split-button .button{align-items:center;border:none;border-radius:4px 0 0 4px;display:flex;padding:8px 8px 8px 12px;transition:all .3s ease-in-out}.split-button .button__icon{font-size:16px;padding:0 4px}.split-button .button__title{font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;line-height:21px}.split-button .dropdown{align-items:center;border:none;border-left:1px solid #608190;border-radius:0 4px 4px 0;display:flex;justify-content:center;padding:12px 8px;transition:all .3s ease-in-out}.split-button--disabled{opacity:.5}.split-button--primary .button,.split-button--primary .dropdown{background-color:#428bca;color:#fff}.split-button--primary:not(.split-button--primary--disabled) .button,.split-button--primary:not(.split-button--primary--disabled) .dropdown{cursor:pointer}.split-button--primary:not(.split-button--primary--disabled) .button:hover,.split-button--primary:not(.split-button--primary--disabled) .dropdown:hover{background-color:#063951}.split-button--secondary .button,.split-button--secondary .dropdown{background-color:#7892a1;color:#fff}.split-button--secondary:not(.split-button--secondary--disabled) .button,.split-button--secondary:not(.split-button--secondary--disabled) .dropdown{cursor:pointer}.split-button--secondary:not(.split-button--secondary--disabled) .button:hover,.split-button--secondary:not(.split-button--secondary--disabled) .dropdown:hover{background-color:#697882}.split-button--default .button,.split-button--default .dropdown{background-color:unset;border:1px solid #d8d8d8;color:#333}.split-button--default:not(.split-button--default--disabled) .button,.split-button--default:not(.split-button--default--disabled) .dropdown{cursor:pointer}.split-button--default:not(.split-button--default--disabled) .button:hover,.split-button--default:not(.split-button--default--disabled) .dropdown:hover{background-color:#d8d8d8}.options{background-color:#fff;border-radius:4px;box-shadow:0 1px 5px #00000040;display:inline-block;list-style:none;margin:2px 0;padding:8px 0;position:absolute;-webkit-user-select:none;user-select:none;z-index:10}.options li{color:#333;cursor:pointer;font-family:Open Sans,sans-serif;font-weight:400;font-size:14px;line-height:21px;padding:8px 16px}.options li:hover{background-color:#d8d8d8}\n"] }]
67
+ args: [{ selector: 's-split-button', standalone: true, imports: [NgClass], template: "<div\n class=\"split-button\"\n [ngClass]=\"{\n 'split-button--primary': type === 'primary',\n 'split-button--secondary': type === 'secondary',\n 'split-button--default': type === 'default',\n 'split-button--disabled': disabled,\n }\"\n>\n <button\n class=\"button\"\n (click)=\"onButtonClick()\"\n >\n <span\n class=\"button__icon\"\n [ngClass]=\"iconClass\"\n ></span>\n <span class=\"button__label\">{{ label }}</span>\n </button>\n <button\n class=\"dropdown\"\n (click)=\"onDropdownClick()\"\n >\n <span\n class=\"dropdown__icon\"\n [class]=\"open ? closeIcon : openIcon\"\n >\n </span>\n </button>\n</div>\n\n@if (this.open) {\n <ul class=\"options\">\n @for (option of options; track option.title) {\n <li (click)=\"onOptionClick(option)\">\n {{ option.title }}\n </li>\n }\n </ul>\n}\n", styles: [".split-button{display:flex;-webkit-user-select:none;user-select:none;max-height:35px}.split-button .button{align-items:center;border:none;border-radius:4px 0 0 4px;display:flex;padding:8px 8px 8px 12px;transition:all .3s ease-in-out}.split-button .button__icon{font-size:16px;padding:0 4px}.split-button .button__title{font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;line-height:21px}.split-button .dropdown{align-items:center;border:none;border-left:1px solid #608190;border-radius:0 4px 4px 0;display:flex;justify-content:center;padding:12px 8px;transition:all .3s ease-in-out}.split-button--disabled{opacity:.5}.split-button--primary .button,.split-button--primary .dropdown{background-color:#428bca;color:#fff}.split-button--primary:not(.split-button--primary--disabled) .button,.split-button--primary:not(.split-button--primary--disabled) .dropdown{cursor:pointer}.split-button--primary:not(.split-button--primary--disabled) .button:hover,.split-button--primary:not(.split-button--primary--disabled) .dropdown:hover{background-color:#063951}.split-button--secondary .button,.split-button--secondary .dropdown{background-color:#7892a1;color:#fff}.split-button--secondary:not(.split-button--secondary--disabled) .button,.split-button--secondary:not(.split-button--secondary--disabled) .dropdown{cursor:pointer}.split-button--secondary:not(.split-button--secondary--disabled) .button:hover,.split-button--secondary:not(.split-button--secondary--disabled) .dropdown:hover{background-color:#697882}.split-button--default .button,.split-button--default .dropdown{background-color:unset;border:1px solid #d8d8d8;color:#333}.split-button--default:not(.split-button--default--disabled) .button,.split-button--default:not(.split-button--default--disabled) .dropdown{cursor:pointer}.split-button--default:not(.split-button--default--disabled) .button:hover,.split-button--default:not(.split-button--default--disabled) .dropdown:hover{background-color:#d8d8d8}.options{background-color:#fff;border-radius:4px;box-shadow:0 1px 5px #00000040;display:inline-block;list-style:none;margin:2px 0;padding:8px 0;position:absolute;-webkit-user-select:none;user-select:none;z-index:10}.options li{color:#333;cursor:pointer;font-family:Open Sans,sans-serif;font-weight:400;font-size:14px;line-height:21px;padding:8px 16px}.options li:hover{background-color:#d8d8d8}\n"] }]
64
68
  }], propDecorators: { disabled: [{
65
69
  type: Input
66
70
  }], iconClass: [{
@@ -74,10 +78,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
74
78
  }], options: [{
75
79
  type: Input,
76
80
  args: [{ required: true }]
81
+ }], openIcon: [{
82
+ type: Input
83
+ }], closeIcon: [{
84
+ type: Input
77
85
  }], buttonClicked: [{
78
86
  type: Output
79
87
  }], onClickout: [{
80
88
  type: HostListener,
81
89
  args: ['document:click', ['$event']]
82
90
  }] } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcGxpdC1idXR0b24vc3JjL2xpYi9zcGxpdC1idXR0b24vc3BsaXQtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcGxpdC1idXR0b24vc3JjL2xpYi9zcGxpdC1idXR0b24vc3BsaXQtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUt6Rzs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFRSCxNQUFNLE9BQU8sb0JBQW9CO0lBQ1osS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUU1Qyw2RUFBNkU7SUFFdEUsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUV4QixrRkFBa0Y7SUFFM0UsU0FBUyxDQUFVO0lBRTFCLGlFQUFpRTtJQUUxRCxLQUFLLENBQVU7SUFFdEIsNkZBQTZGO0lBRXRGLElBQUksR0FBb0IsU0FBUyxDQUFDO0lBRXpDLDRFQUE0RTtJQUVyRSxPQUFPLENBQXVCO0lBRXJDLHdGQUF3RjtJQUVqRixhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUVuQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBR2IsVUFBVSxDQUFDLEtBQWlCO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDTCxDQUFDO0lBRU0sYUFBYTtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDTCxDQUFDO0lBRU0sZUFBZTtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzNCLENBQUM7SUFDTCxDQUFDO0lBRU0sYUFBYSxDQUFDLE1BQXlCO1FBQzFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sY0FBYztRQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO3dHQXhEUSxvQkFBb0I7NEZBQXBCLG9CQUFvQixvU0M3QmpDLG1tQ0E0Q0EsdTNFRGpCYyxPQUFPOzs0RkFFUixvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0ksZ0JBQWdCLGNBR2QsSUFBSSxXQUNQLENBQUMsT0FBTyxDQUFDOzhCQU9YLFFBQVE7c0JBRGQsS0FBSztnQkFLQyxTQUFTO3NCQURmLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUtsQixLQUFLO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUtsQixJQUFJO3NCQURWLEtBQUs7Z0JBS0MsT0FBTztzQkFEYixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFLbEIsYUFBYTtzQkFEbkIsTUFBTTtnQkFNQSxVQUFVO3NCQURoQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgU3BsaXRCdXR0b25PcHRpb24gfSBmcm9tICcuL21vZGVscy9zcGxpdC1idXR0b24tb3B0aW9uJztcclxuaW1wb3J0IHsgU3BsaXRCdXR0b25UeXBlIH0gZnJvbSAnLi9tb2RlbHMvc3BsaXQtYnV0dG9uLXR5cGUnO1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvbiBCb3TDo28gY29tcG9zdG8gY29tIGHDp8OjbyBwcmluY2lwYWwgZSBkcm9wZG93biBkZSBvcMOnw7VlcyBhZGljaW9uYWlzLlxyXG4gKiBBbyBjbGljYXIgbm8gYm90w6NvIHByaW5jaXBhbCBlbWl0ZSBgYnV0dG9uQ2xpY2tlZGA7IGFvIGNsaWNhciBubyDDrWNvbmUgZGUgc2V0YVxyXG4gKiBhYnJlL2ZlY2hhIG8gZHJvcGRvd24gY29tIGEgbGlzdGEgZGUgYG9wdGlvbnNgLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBodG1sXHJcbiAqIDxzLXNwbGl0LWJ1dHRvblxyXG4gKiAgIGxhYmVsPVwiU2FsdmFyXCJcclxuICogICBpY29uQ2xhc3M9XCJmYXMgZmEtc2F2ZVwiXHJcbiAqICAgW29wdGlvbnNdPVwibWVudU9wY29lc1wiXHJcbiAqICAgKGJ1dHRvbkNsaWNrZWQpPVwib25TYWx2YXIoKVwiIC8+XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAY2F0ZWdvcnkgSW5wdXRzXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncy1zcGxpdC1idXR0b24nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NwbGl0LWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9zcGxpdC1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTmdDbGFzc10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTcGxpdEJ1dHRvbkNvbXBvbmVudCB7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lUmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVzYWJpbGl0YSBvIGJvdMOjbyBwcmluY2lwYWwgZSBvIGRyb3Bkb3duLiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ2xhc3NlIGRvIMOtY29uZSBleGliaWRvIG5vIGJvdMOjbyBwcmluY2lwYWwuIENhbXBvIG9icmlnYXTDs3Jpby4gKi9cclxuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgaWNvbkNsYXNzITogc3RyaW5nO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gUsOzdHVsbyBkbyBib3TDo28gcHJpbmNpcGFsLiBDYW1wbyBvYnJpZ2F0w7NyaW8uICovXHJcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxyXG4gICAgcHVibGljIGxhYmVsITogc3RyaW5nO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRXN0aWxvIHZpc3VhbCBkbyBib3TDo28gKGAncHJpbWFyeSdgIG91IGAnc2Vjb25kYXJ5J2ApLiBAZGVmYXVsdCAncHJpbWFyeScgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdHlwZTogU3BsaXRCdXR0b25UeXBlID0gJ3ByaW1hcnknO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gTGlzdGEgZGUgb3DDp8O1ZXMgZXhpYmlkYXMgbm8gZHJvcGRvd24uIENhbXBvIG9icmlnYXTDs3Jpby4gKi9cclxuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgb3B0aW9ucyE6IFNwbGl0QnV0dG9uT3B0aW9uW107XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIHVzdcOhcmlvIGNsaWNhIG5vIGJvdMOjbyBwcmluY2lwYWwgKG7Do28gbm8gZHJvcGRvd24pLiAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgYnV0dG9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBwdWJsaWMgb3BlbiA9IGZhbHNlO1xyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICAgIHB1YmxpYyBvbkNsaWNrb3V0KGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICAgICAgICB0aGlzLl9jbG9zZURyb3Bkb3duKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkJ1dHRvbkNsaWNrKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmJ1dHRvbkNsaWNrZWQuZW1pdCgpO1xyXG4gICAgICAgICAgICB0aGlzLl9jbG9zZURyb3Bkb3duKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkRyb3Bkb3duQ2xpY2soKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbk9wdGlvbkNsaWNrKG9wdGlvbjogU3BsaXRCdXR0b25PcHRpb24pIHtcclxuICAgICAgICBvcHRpb24uYWN0aW9uPy4oKTtcclxuICAgICAgICB0aGlzLl9jbG9zZURyb3Bkb3duKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfY2xvc2VEcm9wZG93bigpIHtcclxuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJzcGxpdC1idXR0b25cIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3NwbGl0LWJ1dHRvbi0tcHJpbWFyeSc6IHR5cGUgPT09ICdwcmltYXJ5JyxcbiAgICAgICAgJ3NwbGl0LWJ1dHRvbi0tc2Vjb25kYXJ5JzogdHlwZSA9PT0gJ3NlY29uZGFyeScsXG4gICAgICAgICdzcGxpdC1idXR0b24tLWRlZmF1bHQnOiB0eXBlID09PSAnZGVmYXVsdCcsXG4gICAgICAgICdzcGxpdC1idXR0b24tLWRpc2FibGVkJzogZGlzYWJsZWQsXG4gICAgfVwiXG4+XG4gICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJvbkJ1dHRvbkNsaWNrKClcIlxuICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uX19pY29uXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImljb25DbGFzc1wiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uX19sYWJlbFwiPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJkcm9wZG93blwiXG4gICAgICAgIChjbGljayk9XCJvbkRyb3Bkb3duQ2xpY2soKVwiXG4gICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bl9faWNvblwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgZmFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICdmYS1jaGV2cm9uLWRvd24nOiAhb3BlbixcbiAgICAgICAgICAgICAgICAnZmEtY2hldnJvbi11cCc6IG9wZW4sXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG48L2Rpdj5cblxuQGlmICh0aGlzLm9wZW4pIHtcbiAgICA8dWwgY2xhc3M9XCJvcHRpb25zXCI+XG4gICAgICAgIEBmb3IgKG9wdGlvbiBvZiBvcHRpb25zOyB0cmFjayBvcHRpb24udGl0bGUpIHtcbiAgICAgICAgICAgIDxsaSAoY2xpY2spPVwib25PcHRpb25DbGljayhvcHRpb24pXCI+XG4gICAgICAgICAgICAgICAge3sgb3B0aW9uLnRpdGxlIH19XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICB9XG4gICAgPC91bD5cbn1cbiJdfQ==
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcGxpdC1idXR0b24vc3JjL2xpYi9zcGxpdC1idXR0b24vc3BsaXQtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcGxpdC1idXR0b24vc3JjL2xpYi9zcGxpdC1idXR0b24vc3BsaXQtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUt6Rzs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFRSCxNQUFNLE9BQU8sb0JBQW9CO0lBQ1osS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUU1Qyw2RUFBNkU7SUFFdEUsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUV4QixrRkFBa0Y7SUFFM0UsU0FBUyxDQUFVO0lBRTFCLGlFQUFpRTtJQUUxRCxLQUFLLENBQVU7SUFFdEIsNkZBQTZGO0lBRXRGLElBQUksR0FBb0IsU0FBUyxDQUFDO0lBRXpDLDRFQUE0RTtJQUVyRSxPQUFPLENBQXVCO0lBRXJDLDBHQUEwRztJQUVuRyxRQUFRLEdBQUcscUJBQXFCLENBQUM7SUFFeEMsdUdBQXVHO0lBRWhHLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQztJQUV2Qyx3RkFBd0Y7SUFFakYsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFFbkMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUdiLFVBQVUsQ0FBQyxLQUFpQjtRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0wsQ0FBQztJQUVNLGFBQWE7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0wsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQixDQUFDO0lBQ0wsQ0FBQztJQUVNLGFBQWEsQ0FBQyxNQUF5QjtRQUMxQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLGNBQWM7UUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQzt3R0FoRVEsb0JBQW9COzRGQUFwQixvQkFBb0Isa1ZDN0JqQyw2L0JBd0NBLHUzRURiYyxPQUFPOzs0RkFFUixvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0ksZ0JBQWdCLGNBR2QsSUFBSSxXQUNQLENBQUMsT0FBTyxDQUFDOzhCQU9YLFFBQVE7c0JBRGQsS0FBSztnQkFLQyxTQUFTO3NCQURmLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUtsQixLQUFLO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUtsQixJQUFJO3NCQURWLEtBQUs7Z0JBS0MsT0FBTztzQkFEYixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFLbEIsUUFBUTtzQkFEZCxLQUFLO2dCQUtDLFNBQVM7c0JBRGYsS0FBSztnQkFLQyxhQUFhO3NCQURuQixNQUFNO2dCQU1BLFVBQVU7c0JBRGhCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBTcGxpdEJ1dHRvbk9wdGlvbiB9IGZyb20gJy4vbW9kZWxzL3NwbGl0LWJ1dHRvbi1vcHRpb24nO1xyXG5pbXBvcnQgeyBTcGxpdEJ1dHRvblR5cGUgfSBmcm9tICcuL21vZGVscy9zcGxpdC1idXR0b24tdHlwZSc7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIEJvdMOjbyBjb21wb3N0byBjb20gYcOnw6NvIHByaW5jaXBhbCBlIGRyb3Bkb3duIGRlIG9ww6fDtWVzIGFkaWNpb25haXMuXHJcbiAqIEFvIGNsaWNhciBubyBib3TDo28gcHJpbmNpcGFsIGVtaXRlIGBidXR0b25DbGlja2VkYDsgYW8gY2xpY2FyIG5vIMOtY29uZSBkZSBzZXRhXHJcbiAqIGFicmUvZmVjaGEgbyBkcm9wZG93biBjb20gYSBsaXN0YSBkZSBgb3B0aW9uc2AuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYGh0bWxcclxuICogPHMtc3BsaXQtYnV0dG9uXHJcbiAqICAgbGFiZWw9XCJTYWx2YXJcIlxyXG4gKiAgIGljb25DbGFzcz1cImZhcyBmYS1zYXZlXCJcclxuICogICBbb3B0aW9uc109XCJtZW51T3Bjb2VzXCJcclxuICogICAoYnV0dG9uQ2xpY2tlZCk9XCJvblNhbHZhcigpXCIgLz5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBJbnB1dHNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzLXNwbGl0LWJ1dHRvbicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3BsaXQtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3NwbGl0LWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtOZ0NsYXNzXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNwbGl0QnV0dG9uQ29tcG9uZW50IHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEZXNhYmlsaXRhIG8gYm90w6NvIHByaW5jaXBhbCBlIG8gZHJvcGRvd24uIEBkZWZhdWx0IGZhbHNlICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDbGFzc2UgZG8gw61jb25lIGV4aWJpZG8gbm8gYm90w6NvIHByaW5jaXBhbC4gQ2FtcG8gb2JyaWdhdMOzcmlvLiAqL1xyXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICAgIHB1YmxpYyBpY29uQ2xhc3MhOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSw7N0dWxvIGRvIGJvdMOjbyBwcmluY2lwYWwuIENhbXBvIG9icmlnYXTDs3Jpby4gKi9cclxuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgbGFiZWwhOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFc3RpbG8gdmlzdWFsIGRvIGJvdMOjbyAoYCdwcmltYXJ5J2Agb3UgYCdzZWNvbmRhcnknYCkuIEBkZWZhdWx0ICdwcmltYXJ5JyAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB0eXBlOiBTcGxpdEJ1dHRvblR5cGUgPSAncHJpbWFyeSc7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBMaXN0YSBkZSBvcMOnw7VlcyBleGliaWRhcyBubyBkcm9wZG93bi4gQ2FtcG8gb2JyaWdhdMOzcmlvLiAqL1xyXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICAgIHB1YmxpYyBvcHRpb25zITogU3BsaXRCdXR0b25PcHRpb25bXTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIENsYXNzZSBkbyDDrWNvbmUgZXhpYmlkbyBxdWFuZG8gbyBkcm9wZG93biBlc3TDoSBmZWNoYWRvLiBAZGVmYXVsdCAnZmFyIGZhLWNoZXZyb24tZG93bicgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgb3Blbkljb24gPSAnZmFyIGZhLWNoZXZyb24tZG93bic7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDbGFzc2UgZG8gw61jb25lIGV4aWJpZG8gcXVhbmRvIG8gZHJvcGRvd24gZXN0w6EgYWJlcnRvLiBAZGVmYXVsdCAnZmFyIGZhLWNoZXZyb24tdXAnICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNsb3NlSWNvbiA9ICdmYXIgZmEtY2hldnJvbi11cCc7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIHVzdcOhcmlvIGNsaWNhIG5vIGJvdMOjbyBwcmluY2lwYWwgKG7Do28gbm8gZHJvcGRvd24pLiAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgYnV0dG9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBwdWJsaWMgb3BlbiA9IGZhbHNlO1xyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICAgIHB1YmxpYyBvbkNsaWNrb3V0KGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICAgICAgICB0aGlzLl9jbG9zZURyb3Bkb3duKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkJ1dHRvbkNsaWNrKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmJ1dHRvbkNsaWNrZWQuZW1pdCgpO1xyXG4gICAgICAgICAgICB0aGlzLl9jbG9zZURyb3Bkb3duKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkRyb3Bkb3duQ2xpY2soKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbk9wdGlvbkNsaWNrKG9wdGlvbjogU3BsaXRCdXR0b25PcHRpb24pIHtcclxuICAgICAgICBvcHRpb24uYWN0aW9uPy4oKTtcclxuICAgICAgICB0aGlzLl9jbG9zZURyb3Bkb3duKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfY2xvc2VEcm9wZG93bigpIHtcclxuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJzcGxpdC1idXR0b25cIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3NwbGl0LWJ1dHRvbi0tcHJpbWFyeSc6IHR5cGUgPT09ICdwcmltYXJ5JyxcbiAgICAgICAgJ3NwbGl0LWJ1dHRvbi0tc2Vjb25kYXJ5JzogdHlwZSA9PT0gJ3NlY29uZGFyeScsXG4gICAgICAgICdzcGxpdC1idXR0b24tLWRlZmF1bHQnOiB0eXBlID09PSAnZGVmYXVsdCcsXG4gICAgICAgICdzcGxpdC1idXR0b24tLWRpc2FibGVkJzogZGlzYWJsZWQsXG4gICAgfVwiXG4+XG4gICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJvbkJ1dHRvbkNsaWNrKClcIlxuICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uX19pY29uXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImljb25DbGFzc1wiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uX19sYWJlbFwiPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJkcm9wZG93blwiXG4gICAgICAgIChjbGljayk9XCJvbkRyb3Bkb3duQ2xpY2soKVwiXG4gICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bl9faWNvblwiXG4gICAgICAgICAgICBbY2xhc3NdPVwib3BlbiA/IGNsb3NlSWNvbiA6IG9wZW5JY29uXCJcbiAgICAgICAgPlxuICAgICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG48L2Rpdj5cblxuQGlmICh0aGlzLm9wZW4pIHtcbiAgICA8dWwgY2xhc3M9XCJvcHRpb25zXCI+XG4gICAgICAgIEBmb3IgKG9wdGlvbiBvZiBvcHRpb25zOyB0cmFjayBvcHRpb24udGl0bGUpIHtcbiAgICAgICAgICAgIDxsaSAoY2xpY2spPVwib25PcHRpb25DbGljayhvcHRpb24pXCI+XG4gICAgICAgICAgICAgICAge3sgb3B0aW9uLnRpdGxlIH19XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICB9XG4gICAgPC91bD5cbn1cbiJdfQ==
@@ -303,7 +303,7 @@ export class TableColumnsComponent {
303
303
  return columns.sort((a, b) => (a.sequence ?? 0) - (b.sequence ?? 0));
304
304
  }
305
305
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableColumnsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
306
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TableColumnsComponent, isStandalone: true, selector: "s-table-columns", inputs: { columns: "columns", rowValue: "rowValue", locale: "locale" }, viewQueries: [{ propertyName: "columnsTemplate", first: true, predicate: ["columnsTemplate"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #columnsTemplate>\n @for (column of formattedColumns; track $index; let i = $index) {\n <td\n [ngStyle]=\"column.style\"\n (click)=\"column.onColumnClick ? column.onColumnClick(rowValue) : null\"\n >\n @if (column.type !== 'TOKENS' || !isArray(column.columnValue)) {\n <div [ngClass]=\"{ 'compact-column': column.compact }\">\n @if (column.type !== 'LINK') {\n <span\n [sTooltip]=\"column.tooltip\"\n [escape]=\"false\"\n >\n <ng-container *ngTemplateOutlet=\"columnValueTemplate\"></ng-container>\n </span>\n }\n\n @if (column.type === 'LINK') {\n @if (cellsData[i]?.[0]?.isUninformed) {\n <span class=\"sds-empty-value\">{{ cellsData[i]?.[0]?.value }}</span>\n } @else {\n <a\n [sTooltip]=\"column.tooltip\"\n [escape]=\"false\"\n (click)=\"column.onLinkClick ? column.onLinkClick(rowValue) : null\"\n >\n <ng-container *ngTemplateOutlet=\"columnValueTemplate\"></ng-container>\n </a>\n }\n }\n\n <ng-template #columnValueTemplate>\n @for (cellData of cellsData[i]; track $index) {\n @if (cellData.isUninformed) {\n <span class=\"sds-empty-value\">{{ cellData.value }}</span>\n } @else {\n @if (column.badgeConfigs) {\n <s-badge\n [sTooltip]=\"column.tooltip\"\n [color]=\"column.badgeConfigs.color\"\n [text]=\"cellData.value\"\n ></s-badge>\n } @else {\n <span\n [ngClass]=\"{\n 'column-cell-red': column.color === 'Red',\n 'column-cell-orange': column.color === 'Orange',\n 'column-cell-yellow': column.color === 'Yellow',\n 'column-cell-green': column.color === 'Green',\n 'column-cell-blue': column.color === 'Blue',\n }\"\n >{{ cellData.value }}</span\n >\n }\n }\n\n @if (cellData.separator) {\n <span>{{ cellData.separator }}</span>\n }\n }\n\n @if (!!column.infoSign) {\n <span *sInfoSign=\"column.infoSign\"></span>\n }\n </ng-template>\n </div>\n } @else {\n <s-token-list\n [tokens]=\"getTokensByColumn(column)\"\n [hidePointerEvents]=\"true\"\n ></s-token-list>\n\n @if (!!column.infoSign) {\n <span *sInfoSign=\"column.infoSign\"></span>\n }\n }\n </td>\n }\n</ng-template>\n\n", styles: [":host{display:none}.compact-column{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}.column-cell-red{color:#c13018}.column-cell-orange{color:#f8931f}.column-cell-yellow{color:#fcbf10}.column-cell-green{color:#0c9348}.column-cell-blue{color:#428bca}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BadgeComponent, selector: "s-badge", inputs: ["type", "color", "title", "text", "selectable", "iconClass", "iconPosition", "infoSign", "enableTruncateText"], outputs: ["selected"] }, { kind: "directive", type: InfoSignDirective, selector: "[sInfoSign]", inputs: ["sInfoSign", "sInfoSignDisplayTime", "sInfoSignFocusedInputRef", "sInfoSignUseFocusedInputRef"] }, { kind: "component", type: TokenListComponent, selector: "s-token-list", inputs: ["id", "tokens", "removableTokens", "hidePointerEvents"], outputs: ["tokenSelected", "tokenRemoved"] }] });
306
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TableColumnsComponent, isStandalone: true, selector: "s-table-columns", inputs: { columns: "columns", rowValue: "rowValue", locale: "locale" }, viewQueries: [{ propertyName: "columnsTemplate", first: true, predicate: ["columnsTemplate"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #columnsTemplate>\n @for (column of formattedColumns; track $index; let i = $index) {\n <td\n [ngStyle]=\"column.style\"\n (click)=\"column.onColumnClick ? column.onColumnClick(rowValue) : null\"\n >\n @if (column.type !== 'TOKENS' || !isArray(column.columnValue)) {\n <div [ngClass]=\"{ 'compact-column': column.compact }\">\n @if (column.type !== 'LINK') {\n <span\n [sTooltip]=\"column.tooltip\"\n [escape]=\"false\"\n >\n <ng-container *ngTemplateOutlet=\"columnValueTemplate\"></ng-container>\n </span>\n }\n\n @if (column.type === 'LINK') {\n @if (cellsData[i]?.[0]?.isUninformed) {\n <span class=\"sds-empty-value\">{{ cellsData[i]?.[0]?.value }}</span>\n } @else {\n <a\n [sTooltip]=\"column.tooltip\"\n [escape]=\"false\"\n (click)=\"column.onLinkClick ? column.onLinkClick(rowValue) : null\"\n >\n <ng-container *ngTemplateOutlet=\"columnValueTemplate\"></ng-container>\n </a>\n }\n }\n\n <ng-template #columnValueTemplate>\n @for (cellData of cellsData[i]; track $index) {\n @if (cellData.isUninformed) {\n <span class=\"sds-empty-value\">{{ cellData.value }}</span>\n } @else {\n @if (column.badgeConfigs) {\n <s-badge\n [sTooltip]=\"column.tooltip\"\n [color]=\"column.badgeConfigs.color\"\n [text]=\"cellData.value\"\n ></s-badge>\n } @else {\n <span\n [ngClass]=\"{\n 'column-cell-red': column.color === 'Red',\n 'column-cell-orange': column.color === 'Orange',\n 'column-cell-yellow': column.color === 'Yellow',\n 'column-cell-green': column.color === 'Green',\n 'column-cell-blue': column.color === 'Blue',\n }\"\n >{{ cellData.value }}</span\n >\n }\n }\n\n @if (cellData.separator) {\n <span>{{ cellData.separator }}</span>\n }\n }\n\n @if (!!column.infoSign) {\n <span *sInfoSign=\"column.infoSign\"></span>\n }\n </ng-template>\n </div>\n } @else {\n <s-token-list\n [tokens]=\"getTokensByColumn(column)\"\n [hidePointerEvents]=\"true\"\n ></s-token-list>\n\n @if (!!column.infoSign) {\n <span *sInfoSign=\"column.infoSign\"></span>\n }\n }\n </td>\n }\n</ng-template>\n\n", styles: [":host{display:none}.compact-column{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}.column-cell-red{color:#c13018}.column-cell-orange{color:#f8931f}.column-cell-yellow{color:#fcbf10}.column-cell-green{color:#0c9348}.column-cell-blue{color:#428bca}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BadgeComponent, selector: "s-badge", inputs: ["type", "color", "title", "text", "selectable", "iconClass", "iconPosition", "infoSign", "enableTruncateText"], outputs: ["selected"] }, { kind: "directive", type: InfoSignDirective, selector: "[sInfoSign]", inputs: ["sInfoSign", "sInfoSignDisplayTime", "sInfoSignFocusedInputRef", "sInfoSignUseFocusedInputRef"] }, { kind: "component", type: TokenListComponent, selector: "s-token-list", inputs: ["id", "tokens", "removableTokens", "hidePointerEvents", "removeIconClass"], outputs: ["tokenSelected", "tokenRemoved"] }] });
307
307
  }
308
308
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableColumnsComponent, decorators: [{
309
309
  type: Component,
@@ -102,7 +102,7 @@ export class TextAreaComponent {
102
102
  useExisting: forwardRef(() => TextAreaComponent),
103
103
  multi: true,
104
104
  },
105
- ], viewQueries: [{ propertyName: "textAreaElement", first: true, predicate: ["textArea"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [pKeyFilter]=\"keyFilter\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"setValue($event)\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n ></textarea>\r\n}\r\n\r\n@if (!keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n (ngModelChange)=\"setValue($event)\"\r\n ></textarea>\r\n}\r\n\r\n@if (speechRecognition && renderTextArea) {\r\n <s-speech-recognition\r\n [textAreaElement]=\"textAreaElement.nativeElement\"\r\n [keepContext]=\"keepContext\"\r\n [speechRecognitionPlaceholder]=\"speechRecognitionPlaceholder\"\r\n [disabledSpeechRecognition]=\"disabled\"\r\n (recognizedText)=\"handleRecognizedText($event)\"\r\n />\r\n\r\n}\r\n", styles: [".textarea{border-radius:3px;border:1px solid #c1c1cc;background:#fff;width:100%;max-width:100%;min-height:4em;min-width:10em;outline:none;padding:8px;display:block}.textarea:disabled{opacity:.5}.textarea:focus{transition:border-color .2s ease-out;border:1px solid #428bca}:host.ng-invalid.ng-dirty .textarea{border-color:#c13018}\n"], dependencies: [{ 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"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SpeechRecognitionComponent, selector: "s-speech-recognition", inputs: ["textAreaElement", "keepContext", "speechRecognitionPlaceholder", "disabledSpeechRecognition"], outputs: ["recognizedText"] }] });
105
+ ], viewQueries: [{ propertyName: "textAreaElement", first: true, predicate: ["textArea"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [pKeyFilter]=\"keyFilter\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"setValue($event)\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n ></textarea>\r\n}\r\n\r\n@if (!keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n (ngModelChange)=\"setValue($event)\"\r\n ></textarea>\r\n}\r\n\r\n@if (speechRecognition && renderTextArea) {\r\n <s-speech-recognition\r\n [textAreaElement]=\"textAreaElement.nativeElement\"\r\n [keepContext]=\"keepContext\"\r\n [speechRecognitionPlaceholder]=\"speechRecognitionPlaceholder\"\r\n [disabledSpeechRecognition]=\"disabled\"\r\n (recognizedText)=\"handleRecognizedText($event)\"\r\n />\r\n\r\n}\r\n", styles: [".textarea{border-radius:3px;border:1px solid #c1c1cc;background:#fff;width:100%;max-width:100%;min-height:4em;min-width:10em;outline:none;padding:8px;display:block}.textarea:disabled{opacity:.5}.textarea:focus{transition:border-color .2s ease-out;border:1px solid #428bca}:host.ng-invalid.ng-dirty .textarea{border-color:#c13018}\n"], dependencies: [{ 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"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SpeechRecognitionComponent, selector: "s-speech-recognition", inputs: ["textAreaElement", "keepContext", "speechRecognitionPlaceholder", "moreOptionsIconClass", "disabledSpeechRecognition"], outputs: ["recognizedText"] }] });
106
106
  }
107
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TextAreaComponent, decorators: [{
108
108
  type: Component,
@@ -26,6 +26,8 @@ export class TokenListComponent {
26
26
  removableTokens = false;
27
27
  /** @description Quando `true`, remove os eventos de ponteiro (hover/clique) dos tokens. @default false */
28
28
  hidePointerEvents = false;
29
+ /** @description Classe do ícone do botão de remover token. @default 'far fa-times' */
30
+ removeIconClass = 'far fa-times';
29
31
  /** @description Emitido quando o usuário clica em um token não desabilitado. */
30
32
  tokenSelected = new EventEmitter();
31
33
  /** @description Emitido quando o usuário remove um token não desabilitado. */
@@ -41,11 +43,11 @@ export class TokenListComponent {
41
43
  }
42
44
  }
43
45
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
44
- 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" }, 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=\"far fa-times\"\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"] }] });
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"] }] });
45
47
  }
46
48
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenListComponent, decorators: [{
47
49
  type: Component,
48
- 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=\"far fa-times\"\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"] }]
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"] }]
49
51
  }], propDecorators: { id: [{
50
52
  type: Input
51
53
  }], tokens: [{
@@ -55,9 +57,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
55
57
  type: Input
56
58
  }], hidePointerEvents: [{
57
59
  type: Input
60
+ }], removeIconClass: [{
61
+ type: Input
58
62
  }], tokenSelected: [{
59
63
  type: Output
60
64
  }], tokenRemoved: [{
61
65
  type: Output
62
66
  }] } });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9rZW4tbGlzdC9zcmMvbGliL3Rva2VuLWxpc3QvdG9rZW4tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9rZW4tbGlzdC9zcmMvbGliL3Rva2VuLWxpc3QvdG9rZW4tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJdkU7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFRSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ3BCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRXpCLHNHQUFzRztJQUUvRixFQUFFLEdBQUcsZ0JBQWdCLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFFMUQsZ0VBQWdFO0lBRXpELE1BQU0sQ0FBWTtJQUV6QiwwRUFBMEU7SUFFbkUsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUUvQiwwR0FBMEc7SUFFbkcsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBRWpDLGdGQUFnRjtJQUV6RSxhQUFhLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFaEUsOEVBQThFO0lBRXZFLFlBQVksR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUV4RCxlQUFlLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0wsQ0FBQzt3R0FyQ1Esa0JBQWtCOzRGQUFsQixrQkFBa0IsdVFDM0IvQiwrM0JBK0JBLDYwQkROYyxPQUFPOzs0RkFFUixrQkFBa0I7a0JBUDlCLFNBQVM7K0JBQ0ksY0FBYyxjQUdaLElBQUksV0FDUCxDQUFDLE9BQU8sQ0FBQzs4QkFPWCxFQUFFO3NCQURSLEtBQUs7Z0JBS0MsTUFBTTtzQkFEWixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFLbEIsZUFBZTtzQkFEckIsS0FBSztnQkFLQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBS0MsYUFBYTtzQkFEbkIsTUFBTTtnQkFLQSxZQUFZO3NCQURsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBJVG9rZW4gfSBmcm9tICcuL21vZGVscy90b2tlbic7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgbGlzdGEgZGUgdG9rZW5zIChldGlxdWV0YXMpIGNsaWPDoXZlaXMgZSBvcGNpb25hbG1lbnRlXHJcbiAqIHJlbW92w612ZWlzLiBFbWl0ZSBldmVudG9zIGFvIHNlbGVjaW9uYXIgb3UgcmVtb3ZlciB1bSB0b2tlbi5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgaHRtbFxyXG4gKiA8cy10b2tlbi1saXN0XHJcbiAqICAgW3Rva2Vuc109XCJsaXN0YURlVG9rZW5zXCJcclxuICogICBbcmVtb3ZhYmxlVG9rZW5zXT1cInRydWVcIlxyXG4gKiAgICh0b2tlblNlbGVjdGVkKT1cIm9uVG9rZW5TZWxlY2lvbmFkbygkZXZlbnQpXCJcclxuICogICAodG9rZW5SZW1vdmVkKT1cIm9uVG9rZW5SZW1vdmlkbygkZXZlbnQpXCIgLz5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBTdW1tYXJ5XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncy10b2tlbi1saXN0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90b2tlbi1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3Rva2VuLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTmdDbGFzc10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb2tlbkxpc3RDb21wb25lbnQge1xyXG4gICAgcHVibGljIHN0YXRpYyBuZXh0SWQgPSAwO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gSWRlbnRpZmljYWRvciDDum5pY28gZG8gY29tcG9uZW50ZSBubyBET00uIEdlcmFkbyBhdXRvbWF0aWNhbWVudGUgc2UgbsOjbyBpbmZvcm1hZG8uICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGlkID0gYHMtdG9rZW4tbGlzdC0ke1Rva2VuTGlzdENvbXBvbmVudC5uZXh0SWQrK31gO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gTGlzdGEgZGUgdG9rZW5zIGV4aWJpZG9zLiBDYW1wbyBvYnJpZ2F0w7NyaW8uICovXHJcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxyXG4gICAgcHVibGljIHRva2VucyE6IElUb2tlbltdO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRXhpYmUgbyBib3TDo28gZGUgcmVtb8Onw6NvIGVtIGNhZGEgdG9rZW4uIEBkZWZhdWx0IGZhbHNlICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHJlbW92YWJsZVRva2VucyA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gUXVhbmRvIGB0cnVlYCwgcmVtb3ZlIG9zIGV2ZW50b3MgZGUgcG9udGVpcm8gKGhvdmVyL2NsaXF1ZSkgZG9zIHRva2Vucy4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaGlkZVBvaW50ZXJFdmVudHMgPSBmYWxzZTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdXN1w6FyaW8gY2xpY2EgZW0gdW0gdG9rZW4gbsOjbyBkZXNhYmlsaXRhZG8uICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyB0b2tlblNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8SVRva2VuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdXN1w6FyaW8gcmVtb3ZlIHVtIHRva2VuIG7Do28gZGVzYWJpbGl0YWRvLiAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgdG9rZW5SZW1vdmVkOiBFdmVudEVtaXR0ZXI8SVRva2VuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBwdWJsaWMgb25Ub2tlblNlbGVjdGVkKHRva2VuOiBJVG9rZW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRva2VuLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9rZW5TZWxlY3RlZC5uZXh0KHRva2VuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uVG9rZW5SZW1vdmVkKHRva2VuOiBJVG9rZW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRva2VuLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9rZW5SZW1vdmVkLm5leHQodG9rZW4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8ZGl2XG4gICAgW2lkXT1cImlkXCJcbiAgICBjbGFzcz1cInRva2VuLWxpc3RcIlxuPlxuICAgIEBmb3IgKHRva2VuIG9mIHRva2VuczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbaWRdPVwidG9rZW4uaWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0b2tlblwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ25vLXBvaW50ZXItZXZlbnRzJzogaGlkZVBvaW50ZXJFdmVudHMsXG4gICAgICAgICAgICAgICAgJ3Rva2VuLS1kaXNhYmxlZCc6IHRva2VuLmRpc2FibGVkLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgW2lkXT1cIih0b2tlbi5pZCB8fCAndG9rZW4nKSArICctbGFiZWwnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRva2VuLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ub2tlblNlbGVjdGVkKHRva2VuKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdG9rZW4ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIEBpZiAocmVtb3ZhYmxlVG9rZW5zICYmICF0b2tlbi5ub3RSZW1vdmFibGUpIHtcbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwidG9rZW4uaWQgKyAnLXJlbW92ZSdcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhciBmYS10aW1lc1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblRva2VuUmVtb3ZlZCh0b2tlbilcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvc3Bhbj5cbiAgICB9XG48L2Rpdj5cbiJdfQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9rZW4tbGlzdC9zcmMvbGliL3Rva2VuLWxpc3QvdG9rZW4tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9rZW4tbGlzdC9zcmMvbGliL3Rva2VuLWxpc3QvdG9rZW4tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJdkU7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFRSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ3BCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRXpCLHNHQUFzRztJQUUvRixFQUFFLEdBQUcsZ0JBQWdCLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFFMUQsZ0VBQWdFO0lBRXpELE1BQU0sQ0FBWTtJQUV6QiwwRUFBMEU7SUFFbkUsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUUvQiwwR0FBMEc7SUFFbkcsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBRWpDLHNGQUFzRjtJQUUvRSxlQUFlLEdBQUcsY0FBYyxDQUFDO0lBRXhDLGdGQUFnRjtJQUV6RSxhQUFhLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFaEUsOEVBQThFO0lBRXZFLFlBQVksR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUV4RCxlQUFlLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0wsQ0FBQzt3R0F6Q1Esa0JBQWtCOzRGQUFsQixrQkFBa0IsMlNDM0IvQixvNEJBK0JBLDYwQkROYyxPQUFPOzs0RkFFUixrQkFBa0I7a0JBUDlCLFNBQVM7K0JBQ0ksY0FBYyxjQUdaLElBQUksV0FDUCxDQUFDLE9BQU8sQ0FBQzs4QkFPWCxFQUFFO3NCQURSLEtBQUs7Z0JBS0MsTUFBTTtzQkFEWixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFLbEIsZUFBZTtzQkFEckIsS0FBSztnQkFLQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBS0MsZUFBZTtzQkFEckIsS0FBSztnQkFLQyxhQUFhO3NCQURuQixNQUFNO2dCQUtBLFlBQVk7c0JBRGxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IElUb2tlbiB9IGZyb20gJy4vbW9kZWxzL3Rva2VuJztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50ZSBkZSBsaXN0YSBkZSB0b2tlbnMgKGV0aXF1ZXRhcykgY2xpY8OhdmVpcyBlIG9wY2lvbmFsbWVudGVcclxuICogcmVtb3bDrXZlaXMuIEVtaXRlIGV2ZW50b3MgYW8gc2VsZWNpb25hciBvdSByZW1vdmVyIHVtIHRva2VuLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBodG1sXHJcbiAqIDxzLXRva2VuLWxpc3RcclxuICogICBbdG9rZW5zXT1cImxpc3RhRGVUb2tlbnNcIlxyXG4gKiAgIFtyZW1vdmFibGVUb2tlbnNdPVwidHJ1ZVwiXHJcbiAqICAgKHRva2VuU2VsZWN0ZWQpPVwib25Ub2tlblNlbGVjaW9uYWRvKCRldmVudClcIlxyXG4gKiAgICh0b2tlblJlbW92ZWQpPVwib25Ub2tlblJlbW92aWRvKCRldmVudClcIiAvPlxyXG4gKiBgYGBcclxuICpcclxuICogQGNhdGVnb3J5IFN1bW1hcnlcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzLXRva2VuLWxpc3QnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rva2VuLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdG9rZW4tbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtOZ0NsYXNzXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRva2VuTGlzdENvbXBvbmVudCB7XHJcbiAgICBwdWJsaWMgc3RhdGljIG5leHRJZCA9IDA7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJZGVudGlmaWNhZG9yIMO6bmljbyBkbyBjb21wb25lbnRlIG5vIERPTS4gR2VyYWRvIGF1dG9tYXRpY2FtZW50ZSBzZSBuw6NvIGluZm9ybWFkby4gKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaWQgPSBgcy10b2tlbi1saXN0LSR7VG9rZW5MaXN0Q29tcG9uZW50Lm5leHRJZCsrfWA7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBMaXN0YSBkZSB0b2tlbnMgZXhpYmlkb3MuIENhbXBvIG9icmlnYXTDs3Jpby4gKi9cclxuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgdG9rZW5zITogSVRva2VuW107XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFeGliZSBvIGJvdMOjbyBkZSByZW1vw6fDo28gZW0gY2FkYSB0b2tlbi4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcmVtb3ZhYmxlVG9rZW5zID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCByZW1vdmUgb3MgZXZlbnRvcyBkZSBwb250ZWlybyAoaG92ZXIvY2xpcXVlKSBkb3MgdG9rZW5zLiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBoaWRlUG9pbnRlckV2ZW50cyA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ2xhc3NlIGRvIMOtY29uZSBkbyBib3TDo28gZGUgcmVtb3ZlciB0b2tlbi4gQGRlZmF1bHQgJ2ZhciBmYS10aW1lcycgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcmVtb3ZlSWNvbkNsYXNzID0gJ2ZhciBmYS10aW1lcyc7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIHVzdcOhcmlvIGNsaWNhIGVtIHVtIHRva2VuIG7Do28gZGVzYWJpbGl0YWRvLiAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgdG9rZW5TZWxlY3RlZDogRXZlbnRFbWl0dGVyPElUb2tlbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIHVzdcOhcmlvIHJlbW92ZSB1bSB0b2tlbiBuw6NvIGRlc2FiaWxpdGFkby4gKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHRva2VuUmVtb3ZlZDogRXZlbnRFbWl0dGVyPElUb2tlbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgcHVibGljIG9uVG9rZW5TZWxlY3RlZCh0b2tlbjogSVRva2VuKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0b2tlbi5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRva2VuU2VsZWN0ZWQubmV4dCh0b2tlbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvblRva2VuUmVtb3ZlZCh0b2tlbjogSVRva2VuKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0b2tlbi5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRva2VuUmVtb3ZlZC5uZXh0KHRva2VuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdlxuICAgIFtpZF09XCJpZFwiXG4gICAgY2xhc3M9XCJ0b2tlbi1saXN0XCJcbj5cbiAgICBAZm9yICh0b2tlbiBvZiB0b2tlbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2lkXT1cInRva2VuLmlkXCJcbiAgICAgICAgICAgIGNsYXNzPVwidG9rZW5cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICduby1wb2ludGVyLWV2ZW50cyc6IGhpZGVQb2ludGVyRXZlbnRzLFxuICAgICAgICAgICAgICAgICd0b2tlbi0tZGlzYWJsZWQnOiB0b2tlbi5kaXNhYmxlZCxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIFtpZF09XCIodG9rZW4uaWQgfHwgJ3Rva2VuJykgKyAnLWxhYmVsJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0b2tlbi1sYWJlbFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9rZW5TZWxlY3RlZCh0b2tlbilcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHRva2VuLmxhYmVsIH19XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICBAaWYgKHJlbW92YWJsZVRva2VucyAmJiAhdG9rZW4ubm90UmVtb3ZhYmxlKSB7XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cInRva2VuLmlkICsgJy1yZW1vdmUnXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInJlbW92ZUljb25DbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblRva2VuUmVtb3ZlZCh0b2tlbilcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvc3Bhbj5cbiAgICB9XG48L2Rpdj5cbiJdfQ==