stream-chat-angular 1.3.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/assets/i18n/en.d.ts +1 -0
  2. package/assets/version.d.ts +1 -1
  3. package/bundles/stream-chat-angular.umd.js +1196 -365
  4. package/bundles/stream-chat-angular.umd.js.map +1 -1
  5. package/esm2015/assets/i18n/en.js +2 -1
  6. package/esm2015/assets/version.js +2 -2
  7. package/esm2015/lib/attachment-list/attachment-list.component.js +3 -4
  8. package/esm2015/lib/attachment-preview-list/attachment-preview-list.component.js +38 -0
  9. package/esm2015/lib/attachment.service.js +190 -0
  10. package/esm2015/lib/channel.service.js +53 -4
  11. package/esm2015/lib/chat-client.service.js +16 -1
  12. package/esm2015/lib/injection-tokens.js +3 -0
  13. package/esm2015/lib/is-image-attachment.js +6 -0
  14. package/esm2015/lib/message/highlight-mentions.pipe.js +23 -0
  15. package/esm2015/lib/message/message.component.js +3 -2
  16. package/esm2015/lib/message-actions-box/message-actions-box.component.js +43 -12
  17. package/esm2015/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.js +145 -0
  18. package/esm2015/lib/message-input/message-input-config.service.js +19 -0
  19. package/esm2015/lib/message-input/message-input.component.js +122 -140
  20. package/esm2015/lib/message-input/textarea/textarea.component.js +42 -0
  21. package/esm2015/lib/message-input/textarea.directive.js +69 -0
  22. package/esm2015/lib/message-input/textarea.interface.js +2 -0
  23. package/esm2015/lib/message-list/message-list.component.js +19 -3
  24. package/esm2015/lib/message-preview.js +3 -2
  25. package/esm2015/lib/modal/modal.component.js +63 -0
  26. package/esm2015/lib/notification-list/notification-list.component.js +1 -1
  27. package/esm2015/lib/notification.service.js +1 -1
  28. package/esm2015/lib/stream-autocomplete-textarea.module.js +33 -0
  29. package/esm2015/lib/stream-avatar.module.js +19 -0
  30. package/esm2015/lib/stream-chat.module.js +25 -11
  31. package/esm2015/lib/stream-textarea.module.js +31 -0
  32. package/esm2015/lib/types.js +1 -1
  33. package/esm2015/public-api.js +19 -1
  34. package/fesm2015/stream-chat-angular.js +955 -241
  35. package/fesm2015/stream-chat-angular.js.map +1 -1
  36. package/lib/attachment-preview-list/attachment-preview-list.component.d.ts +14 -0
  37. package/lib/attachment.service.d.ts +25 -0
  38. package/lib/channel.service.d.ts +6 -2
  39. package/lib/chat-client.service.d.ts +1 -0
  40. package/lib/injection-tokens.d.ts +3 -0
  41. package/lib/is-image-attachment.d.ts +2 -0
  42. package/lib/message/highlight-mentions.pipe.d.ts +8 -0
  43. package/lib/message/message.component.d.ts +1 -0
  44. package/lib/message-actions-box/message-actions-box.component.d.ts +11 -4
  45. package/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.d.ts +42 -0
  46. package/lib/message-input/message-input-config.service.d.ts +14 -0
  47. package/lib/message-input/message-input.component.d.ts +30 -20
  48. package/lib/message-input/textarea/textarea.component.d.ts +16 -0
  49. package/lib/message-input/textarea.directive.d.ts +21 -0
  50. package/lib/message-input/textarea.interface.d.ts +12 -0
  51. package/lib/message-list/message-list.component.d.ts +1 -1
  52. package/lib/message-preview.d.ts +1 -1
  53. package/lib/modal/modal.component.d.ts +16 -0
  54. package/lib/notification-list/notification-list.component.d.ts +3 -3
  55. package/lib/notification.service.d.ts +2 -2
  56. package/lib/stream-autocomplete-textarea.module.d.ts +11 -0
  57. package/lib/stream-avatar.module.d.ts +9 -0
  58. package/lib/stream-chat.module.d.ts +23 -19
  59. package/lib/stream-textarea.module.d.ts +9 -0
  60. package/lib/types.d.ts +7 -1
  61. package/package.json +3 -2
  62. package/public-api.d.ts +18 -0
  63. package/src/assets/i18n/en.ts +1 -0
  64. package/src/assets/version.ts +1 -1
@@ -13,6 +13,7 @@ import * as i7 from "../attachment-list/attachment-list.component";
13
13
  import * as i8 from "../loading-indicator/loading-indicator.component";
14
14
  import * as i9 from "@angular/common";
15
15
  import * as i10 from "@ngx-translate/core";
16
+ import * as i11 from "./highlight-mentions.pipe";
16
17
  export class MessageComponent {
17
18
  constructor(chatClientService, channelService) {
18
19
  this.chatClientService = chatClientService;
@@ -97,7 +98,7 @@ export class MessageComponent {
97
98
  }
98
99
  }
99
100
  MessageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageComponent, deps: [{ token: i1.ChatClientService }, { token: i2.ChannelService }], target: i0.ɵɵFactoryTarget.Component });
100
- MessageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageComponent, selector: "stream-message", inputs: { message: "message", enabledMessageActions: "enabledMessageActions", areReactionsEnabled: "areReactionsEnabled", canReactToMessage: "canReactToMessage", isLastSentMessage: "isLastSentMessage" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"str-chat__message-simple str-chat__message str-chat__message--{{\n message?.type\n }} str-chat__message--{{ message?.status }} {{\n message?.text ? 'str-chat__message--has-text' : 'has-no-text'\n }}\"\n [class.str-chat__message--me]=\"isSentByCurrentUser\"\n [class.str-chat__message-simple--me]=\"isSentByCurrentUser\"\n [class.mobile-press]=\"isPressedOnMobile\"\n [class.str-chat__message--has-attachment]=\"hasAttachment\"\n [class.str-chat__message--with-reactions]=\"\n areReactionsEnabled && hasReactions\n \"\n data-testid=\"message-container\"\n>\n <ng-container *ngIf=\"!message?.deleted_at; else deletedMessage\">\n <ng-container *ngIf=\"message?.type !== 'system'; else systemMessage\">\n <ng-container\n *ngIf=\"\n isSentByCurrentUser &&\n ((isLastSentMessage && message?.status === 'received') ||\n message?.status === 'sending')\n \"\n >\n <ng-container *ngIf=\"message?.status === 'sending'; else sentStatus\">\n <ng-container *ngTemplateOutlet=\"sendingStatus\"></ng-container>\n </ng-container>\n <ng-template #sentStatus>\n <ng-container *ngIf=\"isMessageDeliveredAndRead; else deliveredStatus\">\n <ng-container *ngTemplateOutlet=\"readStatus\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <stream-avatar\n data-testid=\"avatar\"\n class=\"str-chat-angular__avatar-host\"\n [imageUrl]=\"message?.user?.image\"\n [name]=\"message?.user?.name || message?.user?.id\"\n ></stream-avatar>\n <div class=\"str-chat__message-inner\">\n <div\n class=\"str-chat__message-simple__actions\"\n data-testid=\"message-options\"\n *ngIf=\"areOptionsVisible\"\n >\n <div\n class=\"\n str-chat__message-simple__actions__action\n str-chat__message-simple__actions__action--options\n \"\n >\n <stream-message-actions-box\n [isOpen]=\"isActionBoxOpen\"\n [isMine]=\"isSentByCurrentUser\"\n [enabledActions]=\"enabledMessageActions\"\n [message]=\"message\"\n (displayedActionsCount)=\"visibleMessageActionsCount = $event\"\n ></stream-message-actions-box>\n <stream-icon\n *ngIf=\"visibleMessageActionsCount > 0\"\n data-testid=\"action-icon\"\n icon=\"action-icon\"\n (keyup.enter)=\"isActionBoxOpen = !isActionBoxOpen\"\n (click)=\"isActionBoxOpen = !isActionBoxOpen\"\n ></stream-icon>\n </div>\n <div\n *ngIf=\"areReactionsEnabled && canReactToMessage\"\n class=\"\n str-chat__message-simple__actions__action\n str-chat__message-simple__actions__action--reactions\n \"\n data-testid=\"reaction-icon\"\n (click)=\"isReactionSelectorOpen = !isReactionSelectorOpen\"\n (keyup.enter)=\"isReactionSelectorOpen = !isReactionSelectorOpen\"\n >\n <stream-icon icon=\"reaction-icon\"></stream-icon>\n </div>\n </div>\n <stream-message-reactions\n *ngIf=\"areReactionsEnabled\"\n [messageReactionCounts]=\"message?.reaction_counts || {}\"\n [latestReactions]=\"message?.latest_reactions || []\"\n [(isSelectorOpen)]=\"isReactionSelectorOpen\"\n [messageId]=\"message?.id\"\n [ownReactions]=\"message?.own_reactions || []\"\n ></stream-message-reactions>\n <stream-attachment-list\n *ngIf=\"hasAttachment\"\n [attachments]=\"message!.attachments!\"\n ></stream-attachment-list>\n <div class=\"str-chat__message-text\" *ngIf=\"message?.text\">\n <div\n data-testid=\"inner-message\"\n class=\"\n str-chat__message-text-inner str-chat__message-simple-text-inner\n \"\n [class.str-chat__message-light-text-inner--has-attachment]=\"\n hasAttachment\n \"\n (click)=\"\n message?.status === 'failed' && message?.errorStatusCode !== 403\n ? resendMessage()\n : undefined\n \"\n (keyup.enter)=\"\n message?.status === 'failed' && message?.errorStatusCode !== 403\n ? resendMessage()\n : undefined\n \"\n >\n <div\n data-testid=\"client-error-message\"\n *ngIf=\"message?.type === 'error'\"\n class=\"str-chat__simple-message--error-message\"\n >\n {{ \"streamChat.Error \u00B7 Unsent\" | translate }}\n </div>\n <div\n data-testid=\"error-message\"\n *ngIf=\"message?.status === 'failed'\"\n class=\"str-chat__simple-message--error-message\"\n >\n {{\n (message?.errorStatusCode === 403\n ? \"streamChat.Message Failed \u00B7 Unauthorized\"\n : \"streamChat.Message Failed \u00B7 Click to try again\"\n ) | translate\n }}\n </div>\n <div\n (click)=\"textClicked()\"\n (keyup.enter)=\"textClicked()\"\n data-testid=\"text\"\n [innerHTML]=\"message?.html || message?.text\"\n ></div>\n </div>\n </div>\n <div class=\"str-chat__message-data str-chat__message-simple-data\">\n <span\n data-testid=\"sender\"\n *ngIf=\"!isSentByCurrentUser\"\n class=\"str-chat__message-simple-name\"\n >\n {{ message?.user?.name ? message?.user?.name : message?.user?.id }}\n </span>\n <span data-testid=\"date\" class=\"str-chat__message-simple-timestamp\">\n {{ parsedDate }}\n </span>\n </div>\n </div>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #sendingStatus>\n <span class=\"str-chat__message-simple-status\" data-testid=\"sending-indicator\">\n <div class=\"str-chat__tooltip\">\n {{ \"streamChat.Sending...\" | translate }}\n </div>\n <stream-loading-indicator\n data-testid=\"loading-indicator\"\n ></stream-loading-indicator>\n </span>\n</ng-template>\n<ng-template #readStatus>\n <span class=\"str-chat__message-simple-status\" data-testid=\"read-indicator\">\n <div class=\"str-chat__tooltip\" data-testid=\"read-by-tooltip\">\n {{ readByText }}\n </div>\n <stream-avatar\n class=\"str-chat-angular__avatar-host\"\n data-test-id=\"last-read-user-avatar\"\n [size]=\"15\"\n [imageUrl]=\"lastReadUser?.image\"\n [name]=\"lastReadUser?.name || lastReadUser?.id\"\n ></stream-avatar>\n <span\n data-test-id=\"read-by-length\"\n *ngIf=\"isReadByMultipleUsers\"\n class=\"str-chat__message-simple-status-number\"\n >\n {{ (message?.readBy)!.length }}\n </span>\n </span>\n</ng-template>\n<ng-template #deliveredStatus>\n <span\n class=\"str-chat__message-simple-status\"\n data-testid=\"delivered-indicator\"\n >\n <div class=\"str-chat__tooltip\">\n {{ \"streamChat.Delivered\" | translate }}\n </div>\n <stream-icon\n data-testid=\"delivered-icon\"\n icon=\"delivered-icon\"\n ></stream-icon>\n </span>\n</ng-template>\n\n<ng-template #deletedMessage>\n <div data-testid=\"message-deleted-component\">\n <div class=\"str-chat__message--deleted-inner\" translate>\n streamChat.This message was deleted...\n </div>\n </div>\n</ng-template>\n\n<ng-template #systemMessage>\n <div data-testid=\"system-message\" class=\"str-chat__message--system\">\n <div class=\"str-chat__message--system__text\">\n <div class=\"str-chat__message--system__line\"></div>\n <p>{{ message?.text }}</p>\n <div class=\"str-chat__message--system__line\"></div>\n </div>\n <div class=\"str-chat__message--system__date\">\n {{ parsedDate }}\n </div>\n </div>\n</ng-template>\n", components: [{ type: i3.AvatarComponent, selector: "stream-avatar", inputs: ["name", "imageUrl", "size"] }, { type: i4.MessageActionsBoxComponent, selector: "stream-message-actions-box", inputs: ["isOpen", "isMine", "message", "enabledActions"], outputs: ["displayedActionsCount"] }, { type: i5.IconComponent, selector: "stream-icon", inputs: ["icon", "size"] }, { type: i6.MessageReactionsComponent, selector: "stream-message-reactions", inputs: ["messageId", "messageReactionCounts", "isSelectorOpen", "latestReactions", "ownReactions"], outputs: ["isSelectorOpenChange"] }, { type: i7.AttachmentListComponent, selector: "stream-attachment-list", inputs: ["attachments"] }, { type: i8.LoadingIndicatorComponent, selector: "stream-loading-indicator", inputs: ["size", "color"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i10.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], pipes: { "translate": i10.TranslatePipe } });
101
+ MessageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageComponent, selector: "stream-message", inputs: { message: "message", enabledMessageActions: "enabledMessageActions", areReactionsEnabled: "areReactionsEnabled", canReactToMessage: "canReactToMessage", isLastSentMessage: "isLastSentMessage" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"str-chat__message-simple str-chat__message str-chat__message--{{\n message?.type\n }} str-chat__message--{{ message?.status }} {{\n message?.text ? 'str-chat__message--has-text' : 'has-no-text'\n }}\"\n [class.str-chat__message--me]=\"isSentByCurrentUser\"\n [class.str-chat__message-simple--me]=\"isSentByCurrentUser\"\n [class.mobile-press]=\"isPressedOnMobile\"\n [class.str-chat__message--has-attachment]=\"hasAttachment\"\n [class.str-chat__message--with-reactions]=\"\n areReactionsEnabled && hasReactions\n \"\n data-testid=\"message-container\"\n>\n <ng-container *ngIf=\"!message?.deleted_at; else deletedMessage\">\n <ng-container *ngIf=\"message?.type !== 'system'; else systemMessage\">\n <ng-container\n *ngIf=\"\n isSentByCurrentUser &&\n ((isLastSentMessage && message?.status === 'received') ||\n message?.status === 'sending')\n \"\n >\n <ng-container *ngIf=\"message?.status === 'sending'; else sentStatus\">\n <ng-container *ngTemplateOutlet=\"sendingStatus\"></ng-container>\n </ng-container>\n <ng-template #sentStatus>\n <ng-container *ngIf=\"isMessageDeliveredAndRead; else deliveredStatus\">\n <ng-container *ngTemplateOutlet=\"readStatus\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <stream-avatar\n data-testid=\"avatar\"\n class=\"str-chat-angular__avatar-host\"\n [imageUrl]=\"message?.user?.image\"\n [name]=\"message?.user?.name || message?.user?.id\"\n ></stream-avatar>\n <div class=\"str-chat__message-inner\">\n <div\n class=\"str-chat__message-simple__actions\"\n data-testid=\"message-options\"\n *ngIf=\"areOptionsVisible\"\n >\n <div\n data-testid=\"message-actions-container\"\n class=\"\n str-chat__message-simple__actions__action\n str-chat__message-simple__actions__action--options\n \"\n [class.str-chat-angular__message-simple__actions__action--options--editing]=\"\n isEditing\n \"\n >\n <stream-message-actions-box\n [isOpen]=\"isActionBoxOpen\"\n [isMine]=\"isSentByCurrentUser\"\n [enabledActions]=\"enabledMessageActions\"\n [message]=\"message\"\n (displayedActionsCount)=\"visibleMessageActionsCount = $event\"\n (isEditing)=\"isEditing = $event; isActionBoxOpen = !isEditing\"\n ></stream-message-actions-box>\n <stream-icon\n *ngIf=\"visibleMessageActionsCount > 0\"\n data-testid=\"action-icon\"\n icon=\"action-icon\"\n (keyup.enter)=\"isActionBoxOpen = !isActionBoxOpen\"\n (click)=\"isActionBoxOpen = !isActionBoxOpen\"\n ></stream-icon>\n </div>\n <div\n *ngIf=\"areReactionsEnabled && canReactToMessage\"\n class=\"\n str-chat__message-simple__actions__action\n str-chat__message-simple__actions__action--reactions\n \"\n data-testid=\"reaction-icon\"\n (click)=\"isReactionSelectorOpen = !isReactionSelectorOpen\"\n (keyup.enter)=\"isReactionSelectorOpen = !isReactionSelectorOpen\"\n >\n <stream-icon icon=\"reaction-icon\"></stream-icon>\n </div>\n </div>\n <stream-message-reactions\n *ngIf=\"areReactionsEnabled\"\n [messageReactionCounts]=\"message?.reaction_counts || {}\"\n [latestReactions]=\"message?.latest_reactions || []\"\n [(isSelectorOpen)]=\"isReactionSelectorOpen\"\n [messageId]=\"message?.id\"\n [ownReactions]=\"message?.own_reactions || []\"\n ></stream-message-reactions>\n <stream-attachment-list\n *ngIf=\"hasAttachment\"\n [attachments]=\"message!.attachments!\"\n ></stream-attachment-list>\n <div class=\"str-chat__message-text\" *ngIf=\"message?.text\">\n <div\n data-testid=\"inner-message\"\n class=\"\n str-chat__message-text-inner str-chat__message-simple-text-inner\n \"\n [class.str-chat__message-light-text-inner--has-attachment]=\"\n hasAttachment\n \"\n (click)=\"\n message?.status === 'failed' && message?.errorStatusCode !== 403\n ? resendMessage()\n : undefined\n \"\n (keyup.enter)=\"\n message?.status === 'failed' && message?.errorStatusCode !== 403\n ? resendMessage()\n : undefined\n \"\n >\n <div\n data-testid=\"client-error-message\"\n *ngIf=\"message?.type === 'error'\"\n class=\"str-chat__simple-message--error-message\"\n >\n {{ \"streamChat.Error \u00B7 Unsent\" | translate }}\n </div>\n <div\n data-testid=\"error-message\"\n *ngIf=\"message?.status === 'failed'\"\n class=\"str-chat__simple-message--error-message\"\n >\n {{\n (message?.errorStatusCode === 403\n ? \"streamChat.Message Failed \u00B7 Unauthorized\"\n : \"streamChat.Message Failed \u00B7 Click to try again\"\n ) | translate\n }}\n </div>\n <div\n (click)=\"textClicked()\"\n (keyup.enter)=\"textClicked()\"\n data-testid=\"text\"\n [innerHTML]=\"\n message?.html || message?.text\n | highlightMentions: message?.mentioned_users\n \"\n ></div>\n </div>\n </div>\n <div class=\"str-chat__message-data str-chat__message-simple-data\">\n <span\n data-testid=\"sender\"\n *ngIf=\"!isSentByCurrentUser\"\n class=\"str-chat__message-simple-name\"\n >\n {{ message?.user?.name ? message?.user?.name : message?.user?.id }}\n </span>\n <span data-testid=\"date\" class=\"str-chat__message-simple-timestamp\">\n {{ parsedDate }}\n </span>\n </div>\n </div>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #sendingStatus>\n <span class=\"str-chat__message-simple-status\" data-testid=\"sending-indicator\">\n <div class=\"str-chat__tooltip\">\n {{ \"streamChat.Sending...\" | translate }}\n </div>\n <stream-loading-indicator\n data-testid=\"loading-indicator\"\n ></stream-loading-indicator>\n </span>\n</ng-template>\n<ng-template #readStatus>\n <span class=\"str-chat__message-simple-status\" data-testid=\"read-indicator\">\n <div class=\"str-chat__tooltip\" data-testid=\"read-by-tooltip\">\n {{ readByText }}\n </div>\n <stream-avatar\n class=\"str-chat-angular__avatar-host\"\n data-test-id=\"last-read-user-avatar\"\n [size]=\"15\"\n [imageUrl]=\"lastReadUser?.image\"\n [name]=\"lastReadUser?.name || lastReadUser?.id\"\n ></stream-avatar>\n <span\n data-test-id=\"read-by-length\"\n *ngIf=\"isReadByMultipleUsers\"\n class=\"str-chat__message-simple-status-number\"\n >\n {{ (message?.readBy)!.length }}\n </span>\n </span>\n</ng-template>\n<ng-template #deliveredStatus>\n <span\n class=\"str-chat__message-simple-status\"\n data-testid=\"delivered-indicator\"\n >\n <div class=\"str-chat__tooltip\">\n {{ \"streamChat.Delivered\" | translate }}\n </div>\n <stream-icon\n data-testid=\"delivered-icon\"\n icon=\"delivered-icon\"\n ></stream-icon>\n </span>\n</ng-template>\n\n<ng-template #deletedMessage>\n <div data-testid=\"message-deleted-component\">\n <div class=\"str-chat__message--deleted-inner\" translate>\n streamChat.This message was deleted...\n </div>\n </div>\n</ng-template>\n\n<ng-template #systemMessage>\n <div data-testid=\"system-message\" class=\"str-chat__message--system\">\n <div class=\"str-chat__message--system__text\">\n <div class=\"str-chat__message--system__line\"></div>\n <p>{{ message?.text }}</p>\n <div class=\"str-chat__message--system__line\"></div>\n </div>\n <div class=\"str-chat__message--system__date\">\n {{ parsedDate }}\n </div>\n </div>\n</ng-template>\n", components: [{ type: i3.AvatarComponent, selector: "stream-avatar", inputs: ["name", "imageUrl", "size"] }, { type: i4.MessageActionsBoxComponent, selector: "stream-message-actions-box", inputs: ["isOpen", "isMine", "message", "enabledActions"], outputs: ["displayedActionsCount", "isEditing"] }, { type: i5.IconComponent, selector: "stream-icon", inputs: ["icon", "size"] }, { type: i6.MessageReactionsComponent, selector: "stream-message-reactions", inputs: ["messageId", "messageReactionCounts", "isSelectorOpen", "latestReactions", "ownReactions"], outputs: ["isSelectorOpenChange"] }, { type: i7.AttachmentListComponent, selector: "stream-attachment-list", inputs: ["attachments"] }, { type: i8.LoadingIndicatorComponent, selector: "stream-loading-indicator", inputs: ["size", "color"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i10.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], pipes: { "translate": i10.TranslatePipe, "highlightMentions": i11.HighlightMentionsPipe } });
101
102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageComponent, decorators: [{
102
103
  type: Component,
103
104
  args: [{
@@ -119,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
119
120
  type: ViewChild,
120
121
  args: ['container']
121
122
  }] } });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS9tZXNzYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlL21lc3NhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTy9DLE1BQU0sT0FBTyxnQkFBZ0I7SUFlM0IsWUFDVSxpQkFBb0MsRUFDcEMsY0FBOEI7UUFEOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFmL0IsMEJBQXFCLEdBQXFCLEVBQUUsQ0FBQztRQUl0RCxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QiwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDL0Isc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLCtCQUEwQixHQUFHLENBQUMsQ0FBQztRQVU3QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJLG1CQUFtQjs7UUFDckIsT0FBTyxDQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxJQUFJLDBDQUFFLEVBQUUsT0FBSyxNQUFBLElBQUksQ0FBQyxJQUFJLDBD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RUFBRTtZQUMxQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7O1lBQ3BDLElBQUksQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBYyxDQUFDLENBQUEsRUFBRTtnQkFDakUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztnQkFDL0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQzthQUNuRDtRQUNILENBQUMsQ0FBQztRQUNGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDakQsQ0FBQzs7NkdBdkdVLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLDBXQ2Y3QiwrbFFBOE5BOzJGRC9NYSxnQkFBZ0I7a0JBTDVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsV0FBVyxFQUFFLDBCQUEwQjtvQkFDdkMsTUFBTSxFQUFFLEVBQUU7aUJBQ1g7cUlBRVUsT0FBTztzQkFBZixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFNMEIsU0FBUztzQkFBeEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVc2VyUmVzcG9uc2UgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4uL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyBDaGF0Q2xpZW50U2VydmljZSB9IGZyb20gJy4uL2NoYXQtY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0RGV2aWNlV2lkdGggfSBmcm9tICcuLi9kZXZpY2Utd2lkdGgnO1xuaW1wb3J0IHsgTWVzc2FnZUFjdGlvbnMgfSBmcm9tICcuLi9tZXNzYWdlLWFjdGlvbnMtYm94L21lc3NhZ2UtYWN0aW9ucy1ib3guY29tcG9uZW50JztcbmltcG9ydCB7IERlZmF1bHRVc2VyVHlwZSwgU3RyZWFtTWVzc2FnZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IHBhcnNlRGF0ZSB9IGZyb20gJy4vcGFyc2UtZGF0ZSc7XG5pbXBvcnQgeyBnZXRSZWFkQnlUZXh0IH0gZnJvbSAnLi9yZWFkLWJ5LXRleHQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbWVzc2FnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGVuYWJsZWRNZXNzYWdlQWN0aW9uczogTWVzc2FnZUFjdGlvbnNbXSA9IFtdO1xuICBASW5wdXQoKSBhcmVSZWFjdGlvbnNFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBjYW5SZWFjdFRvTWVzc2FnZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgaXNMYXN0U2VudE1lc3NhZ2U6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGlzQWN0aW9uQm94T3BlbiA9IGZhbHNlO1xuICBpc1JlYWN0aW9uU2VsZWN0b3JPcGVuID0gZmFsc2U7XG4gIGlzUHJlc3NlZE9uTW9iaWxlID0gZmFsc2U7XG4gIHZpc2libGVNZXNzYWdlQWN0aW9uc0NvdW50ID0gMDtcbiAgcHJpdmF0ZSB1c2VyOiBVc2VyUmVzcG9uc2U8RGVmYXVsdFVzZXJUeXBlPiB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgcHJpdmF0ZSBjb250YWluZXI6XG4gICAgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhdENsaWVudFNlcnZpY2U6IENoYXRDbGllbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMudXNlciA9IHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudC51c2VyO1xuICB9XG5cbiAgZ2V0IGlzU2VudEJ5Q3VycmVudFVzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZT8udXNlcj8uaWQgPT09IHRoaXMudXNlcj8uaWQ7XG4gIH1cblxuICBnZXQgcmVhZEJ5VGV4dCgpIHtcbiAgICByZXR1cm4gZ2V0UmVhZEJ5VGV4dCh0aGlzLm1lc3NhZ2UhLnJlYWRCeSk7XG4gIH1cblxuICBnZXQgbGFzdFJlYWRVc2VyKCkge1xuICAgIHJldHVybiB0aGlzLm1lc3NhZ2U/LnJlYWRCeS5maWx0ZXIoKHUpID0+IHUuaWQgIT09IHRoaXMudXNlcj8uaWQpWzBdO1xuICB9XG5cbiAgZ2V0IGlzT25seVJlYWRCeU1lKCkge1xuICAgIHJldHVybiB0aGlzLm1lc3NhZ2UgJiYgdGhpcy5tZXNzYWdlLnJlYWRCeS5sZW5ndGggPT09IDA7XG4gIH1cblxuICBnZXQgaXNSZWFkQnlNdWx0aXBsZVVzZXJzKCkge1xuICAgIHJldHVybiB0aGlzLm1lc3NhZ2UgJiYgdGhpcy5tZXNzYWdlLnJlYWRCeS5sZW5ndGggPiAxO1xuICB9XG5cbiAgZ2V0IGlzTWVzc2FnZURlbGl2ZXJlZEFuZFJlYWQoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMubWVzc2FnZSAmJlxuICAgICAgdGhpcy5tZXNzYWdlLnJlYWRCeSAmJlxuICAgICAgdGhpcy5tZXNzYWdlLnN0YXR1cyA9PT0gJ3JlY2VpdmVkJyAmJlxuICAgICAgdGhpcy5tZXNzYWdlLnJlYWRCeS5sZW5ndGggPiAwXG4gICAgKTtcbiAgfVxuXG4gIGdldCBwYXJzZWREYXRlKCkge1xuICAgIGlmICghdGhpcy5tZXNzYWdlIHx8ICF0aGlzLm1lc3NhZ2U/LmNyZWF0ZWRfYXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlRGF0ZSh0aGlzLm1lc3NhZ2UuY3JlYXRlZF9hdCk7XG4gIH1cblxuICBnZXQgYXJlT3B0aW9uc1Zpc2libGUoKSB7XG4gICAgaWYgKCF0aGlzLm1lc3NhZ2UpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuICEoXG4gICAgICAhdGhpcy5tZXNzYWdlLnR5cGUgfHxcbiAgICAgIHRoaXMubWVzc2FnZS50eXBlID09PSAnZXJyb3InIHx8XG4gICAgICB0aGlzLm1lc3NhZ2UudHlwZSA9PT0gJ3N5c3RlbScgfHxcbiAgICAgIHRoaXMubWVzc2FnZS50eXBlID09PSAnZXBoZW1lcmFsJyB8fFxuICAgICAgdGhpcy5tZXNzYWdlLnN0YXR1cyA9PT0gJ2ZhaWxlZCcgfHxcbiAgICAgIHRoaXMubWVzc2FnZS5zdGF0dXMgPT09ICdzZW5kaW5nJ1xuICAgICk7XG4gIH1cblxuICBnZXQgaGFzQXR0YWNobWVudCgpIHtcbiAgICByZXR1cm4gISF0aGlzLm1lc3NhZ2U/LmF0dGFjaG1lbnRzICYmICEhdGhpcy5tZXNzYWdlLmF0dGFjaG1lbnRzLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBoYXNSZWFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICEhdGhpcy5tZXNzYWdlPy5yZWFjdGlvbl9jb3VudHMgJiZcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMubWVzc2FnZS5yZWFjdGlvbl9jb3VudHMpLmxlbmd0aCA+IDBcbiAgICApO1xuICB9XG5cbiAgcmVzZW5kTWVzc2FnZSgpIHtcbiAgICB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UucmVzZW5kTWVzc2FnZSh0aGlzLm1lc3NhZ2UhKTtcbiAgfVxuXG4gIHRleHRDbGlja2VkKCkge1xuICAgIGlmIChnZXREZXZpY2VXaWR0aCgpLmRldmljZSAhPT0gJ21vYmlsZScpIHtcbiAgICAgIHRoaXMuaXNQcmVzc2VkT25Nb2JpbGUgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNQcmVzc2VkT25Nb2JpbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pc1ByZXNzZWRPbk1vYmlsZSA9IHRydWU7XG4gICAgY29uc3QgZXZlbnRIYW5kbGVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgdGhpcy5pc1ByZXNzZWRPbk1vYmlsZSA9IGZhbHNlO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBldmVudEhhbmRsZXIpO1xuICAgICAgfVxuICAgIH07XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZXZlbnRIYW5kbGVyKTtcbiAgfVxufVxuIiwiPGRpdlxuICAjY29udGFpbmVyXG4gIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlIHN0ci1jaGF0X19tZXNzYWdlIHN0ci1jaGF0X19tZXNzYWdlLS17e1xuICAgIG1lc3NhZ2U/LnR5cGVcbiAgfX0gc3RyLWNoYXRfX21lc3NhZ2UtLXt7IG1lc3NhZ2U/LnN0YXR1cyB9fSB7e1xuICAgIG1lc3NhZ2U/LnRleHQgPyAnc3RyLWNoYXRfX21lc3NhZ2UtLWhhcy10ZXh0JyA6ICdoYXMtbm8tdGV4dCdcbiAgfX1cIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtLW1lXT1cImlzU2VudEJ5Q3VycmVudFVzZXJcIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLS1tZV09XCJpc1NlbnRCeUN1cnJlbnRVc2VyXCJcbiAgW2NsYXNzLm1vYmlsZS1wcmVzc109XCJpc1ByZXNzZWRPbk1vYmlsZVwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS0taGFzLWF0dGFjaG1lbnRdPVwiaGFzQXR0YWNobWVudFwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS0td2l0aC1yZWFjdGlvbnNdPVwiXG4gICAgYXJlUmVhY3Rpb25zRW5hYmxlZCAmJiBoYXNSZWFjdGlvbnNcbiAgXCJcbiAgZGF0YS10ZXN0aWQ9XCJtZXNzYWdlLWNvbnRhaW5lclwiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbWVzc2FnZT8uZGVsZXRlZF9hdDsgZWxzZSBkZWxldGVkTWVzc2FnZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlPy50eXBlICE9PSAnc3lzdGVtJzsgZWxzZSBzeXN0ZW1NZXNzYWdlXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgaXNTZW50QnlDdXJyZW50VXNlciAmJlxuICAgICAgICAgICgoaXNMYXN0U2VudE1lc3NhZ2UgJiYgbWVzc2FnZT8uc3RhdHVzID09PSAncmVjZWl2ZWQnKSB8fFxuICAgICAgICAgICAgbWVzc2FnZT8uc3RhdHVzID09PSAnc2VuZGluZycpXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlPy5zdGF0dXMgPT09ICdzZW5kaW5nJzsgZWxzZSBzZW50U3RhdHVzXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlbmRpbmdTdGF0dXNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2VudFN0YXR1cz5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNZXNzYWdlRGVsaXZlcmVkQW5kUmVhZDsgZWxzZSBkZWxpdmVyZWRTdGF0dXNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZWFkU3RhdHVzXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxzdHJlYW0tYXZhdGFyXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiYXZhdGFyXCJcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdC1hbmd1bGFyX19hdmF0YXItaG9zdFwiXG4gICAgICAgIFtpbWFnZVVybF09XCJtZXNzYWdlPy51c2VyPy5pbWFnZVwiXG4gICAgICAgIFtuYW1lXT1cIm1lc3NhZ2U/LnVzZXI/Lm5hbWUgfHwgbWVzc2FnZT8udXNlcj8uaWRcIlxuICAgICAgPjwvc3RyZWFtLWF2YXRhcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1pbm5lclwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGVfX2FjdGlvbnNcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwibWVzc2FnZS1vcHRpb25zXCJcbiAgICAgICAgICAqbmdJZj1cImFyZU9wdGlvbnNWaXNpYmxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiXG4gICAgICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZV9fYWN0aW9uc19fYWN0aW9uXG4gICAgICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZV9fYWN0aW9uc19fYWN0aW9uLS1vcHRpb25zXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdHJlYW0tbWVzc2FnZS1hY3Rpb25zLWJveFxuICAgICAgICAgICAgICBbaXNPcGVuXT1cImlzQWN0aW9uQm94T3BlblwiXG4gICAgICAgICAgICAgIFtpc01pbmVdPVwiaXNTZW50QnlDdXJyZW50VXNlclwiXG4gICAgICAgICAgICAgIFtlbmFibGVkQWN0aW9uc109XCJlbmFibGVkTWVzc2FnZUFjdGlvbnNcIlxuICAgICAgICAgICAgICBbbWVzc2FnZV09XCJtZXNzYWdlXCJcbiAgICAgICAgICAgICAgKGRpc3BsYXllZEFjdGlvbnNDb3VudCk9XCJ2aXNpYmxlTWVzc2FnZUFjdGlvbnNDb3VudCA9ICRldmVudFwiXG4gICAgICAgICAgICA+PC9zdHJlYW0tbWVzc2FnZS1hY3Rpb25zLWJveD5cbiAgICAgICAgICAgIDxzdHJlYW0taWNvblxuICAgICAgICAgICAgICAqbmdJZj1cInZpc2libGVNZXNzYWdlQWN0aW9uc0NvdW50ID4gMFwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiYWN0aW9uLWljb25cIlxuICAgICAgICAgICAgICBpY29uPVwiYWN0aW9uLWljb25cIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiaXNBY3Rpb25Cb3hPcGVuID0gIWlzQWN0aW9uQm94T3BlblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJpc0FjdGlvbkJveE9wZW4gPSAhaXNBY3Rpb25Cb3hPcGVuXCJcbiAgICAgICAgICAgID48L3N0cmVhbS1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiYXJlUmVhY3Rpb25zRW5hYmxlZCAmJiBjYW5SZWFjdFRvTWVzc2FnZVwiXG4gICAgICAgICAgICBjbGFzcz1cIlxuICAgICAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGVfX2FjdGlvbnNfX2FjdGlvblxuICAgICAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGVfX2FjdGlvbnNfX2FjdGlvbi0tcmVhY3Rpb25zXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWFjdGlvbi1pY29uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJpc1JlYWN0aW9uU2VsZWN0b3JPcGVuID0gIWlzUmVhY3Rpb25TZWxlY3Rvck9wZW5cIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImlzUmVhY3Rpb25TZWxlY3Rvck9wZW4gPSAhaXNSZWFjdGlvblNlbGVjdG9yT3BlblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHN0cmVhbS1pY29uIGljb249XCJyZWFjdGlvbi1pY29uXCI+PC9zdHJlYW0taWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzdHJlYW0tbWVzc2FnZS1yZWFjdGlvbnNcbiAgICAgICAgICAqbmdJZj1cImFyZVJlYWN0aW9uc0VuYWJsZWRcIlxuICAgICAgICAgIFttZXNzYWdlUmVhY3Rpb25Db3VudHNdPVwibWVzc2FnZT8ucmVhY3Rpb25fY291bnRzIHx8IHt9XCJcbiAgICAgICAgICBbbGF0ZXN0UmVhY3Rpb25zXT1cIm1lc3NhZ2U/LmxhdGVzdF9yZWFjdGlvbnMgfHwgW11cIlxuICAgICAgICAgIFsoaXNTZWxlY3Rvck9wZW4pXT1cImlzUmVhY3Rpb25TZWxlY3Rvck9wZW5cIlxuICAgICAgICAgIFttZXNzYWdlSWRdPVwibWVzc2FnZT8uaWRcIlxuICAgICAgICAgIFtvd25SZWFjdGlvbnNdPVwibWVzc2FnZT8ub3duX3JlYWN0aW9ucyB8fCBbXVwiXG4gICAgICAgID48L3N0cmVhbS1tZXNzYWdlLXJlYWN0aW9ucz5cbiAgICAgICAgPHN0cmVhbS1hdHRhY2htZW50LWxpc3RcbiAgICAgICAgICAqbmdJZj1cImhhc0F0dGFjaG1lbnRcIlxuICAgICAgICAgIFthdHRhY2htZW50c109XCJtZXNzYWdlIS5hdHRhY2htZW50cyFcIlxuICAgICAgICA+PC9zdHJlYW0tYXR0YWNobWVudC1saXN0PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtdGV4dFwiICpuZ0lmPVwibWVzc2FnZT8udGV4dFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaW5uZXItbWVzc2FnZVwiXG4gICAgICAgICAgICBjbGFzcz1cIlxuICAgICAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS10ZXh0LWlubmVyIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS10ZXh0LWlubmVyXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLWxpZ2h0LXRleHQtaW5uZXItLWhhcy1hdHRhY2htZW50XT1cIlxuICAgICAgICAgICAgICBoYXNBdHRhY2htZW50XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICBtZXNzYWdlPy5zdGF0dXMgPT09ICdmYWlsZWQnICYmIG1lc3NhZ2U/LmVycm9yU3RhdHVzQ29kZSAhPT0gNDAzXG4gICAgICAgICAgICAgICAgPyByZXNlbmRNZXNzYWdlKClcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJcbiAgICAgICAgICAgICAgbWVzc2FnZT8uc3RhdHVzID09PSAnZmFpbGVkJyAmJiBtZXNzYWdlPy5lcnJvclN0YXR1c0NvZGUgIT09IDQwM1xuICAgICAgICAgICAgICAgID8gcmVzZW5kTWVzc2FnZSgpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNsaWVudC1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJtZXNzYWdlPy50eXBlID09PSAnZXJyb3InXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fc2ltcGxlLW1lc3NhZ2UtLWVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBcInN0cmVhbUNoYXQuRXJyb3IgwrcgVW5zZW50XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgICAqbmdJZj1cIm1lc3NhZ2U/LnN0YXR1cyA9PT0gJ2ZhaWxlZCdcIlxuICAgICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19zaW1wbGUtbWVzc2FnZS0tZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgKG1lc3NhZ2U/LmVycm9yU3RhdHVzQ29kZSA9PT0gNDAzXG4gICAgICAgICAgICAgICAgICA/IFwic3RyZWFtQ2hhdC5NZXNzYWdlIEZhaWxlZCDCtyBVbmF1dGhvcml6ZWRcIlxuICAgICAgICAgICAgICAgICAgOiBcInN0cmVhbUNoYXQuTWVzc2FnZSBGYWlsZWQgwrcgQ2xpY2sgdG8gdHJ5IGFnYWluXCJcbiAgICAgICAgICAgICAgICApIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRleHRDbGlja2VkKClcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwidGV4dENsaWNrZWQoKVwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwidGV4dFwiXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwibWVzc2FnZT8uaHRtbCB8fCBtZXNzYWdlPy50ZXh0XCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1kYXRhIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1kYXRhXCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VuZGVyXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWlzU2VudEJ5Q3VycmVudFVzZXJcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtbmFtZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgbWVzc2FnZT8udXNlcj8ubmFtZSA/IG1lc3NhZ2U/LnVzZXI/Lm5hbWUgOiBtZXNzYWdlPy51c2VyPy5pZCB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBkYXRhLXRlc3RpZD1cImRhdGVcIiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS10aW1lc3RhbXBcIj5cbiAgICAgICAgICAgIHt7IHBhcnNlZERhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjc2VuZGluZ1N0YXR1cz5cbiAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtc3RhdHVzXCIgZGF0YS10ZXN0aWQ9XCJzZW5kaW5nLWluZGljYXRvclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fdG9vbHRpcFwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LlNlbmRpbmcuLi5cIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICAgIDxzdHJlYW0tbG9hZGluZy1pbmRpY2F0b3JcbiAgICAgIGRhdGEtdGVzdGlkPVwibG9hZGluZy1pbmRpY2F0b3JcIlxuICAgID48L3N0cmVhbS1sb2FkaW5nLWluZGljYXRvcj5cbiAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcmVhZFN0YXR1cz5cbiAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtc3RhdHVzXCIgZGF0YS10ZXN0aWQ9XCJyZWFkLWluZGljYXRvclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fdG9vbHRpcFwiIGRhdGEtdGVzdGlkPVwicmVhZC1ieS10b29sdGlwXCI+XG4gICAgICB7eyByZWFkQnlUZXh0IH19XG4gICAgPC9kaXY+XG4gICAgPHN0cmVhbS1hdmF0YXJcbiAgICAgIGNsYXNzPVwic3RyLWNoYXQtYW5ndWxhcl9fYXZhdGFyLWhvc3RcIlxuICAgICAgZGF0YS10ZXN0LWlkPVwibGFzdC1yZWFkLXVzZXItYXZhdGFyXCJcbiAgICAgIFtzaXplXT1cIjE1XCJcbiAgICAgIFtpbWFnZVVybF09XCJsYXN0UmVhZFVzZXI/LmltYWdlXCJcbiAgICAgIFtuYW1lXT1cImxhc3RSZWFkVXNlcj8ubmFtZSB8fCBsYXN0UmVhZFVzZXI/LmlkXCJcbiAgICA+PC9zdHJlYW0tYXZhdGFyPlxuICAgIDxzcGFuXG4gICAgICBkYXRhLXRlc3QtaWQ9XCJyZWFkLWJ5LWxlbmd0aFwiXG4gICAgICAqbmdJZj1cImlzUmVhZEJ5TXVsdGlwbGVVc2Vyc1wiXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1zdGF0dXMtbnVtYmVyXCJcbiAgICA+XG4gICAgICB7eyAobWVzc2FnZT8ucmVhZEJ5KSEubGVuZ3RoIH19XG4gICAgPC9zcGFuPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNkZWxpdmVyZWRTdGF0dXM+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtc3RhdHVzXCJcbiAgICBkYXRhLXRlc3RpZD1cImRlbGl2ZXJlZC1pbmRpY2F0b3JcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X190b29sdGlwXCI+XG4gICAgICB7eyBcInN0cmVhbUNoYXQuRGVsaXZlcmVkXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgICA8c3RyZWFtLWljb25cbiAgICAgIGRhdGEtdGVzdGlkPVwiZGVsaXZlcmVkLWljb25cIlxuICAgICAgaWNvbj1cImRlbGl2ZXJlZC1pY29uXCJcbiAgICA+PC9zdHJlYW0taWNvbj5cbiAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWxldGVkTWVzc2FnZT5cbiAgPGRpdiBkYXRhLXRlc3RpZD1cIm1lc3NhZ2UtZGVsZXRlZC1jb21wb25lbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtLWRlbGV0ZWQtaW5uZXJcIiB0cmFuc2xhdGU+XG4gICAgICBzdHJlYW1DaGF0LlRoaXMgbWVzc2FnZSB3YXMgZGVsZXRlZC4uLlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc3lzdGVtTWVzc2FnZT5cbiAgPGRpdiBkYXRhLXRlc3RpZD1cInN5c3RlbS1tZXNzYWdlXCIgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS0tc3lzdGVtXCI+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1zeXN0ZW1fX3RleHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS0tc3lzdGVtX19saW5lXCI+PC9kaXY+XG4gICAgICA8cD57eyBtZXNzYWdlPy50ZXh0IH19PC9wPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1zeXN0ZW1fX2xpbmVcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtLXN5c3RlbV9fZGF0ZVwiPlxuICAgICAge3sgcGFyc2VkRGF0ZSB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS9tZXNzYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlL21lc3NhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU8vQyxNQUFNLE9BQU8sZ0JBQWdCO0lBZ0IzQixZQUNVLGlCQUFvQyxFQUNwQyxjQUE4QjtRQUQ5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQWhCL0IsMEJBQXFCLEdBQXFCLEVBQUUsQ0FBQztRQUt0RCxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QiwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDL0Isc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLCtCQUEwQixHQUFHLENBQUMsQ0FBQztRQVU3QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJLG1CQUFtQjs7UUFDckIsT0FBTyxDQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxJQUFJLDBDQUFFLEVBQUUsT0FBSyxNQUFBLElBQUksQ0FBQyxJQUFJ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aUIsRUFBRTtZQUMxQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7O1lBQ3BDLElBQUksQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBYyxDQUFDLENBQUEsRUFBRTtnQkFDakUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztnQkFDL0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQzthQUNuRDtRQUNILENBQUMsQ0FBQztRQUNGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDakQsQ0FBQzs7NkdBeEdVLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLDBXQ2Y3Qiw4OFFBc09BOzJGRHZOYSxnQkFBZ0I7a0JBTDVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsV0FBVyxFQUFFLDBCQUEwQjtvQkFDdkMsTUFBTSxFQUFFLEVBQUU7aUJBQ1g7cUlBRVUsT0FBTztzQkFBZixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFPMEIsU0FBUztzQkFBeEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVc2VyUmVzcG9uc2UgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4uL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyBDaGF0Q2xpZW50U2VydmljZSB9IGZyb20gJy4uL2NoYXQtY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0RGV2aWNlV2lkdGggfSBmcm9tICcuLi9kZXZpY2Utd2lkdGgnO1xuaW1wb3J0IHsgTWVzc2FnZUFjdGlvbnMgfSBmcm9tICcuLi9tZXNzYWdlLWFjdGlvbnMtYm94L21lc3NhZ2UtYWN0aW9ucy1ib3guY29tcG9uZW50JztcbmltcG9ydCB7IERlZmF1bHRVc2VyVHlwZSwgU3RyZWFtTWVzc2FnZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IHBhcnNlRGF0ZSB9IGZyb20gJy4vcGFyc2UtZGF0ZSc7XG5pbXBvcnQgeyBnZXRSZWFkQnlUZXh0IH0gZnJvbSAnLi9yZWFkLWJ5LXRleHQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbWVzc2FnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGVuYWJsZWRNZXNzYWdlQWN0aW9uczogTWVzc2FnZUFjdGlvbnNbXSA9IFtdO1xuICBASW5wdXQoKSBhcmVSZWFjdGlvbnNFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBjYW5SZWFjdFRvTWVzc2FnZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgaXNMYXN0U2VudE1lc3NhZ2U6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGlzRWRpdGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaXNBY3Rpb25Cb3hPcGVuID0gZmFsc2U7XG4gIGlzUmVhY3Rpb25TZWxlY3Rvck9wZW4gPSBmYWxzZTtcbiAgaXNQcmVzc2VkT25Nb2JpbGUgPSBmYWxzZTtcbiAgdmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQgPSAwO1xuICBwcml2YXRlIHVzZXI6IFVzZXJSZXNwb25zZTxEZWZhdWx0VXNlclR5cGU+IHwgdW5kZWZpbmVkO1xuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBwcml2YXRlIGNvbnRhaW5lcjpcbiAgICB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICAgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGF0Q2xpZW50U2VydmljZTogQ2hhdENsaWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy51c2VyID0gdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50LnVzZXI7XG4gIH1cblxuICBnZXQgaXNTZW50QnlDdXJyZW50VXNlcigpIHtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlPy51c2VyPy5pZCA9PT0gdGhpcy51c2VyPy5pZDtcbiAgfVxuXG4gIGdldCByZWFkQnlUZXh0KCkge1xuICAgIHJldHVybiBnZXRSZWFkQnlUZXh0KHRoaXMubWVzc2FnZSEucmVhZEJ5KTtcbiAgfVxuXG4gIGdldCBsYXN0UmVhZFVzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZT8ucmVhZEJ5LmZpbHRlcigodSkgPT4gdS5pZCAhPT0gdGhpcy51c2VyPy5pZClbMF07XG4gIH1cblxuICBnZXQgaXNPbmx5UmVhZEJ5TWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZSAmJiB0aGlzLm1lc3NhZ2UucmVhZEJ5Lmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIGdldCBpc1JlYWRCeU11bHRpcGxlVXNlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZSAmJiB0aGlzLm1lc3NhZ2UucmVhZEJ5Lmxlbmd0aCA+IDE7XG4gIH1cblxuICBnZXQgaXNNZXNzYWdlRGVsaXZlcmVkQW5kUmVhZCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5tZXNzYWdlICYmXG4gICAgICB0aGlzLm1lc3NhZ2UucmVhZEJ5ICYmXG4gICAgICB0aGlzLm1lc3NhZ2Uuc3RhdHVzID09PSAncmVjZWl2ZWQnICYmXG4gICAgICB0aGlzLm1lc3NhZ2UucmVhZEJ5Lmxlbmd0aCA+IDBcbiAgICApO1xuICB9XG5cbiAgZ2V0IHBhcnNlZERhdGUoKSB7XG4gICAgaWYgKCF0aGlzLm1lc3NhZ2UgfHwgIXRoaXMubWVzc2FnZT8uY3JlYXRlZF9hdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VEYXRlKHRoaXMubWVzc2FnZS5jcmVhdGVkX2F0KTtcbiAgfVxuXG4gIGdldCBhcmVPcHRpb25zVmlzaWJsZSgpIHtcbiAgICBpZiAoIXRoaXMubWVzc2FnZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gIShcbiAgICAgICF0aGlzLm1lc3NhZ2UudHlwZSB8fFxuICAgICAgdGhpcy5tZXNzYWdlLnR5cGUgPT09ICdlcnJvcicgfHxcbiAgICAgIHRoaXMubWVzc2FnZS50eXBlID09PSAnc3lzdGVtJyB8fFxuICAgICAgdGhpcy5tZXNzYWdlLnR5cGUgPT09ICdlcGhlbWVyYWwnIHx8XG4gICAgICB0aGlzLm1lc3NhZ2Uuc3RhdHVzID09PSAnZmFpbGVkJyB8fFxuICAgICAgdGhpcy5tZXNzYWdlLnN0YXR1cyA9PT0gJ3NlbmRpbmcnXG4gICAgKTtcbiAgfVxuXG4gIGdldCBoYXNBdHRhY2htZW50KCkge1xuICAgIHJldHVybiAhIXRoaXMubWVzc2FnZT8uYXR0YWNobWVudHMgJiYgISF0aGlzLm1lc3NhZ2UuYXR0YWNobWVudHMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IGhhc1JlYWN0aW9ucygpIHtcbiAgICByZXR1cm4gKFxuICAgICAgISF0aGlzLm1lc3NhZ2U/LnJlYWN0aW9uX2NvdW50cyAmJlxuICAgICAgT2JqZWN0LmtleXModGhpcy5tZXNzYWdlLnJlYWN0aW9uX2NvdW50cykubGVuZ3RoID4gMFxuICAgICk7XG4gIH1cblxuICByZXNlbmRNZXNzYWdlKCkge1xuICAgIHZvaWQgdGhpcy5jaGFubmVsU2VydmljZS5yZXNlbmRNZXNzYWdlKHRoaXMubWVzc2FnZSEpO1xuICB9XG5cbiAgdGV4dENsaWNrZWQoKSB7XG4gICAgaWYgKGdldERldmljZVdpZHRoKCkuZGV2aWNlICE9PSAnbW9iaWxlJykge1xuICAgICAgdGhpcy5pc1ByZXNzZWRPbk1vYmlsZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1ByZXNzZWRPbk1vYmlsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzUHJlc3NlZE9uTW9iaWxlID0gdHJ1ZTtcbiAgICBjb25zdCBldmVudEhhbmRsZXIgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgICB0aGlzLmlzUHJlc3NlZE9uTW9iaWxlID0gZmFsc2U7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGV2ZW50SGFuZGxlcik7XG4gICAgICB9XG4gICAgfTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBldmVudEhhbmRsZXIpO1xuICB9XG59XG4iLCI8ZGl2XG4gICNjb250YWluZXJcbiAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUgc3RyLWNoYXRfX21lc3NhZ2Ugc3RyLWNoYXRfX21lc3NhZ2UtLXt7XG4gICAgbWVzc2FnZT8udHlwZVxuICB9fSBzdHItY2hhdF9fbWVzc2FnZS0te3sgbWVzc2FnZT8uc3RhdHVzIH19IHt7XG4gICAgbWVzc2FnZT8udGV4dCA/ICdzdHItY2hhdF9fbWVzc2FnZS0taGFzLXRleHQnIDogJ2hhcy1uby10ZXh0J1xuICB9fVwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS0tbWVdPVwiaXNTZW50QnlDdXJyZW50VXNlclwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtLW1lXT1cImlzU2VudEJ5Q3VycmVudFVzZXJcIlxuICBbY2xhc3MubW9iaWxlLXByZXNzXT1cImlzUHJlc3NlZE9uTW9iaWxlXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLS1oYXMtYXR0YWNobWVudF09XCJoYXNBdHRhY2htZW50XCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLS13aXRoLXJlYWN0aW9uc109XCJcbiAgICBhcmVSZWFjdGlvbnNFbmFibGVkICYmIGhhc1JlYWN0aW9uc1xuICBcIlxuICBkYXRhLXRlc3RpZD1cIm1lc3NhZ2UtY29udGFpbmVyXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtZXNzYWdlPy5kZWxldGVkX2F0OyBlbHNlIGRlbGV0ZWRNZXNzYWdlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2U/LnR5cGUgIT09ICdzeXN0ZW0nOyBlbHNlIHN5c3RlbU1lc3NhZ2VcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBpc1NlbnRCeUN1cnJlbnRVc2VyICYmXG4gICAgICAgICAgKChpc0xhc3RTZW50TWVzc2FnZSAmJiBtZXNzYWdlPy5zdGF0dXMgPT09ICdyZWNlaXZlZCcpIHx8XG4gICAgICAgICAgICBtZXNzYWdlPy5zdGF0dXMgPT09ICdzZW5kaW5nJylcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2U/LnN0YXR1cyA9PT0gJ3NlbmRpbmcnOyBlbHNlIHNlbnRTdGF0dXNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VuZGluZ1N0YXR1c1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzZW50U3RhdHVzPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc01lc3NhZ2VEZWxpdmVyZWRBbmRSZWFkOyBlbHNlIGRlbGl2ZXJlZFN0YXR1c1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJlYWRTdGF0dXNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHN0cmVhbS1hdmF0YXJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJhdmF0YXJcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0LWFuZ3VsYXJfX2F2YXRhci1ob3N0XCJcbiAgICAgICAgW2ltYWdlVXJsXT1cIm1lc3NhZ2U/LnVzZXI/LmltYWdlXCJcbiAgICAgICAgW25hbWVdPVwibWVzc2FnZT8udXNlcj8ubmFtZSB8fCBtZXNzYWdlPy51c2VyPy5pZFwiXG4gICAgICA+PC9zdHJlYW0tYXZhdGFyPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWlubmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZV9fYWN0aW9uc1wiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJtZXNzYWdlLW9wdGlvbnNcIlxuICAgICAgICAgICpuZ0lmPVwiYXJlT3B0aW9uc1Zpc2libGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJtZXNzYWdlLWFjdGlvbnMtY29udGFpbmVyXCJcbiAgICAgICAgICAgIGNsYXNzPVwiXG4gICAgICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZV9fYWN0aW9uc19fYWN0aW9uXG4gICAgICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZV9fYWN0aW9uc19fYWN0aW9uLS1vcHRpb25zXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2NsYXNzLnN0ci1jaGF0LWFuZ3VsYXJfX21lc3NhZ2Utc2ltcGxlX19hY3Rpb25zX19hY3Rpb24tLW9wdGlvbnMtLWVkaXRpbmddPVwiXG4gICAgICAgICAgICAgIGlzRWRpdGluZ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3RyZWFtLW1lc3NhZ2UtYWN0aW9ucy1ib3hcbiAgICAgICAgICAgICAgW2lzT3Blbl09XCJpc0FjdGlvbkJveE9wZW5cIlxuICAgICAgICAgICAgICBbaXNNaW5lXT1cImlzU2VudEJ5Q3VycmVudFVzZXJcIlxuICAgICAgICAgICAgICBbZW5hYmxlZEFjdGlvbnNdPVwiZW5hYmxlZE1lc3NhZ2VBY3Rpb25zXCJcbiAgICAgICAgICAgICAgW21lc3NhZ2VdPVwibWVzc2FnZVwiXG4gICAgICAgICAgICAgIChkaXNwbGF5ZWRBY3Rpb25zQ291bnQpPVwidmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICAoaXNFZGl0aW5nKT1cImlzRWRpdGluZyA9ICRldmVudDsgaXNBY3Rpb25Cb3hPcGVuID0gIWlzRWRpdGluZ1wiXG4gICAgICAgICAgICA+PC9zdHJlYW0tbWVzc2FnZS1hY3Rpb25zLWJveD5cbiAgICAgICAgICAgIDxzdHJlYW0taWNvblxuICAgICAgICAgICAgICAqbmdJZj1cInZpc2libGVNZXNzYWdlQWN0aW9uc0NvdW50ID4gMFwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiYWN0aW9uLWljb25cIlxuICAgICAgICAgICAgICBpY29uPVwiYWN0aW9uLWljb25cIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiaXNBY3Rpb25Cb3hPcGVuID0gIWlzQWN0aW9uQm94T3BlblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJpc0FjdGlvbkJveE9wZW4gPSAhaXNBY3Rpb25Cb3hPcGVuXCJcbiAgICAgICAgICAgID48L3N0cmVhbS1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiYXJlUmVhY3Rpb25zRW5hYmxlZCAmJiBjYW5SZWFjdFRvTWVzc2FnZVwiXG4gICAgICAgICAgICBjbGFzcz1cIlxuICAgICAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGVfX2FjdGlvbnNfX2FjdGlvblxuICAgICAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGVfX2FjdGlvbnNfX2FjdGlvbi0tcmVhY3Rpb25zXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWFjdGlvbi1pY29uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJpc1JlYWN0aW9uU2VsZWN0b3JPcGVuID0gIWlzUmVhY3Rpb25TZWxlY3Rvck9wZW5cIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImlzUmVhY3Rpb25TZWxlY3Rvck9wZW4gPSAhaXNSZWFjdGlvblNlbGVjdG9yT3BlblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHN0cmVhbS1pY29uIGljb249XCJyZWFjdGlvbi1pY29uXCI+PC9zdHJlYW0taWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzdHJlYW0tbWVzc2FnZS1yZWFjdGlvbnNcbiAgICAgICAgICAqbmdJZj1cImFyZVJlYWN0aW9uc0VuYWJsZWRcIlxuICAgICAgICAgIFttZXNzYWdlUmVhY3Rpb25Db3VudHNdPVwibWVzc2FnZT8ucmVhY3Rpb25fY291bnRzIHx8IHt9XCJcbiAgICAgICAgICBbbGF0ZXN0UmVhY3Rpb25zXT1cIm1lc3NhZ2U/LmxhdGVzdF9yZWFjdGlvbnMgfHwgW11cIlxuICAgICAgICAgIFsoaXNTZWxlY3Rvck9wZW4pXT1cImlzUmVhY3Rpb25TZWxlY3Rvck9wZW5cIlxuICAgICAgICAgIFttZXNzYWdlSWRdPVwibWVzc2FnZT8uaWRcIlxuICAgICAgICAgIFtvd25SZWFjdGlvbnNdPVwibWVzc2FnZT8ub3duX3JlYWN0aW9ucyB8fCBbXVwiXG4gICAgICAgID48L3N0cmVhbS1tZXNzYWdlLXJlYWN0aW9ucz5cbiAgICAgICAgPHN0cmVhbS1hdHRhY2htZW50LWxpc3RcbiAgICAgICAgICAqbmdJZj1cImhhc0F0dGFjaG1lbnRcIlxuICAgICAgICAgIFthdHRhY2htZW50c109XCJtZXNzYWdlIS5hdHRhY2htZW50cyFcIlxuICAgICAgICA+PC9zdHJlYW0tYXR0YWNobWVudC1saXN0PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtdGV4dFwiICpuZ0lmPVwibWVzc2FnZT8udGV4dFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaW5uZXItbWVzc2FnZVwiXG4gICAgICAgICAgICBjbGFzcz1cIlxuICAgICAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS10ZXh0LWlubmVyIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS10ZXh0LWlubmVyXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLWxpZ2h0LXRleHQtaW5uZXItLWhhcy1hdHRhY2htZW50XT1cIlxuICAgICAgICAgICAgICBoYXNBdHRhY2htZW50XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICBtZXNzYWdlPy5zdGF0dXMgPT09ICdmYWlsZWQnICYmIG1lc3NhZ2U/LmVycm9yU3RhdHVzQ29kZSAhPT0gNDAzXG4gICAgICAgICAgICAgICAgPyByZXNlbmRNZXNzYWdlKClcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJcbiAgICAgICAgICAgICAgbWVzc2FnZT8uc3RhdHVzID09PSAnZmFpbGVkJyAmJiBtZXNzYWdlPy5lcnJvclN0YXR1c0NvZGUgIT09IDQwM1xuICAgICAgICAgICAgICAgID8gcmVzZW5kTWVzc2FnZSgpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNsaWVudC1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJtZXNzYWdlPy50eXBlID09PSAnZXJyb3InXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fc2ltcGxlLW1lc3NhZ2UtLWVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBcInN0cmVhbUNoYXQuRXJyb3IgwrcgVW5zZW50XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgICAqbmdJZj1cIm1lc3NhZ2U/LnN0YXR1cyA9PT0gJ2ZhaWxlZCdcIlxuICAgICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19zaW1wbGUtbWVzc2FnZS0tZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgKG1lc3NhZ2U/LmVycm9yU3RhdHVzQ29kZSA9PT0gNDAzXG4gICAgICAgICAgICAgICAgICA/IFwic3RyZWFtQ2hhdC5NZXNzYWdlIEZhaWxlZCDCtyBVbmF1dGhvcml6ZWRcIlxuICAgICAgICAgICAgICAgICAgOiBcInN0cmVhbUNoYXQuTWVzc2FnZSBGYWlsZWQgwrcgQ2xpY2sgdG8gdHJ5IGFnYWluXCJcbiAgICAgICAgICAgICAgICApIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRleHRDbGlja2VkKClcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwidGV4dENsaWNrZWQoKVwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwidGV4dFwiXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgbWVzc2FnZT8uaHRtbCB8fCBtZXNzYWdlPy50ZXh0XG4gICAgICAgICAgICAgICAgICB8IGhpZ2hsaWdodE1lbnRpb25zOiBtZXNzYWdlPy5tZW50aW9uZWRfdXNlcnNcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1kYXRhIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1kYXRhXCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VuZGVyXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWlzU2VudEJ5Q3VycmVudFVzZXJcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtbmFtZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgbWVzc2FnZT8udXNlcj8ubmFtZSA/IG1lc3NhZ2U/LnVzZXI/Lm5hbWUgOiBtZXNzYWdlPy51c2VyPy5pZCB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBkYXRhLXRlc3RpZD1cImRhdGVcIiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS10aW1lc3RhbXBcIj5cbiAgICAgICAgICAgIHt7IHBhcnNlZERhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjc2VuZGluZ1N0YXR1cz5cbiAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtc3RhdHVzXCIgZGF0YS10ZXN0aWQ9XCJzZW5kaW5nLWluZGljYXRvclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fdG9vbHRpcFwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LlNlbmRpbmcuLi5cIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICAgIDxzdHJlYW0tbG9hZGluZy1pbmRpY2F0b3JcbiAgICAgIGRhdGEtdGVzdGlkPVwibG9hZGluZy1pbmRpY2F0b3JcIlxuICAgID48L3N0cmVhbS1sb2FkaW5nLWluZGljYXRvcj5cbiAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcmVhZFN0YXR1cz5cbiAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtc3RhdHVzXCIgZGF0YS10ZXN0aWQ9XCJyZWFkLWluZGljYXRvclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fdG9vbHRpcFwiIGRhdGEtdGVzdGlkPVwicmVhZC1ieS10b29sdGlwXCI+XG4gICAgICB7eyByZWFkQnlUZXh0IH19XG4gICAgPC9kaXY+XG4gICAgPHN0cmVhbS1hdmF0YXJcbiAgICAgIGNsYXNzPVwic3RyLWNoYXQtYW5ndWxhcl9fYXZhdGFyLWhvc3RcIlxuICAgICAgZGF0YS10ZXN0LWlkPVwibGFzdC1yZWFkLXVzZXItYXZhdGFyXCJcbiAgICAgIFtzaXplXT1cIjE1XCJcbiAgICAgIFtpbWFnZVVybF09XCJsYXN0UmVhZFVzZXI/LmltYWdlXCJcbiAgICAgIFtuYW1lXT1cImxhc3RSZWFkVXNlcj8ubmFtZSB8fCBsYXN0UmVhZFVzZXI/LmlkXCJcbiAgICA+PC9zdHJlYW0tYXZhdGFyPlxuICAgIDxzcGFuXG4gICAgICBkYXRhLXRlc3QtaWQ9XCJyZWFkLWJ5LWxlbmd0aFwiXG4gICAgICAqbmdJZj1cImlzUmVhZEJ5TXVsdGlwbGVVc2Vyc1wiXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1zdGF0dXMtbnVtYmVyXCJcbiAgICA+XG4gICAgICB7eyAobWVzc2FnZT8ucmVhZEJ5KSEubGVuZ3RoIH19XG4gICAgPC9zcGFuPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNkZWxpdmVyZWRTdGF0dXM+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtc3RhdHVzXCJcbiAgICBkYXRhLXRlc3RpZD1cImRlbGl2ZXJlZC1pbmRpY2F0b3JcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X190b29sdGlwXCI+XG4gICAgICB7eyBcInN0cmVhbUNoYXQuRGVsaXZlcmVkXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgICA8c3RyZWFtLWljb25cbiAgICAgIGRhdGEtdGVzdGlkPVwiZGVsaXZlcmVkLWljb25cIlxuICAgICAgaWNvbj1cImRlbGl2ZXJlZC1pY29uXCJcbiAgICA+PC9zdHJlYW0taWNvbj5cbiAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWxldGVkTWVzc2FnZT5cbiAgPGRpdiBkYXRhLXRlc3RpZD1cIm1lc3NhZ2UtZGVsZXRlZC1jb21wb25lbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtLWRlbGV0ZWQtaW5uZXJcIiB0cmFuc2xhdGU+XG4gICAgICBzdHJlYW1DaGF0LlRoaXMgbWVzc2FnZSB3YXMgZGVsZXRlZC4uLlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc3lzdGVtTWVzc2FnZT5cbiAgPGRpdiBkYXRhLXRlc3RpZD1cInN5c3RlbS1tZXNzYWdlXCIgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS0tc3lzdGVtXCI+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1zeXN0ZW1fX3RleHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS0tc3lzdGVtX19saW5lXCI+PC9kaXY+XG4gICAgICA8cD57eyBtZXNzYWdlPy50ZXh0IH19PC9wPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1zeXN0ZW1fX2xpbmVcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtLXN5c3RlbV9fZGF0ZVwiPlxuICAgICAge3sgcGFyc2VkRGF0ZSB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,18 +1,26 @@
1
1
  import { __awaiter } from "tslib";
2
- import { Component, EventEmitter, Input, Output, } from '@angular/core';
2
+ import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
3
+ import { MessageInputComponent } from '../message-input/message-input.component';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "../chat-client.service";
5
6
  import * as i2 from "../notification.service";
6
- import * as i3 from "@angular/common";
7
- import * as i4 from "@ngx-translate/core";
7
+ import * as i3 from "../channel.service";
8
+ import * as i4 from "../modal/modal.component";
9
+ import * as i5 from "../message-input/message-input.component";
10
+ import * as i6 from "../notification-list/notification-list.component";
11
+ import * as i7 from "@angular/common";
12
+ import * as i8 from "@ngx-translate/core";
8
13
  export class MessageActionsBoxComponent {
9
- constructor(chatClientService, notificationService) {
14
+ constructor(chatClientService, notificationService, channelService) {
10
15
  this.chatClientService = chatClientService;
11
16
  this.notificationService = notificationService;
17
+ this.channelService = channelService;
12
18
  this.isOpen = false;
13
19
  this.isMine = false;
14
20
  this.enabledActions = [];
15
21
  this.displayedActionsCount = new EventEmitter();
22
+ this.isEditing = new EventEmitter();
23
+ this.isEditModalOpen = false;
16
24
  }
17
25
  ngOnChanges(changes) {
18
26
  if (changes.isMine || changes.enabledActions) {
@@ -42,10 +50,12 @@ export class MessageActionsBoxComponent {
42
50
  return this.enabledActions.indexOf('quote') !== -1;
43
51
  }
44
52
  get isEditVisible() {
45
- return this.enabledActions.indexOf('edit') !== -1;
53
+ return ((this.enabledActions.indexOf('edit') !== -1 && this.isMine) ||
54
+ this.enabledActions.indexOf('edit-any') !== -1);
46
55
  }
47
56
  get isDeleteVisible() {
48
- return this.enabledActions.indexOf('delete') !== -1;
57
+ return ((this.enabledActions.indexOf('delete') !== -1 && this.isMine) ||
58
+ this.enabledActions.indexOf('delete-any') !== -1);
49
59
  }
50
60
  get isMuteVisible() {
51
61
  return this.enabledActions.indexOf('mute') !== -1;
@@ -77,14 +87,30 @@ export class MessageActionsBoxComponent {
77
87
  alert('Feature not yet implemented');
78
88
  }
79
89
  editClicked() {
80
- alert('Feature not yet implemented');
90
+ this.isEditing.emit(true);
91
+ this.isEditModalOpen = true;
92
+ }
93
+ sendClicked() {
94
+ var _a;
95
+ (_a = this.messageInput) === null || _a === void 0 ? void 0 : _a.messageSent();
96
+ }
97
+ modalClosed() {
98
+ this.isEditModalOpen = false;
99
+ this.isEditing.emit(false);
81
100
  }
82
101
  deleteClicked() {
83
- alert('Feature not yet implemented');
102
+ return __awaiter(this, void 0, void 0, function* () {
103
+ try {
104
+ yield this.channelService.deleteMessage(this.message);
105
+ }
106
+ catch (error) {
107
+ this.notificationService.addTemporaryNotification('streamChat.Error deleting message');
108
+ }
109
+ });
84
110
  }
85
111
  }
86
- MessageActionsBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageActionsBoxComponent, deps: [{ token: i1.ChatClientService }, { token: i2.NotificationService }], target: i0.ɵɵFactoryTarget.Component });
87
- MessageActionsBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageActionsBoxComponent, selector: "stream-message-actions-box", inputs: { isOpen: "isOpen", isMine: "isMine", message: "message", enabledActions: "enabledActions" }, outputs: { displayedActionsCount: "displayedActionsCount" }, usesOnChanges: true, ngImport: i0, template: "<div\n data-testid=\"action-box\"\n class=\"str-chat__message-actions-box\"\n [class.str-chat__message-actions-box--open]=\"isOpen\"\n [class.str-chat__message-actions-box--mine]=\"isMine\"\n>\n <ul class=\"str-chat__message-actions-list\">\n <button\n data-testid=\"quote-action\"\n *ngIf=\"isQuoteVisible\"\n (click)=\"quoteClicked()\"\n >\n <li class=\"str-chat__message-actions-list-item\">\n {{ \"streamChat.Reply\" | translate }}\n </li>\n </button>\n <button\n data-testid=\"pin-action\"\n *ngIf=\"isPinVisible\"\n (click)=\"pinClicked()\"\n >\n <li class=\"str-chat__message-actions-list-item\">\n {{\n (message?.pinned ? \"streamChat.Unpin\" : \"streamChat.Pin\") | translate\n }}\n </li>\n </button>\n <button\n data-testid=\"flag-action\"\n *ngIf=\"isFlagVisible\"\n (click)=\"flagClicked()\"\n >\n <li class=\"str-chat__message-actions-list-item\">\n {{ \"streamChat.Flag\" | translate }}\n </li>\n </button>\n <button\n data-testid=\"mute-action\"\n *ngIf=\"isMuteVisible\"\n (click)=\"muteClicked()\"\n >\n <li class=\"str-chat__message-actions-list-item\">\n {{ \"streamChat.Mute\" | translate }}\n </li>\n </button>\n <button\n data-testid=\"edit-action\"\n *ngIf=\"isEditVisible\"\n (click)=\"editClicked()\"\n >\n <li class=\"str-chat__message-actions-list-item\">\n {{ \"streamChat.Edit Message\" | translate }}\n </li>\n </button>\n <button\n data-testid=\"delete-action\"\n *ngIf=\"isDeleteVisible\"\n (click)=\"deleteClicked()\"\n >\n <li class=\"str-chat__message-actions-list-item\">\n {{ \"streamChat.Delete\" | translate }}\n </li>\n </button>\n </ul>\n</div>\n", directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i4.TranslatePipe } });
112
+ MessageActionsBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageActionsBoxComponent, deps: [{ token: i1.ChatClientService }, { token: i2.NotificationService }, { token: i3.ChannelService }], target: i0.ɵɵFactoryTarget.Component });
113
+ MessageActionsBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageActionsBoxComponent, selector: "stream-message-actions-box", inputs: { isOpen: "isOpen", isMine: "isMine", message: "message", enabledActions: "enabledActions" }, outputs: { displayedActionsCount: "displayedActionsCount", isEditing: "isEditing" }, viewQueries: [{ propertyName: "messageInput", first: true, predicate: MessageInputComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n data-testid=\"action-box\"\n class=\"str-chat__message-actions-box\"\n [class.str-chat__message-actions-box--open]=\"isOpen\"\n [class.str-chat__message-actions-box--mine]=\"isMine\"\n>\n <ul class=\"str-chat__message-actions-list\">\n <button\n data-testid=\"quote-action\"\n *ngIf=\"isQuoteVisible\"\n (click)=\"quoteClicked()\"\n >\n <li class=\"str-chat__message-actions-list-item\">\n {{ \"streamChat.Reply\" | translate }}\n </li>\n </button>\n <button\n data-testid=\"pin-action\"\n *ngIf=\"isPinVisible\"\n (click)=\"pinClicked()\"\n >\n <li class=\"str-chat__message-actions-list-item\">\n {{\n (message?.pinned ? \"streamChat.Unpin\" : \"streamChat.Pin\") | translate\n }}\n </li>\n </button>\n <button\n data-testid=\"flag-action\"\n *ngIf=\"isFlagVisible\"\n (click)=\"flagClicked()\"\n >\n <li class=\"str-chat__message-actions-list-item\">\n {{ \"streamChat.Flag\" | translate }}\n </li>\n </button>\n <button\n data-testid=\"mute-action\"\n *ngIf=\"isMuteVisible\"\n (click)=\"muteClicked()\"\n >\n <li class=\"str-chat__message-actions-list-item\">\n {{ \"streamChat.Mute\" | translate }}\n </li>\n </button>\n <button\n data-testid=\"edit-action\"\n *ngIf=\"isEditVisible\"\n (click)=\"editClicked()\"\n >\n <li class=\"str-chat__message-actions-list-item\">\n {{ \"streamChat.Edit Message\" | translate }}\n </li>\n </button>\n <button\n data-testid=\"delete-action\"\n *ngIf=\"isDeleteVisible\"\n (click)=\"deleteClicked()\"\n >\n <li class=\"str-chat__message-actions-list-item\">\n {{ \"streamChat.Delete\" | translate }}\n </li>\n </button>\n </ul>\n</div>\n\n<stream-modal\n [isOpen]=\"isEditModalOpen\"\n (isOpenChange)=\"\n isEditModalOpen = $event; isEditModalOpen ? '' : modalClosed()\n \"\n>\n <div class=\"str-chat__edit-message-form\" *ngIf=\"isEditModalOpen\">\n <stream-message-input\n [message]=\"message\"\n (messageUpdate)=\"modalClosed()\"\n ></stream-message-input>\n <stream-notification-list></stream-notification-list>\n <div class=\"str-chat__message-team-form-footer\">\n <div></div>\n <div>\n <button translate data-testid=\"cancel-button\" (click)=\"modalClosed()\">\n streamChat.Cancel\n </button>\n <button\n type=\"submit\"\n translate\n data-testid=\"send-button\"\n (click)=\"sendClicked()\"\n (keyup.enter)=\"sendClicked()\"\n >\n streamChat.Send\n </button>\n </div>\n </div>\n </div>\n</stream-modal>\n", components: [{ type: i4.ModalComponent, selector: "stream-modal", inputs: ["isOpen"], outputs: ["isOpenChange"] }, { type: i5.MessageInputComponent, selector: "stream-message-input", inputs: ["isFileUploadEnabled", "areMentionsEnabled", "mentionScope", "mentionAutocompleteItemTemplate", "acceptedFileTypes", "isMultipleFileUploadEnabled", "message"], outputs: ["messageUpdate"] }, { type: i6.NotificationListComponent, selector: "stream-notification-list" }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], pipes: { "translate": i8.TranslatePipe } });
88
114
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageActionsBoxComponent, decorators: [{
89
115
  type: Component,
90
116
  args: [{
@@ -92,7 +118,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
92
118
  templateUrl: './message-actions-box.component.html',
93
119
  styles: [],
94
120
  }]
95
- }], ctorParameters: function () { return [{ type: i1.ChatClientService }, { type: i2.NotificationService }]; }, propDecorators: { isOpen: [{
121
+ }], ctorParameters: function () { return [{ type: i1.ChatClientService }, { type: i2.NotificationService }, { type: i3.ChannelService }]; }, propDecorators: { isOpen: [{
96
122
  type: Input
97
123
  }], isMine: [{
98
124
  type: Input
@@ -102,5 +128,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
102
128
  type: Input
103
129
  }], displayedActionsCount: [{
104
130
  type: Output
131
+ }], isEditing: [{
132
+ type: Output
133
+ }], messageInput: [{
134
+ type: ViewChild,
135
+ args: [MessageInputComponent]
105
136
  }] } });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1hY3Rpb25zLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS1hY3Rpb25zLWJveC9tZXNzYWdlLWFjdGlvbnMtYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWFjdGlvbnMtYm94L21lc3NhZ2UtYWN0aW9ucy1ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7Ozs7OztBQWtCdkIsTUFBTSxPQUFPLDBCQUEwQjtJQU9yQyxZQUNVLGlCQUFvQyxFQUNwQyxtQkFBd0M7UUFEeEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBUnpDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRWYsbUJBQWMsR0FBcUIsRUFBRSxDQUFDO1FBQzVCLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFLbkUsQ0FBQztJQUVKLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLGNBQWMsRUFBRTtZQUM1QyxJQUFJLHFCQUFxQixHQUFHLENBQUMsQ0FBQztZQUM5QixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3ZCLHFCQUFxQixFQUFFLENBQUM7YUFDekI7WUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RCLHFCQUFxQixFQUFFLENBQUM7YUFDekI7WUFDRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3hCLHFCQUFxQixFQUFFLENBQUM7YUFDekI7WUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RCLHFCQUFxQixFQUFFLENBQUM7YUFDekI7WUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RCLHFCQUFxQixFQUFFLENBQUM7YUFDekI7WUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ3JCLHFCQUFxQixFQUFFLENBQUM7YUFDekI7WUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDeEQ7SUFDSCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNwRSxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsVUFBVTtRQUNSLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFSyxXQUFXOztZQUNmLElBQUk7Z0JBQ0YsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx3QkFBd0IsQ0FDL0Msa0RBQWtELEVBQ2xELFNBQVMsQ0FDVixDQUFDO2FBQ0g7WUFBQyxPQUFPLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsbUJBQW1CLENBQUMsd0JBQXdCLENBQy9DLDhCQUE4QixDQUMvQixDQUFDO2FBQ0g7UUFDSCxDQUFDO0tBQUE7SUFFRCxXQUFXO1FBQ1QsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFlBQVk7UUFDVixLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsV0FBVztRQUNULEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxhQUFhO1FBQ1gsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDdkMsQ0FBQzs7dUhBN0ZVLDBCQUEwQjsyR0FBMUIsMEJBQTBCLDBQQ3pCdkMsaTBEQWlFQTsyRkR4Q2EsMEJBQTBCO2tCQUx0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFdBQVcsRUFBRSxzQ0FBc0M7b0JBQ25ELE1BQU0sRUFBRSxFQUFFO2lCQUNYOzBJQUVVLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ2EscUJBQXFCO3NCQUF2QyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGF0Q2xpZW50U2VydmljZSB9IGZyb20gJy4uL2NoYXQtY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFN0cmVhbU1lc3NhZ2UgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VBY3Rpb25zID1cbiAgfCAnZWRpdCdcbiAgfCAnZGVsZXRlJ1xuICB8ICdwaW4nXG4gIHwgJ3F1b3RlJ1xuICB8ICdmbGFnJ1xuICB8ICdtdXRlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLW1lc3NhZ2UtYWN0aW9ucy1ib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZS1hY3Rpb25zLWJveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VBY3Rpb25zQm94Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgaXNPcGVuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzTWluZSA9IGZhbHNlO1xuICBASW5wdXQoKSBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBlbmFibGVkQWN0aW9uczogTWVzc2FnZUFjdGlvbnNbXSA9IFtdO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgZGlzcGxheWVkQWN0aW9uc0NvdW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGF0Q2xpZW50U2VydmljZTogQ2hhdENsaWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlXG4gICkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuaXNNaW5lIHx8IGNoYW5nZXMuZW5hYmxlZEFjdGlvbnMpIHtcbiAgICAgIGxldCBkaXNwbGF5ZWRBY3Rpb25zQ291bnQgPSAwO1xuICAgICAgaWYgKHRoaXMuaXNRdW90ZVZpc2libGUpIHtcbiAgICAgICAgZGlzcGxheWVkQWN0aW9uc0NvdW50Kys7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc0VkaXRWaXNpYmxlKSB7XG4gICAgICAgIGRpc3BsYXllZEFjdGlvbnNDb3VudCsrO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNEZWxldGVWaXNpYmxlKSB7XG4gICAgICAgIGRpc3BsYXllZEFjdGlvbnNDb3VudCsrO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNNdXRlVmlzaWJsZSkge1xuICAgICAgICBkaXNwbGF5ZWRBY3Rpb25zQ291bnQrKztcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzRmxhZ1Zpc2libGUpIHtcbiAgICAgICAgZGlzcGxheWVkQWN0aW9uc0NvdW50Kys7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1BpblZpc2libGUpIHtcbiAgICAgICAgZGlzcGxheWVkQWN0aW9uc0NvdW50Kys7XG4gICAgICB9XG4gICAgICB0aGlzLmRpc3BsYXllZEFjdGlvbnNDb3VudC5uZXh0KGRpc3BsYXllZEFjdGlvbnNDb3VudCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzUXVvdGVWaXNpYmxlKCkge1xuICAgIHJldHVybiB0aGlzLmVuYWJsZWRBY3Rpb25zLmluZGV4T2YoJ3F1b3RlJykgIT09IC0xO1xuICB9XG5cbiAgZ2V0IGlzRWRpdFZpc2libGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlZEFjdGlvbnMuaW5kZXhPZignZWRpdCcpICE9PSAtMTtcbiAgfVxuXG4gIGdldCBpc0RlbGV0ZVZpc2libGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlZEFjdGlvbnMuaW5kZXhPZignZGVsZXRlJykgIT09IC0xO1xuICB9XG5cbiAgZ2V0IGlzTXV0ZVZpc2libGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlZEFjdGlvbnMuaW5kZXhPZignbXV0ZScpICE9PSAtMTtcbiAgfVxuXG4gIGdldCBpc0ZsYWdWaXNpYmxlKCkge1xuICAgIHJldHVybiB0aGlzLmVuYWJsZWRBY3Rpb25zLmluZGV4T2YoJ2ZsYWcnKSAhPT0gLTEgJiYgIXRoaXMuaXNNaW5lO1xuICB9XG5cbiAgZ2V0IGlzUGluVmlzaWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVkQWN0aW9ucy5pbmRleE9mKCdwaW4nKSAhPT0gLTE7XG4gIH1cblxuICBwaW5DbGlja2VkKCkge1xuICAgIGFsZXJ0KCdGZWF0dXJlIG5vdCB5ZXQgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIGFzeW5jIGZsYWdDbGlja2VkKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmZsYWdNZXNzYWdlKHRoaXMubWVzc2FnZSEuaWQpO1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFRlbXBvcmFyeU5vdGlmaWNhdGlvbihcbiAgICAgICAgJ3N0cmVhbUNoYXQuTWVzc2FnZSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZmxhZ2dlZCcsXG4gICAgICAgICdzdWNjZXNzJ1xuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5hZGRUZW1wb3JhcnlOb3RpZmljYXRpb24oXG4gICAgICAgICdzdHJlYW1DaGF0LkVycm9yIGFkZGluZyBmbGFnJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBtdXRlQ2xpY2tlZCgpIHtcbiAgICBhbGVydCgnRmVhdHVyZSBub3QgeWV0IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICBxdW90ZUNsaWNrZWQoKSB7XG4gICAgYWxlcnQoJ0ZlYXR1cmUgbm90IHlldCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgZWRpdENsaWNrZWQoKSB7XG4gICAgYWxlcnQoJ0ZlYXR1cmUgbm90IHlldCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgZGVsZXRlQ2xpY2tlZCgpIHtcbiAgICBhbGVydCgnRmVhdHVyZSBub3QgeWV0IGltcGxlbWVudGVkJyk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgZGF0YS10ZXN0aWQ9XCJhY3Rpb24tYm94XCJcbiAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hY3Rpb25zLWJveFwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS1hY3Rpb25zLWJveC0tb3Blbl09XCJpc09wZW5cIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtYWN0aW9ucy1ib3gtLW1pbmVdPVwiaXNNaW5lXCJcbj5cbiAgPHVsIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYWN0aW9ucy1saXN0XCI+XG4gICAgPGJ1dHRvblxuICAgICAgZGF0YS10ZXN0aWQ9XCJxdW90ZS1hY3Rpb25cIlxuICAgICAgKm5nSWY9XCJpc1F1b3RlVmlzaWJsZVwiXG4gICAgICAoY2xpY2spPVwicXVvdGVDbGlja2VkKClcIlxuICAgID5cbiAgICAgIDxsaSBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWFjdGlvbnMtbGlzdC1pdGVtXCI+XG4gICAgICAgIHt7IFwic3RyZWFtQ2hhdC5SZXBseVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2xpPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGRhdGEtdGVzdGlkPVwicGluLWFjdGlvblwiXG4gICAgICAqbmdJZj1cImlzUGluVmlzaWJsZVwiXG4gICAgICAoY2xpY2spPVwicGluQ2xpY2tlZCgpXCJcbiAgICA+XG4gICAgICA8bGkgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hY3Rpb25zLWxpc3QtaXRlbVwiPlxuICAgICAgICB7e1xuICAgICAgICAgIChtZXNzYWdlPy5waW5uZWQgPyBcInN0cmVhbUNoYXQuVW5waW5cIiA6IFwic3RyZWFtQ2hhdC5QaW5cIikgfCB0cmFuc2xhdGVcbiAgICAgICAgfX1cbiAgICAgIDwvbGk+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgZGF0YS10ZXN0aWQ9XCJmbGFnLWFjdGlvblwiXG4gICAgICAqbmdJZj1cImlzRmxhZ1Zpc2libGVcIlxuICAgICAgKGNsaWNrKT1cImZsYWdDbGlja2VkKClcIlxuICAgID5cbiAgICAgIDxsaSBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWFjdGlvbnMtbGlzdC1pdGVtXCI+XG4gICAgICAgIHt7IFwic3RyZWFtQ2hhdC5GbGFnXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbGk+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgZGF0YS10ZXN0aWQ9XCJtdXRlLWFjdGlvblwiXG4gICAgICAqbmdJZj1cImlzTXV0ZVZpc2libGVcIlxuICAgICAgKGNsaWNrKT1cIm11dGVDbGlja2VkKClcIlxuICAgID5cbiAgICAgIDxsaSBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWFjdGlvbnMtbGlzdC1pdGVtXCI+XG4gICAgICAgIHt7IFwic3RyZWFtQ2hhdC5NdXRlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbGk+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgZGF0YS10ZXN0aWQ9XCJlZGl0LWFjdGlvblwiXG4gICAgICAqbmdJZj1cImlzRWRpdFZpc2libGVcIlxuICAgICAgKGNsaWNrKT1cImVkaXRDbGlja2VkKClcIlxuICAgID5cbiAgICAgIDxsaSBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWFjdGlvbnMtbGlzdC1pdGVtXCI+XG4gICAgICAgIHt7IFwic3RyZWFtQ2hhdC5FZGl0IE1lc3NhZ2VcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9saT5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBkYXRhLXRlc3RpZD1cImRlbGV0ZS1hY3Rpb25cIlxuICAgICAgKm5nSWY9XCJpc0RlbGV0ZVZpc2libGVcIlxuICAgICAgKGNsaWNrKT1cImRlbGV0ZUNsaWNrZWQoKVwiXG4gICAgPlxuICAgICAgPGxpIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYWN0aW9ucy1saXN0LWl0ZW1cIj5cbiAgICAgICAge3sgXCJzdHJlYW1DaGF0LkRlbGV0ZVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2xpPlxuICAgIDwvYnV0dG9uPlxuICA8L3VsPlxuPC9kaXY+XG4iXX0=
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1hY3Rpb25zLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS1hY3Rpb25zLWJveC9tZXNzYWdlLWFjdGlvbnMtYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWFjdGlvbnMtYm94L21lc3NhZ2UtYWN0aW9ucy1ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7Ozs7O0FBbUJqRixNQUFNLE9BQU8sMEJBQTBCO0lBWXJDLFlBQ1UsaUJBQW9DLEVBQ3BDLG1CQUF3QyxFQUN4QyxjQUE4QjtRQUY5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBZC9CLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRWYsbUJBQWMsR0FBcUIsRUFBRSxDQUFDO1FBQzVCLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbkQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDM0Qsb0JBQWUsR0FBRyxLQUFLLENBQUM7SUFTckIsQ0FBQztJQUVKLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLGNBQWMsRUFBRTtZQUM1QyxJQUFJLHFCQUFxQixHQUFH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VCxNQUFBLElBQUksQ0FBQyxZQUFZLDBDQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVLLGFBQWE7O1lBQ2pCLElBQUk7Z0JBQ0YsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBUSxDQUFDLENBQUM7YUFDeEQ7WUFBQyxPQUFPLEtBQUssRUFBRTtnQkFDZCxJQUFJLENBQUMsbUJBQW1CLENBQUMsd0JBQXdCLENBQy9DLG1DQUFtQyxDQUNwQyxDQUFDO2FBQ0g7UUFDSCxDQUFDO0tBQUE7O3VIQXpIVSwwQkFBMEI7MkdBQTFCLDBCQUEwQiwyU0FRMUIscUJBQXFCLHFFQ3RDbEMseXRGQWlHQTsyRkRuRWEsMEJBQTBCO2tCQUx0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFdBQVcsRUFBRSxzQ0FBc0M7b0JBQ25ELE1BQU0sRUFBRSxFQUFFO2lCQUNYO3VLQUVVLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ2EscUJBQXFCO3NCQUF2QyxNQUFNO2dCQUNZLFNBQVM7c0JBQTNCLE1BQU07Z0JBRW1DLFlBQVk7c0JBQXJELFNBQVM7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhbm5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBNZXNzYWdlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9tZXNzYWdlLWlucHV0L21lc3NhZ2UtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTdHJlYW1NZXNzYWdlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlQWN0aW9ucyA9XG4gIHwgJ2VkaXQnXG4gIHwgJ2RlbGV0ZSdcbiAgfCAnZWRpdC1hbnknXG4gIHwgJ2RlbGV0ZS1hbnknXG4gIHwgJ3BpbidcbiAgfCAncXVvdGUnXG4gIHwgJ2ZsYWcnXG4gIHwgJ211dGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbWVzc2FnZS1hY3Rpb25zLWJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLWFjdGlvbnMtYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZUFjdGlvbnNCb3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBpc09wZW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNNaW5lID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGVuYWJsZWRBY3Rpb25zOiBNZXNzYWdlQWN0aW9uc1tdID0gW107XG4gIEBPdXRwdXQoKSByZWFkb25seSBkaXNwbGF5ZWRBY3Rpb25zQ291bnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGlzRWRpdGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgaXNFZGl0TW9kYWxPcGVuID0gZmFsc2U7XG4gIEBWaWV3Q2hpbGQoTWVzc2FnZUlucHV0Q29tcG9uZW50KSBwcml2YXRlIG1lc3NhZ2VJbnB1dDpcbiAgICB8IE1lc3NhZ2VJbnB1dENvbXBvbmVudFxuICAgIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhdENsaWVudFNlcnZpY2U6IENoYXRDbGllbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmlzTWluZSB8fCBjaGFuZ2VzLmVuYWJsZWRBY3Rpb25zKSB7XG4gICAgICBsZXQgZGlzcGxheWVkQWN0aW9uc0NvdW50ID0gMDtcbiAgICAgIGlmICh0aGlzLmlzUXVvdGVWaXNpYmxlKSB7XG4gICAgICAgIGRpc3BsYXllZEFjdGlvbnNDb3VudCsrO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNFZGl0VmlzaWJsZSkge1xuICAgICAgICBkaXNwbGF5ZWRBY3Rpb25zQ291bnQrKztcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzRGVsZXRlVmlzaWJsZSkge1xuICAgICAgICBkaXNwbGF5ZWRBY3Rpb25zQ291bnQrKztcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzTXV0ZVZpc2libGUpIHtcbiAgICAgICAgZGlzcGxheWVkQWN0aW9uc0NvdW50Kys7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc0ZsYWdWaXNpYmxlKSB7XG4gICAgICAgIGRpc3BsYXllZEFjdGlvbnNDb3VudCsrO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNQaW5WaXNpYmxlKSB7XG4gICAgICAgIGRpc3BsYXllZEFjdGlvbnNDb3VudCsrO1xuICAgICAgfVxuICAgICAgdGhpcy5kaXNwbGF5ZWRBY3Rpb25zQ291bnQubmV4dChkaXNwbGF5ZWRBY3Rpb25zQ291bnQpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpc1F1b3RlVmlzaWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVkQWN0aW9ucy5pbmRleE9mKCdxdW90ZScpICE9PSAtMTtcbiAgfVxuXG4gIGdldCBpc0VkaXRWaXNpYmxlKCkge1xuICAgIHJldHVybiAoXG4gICAgICAodGhpcy5lbmFibGVkQWN0aW9ucy5pbmRleE9mKCdlZGl0JykgIT09IC0xICYmIHRoaXMuaXNNaW5lKSB8fFxuICAgICAgdGhpcy5lbmFibGVkQWN0aW9ucy5pbmRleE9mKCdlZGl0LWFueScpICE9PSAtMVxuICAgICk7XG4gIH1cblxuICBnZXQgaXNEZWxldGVWaXNpYmxlKCkge1xuICAgIHJldHVybiAoXG4gICAgICAodGhpcy5lbmFibGVkQWN0aW9ucy5pbmRleE9mKCdkZWxldGUnKSAhPT0gLTEgJiYgdGhpcy5pc01pbmUpIHx8XG4gICAgICB0aGlzLmVuYWJsZWRBY3Rpb25zLmluZGV4T2YoJ2RlbGV0ZS1hbnknKSAhPT0gLTFcbiAgICApO1xuICB9XG5cbiAgZ2V0IGlzTXV0ZVZpc2libGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlZEFjdGlvbnMuaW5kZXhPZignbXV0ZScpICE9PSAtMTtcbiAgfVxuXG4gIGdldCBpc0ZsYWdWaXNpYmxlKCkge1xuICAgIHJldHVybiB0aGlzLmVuYWJsZWRBY3Rpb25zLmluZGV4T2YoJ2ZsYWcnKSAhPT0gLTEgJiYgIXRoaXMuaXNNaW5lO1xuICB9XG5cbiAgZ2V0IGlzUGluVmlzaWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVkQWN0aW9ucy5pbmRleE9mKCdwaW4nKSAhPT0gLTE7XG4gIH1cblxuICBwaW5DbGlja2VkKCkge1xuICAgIGFsZXJ0KCdGZWF0dXJlIG5vdCB5ZXQgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIGFzeW5jIGZsYWdDbGlja2VkKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmZsYWdNZXNzYWdlKHRoaXMubWVzc2FnZSEuaWQpO1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFRlbXBvcmFyeU5vdGlmaWNhdGlvbihcbiAgICAgICAgJ3N0cmVhbUNoYXQuTWVzc2FnZSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZmxhZ2dlZCcsXG4gICAgICAgICdzdWNjZXNzJ1xuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5hZGRUZW1wb3JhcnlOb3RpZmljYXRpb24oXG4gICAgICAgICdzdHJlYW1DaGF0LkVycm9yIGFkZGluZyBmbGFnJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBtdXRlQ2xpY2tlZCgpIHtcbiAgICBhbGVydCgnRmVhdHVyZSBub3QgeWV0IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICBxdW90ZUNsaWNrZWQoKSB7XG4gICAgYWxlcnQoJ0ZlYXR1cmUgbm90IHlldCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgZWRpdENsaWNrZWQoKSB7XG4gICAgdGhpcy5pc0VkaXRpbmcuZW1pdCh0cnVlKTtcbiAgICB0aGlzLmlzRWRpdE1vZGFsT3BlbiA9IHRydWU7XG4gIH1cblxuICBzZW5kQ2xpY2tlZCgpIHtcbiAgICB0aGlzLm1lc3NhZ2VJbnB1dD8ubWVzc2FnZVNlbnQoKTtcbiAgfVxuXG4gIG1vZGFsQ2xvc2VkKCkge1xuICAgIHRoaXMuaXNFZGl0TW9kYWxPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5pc0VkaXRpbmcuZW1pdChmYWxzZSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVDbGlja2VkKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNoYW5uZWxTZXJ2aWNlLmRlbGV0ZU1lc3NhZ2UodGhpcy5tZXNzYWdlISk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5hZGRUZW1wb3JhcnlOb3RpZmljYXRpb24oXG4gICAgICAgICdzdHJlYW1DaGF0LkVycm9yIGRlbGV0aW5nIG1lc3NhZ2UnXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBkYXRhLXRlc3RpZD1cImFjdGlvbi1ib3hcIlxuICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWFjdGlvbnMtYm94XCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLWFjdGlvbnMtYm94LS1vcGVuXT1cImlzT3BlblwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS1hY3Rpb25zLWJveC0tbWluZV09XCJpc01pbmVcIlxuPlxuICA8dWwgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hY3Rpb25zLWxpc3RcIj5cbiAgICA8YnV0dG9uXG4gICAgICBkYXRhLXRlc3RpZD1cInF1b3RlLWFjdGlvblwiXG4gICAgICAqbmdJZj1cImlzUXVvdGVWaXNpYmxlXCJcbiAgICAgIChjbGljayk9XCJxdW90ZUNsaWNrZWQoKVwiXG4gICAgPlxuICAgICAgPGxpIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYWN0aW9ucy1saXN0LWl0ZW1cIj5cbiAgICAgICAge3sgXCJzdHJlYW1DaGF0LlJlcGx5XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbGk+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgZGF0YS10ZXN0aWQ9XCJwaW4tYWN0aW9uXCJcbiAgICAgICpuZ0lmPVwiaXNQaW5WaXNpYmxlXCJcbiAgICAgIChjbGljayk9XCJwaW5DbGlja2VkKClcIlxuICAgID5cbiAgICAgIDxsaSBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWFjdGlvbnMtbGlzdC1pdGVtXCI+XG4gICAgICAgIHt7XG4gICAgICAgICAgKG1lc3NhZ2U/LnBpbm5lZCA/IFwic3RyZWFtQ2hhdC5VbnBpblwiIDogXCJzdHJlYW1DaGF0LlBpblwiKSB8IHRyYW5zbGF0ZVxuICAgICAgICB9fVxuICAgICAgPC9saT5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBkYXRhLXRlc3RpZD1cImZsYWctYWN0aW9uXCJcbiAgICAgICpuZ0lmPVwiaXNGbGFnVmlzaWJsZVwiXG4gICAgICAoY2xpY2spPVwiZmxhZ0NsaWNrZWQoKVwiXG4gICAgPlxuICAgICAgPGxpIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYWN0aW9ucy1saXN0LWl0ZW1cIj5cbiAgICAgICAge3sgXCJzdHJlYW1DaGF0LkZsYWdcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9saT5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBkYXRhLXRlc3RpZD1cIm11dGUtYWN0aW9uXCJcbiAgICAgICpuZ0lmPVwiaXNNdXRlVmlzaWJsZVwiXG4gICAgICAoY2xpY2spPVwibXV0ZUNsaWNrZWQoKVwiXG4gICAgPlxuICAgICAgPGxpIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYWN0aW9ucy1saXN0LWl0ZW1cIj5cbiAgICAgICAge3sgXCJzdHJlYW1DaGF0Lk11dGVcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9saT5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBkYXRhLXRlc3RpZD1cImVkaXQtYWN0aW9uXCJcbiAgICAgICpuZ0lmPVwiaXNFZGl0VmlzaWJsZVwiXG4gICAgICAoY2xpY2spPVwiZWRpdENsaWNrZWQoKVwiXG4gICAgPlxuICAgICAgPGxpIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYWN0aW9ucy1saXN0LWl0ZW1cIj5cbiAgICAgICAge3sgXCJzdHJlYW1DaGF0LkVkaXQgTWVzc2FnZVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2xpPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGRhdGEtdGVzdGlkPVwiZGVsZXRlLWFjdGlvblwiXG4gICAgICAqbmdJZj1cImlzRGVsZXRlVmlzaWJsZVwiXG4gICAgICAoY2xpY2spPVwiZGVsZXRlQ2xpY2tlZCgpXCJcbiAgICA+XG4gICAgICA8bGkgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hY3Rpb25zLWxpc3QtaXRlbVwiPlxuICAgICAgICB7eyBcInN0cmVhbUNoYXQuRGVsZXRlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbGk+XG4gICAgPC9idXR0b24+XG4gIDwvdWw+XG48L2Rpdj5cblxuPHN0cmVhbS1tb2RhbFxuICBbaXNPcGVuXT1cImlzRWRpdE1vZGFsT3BlblwiXG4gIChpc09wZW5DaGFuZ2UpPVwiXG4gICAgaXNFZGl0TW9kYWxPcGVuID0gJGV2ZW50OyBpc0VkaXRNb2RhbE9wZW4gPyAnJyA6IG1vZGFsQ2xvc2VkKClcbiAgXCJcbj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19lZGl0LW1lc3NhZ2UtZm9ybVwiICpuZ0lmPVwiaXNFZGl0TW9kYWxPcGVuXCI+XG4gICAgPHN0cmVhbS1tZXNzYWdlLWlucHV0XG4gICAgICBbbWVzc2FnZV09XCJtZXNzYWdlXCJcbiAgICAgIChtZXNzYWdlVXBkYXRlKT1cIm1vZGFsQ2xvc2VkKClcIlxuICAgID48L3N0cmVhbS1tZXNzYWdlLWlucHV0PlxuICAgIDxzdHJlYW0tbm90aWZpY2F0aW9uLWxpc3Q+PC9zdHJlYW0tbm90aWZpY2F0aW9uLWxpc3Q+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXRlYW0tZm9ybS1mb290ZXJcIj5cbiAgICAgIDxkaXY+PC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8YnV0dG9uIHRyYW5zbGF0ZSBkYXRhLXRlc3RpZD1cImNhbmNlbC1idXR0b25cIiAoY2xpY2spPVwibW9kYWxDbG9zZWQoKVwiPlxuICAgICAgICAgIHN0cmVhbUNoYXQuQ2FuY2VsXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZW5kLWJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbmRDbGlja2VkKClcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzZW5kQ2xpY2tlZCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHN0cmVhbUNoYXQuU2VuZFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvc3RyZWFtLW1vZGFsPlxuIl19
@@ -0,0 +1,145 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Component, EventEmitter, HostBinding, Input, Output, ViewChild, } from '@angular/core';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../channel.service";
7
+ import * as i2 from "../../chat-client.service";
8
+ import * as i3 from "../../avatar/avatar.component";
9
+ import * as i4 from "angular-mentions";
10
+ import * as i5 from "@angular/common";
11
+ import * as i6 from "@ngx-translate/core";
12
+ export class AutocompleteTextareaComponent {
13
+ constructor(channelService, chatClientService) {
14
+ this.channelService = channelService;
15
+ this.chatClientService = chatClientService;
16
+ this.class = 'str-chat__textarea';
17
+ this.value = '';
18
+ this.areMentionsEnabled = true;
19
+ this.mentionScope = 'channel';
20
+ this.valueChange = new EventEmitter();
21
+ this.send = new EventEmitter();
22
+ this.userMentions = new EventEmitter();
23
+ this.labelKey = 'autocompleteLabel';
24
+ this.triggerChar = '@';
25
+ this.autocompleteConfig = {
26
+ mentions: [],
27
+ };
28
+ this.subscriptions = [];
29
+ this.mentionedUsers = [];
30
+ this.userMentionConfig = {
31
+ triggerChar: this.triggerChar,
32
+ dropUp: true,
33
+ labelKey: this.labelKey,
34
+ mentionFilter: this.filter,
35
+ mentionSelect: (item, triggerChar) => this.mentioned(item, triggerChar),
36
+ };
37
+ this.searchTerm$ = new BehaviorSubject('');
38
+ this.searchTerm$
39
+ .pipe(debounceTime(300), distinctUntilChanged())
40
+ .subscribe((searchTerm) => void this.updateMentionOptions(searchTerm));
41
+ this.subscriptions.push(this.channelService.activeChannel$.subscribe(() => {
42
+ this.mentionedUsers = [];
43
+ this.userMentions.next([...this.mentionedUsers]);
44
+ void this.updateMentionOptions(this.searchTerm$.getValue());
45
+ }));
46
+ }
47
+ ngOnChanges(changes) {
48
+ if (changes.areMentionsEnabled) {
49
+ if (this.areMentionsEnabled) {
50
+ this.autocompleteConfig.mentions = [this.userMentionConfig];
51
+ this.autocompleteConfig = Object.assign({}, this.autocompleteConfig);
52
+ }
53
+ else {
54
+ this.autocompleteConfig.mentions = [];
55
+ this.autocompleteConfig = Object.assign({}, this.autocompleteConfig);
56
+ }
57
+ }
58
+ if (changes.mentionScope) {
59
+ void this.updateMentionOptions(this.searchTerm$.getValue());
60
+ }
61
+ }
62
+ filter(searchString, items) {
63
+ return items.filter((item) => item.autocompleteLabel.toLowerCase().includes(searchString.toLowerCase()));
64
+ }
65
+ mentioned(item, triggerChar = '') {
66
+ this.mentionedUsers.push((item.user ? item.user : item));
67
+ this.userMentions.next([...this.mentionedUsers]);
68
+ return triggerChar + item.autocompleteLabel;
69
+ }
70
+ autcompleteSearchTermChanged(searchTerm) {
71
+ this.searchTerm$.next(searchTerm);
72
+ }
73
+ inputChanged() {
74
+ this.valueChange.emit(this.messageInput.nativeElement.value);
75
+ }
76
+ inputLeft() {
77
+ this.updateMentionedUsersFromText();
78
+ }
79
+ sent(event) {
80
+ event.preventDefault();
81
+ this.updateMentionedUsersFromText();
82
+ this.send.next();
83
+ }
84
+ updateMentionOptions(searchTerm) {
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ if (!this.areMentionsEnabled) {
87
+ return;
88
+ }
89
+ const request = this.mentionScope === 'application'
90
+ ? (s) => this.chatClientService.autocompleteUsers(s)
91
+ : (s) => this.channelService.autocompleteMembers(s);
92
+ const result = yield request(searchTerm || '');
93
+ const items = this.filter(searchTerm || '', result.map((i) => {
94
+ const user = (i.user ? i.user : i);
95
+ return Object.assign(Object.assign({}, i), { autocompleteLabel: user.name || user.id, type: 'mention' });
96
+ }));
97
+ this.userMentionConfig.items = items;
98
+ this.autocompleteConfig.mentions = [this.userMentionConfig];
99
+ this.autocompleteConfig = Object.assign({}, this.autocompleteConfig);
100
+ });
101
+ }
102
+ updateMentionedUsersFromText() {
103
+ const updatedMentionedUsers = [];
104
+ this.mentionedUsers.forEach((u) => {
105
+ const key = u.name || u.id;
106
+ if (this.value.includes(`${this.triggerChar}${key}`)) {
107
+ updatedMentionedUsers.push(u);
108
+ }
109
+ });
110
+ if (updatedMentionedUsers.length !== this.mentionedUsers.length) {
111
+ this.userMentions.next([...updatedMentionedUsers]);
112
+ this.mentionedUsers = updatedMentionedUsers;
113
+ }
114
+ }
115
+ }
116
+ AutocompleteTextareaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: AutocompleteTextareaComponent, deps: [{ token: i1.ChannelService }, { token: i2.ChatClientService }], target: i0.ɵɵFactoryTarget.Component });
117
+ AutocompleteTextareaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: AutocompleteTextareaComponent, selector: "stream-autocomplete-textarea", inputs: { value: "value", areMentionsEnabled: "areMentionsEnabled", mentionAutocompleteItemTemplate: "mentionAutocompleteItemTemplate", mentionScope: "mentionScope" }, outputs: { valueChange: "valueChange", send: "send", userMentions: "userMentions" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "messageInput", first: true, predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<textarea\n [value]=\"value || ''\"\n autofocus\n data-testid=\"textarea\"\n #input\n placeholder=\"{{ 'streamChat.Type your message' | translate }}\"\n class=\"rta__textarea str-chat__textarea__textarea\"\n rows=\"1\"\n (input)=\"inputChanged()\"\n (keydown.enter)=\"sent($event)\"\n [mentionConfig]=\"autocompleteConfig\"\n (searchTerm)=\"autcompleteSearchTermChanged($event)\"\n [mentionListTemplate]=\"autocompleteItem\"\n (blur)=\"inputLeft()\"\n></textarea>\n<ng-template #autocompleteItem let-item=\"item\">\n <div class=\"rta rta__item str-chat__emojisearch__item\" [ngSwitch]=\"item.type\">\n <div class=\"rta__entity\" *ngSwitchCase=\"'mention'\">\n <ng-container\n *ngTemplateOutlet=\"\n mentionAutocompleteItemTemplate || defaultMentionTemplate;\n context: { item: item }\n \"\n ></ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #defaultMentionTemplate let-item=\"item\">\n <div class=\"str-chat__user-item\">\n <stream-avatar\n data-testclass=\"avatar\"\n class=\"str-chat__avatar str-chat__avatar--circle\"\n style=\"height: 20px\"\n [size]=\"20\"\n [imageUrl]=\"item.image || item.user?.image\"\n [name]=\"item.autocompleteLabel\"\n ></stream-avatar>\n <span data-testclass=\"username\" class=\"str-chat__user-item--name\">{{\n item.autocompleteLabel\n }}</span>\n </div>\n</ng-template>\n", components: [{ type: i3.AvatarComponent, selector: "stream-avatar", inputs: ["name", "imageUrl", "size"] }], directives: [{ type: i4.MentionDirective, selector: "[mention], [mentionConfig]", inputs: ["mentionConfig", "mention", "mentionListTemplate"], outputs: ["searchTerm", "itemSelected", "opened", "closed"] }, { type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "translate": i6.TranslatePipe } });
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: AutocompleteTextareaComponent, decorators: [{
119
+ type: Component,
120
+ args: [{
121
+ selector: 'stream-autocomplete-textarea',
122
+ templateUrl: './autocomplete-textarea.component.html',
123
+ styles: [],
124
+ }]
125
+ }], ctorParameters: function () { return [{ type: i1.ChannelService }, { type: i2.ChatClientService }]; }, propDecorators: { class: [{
126
+ type: HostBinding
127
+ }], value: [{
128
+ type: Input
129
+ }], areMentionsEnabled: [{
130
+ type: Input
131
+ }], mentionAutocompleteItemTemplate: [{
132
+ type: Input
133
+ }], mentionScope: [{
134
+ type: Input
135
+ }], valueChange: [{
136
+ type: Output
137
+ }], send: [{
138
+ type: Output
139
+ }], userMentions: [{
140
+ type: Output
141
+ }], messageInput: [{
142
+ type: ViewChild,
143
+ args: ['input']
144
+ }] } });
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXRleHRhcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWlucHV0L2F1dG9jb21wbGV0ZS10ZXh0YXJlYS9hdXRvY29tcGxldGUtdGV4dGFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtaW5wdXQvYXV0b2NvbXBsZXRlLXRleHRhcmVhL2F1dG9jb21wbGV0ZS10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBT3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBS3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFPcEUsTUFBTSxPQUFPLDZCQUE2QjtJQThCeEMsWUFDVSxjQUE4QixFQUM5QixpQkFBb0M7UUFEcEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUE3Qi9CLFVBQUssR0FBRyxvQkFBb0IsQ0FBQztRQUNuQyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsdUJBQWtCLEdBQXdCLElBQUksQ0FBQztRQUkvQyxpQkFBWSxHQUE4QixTQUFTLENBQUM7UUFDMUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3pDLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2hDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFD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MEhBaElVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLDhlQzlCMUMsMjVDQTJDQTsyRkRiYSw2QkFBNkI7a0JBTHpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDhCQUE4QjtvQkFDeEMsV0FBVyxFQUFFLHdDQUF3QztvQkFDckQsTUFBTSxFQUFFLEVBQUU7aUJBQ1g7cUlBSWdCLEtBQUs7c0JBQW5CLFdBQVc7Z0JBQ0gsS0FBSztzQkFBYixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRywrQkFBK0I7c0JBQXZDLEtBQUs7Z0JBR0csWUFBWTtzQkFBcEIsS0FBSztnQkFDYSxXQUFXO3NCQUE3QixNQUFNO2dCQUNZLElBQUk7c0JBQXRCLE1BQU07Z0JBQ1ksWUFBWTtzQkFBOUIsTUFBTTtnQkFNcUIsWUFBWTtzQkFBdkMsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudGlvbkNvbmZpZywgTWVudGlvbnMgfSBmcm9tICdhbmd1bGFyLW1lbnRpb25zJztcbmltcG9ydCB7XG4gIE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtQ29udGV4dCxcbiAgTWVudGlvbkF1dGNvbXBsZXRlTGlzdEl0ZW0sXG59IGZyb20gJy4uLy4uL3R5cGVzJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVzZXJSZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2hhbm5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IFRleHRhcmVhSW50ZXJmYWNlIH0gZnJvbSAnLi4vdGV4dGFyZWEuaW50ZXJmYWNlJztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tYXV0b2NvbXBsZXRlLXRleHRhcmVhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZVRleHRhcmVhQ29tcG9uZW50XG4gIGltcGxlbWVudHMgVGV4dGFyZWFJbnRlcmZhY2UsIE9uQ2hhbmdlc1xue1xuICBASG9zdEJpbmRpbmcoKSBjbGFzcyA9ICdzdHItY2hhdF9fdGV4dGFyZWEnO1xuICBASW5wdXQoKSB2YWx1ZSA9ICcnO1xuICBASW5wdXQoKSBhcmVNZW50aW9uc0VuYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB0cnVlO1xuICBASW5wdXQoKSBtZW50aW9uQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlOlxuICAgIHwgVGVtcGxhdGVSZWY8TWVudGlvbkF1dGNvbXBsZXRlTGlzdEl0ZW1Db250ZXh0PlxuICAgIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBtZW50aW9uU2NvcGU6ICdjaGFubmVsJyB8ICdhcHBsaWNhdGlvbicgPSAnY2hhbm5lbCc7XG4gIEBPdXRwdXQoKSByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHVzZXJNZW50aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXI8VXNlclJlc3BvbnNlW10+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbGFiZWxLZXkgPSAnYXV0b2NvbXBsZXRlTGFiZWwnO1xuICBwcml2YXRlIHJlYWRvbmx5IHRyaWdnZXJDaGFyID0gJ0AnO1xuICBhdXRvY29tcGxldGVDb25maWc6IE1lbnRpb25Db25maWcgPSB7XG4gICAgbWVudGlvbnM6IFtdLFxuICB9O1xuICBAVmlld0NoaWxkKCdpbnB1dCcpIHByaXZhdGUgbWVzc2FnZUlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIG1lbnRpb25lZFVzZXJzOiBVc2VyUmVzcG9uc2VbXSA9IFtdO1xuICBwcml2YXRlIHVzZXJNZW50aW9uQ29uZmlnOiBNZW50aW9ucyA9IHtcbiAgICB0cmlnZ2VyQ2hhcjogdGhpcy50cmlnZ2VyQ2hhcixcbiAgICBkcm9wVXA6IHRydWUsXG4gICAgbGFiZWxLZXk6IHRoaXMubGFiZWxLZXksXG4gICAgbWVudGlvbkZpbHRlcjogdGhpcy5maWx0ZXIsXG4gICAgbWVudGlvblNlbGVjdDogKGl0ZW0sIHRyaWdnZXJDaGFyKSA9PiB0aGlzLm1lbnRpb25lZChpdGVtLCB0cmlnZ2VyQ2hhciksXG4gIH07XG4gIHByaXZhdGUgc2VhcmNoVGVybSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhdENsaWVudFNlcnZpY2U6IENoYXRDbGllbnRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc2VhcmNoVGVybSRcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgzMDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnN1YnNjcmliZSgoc2VhcmNoVGVybSkgPT4gdm9pZCB0aGlzLnVwZGF0ZU1lbnRpb25PcHRpb25zKHNlYXJjaFRlcm0pKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5tZW50aW9uZWRVc2VycyA9IFtdO1xuICAgICAgICB0aGlzLnVzZXJNZW50aW9ucy5uZXh0KFsuLi50aGlzLm1lbnRpb25lZFVzZXJzXSk7XG4gICAgICAgIHZvaWQgdGhpcy51cGRhdGVNZW50aW9uT3B0aW9ucyh0aGlzLnNlYXJjaFRlcm0kLmdldFZhbHVlKCkpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmFyZU1lbnRpb25zRW5hYmxlZCkge1xuICAgICAgaWYgKHRoaXMuYXJlTWVudGlvbnNFbmFibGVkKSB7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29uZmlnLm1lbnRpb25zID0gW3RoaXMudXNlck1lbnRpb25Db25maWddO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbmZpZyA9IHsgLi4udGhpcy5hdXRvY29tcGxldGVDb25maWcgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29uZmlnLm1lbnRpb25zID0gW107XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29uZmlnID0geyAuLi50aGlzLmF1dG9jb21wbGV0ZUNvbmZpZyB9O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5tZW50aW9uU2NvcGUpIHtcbiAgICAgIHZvaWQgdGhpcy51cGRhdGVNZW50aW9uT3B0aW9ucyh0aGlzLnNlYXJjaFRlcm0kLmdldFZhbHVlKCkpO1xuICAgIH1cbiAgfVxuXG4gIGZpbHRlcihzZWFyY2hTdHJpbmc6IHN0cmluZywgaXRlbXM6IHsgYXV0b2NvbXBsZXRlTGFiZWw6IHN0cmluZyB9W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXRlbSkgPT5cbiAgICAgIGl0ZW0uYXV0b2NvbXBsZXRlTGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hTdHJpbmcudG9Mb3dlckNhc2UoKSlcbiAgICApO1xuICB9XG5cbiAgbWVudGlvbmVkKGl0ZW06IE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtLCB0cmlnZ2VyQ2hhciA9ICcnKSB7XG4gICAgdGhpcy5tZW50aW9uZWRVc2Vycy5wdXNoKChpdGVtLnVzZXIgPyBpdGVtLnVzZXIgOiBpdGVtKSBhcyBVc2VyUmVzcG9uc2UpO1xuICAgIHRoaXMudXNlck1lbnRpb25zLm5leHQoWy4uLnRoaXMubWVudGlvbmVkVXNlcnNdKTtcbiAgICByZXR1cm4gdHJpZ2dlckNoYXIgKyBpdGVtLmF1dG9jb21wbGV0ZUxhYmVsO1xuICB9XG5cbiAgYXV0Y29tcGxldGVTZWFyY2hUZXJtQ2hhbmdlZChzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0kLm5leHQoc2VhcmNoVGVybSk7XG4gIH1cblxuICBpbnB1dENoYW5nZWQoKSB7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMubWVzc2FnZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICB9XG5cbiAgaW5wdXRMZWZ0KCkge1xuICAgIHRoaXMudXBkYXRlTWVudGlvbmVkVXNlcnNGcm9tVGV4dCgpO1xuICB9XG5cbiAgc2VudChldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMudXBkYXRlTWVudGlvbmVkVXNlcnNGcm9tVGV4dCgpO1xuICAgIHRoaXMuc2VuZC5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZU1lbnRpb25PcHRpb25zKHNlYXJjaFRlcm0/OiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuYXJlTWVudGlvbnNFbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlcXVlc3QgPVxuICAgICAgdGhpcy5tZW50aW9uU2NvcGUgPT09ICdhcHBsaWNhdGlvbidcbiAgICAgICAgPyAoczogc3RyaW5nKSA9PiB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmF1dG9jb21wbGV0ZVVzZXJzKHMpXG4gICAgICAgIDogKHM6IHN0cmluZykgPT4gdGhpcy5jaGFubmVsU2VydmljZS5hdXRvY29tcGxldGVNZW1iZXJzKHMpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcXVlc3Qoc2VhcmNoVGVybSB8fCAnJyk7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmZpbHRlcihcbiAgICAgIHNlYXJjaFRlcm0gfHwgJycsXG4gICAgICByZXN1bHQubWFwKChpKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSAoaS51c2VyID8gaS51c2VyIDogaSkgYXMgVXNlclJlc3BvbnNlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmksXG4gICAgICAgICAgYXV0b2NvbXBsZXRlTGFiZWw6IHVzZXIubmFtZSB8fCB1c2VyLmlkLFxuICAgICAgICAgIHR5cGU6ICdtZW50aW9uJyxcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnVzZXJNZW50aW9uQ29uZmlnLml0ZW1zID0gaXRlbXM7XG4gICAgdGhpcy5hdXRvY29tcGxldGVDb25maWcubWVudGlvbnMgPSBbdGhpcy51c2VyTWVudGlvbkNvbmZpZ107XG4gICAgdGhpcy5hdXRvY29tcGxldGVDb25maWcgPSB7IC4uLnRoaXMuYXV0b2NvbXBsZXRlQ29uZmlnIH07XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1lbnRpb25lZFVzZXJzRnJvbVRleHQoKSB7XG4gICAgY29uc3QgdXBkYXRlZE1lbnRpb25lZFVzZXJzOiBVc2VyUmVzcG9uc2VbXSA9IFtdO1xuICAgIHRoaXMubWVudGlvbmVkVXNlcnMuZm9yRWFjaCgodSkgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gdS5uYW1lIHx8IHUuaWQ7XG4gICAgICBpZiAodGhpcy52YWx1ZS5pbmNsdWRlcyhgJHt0aGlzLnRyaWdnZXJDaGFyfSR7a2V5fWApKSB7XG4gICAgICAgIHVwZGF0ZWRNZW50aW9uZWRVc2Vycy5wdXNoKHUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICh1cGRhdGVkTWVudGlvbmVkVXNlcnMubGVuZ3RoICE9PSB0aGlzLm1lbnRpb25lZFVzZXJzLmxlbmd0aCkge1xuICAgICAgdGhpcy51c2VyTWVudGlvbnMubmV4dChbLi4udXBkYXRlZE1lbnRpb25lZFVzZXJzXSk7XG4gICAgICB0aGlzLm1lbnRpb25lZFVzZXJzID0gdXBkYXRlZE1lbnRpb25lZFVzZXJzO1xuICAgIH1cbiAgfVxufVxuIiwiPHRleHRhcmVhXG4gIFt2YWx1ZV09XCJ2YWx1ZSB8fCAnJ1wiXG4gIGF1dG9mb2N1c1xuICBkYXRhLXRlc3RpZD1cInRleHRhcmVhXCJcbiAgI2lucHV0XG4gIHBsYWNlaG9sZGVyPVwie3sgJ3N0cmVhbUNoYXQuVHlwZSB5b3VyIG1lc3NhZ2UnIHwgdHJhbnNsYXRlIH19XCJcbiAgY2xhc3M9XCJydGFfX3RleHRhcmVhIHN0ci1jaGF0X190ZXh0YXJlYV9fdGV4dGFyZWFcIlxuICByb3dzPVwiMVwiXG4gIChpbnB1dCk9XCJpbnB1dENoYW5nZWQoKVwiXG4gIChrZXlkb3duLmVudGVyKT1cInNlbnQoJGV2ZW50KVwiXG4gIFttZW50aW9uQ29uZmlnXT1cImF1dG9jb21wbGV0ZUNvbmZpZ1wiXG4gIChzZWFyY2hUZXJtKT1cImF1dGNvbXBsZXRlU2VhcmNoVGVybUNoYW5nZWQoJGV2ZW50KVwiXG4gIFttZW50aW9uTGlzdFRlbXBsYXRlXT1cImF1dG9jb21wbGV0ZUl0ZW1cIlxuICAoYmx1cik9XCJpbnB1dExlZnQoKVwiXG4+PC90ZXh0YXJlYT5cbjxuZy10ZW1wbGF0ZSAjYXV0b2NvbXBsZXRlSXRlbSBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgPGRpdiBjbGFzcz1cInJ0YSBydGFfX2l0ZW0gc3RyLWNoYXRfX2Vtb2ppc2VhcmNoX19pdGVtXCIgW25nU3dpdGNoXT1cIml0ZW0udHlwZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJydGFfX2VudGl0eVwiICpuZ1N3aXRjaENhc2U9XCInbWVudGlvbidcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICBtZW50aW9uQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlIHx8IGRlZmF1bHRNZW50aW9uVGVtcGxhdGU7XG4gICAgICAgICAgY29udGV4dDogeyBpdGVtOiBpdGVtIH1cbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRNZW50aW9uVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fdXNlci1pdGVtXCI+XG4gICAgPHN0cmVhbS1hdmF0YXJcbiAgICAgIGRhdGEtdGVzdGNsYXNzPVwiYXZhdGFyXCJcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2F2YXRhciBzdHItY2hhdF9fYXZhdGFyLS1jaXJjbGVcIlxuICAgICAgc3R5bGU9XCJoZWlnaHQ6IDIwcHhcIlxuICAgICAgW3NpemVdPVwiMjBcIlxuICAgICAgW2ltYWdlVXJsXT1cIml0ZW0uaW1hZ2UgfHwgaXRlbS51c2VyPy5pbWFnZVwiXG4gICAgICBbbmFtZV09XCJpdGVtLmF1dG9jb21wbGV0ZUxhYmVsXCJcbiAgICA+PC9zdHJlYW0tYXZhdGFyPlxuICAgIDxzcGFuIGRhdGEtdGVzdGNsYXNzPVwidXNlcm5hbWVcIiBjbGFzcz1cInN0ci1jaGF0X191c2VyLWl0ZW0tLW5hbWVcIj57e1xuICAgICAgaXRlbS5hdXRvY29tcGxldGVMYWJlbFxuICAgIH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,19 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class MessageInputConfigService {
4
+ constructor() {
5
+ this.isFileUploadEnabled = true;
6
+ this.areMentionsEnabled = true;
7
+ this.isMultipleFileUploadEnabled = true;
8
+ this.mentionScope = 'channel';
9
+ }
10
+ }
11
+ MessageInputConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageInputConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
12
+ MessageInputConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageInputConfigService, providedIn: 'root' });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageInputConfigService, decorators: [{
14
+ type: Injectable,
15
+ args: [{
16
+ providedIn: 'root',
17
+ }]
18
+ }], ctorParameters: function () { return []; } });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1pbnB1dC1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWlucHV0L21lc3NhZ2UtaW5wdXQtY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFNeEQsTUFBTSxPQUFPLHlCQUF5QjtJQVVwQztRQVRBLHdCQUFtQixHQUF3QixJQUFJLENBQUM7UUFDaEQsdUJBQWtCLEdBQXdCLElBQUksQ0FBQztRQUsvQyxnQ0FBMkIsR0FBd0IsSUFBSSxDQUFDO1FBQ3hELGlCQUFZLEdBQTBDLFNBQVMsQ0FBQztJQUVqRCxDQUFDOztzSEFWTCx5QkFBeUI7MEhBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzJGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudGlvbkF1dGNvbXBsZXRlTGlzdEl0ZW1Db250ZXh0IH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZSB7XG4gIGlzRmlsZVVwbG9hZEVuYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB0cnVlO1xuICBhcmVNZW50aW9uc0VuYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB0cnVlO1xuICBtZW50aW9uQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlOlxuICAgIHwgVGVtcGxhdGVSZWY8TWVudGlvbkF1dGNvbXBsZXRlTGlzdEl0ZW1Db250ZXh0PlxuICAgIHwgdW5kZWZpbmVkO1xuICBhY2NlcHRlZEZpbGVUeXBlczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gIGlzTXVsdGlwbGVGaWxlVXBsb2FkRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHRydWU7XG4gIG1lbnRpb25TY29wZTogJ2NoYW5uZWwnIHwgJ2FwcGxpY2F0aW9uJyB8IHVuZGVmaW5lZCA9ICdjaGFubmVsJztcblxuICBjb25zdHJ1Y3RvcigpIHt9XG59XG4iXX0=