stream-chat-angular 6.2.0 → 6.3.0-beta.2

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 (106) hide show
  1. package/assets/i18n/en.d.ts +42 -0
  2. package/assets/version.d.ts +1 -1
  3. package/esm2020/assets/i18n/en.mjs +43 -1
  4. package/esm2020/assets/version.mjs +2 -2
  5. package/esm2020/lib/channel-list/channel-list.component.mjs +3 -3
  6. package/esm2020/lib/channel-preview/channel-preview.component.mjs +4 -1
  7. package/esm2020/lib/channel.service.mjs +6 -3
  8. package/esm2020/lib/custom-templates.service.mjs +9 -1
  9. package/esm2020/lib/icon/icon.component.mjs +1 -1
  10. package/esm2020/lib/message/message.component.mjs +21 -6
  11. package/esm2020/lib/message-actions.service.mjs +5 -1
  12. package/esm2020/lib/message-input/message-input.component.mjs +30 -5
  13. package/esm2020/lib/message-preview.mjs +3 -2
  14. package/esm2020/lib/modal/modal.component.mjs +3 -3
  15. package/esm2020/lib/modal/stream-modal.module.mjs +19 -0
  16. package/esm2020/lib/notification-list/stream-notification.module.mjs +20 -0
  17. package/esm2020/lib/paginated-list/stream-paginated-list.module.mjs +20 -0
  18. package/esm2020/lib/polls/base-poll.component.mjs +87 -0
  19. package/esm2020/lib/polls/poll/poll.component.mjs +34 -0
  20. package/esm2020/lib/polls/poll-actions/add-option/add-option.component.mjs +67 -0
  21. package/esm2020/lib/polls/poll-actions/poll-actions.component.mjs +137 -0
  22. package/esm2020/lib/polls/poll-actions/poll-answers-list/poll-answers-list.component.mjs +82 -0
  23. package/esm2020/lib/polls/poll-actions/poll-results/poll-results-list/poll-results-list.component.mjs +63 -0
  24. package/esm2020/lib/polls/poll-actions/poll-results/poll-vote/poll-vote.component.mjs +33 -0
  25. package/esm2020/lib/polls/poll-actions/poll-results/poll-vote-results-list/poll-vote-results-list.component.mjs +82 -0
  26. package/esm2020/lib/polls/poll-actions/upsert-answer/upsert-answer.component.mjs +60 -0
  27. package/esm2020/lib/polls/poll-composer/poll-composer.component.mjs +134 -0
  28. package/esm2020/lib/polls/poll-composer/validators.mjs +18 -0
  29. package/esm2020/lib/polls/poll-header/poll-header.component.mjs +80 -0
  30. package/esm2020/lib/polls/poll-option-selector/poll-option-selector.component.mjs +137 -0
  31. package/esm2020/lib/polls/poll-options-list/poll-options-list.component.mjs +39 -0
  32. package/esm2020/lib/polls/poll-preview/poll-preview.component.mjs +31 -0
  33. package/esm2020/lib/polls/stream-polls.module.mjs +108 -0
  34. package/esm2020/lib/polls/unique.validator.mjs +13 -0
  35. package/esm2020/lib/stream-chat.module.mjs +26 -19
  36. package/esm2020/lib/types.mjs +1 -1
  37. package/esm2020/public-api.mjs +18 -1
  38. package/fesm2015/stream-chat-angular.mjs +1333 -61
  39. package/fesm2015/stream-chat-angular.mjs.map +1 -1
  40. package/fesm2020/stream-chat-angular.mjs +1291 -59
  41. package/fesm2020/stream-chat-angular.mjs.map +1 -1
  42. package/lib/channel.service.d.ts +2 -1
  43. package/lib/custom-templates.service.d.ts +14 -0
  44. package/lib/icon/icon.component.d.ts +1 -1
  45. package/lib/message/message.component.d.ts +1 -1
  46. package/lib/message-actions.service.d.ts +4 -0
  47. package/lib/message-input/message-input.component.d.ts +11 -1
  48. package/lib/message-preview.d.ts +1 -1
  49. package/lib/modal/stream-modal.module.d.ts +9 -0
  50. package/lib/notification-list/stream-notification.module.d.ts +10 -0
  51. package/lib/paginated-list/stream-paginated-list.module.d.ts +10 -0
  52. package/lib/polls/base-poll.component.d.ts +43 -0
  53. package/lib/polls/poll/poll.component.d.ts +12 -0
  54. package/lib/polls/poll-actions/add-option/add-option.component.d.ts +22 -0
  55. package/lib/polls/poll-actions/poll-actions.component.d.ts +50 -0
  56. package/lib/polls/poll-actions/poll-answers-list/poll-answers-list.component.d.ts +25 -0
  57. package/lib/polls/poll-actions/poll-results/poll-results-list/poll-results-list.component.d.ts +22 -0
  58. package/lib/polls/poll-actions/poll-results/poll-vote/poll-vote.component.d.ts +20 -0
  59. package/lib/polls/poll-actions/poll-results/poll-vote-results-list/poll-vote-results-list.component.d.ts +24 -0
  60. package/lib/polls/poll-actions/upsert-answer/upsert-answer.component.d.ts +27 -0
  61. package/lib/polls/poll-composer/poll-composer.component.d.ts +43 -0
  62. package/lib/polls/poll-composer/validators.d.ts +3 -0
  63. package/lib/polls/poll-header/poll-header.component.d.ts +19 -0
  64. package/lib/polls/poll-option-selector/poll-option-selector.component.d.ts +27 -0
  65. package/lib/polls/poll-options-list/poll-options-list.component.d.ts +17 -0
  66. package/lib/polls/poll-preview/poll-preview.component.d.ts +13 -0
  67. package/lib/polls/stream-polls.module.d.ts +26 -0
  68. package/lib/polls/unique.validator.d.ts +2 -0
  69. package/lib/stream-chat.module.d.ts +20 -19
  70. package/lib/types.d.ts +2 -1
  71. package/package.json +6 -2
  72. package/public-api.d.ts +17 -0
  73. package/src/assets/i18n/en.ts +46 -0
  74. package/src/assets/styles/css/index.css +1 -1
  75. package/src/assets/styles/css/index.layout.css +1 -1
  76. package/src/assets/styles/scss/AttachmentList/AttachmentList-layout.scss +50 -0
  77. package/src/assets/styles/scss/AttachmentList/AttachmentList-theme.scss +56 -0
  78. package/src/assets/styles/scss/AttachmentPreviewList/AttachmentPreviewList-layout.scss +4 -1
  79. package/src/assets/styles/scss/AttachmentPreviewList/AttachmentPreviewList-theme.scss +11 -0
  80. package/src/assets/styles/scss/Autocomplete/Autocomplete-layout.scss +14 -0
  81. package/src/assets/styles/scss/Autocomplete/Autocomplete-theme.scss +11 -0
  82. package/src/assets/styles/scss/Dialog/Dialog-layout.scss +13 -5
  83. package/src/assets/styles/scss/DropzoneContainer/DropzoneContainer-layout.scss +14 -0
  84. package/src/assets/styles/scss/DropzoneContainer/DropzoneContainer-theme.scss +17 -0
  85. package/src/assets/styles/scss/Form/Form-layout.scss +40 -0
  86. package/src/assets/styles/scss/Form/Form-theme.scss +75 -10
  87. package/src/assets/styles/scss/Icon/Icon-layout.scss +6 -0
  88. package/src/assets/styles/scss/Icon/Icon-theme.scss +4 -0
  89. package/src/assets/styles/scss/LinkPreview/LinkPreview-layout.scss +18 -0
  90. package/src/assets/styles/scss/LinkPreview/LinkPreview-theme.scss +15 -0
  91. package/src/assets/styles/scss/Location/Location-layout.scss +52 -0
  92. package/src/assets/styles/scss/Location/Location-theme.scss +32 -0
  93. package/src/assets/styles/scss/Message/Message-layout.scss +37 -2
  94. package/src/assets/styles/scss/Message/Message-theme.scss +40 -1
  95. package/src/assets/styles/scss/MessageActionsBox/MessageActionsBox-theme.scss +8 -0
  96. package/src/assets/styles/scss/MessageInput/MessageInput-layout.scss +32 -13
  97. package/src/assets/styles/scss/MessageInput/MessageInput-theme.scss +28 -20
  98. package/src/assets/styles/scss/Modal/Modal-layout.scss +2 -0
  99. package/src/assets/styles/scss/Modal/Modal-theme.scss +21 -6
  100. package/src/assets/styles/scss/Poll/Poll-layout.scss +45 -44
  101. package/src/assets/styles/scss/Poll/Poll-theme.scss +8 -36
  102. package/src/assets/styles/scss/_icons.scss +1 -0
  103. package/src/assets/styles/scss/index.layout.scss +3 -1
  104. package/src/assets/styles/scss/index.scss +2 -0
  105. package/src/assets/version.ts +1 -1
  106. /package/src/assets/styles/scss/DragAndDropContainer/{DragAmdDropContainer-layout.scss → DragAndDropContainer-layout.scss} +0 -0
@@ -52,10 +52,10 @@ export class ModalComponent {
52
52
  }
53
53
  }
54
54
  ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
55
- ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ModalComponent, selector: "stream-modal", inputs: { isOpen: "isOpen", content: "content" }, outputs: { isOpenChange: "isOpenChange" }, viewQueries: [{ propertyName: "innerContainer", first: true, predicate: ["modalInner"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n data-testid=\"modal\"\n class=\"str-chat__modal str-chat__modal--{{ isOpen ? 'open' : 'close' }}\"\n>\n <div\n data-testid=\"close\"\n class=\"str-chat__modal__close-button\"\n (click)=\"close()\"\n (keyup.enter)=\"close()\"\n >\n <stream-icon-placeholder icon=\"close\"></stream-icon-placeholder>\n </div>\n <div #modalInner class=\"str-chat__modal__inner\">\n <ng-container *ngIf=\"content; else elseContent\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n <ng-template #elseContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconPlaceholderComponent, selector: "stream-icon-placeholder", inputs: ["icon"] }] });
55
+ ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ModalComponent, selector: "stream-modal", inputs: { isOpen: "isOpen", content: "content" }, outputs: { isOpenChange: "isOpenChange" }, viewQueries: [{ propertyName: "innerContainer", first: true, predicate: ["modalInner"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n data-testid=\"modal\"\n class=\"str-chat__modal str-chat__modal--{{ isOpen ? 'open' : 'close' }}\"\n>\n <div\n data-testid=\"close\"\n class=\"str-chat__modal__close-button\"\n (click)=\"close()\"\n (keyup.enter)=\"close()\"\n >\n <stream-icon-placeholder icon=\"close\"></stream-icon-placeholder>\n </div>\n <div\n #modalInner\n class=\"str-chat__modal__inner\"\n (click)=\"$event.stopPropagation()\"\n (keyup.enter)=\"$event.stopPropagation()\"\n >\n <ng-container *ngIf=\"content; else elseContent\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n <ng-template #elseContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconPlaceholderComponent, selector: "stream-icon-placeholder", inputs: ["icon"] }] });
56
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalComponent, decorators: [{
57
57
  type: Component,
58
- args: [{ selector: 'stream-modal', template: "<div\n data-testid=\"modal\"\n class=\"str-chat__modal str-chat__modal--{{ isOpen ? 'open' : 'close' }}\"\n>\n <div\n data-testid=\"close\"\n class=\"str-chat__modal__close-button\"\n (click)=\"close()\"\n (keyup.enter)=\"close()\"\n >\n <stream-icon-placeholder icon=\"close\"></stream-icon-placeholder>\n </div>\n <div #modalInner class=\"str-chat__modal__inner\">\n <ng-container *ngIf=\"content; else elseContent\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n <ng-template #elseContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n</div>\n" }]
58
+ args: [{ selector: 'stream-modal', template: "<div\n data-testid=\"modal\"\n class=\"str-chat__modal str-chat__modal--{{ isOpen ? 'open' : 'close' }}\"\n>\n <div\n data-testid=\"close\"\n class=\"str-chat__modal__close-button\"\n (click)=\"close()\"\n (keyup.enter)=\"close()\"\n >\n <stream-icon-placeholder icon=\"close\"></stream-icon-placeholder>\n </div>\n <div\n #modalInner\n class=\"str-chat__modal__inner\"\n (click)=\"$event.stopPropagation()\"\n (keyup.enter)=\"$event.stopPropagation()\"\n >\n <ng-container *ngIf=\"content; else elseContent\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n <ng-template #elseContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n</div>\n" }]
59
59
  }], ctorParameters: function () { return []; }, propDecorators: { isOpen: [{
60
60
  type: Input
61
61
  }], content: [{
@@ -66,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
66
66
  type: ViewChild,
67
67
  args: ['modalInner']
68
68
  }] } });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21vZGFsL21vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tb2RhbC9tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQzs7OztBQUV2Qjs7R0FFRztBQU1ILE1BQU0sT0FBTyxjQUFjO0lBaUJ6QjtRQWhCQTs7V0FFRztRQUNNLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFLeEI7O1dBRUc7UUFDZ0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBNkJ0RCxxQkFBZ0IsR0FBRyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtZQUNsRCxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFO2dCQUMxQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDZDtRQUNILENBQUMsQ0FBQztRQUVNLHlCQUFvQixHQUFHLEdBQUcsRUFBRTtZQUNsQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQztRQUVNLDBCQUFxQixHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBYyxDQUFDLEVBQUU7Z0JBQ3RFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNkO1FBQ0gsQ0FBQyxDQUFDO0lBdENhLENBQUM7SUFFaEIsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2YsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDeEQsVUFBVSxDQUNSLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQ2xFLENBQUMsQ0FDRixDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2FBQzdCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFrQk8seUJBQXlCO1FBQy9CLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDbEUsQ0FBQzs7MkdBM0RVLGNBQWM7K0ZBQWQsY0FBYyxvUkNwQjNCLDhuQkFxQkE7MkZERGEsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxjQUFjOzBFQVFmLE1BQU07c0JBQWQsS0FBSztnQkFJRyxPQUFPO3NCQUFmLEtBQUs7Z0JBSWEsWUFBWTtzQkFBOUIsTUFBTTtnQkFDMEIsY0FBYztzQkFBOUMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogVGhlIGBNb2RhbGAgY29tcG9uZW50IGRpc3BsYXlzIGl0cyBjb250ZW50IGluIGFuIG92ZXJsYXkuIFRoZSBtb2RhbCBjYW4gYmUgY2xvc2VkIHdpdGggYSBjbG9zZSBidXR0b24sIGlmIHRoZSB1c2VyIGNsaWNrcyBvdXRzaWRlIG9mIHRoZSBtb2RhbCBjb250ZW50LCBvciBpZiB0aGUgZXNjYXBlIGJ1dHRvbiBpcyBwcmVzc2VkLiBUaGUgbW9kYWwgY2FuIGFsc28gYmUgY2xvc2VkIGZyb20gb3V0c2lkZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKipcbiAgICogSWYgYHRydWVgIHRoZSBtb2RhbCB3aWxsIGJlIGRpc3BsYXllZCwgaWYgYGZhbHNlYCB0aGUgbW9kYWwgd2lsbCBiZSBoaWRkZW5cbiAgICovXG4gIEBJbnB1dCgpIGlzT3BlbiA9IGZhbHNlO1xuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIG1vZGFsICAoY2FuIGFsc28gYmUgcHJvdmlkZWQgdXNpbmcgYG5nLWNvbnRlbnRgKVxuICAgKi9cbiAgQElucHV0KCkgY29udGVudDogVGVtcGxhdGVSZWY8dm9pZD4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBFbWl0cyBgdHJ1ZWAgaWYgdGhlIG1vZGFsIGJlY29tZXMgdmlzaWJsZSwgYW5kIGBmYWxzZWAgaWYgdGhlIG1vZGFsIGlzIGNsb3NlZC5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBpc09wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBWaWV3Q2hpbGQoJ21vZGFsSW5uZXInKSBwcml2YXRlIGlubmVyQ29udGFpbmVyOlxuICAgIHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgICB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmlzT3Blbikge1xuICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMud2F0Y2hGb3JFc2NQcmVzcyk7XG4gICAgICAgIHNldFRpbWVvdXQoXG4gICAgICAgICAgKCkgPT4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy53YXRjaEZvck91dHNpZGVDbGlja3MpLFxuICAgICAgICAgIDBcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RvcFdhdGNoRm9yT3V0c2lkZUNsaWNrcygpO1xuICAgICAgICB0aGlzLnN0b3BXYXRjaEZvckVzY1ByZXNzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICB0aGlzLnN0b3BXYXRjaEZvck91dHNpZGVDbGlja3MoKTtcbiAgICB0aGlzLnN0b3BXYXRjaEZvckVzY1ByZXNzKCk7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoRm9yRXNjUHJlc3MgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHN0b3BXYXRjaEZvckVzY1ByZXNzID0gKCkgPT4ge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMud2F0Y2hGb3JFc2NQcmVzcyk7XG4gIH07XG5cbiAgcHJpdmF0ZSB3YXRjaEZvck91dHNpZGVDbGlja3MgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgaWYgKCF0aGlzLmlubmVyQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHN0b3BXYXRjaEZvck91dHNpZGVDbGlja3MoKSB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy53YXRjaEZvck91dHNpZGVDbGlja3MpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGRhdGEtdGVzdGlkPVwibW9kYWxcIlxuICBjbGFzcz1cInN0ci1jaGF0X19tb2RhbCBzdHItY2hhdF9fbW9kYWwtLXt7IGlzT3BlbiA/ICdvcGVuJyA6ICdjbG9zZScgfX1cIlxuPlxuICA8ZGl2XG4gICAgZGF0YS10ZXN0aWQ9XCJjbG9zZVwiXG4gICAgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWxfX2Nsb3NlLWJ1dHRvblwiXG4gICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgIChrZXl1cC5lbnRlcik9XCJjbG9zZSgpXCJcbiAgPlxuICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlciBpY29uPVwiY2xvc2VcIj48L3N0cmVhbS1pY29uLXBsYWNlaG9sZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiAjbW9kYWxJbm5lciBjbGFzcz1cInN0ci1jaGF0X19tb2RhbF9faW5uZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudDsgZWxzZSBlbHNlQ29udGVudFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2Vsc2VDb250ZW50PlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21vZGFsL21vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tb2RhbC9tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQzs7OztBQUV2Qjs7R0FFRztBQU1ILE1BQU0sT0FBTyxjQUFjO0lBaUJ6QjtRQWhCQTs7V0FFRztRQUNNLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFLeEI7O1dBRUc7UUFDZ0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBNkJ0RCxxQkFBZ0IsR0FBRyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtZQUNsRCxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFO2dCQUMxQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDZDtRQUNILENBQUMsQ0FBQztRQUVNLHlCQUFvQixHQUFHLEdBQUcsRUFBRTtZQUNsQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQztRQUVNLDBCQUFxQixHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBYyxDQUFDLEVBQUU7Z0JBQ3RFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNkO1FBQ0gsQ0FBQyxDQUFDO0lBdENhLENBQUM7SUFFaEIsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2YsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDeEQsVUFBVSxDQUNSLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQ2xFLENBQUMsQ0FDRixDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2FBQzdCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFrQk8seUJBQXlCO1FBQy9CLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDbEUsQ0FBQzs7MkdBM0RVLGNBQWM7K0ZBQWQsY0FBYyxvUkNwQjNCLHN1QkEwQkE7MkZETmEsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxjQUFjOzBFQVFmLE1BQU07c0JBQWQsS0FBSztnQkFJRyxPQUFPO3NCQUFmLEtBQUs7Z0JBSWEsWUFBWTtzQkFBOUIsTUFBTTtnQkFDMEIsY0FBYztzQkFBOUMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogVGhlIGBNb2RhbGAgY29tcG9uZW50IGRpc3BsYXlzIGl0cyBjb250ZW50IGluIGFuIG92ZXJsYXkuIFRoZSBtb2RhbCBjYW4gYmUgY2xvc2VkIHdpdGggYSBjbG9zZSBidXR0b24sIGlmIHRoZSB1c2VyIGNsaWNrcyBvdXRzaWRlIG9mIHRoZSBtb2RhbCBjb250ZW50LCBvciBpZiB0aGUgZXNjYXBlIGJ1dHRvbiBpcyBwcmVzc2VkLiBUaGUgbW9kYWwgY2FuIGFsc28gYmUgY2xvc2VkIGZyb20gb3V0c2lkZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKipcbiAgICogSWYgYHRydWVgIHRoZSBtb2RhbCB3aWxsIGJlIGRpc3BsYXllZCwgaWYgYGZhbHNlYCB0aGUgbW9kYWwgd2lsbCBiZSBoaWRkZW5cbiAgICovXG4gIEBJbnB1dCgpIGlzT3BlbiA9IGZhbHNlO1xuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIG1vZGFsICAoY2FuIGFsc28gYmUgcHJvdmlkZWQgdXNpbmcgYG5nLWNvbnRlbnRgKVxuICAgKi9cbiAgQElucHV0KCkgY29udGVudDogVGVtcGxhdGVSZWY8dm9pZD4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBFbWl0cyBgdHJ1ZWAgaWYgdGhlIG1vZGFsIGJlY29tZXMgdmlzaWJsZSwgYW5kIGBmYWxzZWAgaWYgdGhlIG1vZGFsIGlzIGNsb3NlZC5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBpc09wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBWaWV3Q2hpbGQoJ21vZGFsSW5uZXInKSBwcml2YXRlIGlubmVyQ29udGFpbmVyOlxuICAgIHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgICB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmlzT3Blbikge1xuICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMud2F0Y2hGb3JFc2NQcmVzcyk7XG4gICAgICAgIHNldFRpbWVvdXQoXG4gICAgICAgICAgKCkgPT4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy53YXRjaEZvck91dHNpZGVDbGlja3MpLFxuICAgICAgICAgIDBcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RvcFdhdGNoRm9yT3V0c2lkZUNsaWNrcygpO1xuICAgICAgICB0aGlzLnN0b3BXYXRjaEZvckVzY1ByZXNzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICB0aGlzLnN0b3BXYXRjaEZvck91dHNpZGVDbGlja3MoKTtcbiAgICB0aGlzLnN0b3BXYXRjaEZvckVzY1ByZXNzKCk7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoRm9yRXNjUHJlc3MgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHN0b3BXYXRjaEZvckVzY1ByZXNzID0gKCkgPT4ge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMud2F0Y2hGb3JFc2NQcmVzcyk7XG4gIH07XG5cbiAgcHJpdmF0ZSB3YXRjaEZvck91dHNpZGVDbGlja3MgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgaWYgKCF0aGlzLmlubmVyQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHN0b3BXYXRjaEZvck91dHNpZGVDbGlja3MoKSB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy53YXRjaEZvck91dHNpZGVDbGlja3MpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGRhdGEtdGVzdGlkPVwibW9kYWxcIlxuICBjbGFzcz1cInN0ci1jaGF0X19tb2RhbCBzdHItY2hhdF9fbW9kYWwtLXt7IGlzT3BlbiA/ICdvcGVuJyA6ICdjbG9zZScgfX1cIlxuPlxuICA8ZGl2XG4gICAgZGF0YS10ZXN0aWQ9XCJjbG9zZVwiXG4gICAgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWxfX2Nsb3NlLWJ1dHRvblwiXG4gICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgIChrZXl1cC5lbnRlcik9XCJjbG9zZSgpXCJcbiAgPlxuICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlciBpY29uPVwiY2xvc2VcIj48L3N0cmVhbS1pY29uLXBsYWNlaG9sZGVyPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICNtb2RhbElubmVyXG4gICAgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWxfX2lubmVyXCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAoa2V5dXAuZW50ZXIpPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50OyBlbHNlIGVsc2VDb250ZW50XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZWxzZUNvbnRlbnQ+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,19 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ModalComponent } from './modal.component';
4
+ import { IconModule } from '../icon/icon.module';
5
+ import * as i0 from "@angular/core";
6
+ export class StreamModalModule {
7
+ }
8
+ StreamModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ StreamModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: StreamModalModule, declarations: [ModalComponent], imports: [CommonModule, IconModule], exports: [ModalComponent] });
10
+ StreamModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamModalModule, imports: [CommonModule, IconModule] });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamModalModule, decorators: [{
12
+ type: NgModule,
13
+ args: [{
14
+ declarations: [ModalComponent],
15
+ imports: [CommonModule, IconModule],
16
+ exports: [ModalComponent],
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLW1vZGFsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tb2RhbC9zdHJlYW0tbW9kYWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBT2pELE1BQU0sT0FBTyxpQkFBaUI7OzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixpQkFKYixjQUFjLGFBQ25CLFlBQVksRUFBRSxVQUFVLGFBQ3hCLGNBQWM7K0dBRWIsaUJBQWlCLFlBSGxCLFlBQVksRUFBRSxVQUFVOzJGQUd2QixpQkFBaUI7a0JBTDdCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDO29CQUM5QixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDO29CQUNuQyxPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25Nb2R1bGUgfSBmcm9tICcuLi9pY29uL2ljb24ubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTW9kYWxDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJY29uTW9kdWxlXSxcbiAgZXhwb3J0czogW01vZGFsQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU3RyZWFtTW9kYWxNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { NotificationListComponent } from './notification-list.component';
3
+ import { NotificationComponent } from '../notification/notification.component';
4
+ import { CommonModule } from '@angular/common';
5
+ import { TranslateModule } from '@ngx-translate/core';
6
+ import * as i0 from "@angular/core";
7
+ export class StreamNotificationModule {
8
+ }
9
+ StreamNotificationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamNotificationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ StreamNotificationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: StreamNotificationModule, declarations: [NotificationComponent, NotificationListComponent], imports: [CommonModule, TranslateModule], exports: [NotificationComponent, NotificationListComponent] });
11
+ StreamNotificationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamNotificationModule, imports: [CommonModule, TranslateModule] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamNotificationModule, decorators: [{
13
+ type: NgModule,
14
+ args: [{
15
+ declarations: [NotificationComponent, NotificationListComponent],
16
+ imports: [CommonModule, TranslateModule],
17
+ exports: [NotificationComponent, NotificationListComponent],
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLW5vdGlmaWNhdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbm90aWZpY2F0aW9uLWxpc3Qvc3RyZWFtLW5vdGlmaWNhdGlvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQU90RCxNQUFNLE9BQU8sd0JBQXdCOztxSEFBeEIsd0JBQXdCO3NIQUF4Qix3QkFBd0IsaUJBSnBCLHFCQUFxQixFQUFFLHlCQUF5QixhQUNyRCxZQUFZLEVBQUUsZUFBZSxhQUM3QixxQkFBcUIsRUFBRSx5QkFBeUI7c0hBRS9DLHdCQUF3QixZQUh6QixZQUFZLEVBQUUsZUFBZTsyRkFHNUIsd0JBQXdCO2tCQUxwQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHFCQUFxQixFQUFFLHlCQUF5QixDQUFDO29CQUNoRSxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDO29CQUN4QyxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSx5QkFBeUIsQ0FBQztpQkFDNUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uTGlzdENvbXBvbmVudCB9IGZyb20gJy4vbm90aWZpY2F0aW9uLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTm90aWZpY2F0aW9uQ29tcG9uZW50LCBOb3RpZmljYXRpb25MaXN0Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgZXhwb3J0czogW05vdGlmaWNhdGlvbkNvbXBvbmVudCwgTm90aWZpY2F0aW9uTGlzdENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFN0cmVhbU5vdGlmaWNhdGlvbk1vZHVsZSB7fVxuIl19
@@ -0,0 +1,20 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { PaginatedListComponent } from './paginated-list.component';
3
+ import { CommonModule } from '@angular/common';
4
+ import { TranslateModule } from '@ngx-translate/core';
5
+ import { IconModule } from '../icon/icon.module';
6
+ import * as i0 from "@angular/core";
7
+ export class StreamPaginatedListModule {
8
+ }
9
+ StreamPaginatedListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamPaginatedListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ StreamPaginatedListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: StreamPaginatedListModule, declarations: [PaginatedListComponent], imports: [CommonModule, TranslateModule, IconModule], exports: [PaginatedListComponent] });
11
+ StreamPaginatedListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamPaginatedListModule, imports: [CommonModule, TranslateModule, IconModule] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamPaginatedListModule, decorators: [{
13
+ type: NgModule,
14
+ args: [{
15
+ declarations: [PaginatedListComponent],
16
+ imports: [CommonModule, TranslateModule, IconModule],
17
+ exports: [PaginatedListComponent],
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLXBhZ2luYXRlZC1saXN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9wYWdpbmF0ZWQtbGlzdC9zdHJlYW0tcGFnaW5hdGVkLWxpc3QubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBT2pELE1BQU0sT0FBTyx5QkFBeUI7O3NIQUF6Qix5QkFBeUI7dUhBQXpCLHlCQUF5QixpQkFKckIsc0JBQXNCLGFBQzNCLFlBQVksRUFBRSxlQUFlLEVBQUUsVUFBVSxhQUN6QyxzQkFBc0I7dUhBRXJCLHlCQUF5QixZQUgxQixZQUFZLEVBQUUsZUFBZSxFQUFFLFVBQVU7MkZBR3hDLHlCQUF5QjtrQkFMckMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDdEMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUM7b0JBQ3BELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYWdpbmF0ZWRMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9wYWdpbmF0ZWQtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgSWNvbk1vZHVsZSB9IGZyb20gJy4uL2ljb24vaWNvbi5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtQYWdpbmF0ZWRMaXN0Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBJY29uTW9kdWxlXSxcbiAgZXhwb3J0czogW1BhZ2luYXRlZExpc3RDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTdHJlYW1QYWdpbmF0ZWRMaXN0TW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,87 @@
1
+ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../custom-templates.service";
4
+ import * as i2 from "../chat-client.service";
5
+ import * as i3 from "../channel.service";
6
+ import * as i4 from "../notification.service";
7
+ /**
8
+ * @internal
9
+ */
10
+ export class BasePollComponent {
11
+ constructor(customTemplatesService, chatClientService, cdRef, channelService, notificationService) {
12
+ this.customTemplatesService = customTemplatesService;
13
+ this.chatClientService = chatClientService;
14
+ this.cdRef = cdRef;
15
+ this.channelService = channelService;
16
+ this.notificationService = notificationService;
17
+ this.canVote = false;
18
+ this.canQueryVotes = false;
19
+ this.isViewInited = false;
20
+ this.capabilitySubscription = this.channelService.activeChannel$.subscribe((channel) => {
21
+ if (channel) {
22
+ const capabilities = channel.data?.own_capabilities;
23
+ this.canVote = capabilities.indexOf('cast-poll-vote') !== -1;
24
+ this.canQueryVotes = capabilities.indexOf('query-poll-votes') !== -1;
25
+ }
26
+ });
27
+ }
28
+ ngOnChanges(changes) {
29
+ if (changes['pollId']) {
30
+ if (this.pollId) {
31
+ this.setupStateStoreSelector();
32
+ }
33
+ else {
34
+ this.pollStateUnsubscribe?.();
35
+ }
36
+ this.dismissNotificationFn?.();
37
+ }
38
+ }
39
+ ngAfterViewInit() {
40
+ this.isViewInited = true;
41
+ }
42
+ ngOnDestroy() {
43
+ this.pollStateUnsubscribe?.();
44
+ this.dismissNotificationFn?.();
45
+ this.capabilitySubscription?.unsubscribe();
46
+ }
47
+ get poll() {
48
+ return this.chatClientService.chatClient.polls.fromState(this.pollId ?? '');
49
+ }
50
+ setupStateStoreSelector() {
51
+ this.pollStateUnsubscribe?.();
52
+ const poll = this.chatClientService.chatClient.polls.fromState(this.pollId ?? '');
53
+ if (poll) {
54
+ this.pollStateUnsubscribe = this.stateStoreSelector(poll, () => {
55
+ this.markForCheck();
56
+ });
57
+ }
58
+ }
59
+ addNotification(...args) {
60
+ this.dismissNotificationFn?.();
61
+ this.dismissNotificationFn =
62
+ this.notificationService.addTemporaryNotification(...args);
63
+ }
64
+ get currentUser() {
65
+ return this.chatClientService.chatClient.user;
66
+ }
67
+ markForCheck() {
68
+ if (this.isViewInited) {
69
+ this.cdRef.detectChanges();
70
+ }
71
+ }
72
+ }
73
+ BasePollComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BasePollComponent, deps: [{ token: i1.CustomTemplatesService }, { token: i2.ChatClientService }, { token: i0.ChangeDetectorRef }, { token: i3.ChannelService }, { token: i4.NotificationService }], target: i0.ɵɵFactoryTarget.Component });
74
+ BasePollComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: BasePollComponent, selector: "stream-base-poll", inputs: { pollId: "pollId", messageId: "messageId" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BasePollComponent, decorators: [{
76
+ type: Component,
77
+ args: [{
78
+ selector: 'stream-base-poll',
79
+ template: '',
80
+ changeDetection: ChangeDetectionStrategy.OnPush,
81
+ }]
82
+ }], ctorParameters: function () { return [{ type: i1.CustomTemplatesService }, { type: i2.ChatClientService }, { type: i0.ChangeDetectorRef }, { type: i3.ChannelService }, { type: i4.NotificationService }]; }, propDecorators: { pollId: [{
83
+ type: Input
84
+ }], messageId: [{
85
+ type: Input
86
+ }] } });
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wb2xsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9wb2xscy9iYXNlLXBvbGwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULEtBQUssR0FJTixNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUXZCOztHQUVHO0FBTUgsTUFBTSxPQUFnQixpQkFBaUI7SUFrQnJDLFlBQ1Msc0JBQThDLEVBQzdDLGlCQUFvQyxFQUNwQyxLQUF3QixFQUN4QixjQUE4QixFQUM1QixtQkFBd0M7UUFKM0MsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM3QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM1Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBWnBELFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFZCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQVczQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUN4RSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ1YsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxnQkFBNEIsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQzdELElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ3RFO1FBQ0gsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3JCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDZixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQzthQUNoQztpQkFBTTtnQkFDTCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO2FBQy9CO1lBQ0QsSUFBSSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFjLElBQUk7UUFDaEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRVMsdUJBQXVCO1FBQy9CLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7UUFDOUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUM1RCxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FDbEIsQ0FBQztRQUNGLElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUM3RCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFUyxlQUFlLENBQ3ZCLEdBQUcsSUFFRjtRQUVELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLHFCQUFxQjtZQUN4QixJQUFJLENBQUMsbUJBQW1CLENBQUMsd0JBQXdCLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBT0QsSUFBYyxXQUFXO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDaEQsQ0FBQztJQUVTLFlBQVk7UUFDcEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDOzs4R0FoR21CLGlCQUFpQjtrR0FBakIsaUJBQWlCLG1JQUgzQixFQUFFOzJGQUdRLGlCQUFpQjtrQkFMdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7NE9BT1UsTUFBTTtzQkFBZCxLQUFLO2dCQUlHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBQb2xsLCBVc2VyIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vY3VzdG9tLXRlbXBsYXRlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1iYXNlLXBvbGwnLFxuICB0ZW1wbGF0ZTogJycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlUG9sbENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBUaGUgcG9sbCBpZCB0byBkaXNwbGF5XG4gICAqL1xuICBASW5wdXQoKSBwb2xsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIGlkIHRoZSBwb2xsIGlzIGF0dGFjaGVkIHRvXG4gICAqL1xuICBASW5wdXQoKSBtZXNzYWdlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgY2FuVm90ZSA9IGZhbHNlO1xuICBjYW5RdWVyeVZvdGVzID0gZmFsc2U7XG4gIHByaXZhdGUgcG9sbFN0YXRlVW5zdWJzY3JpYmU/OiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIGlzVmlld0luaXRlZCA9IGZhbHNlO1xuICBwcml2YXRlIGNhcGFiaWxpdHlTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBkaXNtaXNzTm90aWZpY2F0aW9uRm46ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY3VzdG9tVGVtcGxhdGVzU2VydmljZTogQ3VzdG9tVGVtcGxhdGVzU2VydmljZSxcbiAgICBwcml2YXRlIGNoYXRDbGllbnRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZSxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLmNhcGFiaWxpdHlTdWJzY3JpcHRpb24gPSB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWwkLnN1YnNjcmliZShcbiAgICAgIChjaGFubmVsKSA9PiB7XG4gICAgICAgIGlmIChjaGFubmVsKSB7XG4gICAgICAgICAgY29uc3QgY2FwYWJpbGl0aWVzID0gY2hhbm5lbC5kYXRhPy5vd25fY2FwYWJpbGl0aWVzIGFzIHN0cmluZ1tdO1xuICAgICAgICAgIHRoaXMuY2FuVm90ZSA9IGNhcGFiaWxpdGllcy5pbmRleE9mKCdjYXN0LXBvbGwtdm90ZScpICE9PSAtMTtcbiAgICAgICAgICB0aGlzLmNhblF1ZXJ5Vm90ZXMgPSBjYXBhYmlsaXRpZXMuaW5kZXhPZigncXVlcnktcG9sbC12b3RlcycpICE9PSAtMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3BvbGxJZCddKSB7XG4gICAgICBpZiAodGhpcy5wb2xsSWQpIHtcbiAgICAgICAgdGhpcy5zZXR1cFN0YXRlU3RvcmVTZWxlY3RvcigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wb2xsU3RhdGVVbnN1YnNjcmliZT8uKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmRpc21pc3NOb3RpZmljYXRpb25Gbj8uKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNWaWV3SW5pdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucG9sbFN0YXRlVW5zdWJzY3JpYmU/LigpO1xuICAgIHRoaXMuZGlzbWlzc05vdGlmaWNhdGlvbkZuPy4oKTtcbiAgICB0aGlzLmNhcGFiaWxpdHlTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHBvbGwoKTogUG9sbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudC5wb2xscy5mcm9tU3RhdGUodGhpcy5wb2xsSWQgPz8gJycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwU3RhdGVTdG9yZVNlbGVjdG9yKCk6IHZvaWQge1xuICAgIHRoaXMucG9sbFN0YXRlVW5zdWJzY3JpYmU/LigpO1xuICAgIGNvbnN0IHBvbGwgPSB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQucG9sbHMuZnJvbVN0YXRlKFxuICAgICAgdGhpcy5wb2xsSWQgPz8gJydcbiAgICApO1xuICAgIGlmIChwb2xsKSB7XG4gICAgICB0aGlzLnBvbGxTdGF0ZVVuc3Vic2NyaWJlID0gdGhpcy5zdGF0ZVN0b3JlU2VsZWN0b3IocG9sbCwgKCkgPT4ge1xuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFkZE5vdGlmaWNhdGlvbihcbiAgICAuLi5hcmdzOiBQYXJhbWV0ZXJzPFxuICAgICAgdHlwZW9mIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5hZGRUZW1wb3JhcnlOb3RpZmljYXRpb25cbiAgICA+XG4gICkge1xuICAgIHRoaXMuZGlzbWlzc05vdGlmaWNhdGlvbkZuPy4oKTtcbiAgICB0aGlzLmRpc21pc3NOb3RpZmljYXRpb25GbiA9XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHN0YXRlU3RvcmVTZWxlY3RvcihcbiAgICBwb2xsOiBQb2xsLFxuICAgIG1hcmtGb3JDaGVjazogKCkgPT4gdm9pZFxuICApOiAoKSA9PiB2b2lkO1xuXG4gIHByb3RlY3RlZCBnZXQgY3VycmVudFVzZXIoKTogVXNlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudC51c2VyO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtGb3JDaGVjaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1ZpZXdJbml0ZWQpIHtcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,34 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { BasePollComponent } from '../base-poll.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "../poll-header/poll-header.component";
6
+ import * as i3 from "../poll-options-list/poll-options-list.component";
7
+ import * as i4 from "../poll-actions/poll-actions.component";
8
+ /**
9
+ *
10
+ */
11
+ export class PollComponent extends BasePollComponent {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.isClosed = false;
15
+ }
16
+ stateStoreSelector(poll, markForCheck) {
17
+ const unsubscribe = poll.state.subscribeWithSelector((state) => {
18
+ return {
19
+ is_closed: state.is_closed,
20
+ };
21
+ }, (state) => {
22
+ this.isClosed = state.is_closed ?? false;
23
+ markForCheck();
24
+ });
25
+ return unsubscribe;
26
+ }
27
+ }
28
+ PollComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
29
+ PollComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PollComponent, selector: "stream-poll", usesInheritance: true, ngImport: i0, template: "<div class=\"str-chat__poll\" [class.str-chat__poll--closed]=\"isClosed\">\n <div #header><ng-content select=\"[poll-header]\"></ng-content></div>\n <ng-container *ngIf=\"!header.hasChildNodes()\">\n <stream-poll-header [pollId]=\"pollId\" [messageId]=\"messageId\">\n </stream-poll-header>\n </ng-container>\n <div #options><ng-content select=\"[poll-options-list]\"></ng-content></div>\n <ng-container *ngIf=\"!options.hasChildNodes()\">\n <stream-poll-options-list [pollId]=\"pollId\" [messageId]=\"messageId\">\n </stream-poll-options-list>\n </ng-container>\n <div #actions><ng-content select=\"[poll-actions]\"></ng-content></div>\n <ng-container *ngIf=\"!actions.hasChildNodes()\">\n <stream-poll-actions [pollId]=\"pollId\" [messageId]=\"messageId\">\n </stream-poll-actions>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PollHeaderComponent, selector: "stream-poll-header" }, { kind: "component", type: i3.PollOptionsListComponent, selector: "stream-poll-options-list", inputs: ["maxOptionsDisplayed"] }, { kind: "component", type: i4.PollActionsComponent, selector: "stream-poll-actions", inputs: ["maxOptionsDisplayed", "maxPollOptions"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollComponent, decorators: [{
31
+ type: Component,
32
+ args: [{ selector: 'stream-poll', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"str-chat__poll\" [class.str-chat__poll--closed]=\"isClosed\">\n <div #header><ng-content select=\"[poll-header]\"></ng-content></div>\n <ng-container *ngIf=\"!header.hasChildNodes()\">\n <stream-poll-header [pollId]=\"pollId\" [messageId]=\"messageId\">\n </stream-poll-header>\n </ng-container>\n <div #options><ng-content select=\"[poll-options-list]\"></ng-content></div>\n <ng-container *ngIf=\"!options.hasChildNodes()\">\n <stream-poll-options-list [pollId]=\"pollId\" [messageId]=\"messageId\">\n </stream-poll-options-list>\n </ng-container>\n <div #actions><ng-content select=\"[poll-actions]\"></ng-content></div>\n <ng-container *ngIf=\"!actions.hasChildNodes()\">\n <stream-poll-actions [pollId]=\"pollId\" [messageId]=\"messageId\">\n </stream-poll-actions>\n </ng-container>\n</div>\n" }]
33
+ }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvcG9sbHMvcG9sbC9wb2xsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9wb2xscy9wb2xsL3BvbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7O0FBRzNEOztHQUVHO0FBT0gsTUFBTSxPQUFPLGFBQWMsU0FBUSxpQkFBaUI7SUFOcEQ7O1FBT0UsYUFBUSxHQUFHLEtBQUssQ0FBQztLQW9CbEI7SUFsQlcsa0JBQWtCLENBQzFCLElBQVUsRUFDVixZQUF3QjtRQUV4QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUNsRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsT0FBTztnQkFDTCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7YUFDM0IsQ0FBQztRQUNKLENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQztZQUN6QyxZQUFZLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQ0YsQ0FBQztRQUVGLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7OzBHQXBCVSxhQUFhOzhGQUFiLGFBQWEsMEVDYjFCLHcwQkFpQkE7MkZESmEsYUFBYTtrQkFOekIsU0FBUzsrQkFDRSxhQUFhLG1CQUdOLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlUG9sbENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtcG9sbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9sbCB9IGZyb20gJ3N0cmVhbS1jaGF0JztcblxuLyoqXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tcG9sbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wb2xsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBvbGxDb21wb25lbnQgZXh0ZW5kcyBCYXNlUG9sbENvbXBvbmVudCB7XG4gIGlzQ2xvc2VkID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIHN0YXRlU3RvcmVTZWxlY3RvcihcbiAgICBwb2xsOiBQb2xsLFxuICAgIG1hcmtGb3JDaGVjazogKCkgPT4gdm9pZFxuICApOiAoKSA9PiB2b2lkIHtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9IHBvbGwuc3RhdGUuc3Vic2NyaWJlV2l0aFNlbGVjdG9yKFxuICAgICAgKHN0YXRlKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaXNfY2xvc2VkOiBzdGF0ZS5pc19jbG9zZWQsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgKHN0YXRlKSA9PiB7XG4gICAgICAgIHRoaXMuaXNDbG9zZWQgPSBzdGF0ZS5pc19jbG9zZWQgPz8gZmFsc2U7XG4gICAgICAgIG1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gdW5zdWJzY3JpYmU7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzdHItY2hhdF9fcG9sbFwiIFtjbGFzcy5zdHItY2hhdF9fcG9sbC0tY2xvc2VkXT1cImlzQ2xvc2VkXCI+XG4gIDxkaXYgI2hlYWRlcj48bmctY29udGVudCBzZWxlY3Q9XCJbcG9sbC1oZWFkZXJdXCI+PC9uZy1jb250ZW50PjwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhlYWRlci5oYXNDaGlsZE5vZGVzKClcIj5cbiAgICA8c3RyZWFtLXBvbGwtaGVhZGVyIFtwb2xsSWRdPVwicG9sbElkXCIgW21lc3NhZ2VJZF09XCJtZXNzYWdlSWRcIj5cbiAgICA8L3N0cmVhbS1wb2xsLWhlYWRlcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXYgI29wdGlvbnM+PG5nLWNvbnRlbnQgc2VsZWN0PVwiW3BvbGwtb3B0aW9ucy1saXN0XVwiPjwvbmctY29udGVudD48L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFvcHRpb25zLmhhc0NoaWxkTm9kZXMoKVwiPlxuICAgIDxzdHJlYW0tcG9sbC1vcHRpb25zLWxpc3QgW3BvbGxJZF09XCJwb2xsSWRcIiBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiPlxuICAgIDwvc3RyZWFtLXBvbGwtb3B0aW9ucy1saXN0PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdiAjYWN0aW9ucz48bmctY29udGVudCBzZWxlY3Q9XCJbcG9sbC1hY3Rpb25zXVwiPjwvbmctY29udGVudD48L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhY3Rpb25zLmhhc0NoaWxkTm9kZXMoKVwiPlxuICAgIDxzdHJlYW0tcG9sbC1hY3Rpb25zIFtwb2xsSWRdPVwicG9sbElkXCIgW21lc3NhZ2VJZF09XCJtZXNzYWdlSWRcIj5cbiAgICA8L3N0cmVhbS1wb2xsLWFjdGlvbnM+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,67 @@
1
+ import { ChangeDetectionStrategy, Component, HostBinding, Input, } from '@angular/core';
2
+ import { FormControl, FormGroup, Validators } from '@angular/forms';
3
+ import { BasePollComponent } from '../../base-poll.component';
4
+ import { createUniqueValidator } from '../../unique.validator';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/forms";
7
+ import * as i2 from "@ngx-translate/core";
8
+ /**
9
+ *
10
+ */
11
+ export class AddOptionComponent extends BasePollComponent {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.class = 'str-chat__dialog';
15
+ /**
16
+ * The callback to close the modal the component is displayed in
17
+ */
18
+ this.closeModal = () => { };
19
+ this.formGroup = new FormGroup({
20
+ text: new FormControl('', [
21
+ Validators.required,
22
+ createUniqueValidator((value) => {
23
+ return !this.options.some((option) => option.text.trim().toLowerCase() === value.trim().toLowerCase());
24
+ }),
25
+ ]),
26
+ });
27
+ this.options = [];
28
+ }
29
+ async addOption() {
30
+ if (this.formGroup.invalid || !this.messageId) {
31
+ return;
32
+ }
33
+ try {
34
+ await this.poll?.createOption({
35
+ text: this.formGroup.value.text,
36
+ });
37
+ this.closeModal();
38
+ this.markForCheck();
39
+ }
40
+ catch (error) {
41
+ this.notificationService.addTemporaryNotification('streamChat.Failed to add option ({{ message }})', 'error', undefined, { message: error });
42
+ this.markForCheck();
43
+ throw error;
44
+ }
45
+ }
46
+ stateStoreSelector(poll, markForCheck) {
47
+ const unsubscribe = poll.state.subscribeWithSelector((state) => ({
48
+ options: state.options,
49
+ }), (state) => {
50
+ this.options = state.options;
51
+ markForCheck();
52
+ });
53
+ return unsubscribe;
54
+ }
55
+ }
56
+ AddOptionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AddOptionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
57
+ AddOptionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AddOptionComponent, selector: "stream-add-option", inputs: { closeModal: "closeModal" }, host: { properties: { "class": "this.class" } }, usesInheritance: true, ngImport: i0, template: "<div\n class=\"str-chat__dialog str-chat__dialog--form str-chat__prompt-dialog str-chat__modal__suggest-poll-option\"\n>\n <div class=\"str-chat__dialog__body\">\n <div class=\"str-chat__dialog__title\">\n {{ \"streamChat.Suggest an option\" | translate }}\n </div>\n <form [formGroup]=\"formGroup\">\n <div class=\"str-chat__dialog__field\">\n <input formControlName=\"text\" id=\"text\" type=\"text\" />\n <div class=\"str-chat__form-field-error\">\n {{\n formGroup.get(\"text\")?.errors?.duplicate\n ? (\"streamChat.Option already exists\" | translate)\n : \"\"\n }}\n </div>\n </div>\n <div class=\"str-chat__dialog__controls\">\n <button\n class=\"str-chat__dialog__controls-button str-chat__dialog__controls-button--cancel\"\n type=\"button\"\n (click)=\"closeModal()\"\n (keyup.enter)=\"closeModal()\"\n >\n {{ \"streamChat.Cancel\" | translate }}\n </button>\n <button\n class=\"str-chat__dialog__controls-button str-chat__dialog__controls-button--submit\"\n type=\"submit\"\n (click)=\"addOption()\"\n (keyup.enter)=\"addOption()\"\n [disabled]=\"formGroup.invalid\"\n >\n {{ \"streamChat.Send\" | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AddOptionComponent, decorators: [{
59
+ type: Component,
60
+ args: [{ selector: 'stream-add-option', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"str-chat__dialog str-chat__dialog--form str-chat__prompt-dialog str-chat__modal__suggest-poll-option\"\n>\n <div class=\"str-chat__dialog__body\">\n <div class=\"str-chat__dialog__title\">\n {{ \"streamChat.Suggest an option\" | translate }}\n </div>\n <form [formGroup]=\"formGroup\">\n <div class=\"str-chat__dialog__field\">\n <input formControlName=\"text\" id=\"text\" type=\"text\" />\n <div class=\"str-chat__form-field-error\">\n {{\n formGroup.get(\"text\")?.errors?.duplicate\n ? (\"streamChat.Option already exists\" | translate)\n : \"\"\n }}\n </div>\n </div>\n <div class=\"str-chat__dialog__controls\">\n <button\n class=\"str-chat__dialog__controls-button str-chat__dialog__controls-button--cancel\"\n type=\"button\"\n (click)=\"closeModal()\"\n (keyup.enter)=\"closeModal()\"\n >\n {{ \"streamChat.Cancel\" | translate }}\n </button>\n <button\n class=\"str-chat__dialog__controls-button str-chat__dialog__controls-button--submit\"\n type=\"submit\"\n (click)=\"addOption()\"\n (keyup.enter)=\"addOption()\"\n [disabled]=\"formGroup.invalid\"\n >\n {{ \"streamChat.Send\" | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n" }]
61
+ }], propDecorators: { class: [{
62
+ type: HostBinding,
63
+ args: ['class']
64
+ }], closeModal: [{
65
+ type: Input
66
+ }] } });
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW9wdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvcG9sbHMvcG9sbC1hY3Rpb25zL2FkZC1vcHRpb24vYWRkLW9wdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvcG9sbHMvcG9sbC1hY3Rpb25zL2FkZC1vcHRpb24vYWRkLW9wdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBRS9EOztHQUVHO0FBT0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGlCQUFpQjtJQU56RDs7UUFPd0IsVUFBSyxHQUFHLGtCQUFrQixDQUFDO1FBQ2pEOztXQUVHO1FBQ00sZUFBVSxHQUFlLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUMzQyxjQUFTLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDeEIsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRTtnQkFDeEIsVUFBVSxDQUFDLFFBQVE7Z0JBQ25CLHFCQUFxQixDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDdkIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNULE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUNsRSxDQUFDO2dCQUNKLENBQUMsQ0FBQzthQUNILENBQUM7U0FDSCxDQUFDLENBQUM7UUFDSCxZQUFPLEdBQWlCLEVBQUUsQ0FBQztLQXdDNUI7SUF0Q0MsS0FBSyxDQUFDLFNBQVM7UUFDYixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUM3QyxPQUFPO1NBQ1I7UUFDRCxJQUFJO1lBQ0YsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQztnQkFDNUIsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUs7YUFDakMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHdCQUF3QixDQUMvQyxpREFBaUQsRUFDakQsT0FBTyxFQUNQLFNBQVMsRUFDVCxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FDbkIsQ0FBQztZQUNGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixNQUFNLEtBQUssQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVTLGtCQUFrQixDQUMxQixJQUFVLEVBQ1YsWUFBd0I7UUFFeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FDbEQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDVixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDdkIsQ0FBQyxFQUNGLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDN0IsWUFBWSxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUNGLENBQUM7UUFFRixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDOzsrR0F4RFUsa0JBQWtCO21HQUFsQixrQkFBa0IsdUtDcEIvQixvNUNBd0NBOzJGRHBCYSxrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0UsbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU07OEJBR3pCLEtBQUs7c0JBQTFCLFdBQVc7dUJBQUMsT0FBTztnQkFJWCxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCYXNlUG9sbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UtcG9sbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9sbCwgUG9sbE9wdGlvbiB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IGNyZWF0ZVVuaXF1ZVZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3VuaXF1ZS52YWxpZGF0b3InO1xuXG4vKipcbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1hZGQtb3B0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1vcHRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQWRkT3B0aW9uQ29tcG9uZW50IGV4dGVuZHMgQmFzZVBvbGxDb21wb25lbnQge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3MgPSAnc3RyLWNoYXRfX2RpYWxvZyc7XG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgdG8gY2xvc2UgdGhlIG1vZGFsIHRoZSBjb21wb25lbnQgaXMgZGlzcGxheWVkIGluXG4gICAqL1xuICBASW5wdXQoKSBjbG9zZU1vZGFsOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIGZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIHRleHQ6IG5ldyBGb3JtQ29udHJvbCgnJywgW1xuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgIGNyZWF0ZVVuaXF1ZVZhbGlkYXRvcigodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuICF0aGlzLm9wdGlvbnMuc29tZShcbiAgICAgICAgICAob3B0aW9uKSA9PlxuICAgICAgICAgICAgb3B0aW9uLnRleHQudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT09IHZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICBdKSxcbiAgfSk7XG4gIG9wdGlvbnM6IFBvbGxPcHRpb25bXSA9IFtdO1xuXG4gIGFzeW5jIGFkZE9wdGlvbigpIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAuaW52YWxpZCB8fCAhdGhpcy5tZXNzYWdlSWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMucG9sbD8uY3JlYXRlT3B0aW9uKHtcbiAgICAgICAgdGV4dDogdGhpcy5mb3JtR3JvdXAudmFsdWUudGV4dCEsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuY2xvc2VNb2RhbCgpO1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFRlbXBvcmFyeU5vdGlmaWNhdGlvbihcbiAgICAgICAgJ3N0cmVhbUNoYXQuRmFpbGVkIHRvIGFkZCBvcHRpb24gKHt7IG1lc3NhZ2UgfX0pJyxcbiAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICB7IG1lc3NhZ2U6IGVycm9yIH1cbiAgICAgICk7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXRlU3RvcmVTZWxlY3RvcihcbiAgICBwb2xsOiBQb2xsLFxuICAgIG1hcmtGb3JDaGVjazogKCkgPT4gdm9pZFxuICApOiAoKSA9PiB2b2lkIHtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9IHBvbGwuc3RhdGUuc3Vic2NyaWJlV2l0aFNlbGVjdG9yKFxuICAgICAgKHN0YXRlKSA9PiAoe1xuICAgICAgICBvcHRpb25zOiBzdGF0ZS5vcHRpb25zLFxuICAgICAgfSksXG4gICAgICAoc3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gc3RhdGUub3B0aW9ucztcbiAgICAgICAgbWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiB1bnN1YnNjcmliZTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2cgc3RyLWNoYXRfX2RpYWxvZy0tZm9ybSBzdHItY2hhdF9fcHJvbXB0LWRpYWxvZyBzdHItY2hhdF9fbW9kYWxfX3N1Z2dlc3QtcG9sbC1vcHRpb25cIlxuPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2RpYWxvZ19fYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fZGlhbG9nX190aXRsZVwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LlN1Z2dlc3QgYW4gb3B0aW9uXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX2ZpZWxkXCI+XG4gICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ0ZXh0XCIgaWQ9XCJ0ZXh0XCIgdHlwZT1cInRleHRcIiAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2Zvcm0tZmllbGQtZXJyb3JcIj5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgZm9ybUdyb3VwLmdldChcInRleHRcIik/LmVycm9ycz8uZHVwbGljYXRlXG4gICAgICAgICAgICAgID8gKFwic3RyZWFtQ2hhdC5PcHRpb24gYWxyZWFkeSBleGlzdHNcIiB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fZGlhbG9nX19jb250cm9sc1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fZGlhbG9nX19jb250cm9scy1idXR0b24gc3RyLWNoYXRfX2RpYWxvZ19fY29udHJvbHMtYnV0dG9uLS1jYW5jZWxcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJjbG9zZU1vZGFsKClcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJjbG9zZU1vZGFsKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgXCJzdHJlYW1DaGF0LkNhbmNlbFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fZGlhbG9nX19jb250cm9scy1idXR0b24gc3RyLWNoYXRfX2RpYWxvZ19fY29udHJvbHMtYnV0dG9uLS1zdWJtaXRcIlxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgIChjbGljayk9XCJhZGRPcHRpb24oKVwiXG4gICAgICAgICAgKGtleXVwLmVudGVyKT1cImFkZE9wdGlvbigpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybUdyb3VwLmludmFsaWRcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgXCJzdHJlYW1DaGF0LlNlbmRcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,137 @@
1
+ import { ChangeDetectionStrategy, Component, Input, ViewChild, } from '@angular/core';
2
+ import { BasePollComponent } from '../base-poll.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../custom-templates.service";
5
+ import * as i2 from "../../chat-client.service";
6
+ import * as i3 from "../../channel.service";
7
+ import * as i4 from "../../notification.service";
8
+ import * as i5 from "../../message-actions.service";
9
+ import * as i6 from "@angular/common";
10
+ import * as i7 from "@ngx-translate/core";
11
+ import * as i8 from "../../modal/modal.component";
12
+ import * as i9 from "../../notification-list/notification-list.component";
13
+ import * as i10 from "../poll-options-list/poll-options-list.component";
14
+ import * as i11 from "./poll-results/poll-results-list/poll-results-list.component";
15
+ import * as i12 from "./poll-answers-list/poll-answers-list.component";
16
+ import * as i13 from "./upsert-answer/upsert-answer.component";
17
+ import * as i14 from "./add-option/add-option.component";
18
+ /**
19
+ *
20
+ */
21
+ export class PollActionsComponent extends BasePollComponent {
22
+ constructor(customTemplatesService, chatClientService, cdRef, channelService, notificationService, messageService) {
23
+ super(customTemplatesService, chatClientService, cdRef, channelService, notificationService);
24
+ this.messageService = messageService;
25
+ /**
26
+ * If there are more options than this number, the "See all options" button will be displayed
27
+ */
28
+ this.maxOptionsDisplayed = 10;
29
+ /**
30
+ * The maximum number of options allowed for the poll, this is defined by Stream API
31
+ */
32
+ this.maxPollOptions = 100;
33
+ this.name = '';
34
+ this.options = [];
35
+ this.isClosed = false;
36
+ this.allowUserSuggestions = false;
37
+ this.allowAnswers = false;
38
+ this.answerCount = 0;
39
+ this.isOwnPoll = false;
40
+ this.selectedAction = undefined;
41
+ this.isModalOpen = false;
42
+ this.modalOpened = (action) => {
43
+ this.selectedAction = action;
44
+ if (!this.isModalOpen) {
45
+ this.isModalOpen = true;
46
+ this.messageService.modalOpenedForMessage.next(this.messageId);
47
+ }
48
+ };
49
+ this.modalClosed = () => {
50
+ this.selectedAction = undefined;
51
+ if (this.isModalOpen) {
52
+ this.isModalOpen = false;
53
+ this.messageService.modalOpenedForMessage.next(undefined);
54
+ this.markForCheck();
55
+ }
56
+ };
57
+ }
58
+ stateStoreSelector(poll, markForCheck) {
59
+ const unsubscribe = poll.state.subscribeWithSelector((state) => ({
60
+ options: state.options,
61
+ is_closed: state.is_closed,
62
+ allow_user_suggested_options: state.allow_user_suggested_options,
63
+ allow_answers: state.allow_answers,
64
+ answer_count: state.answers_count,
65
+ created_by: state.created_by,
66
+ name: state.name,
67
+ own_answer: state.ownAnswer,
68
+ max_votes_allowed: state.max_votes_allowed,
69
+ own_votes_by_option_id: state.ownVotesByOptionId,
70
+ }), (state) => {
71
+ this.options = state.options;
72
+ this.isClosed = state.is_closed ?? false;
73
+ this.allowUserSuggestions = state.allow_user_suggested_options ?? false;
74
+ this.allowAnswers = state.allow_answers ?? false;
75
+ this.answerCount = state.answer_count ?? 0;
76
+ this.isOwnPoll = state.created_by?.id === this.currentUser?.id;
77
+ this.name = state.name;
78
+ this.ownAnwer = state.own_answer ?? undefined;
79
+ markForCheck();
80
+ });
81
+ return unsubscribe;
82
+ }
83
+ async closePoll() {
84
+ try {
85
+ await this.poll?.close();
86
+ this.modalClosed();
87
+ this.markForCheck();
88
+ }
89
+ catch (error) {
90
+ this.notificationService.addTemporaryNotification('streamChat.Failed to end vote');
91
+ throw error;
92
+ }
93
+ }
94
+ getModalContext() {
95
+ return {
96
+ isOpen: this.isModalOpen,
97
+ isOpenChangeHandler: (isOpen) => {
98
+ if (isOpen) {
99
+ this.modalOpened(this.selectedAction);
100
+ }
101
+ else {
102
+ this.modalClosed();
103
+ }
104
+ },
105
+ content: this[this.selectedAction],
106
+ };
107
+ }
108
+ }
109
+ PollActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollActionsComponent, deps: [{ token: i1.CustomTemplatesService }, { token: i2.ChatClientService }, { token: i0.ChangeDetectorRef }, { token: i3.ChannelService }, { token: i4.NotificationService }, { token: i5.MessageActionsService }], target: i0.ɵɵFactoryTarget.Component });
110
+ PollActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PollActionsComponent, selector: "stream-poll-actions", inputs: { maxOptionsDisplayed: "maxOptionsDisplayed", maxPollOptions: "maxPollOptions" }, viewQueries: [{ propertyName: "allOptions", first: true, predicate: ["allOptions"], descendants: true }, { propertyName: "suggestOption", first: true, predicate: ["suggestOption"], descendants: true }, { propertyName: "addAnswer", first: true, predicate: ["addAnswer"], descendants: true }, { propertyName: "viewComments", first: true, predicate: ["viewComments"], descendants: true }, { propertyName: "viewResults", first: true, predicate: ["viewResults"], descendants: true }, { propertyName: "endVote", first: true, predicate: ["endVote"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"str-chat__poll-actions\">\n <ng-container\n *ngIf=\"maxOptionsDisplayed && options.length > maxOptionsDisplayed\"\n >\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('allOptions')\">\n {{ \"streamChat.See all options ({{count}})\" | translate:{count:\n options.length} }}\n </button>\n </ng-container>\n <ng-container\n *ngIf=\"\n allowUserSuggestions &&\n canVote &&\n !isClosed &&\n options.length < maxPollOptions\n \"\n >\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('suggestOption')\"\n >\n {{ \"streamChat.Suggest an option\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"allowAnswers && canVote && !isClosed\">\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('addAnswer')\"\n (keyup.enter)=\"modalOpened('addAnswer')\"\n >\n <ng-container *ngIf=\"ownAnwer; else newAnswer\">\n {{ \"streamChat.Update your comment\" | translate }}\n </ng-container>\n <ng-template #newAnswer>\n {{ \"streamChat.Add a comment\" | translate }}\n </ng-template>\n </button>\n </ng-container>\n <ng-container *ngIf=\"answerCount > 0 && canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewComments')\">\n {{ (answerCount === 1 ? \"streamChat.View {{ count }} comment\" :\n \"streamChat.View {{ count }} comments\") | translate:{count: answerCount}\n }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewResults')\">\n {{ \"streamChat.View results\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"isOwnPoll && !isClosed\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('endVote')\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"selectedAction\">\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.modalTemplate$ | async) || defaultModal;\n context: getModalContext()\n \"\n ></ng-container>\n</ng-container>\n\n<ng-template\n #defaultModal\n let-isOpen=\"isOpen\"\n let-isOpenChangeHandler=\"isOpenChangeHandler\"\n let-content=\"content\"\n>\n <stream-modal\n class=\"str-chat__poll-actions str-chat-angular__poll-actions\"\n [isOpen]=\"isOpen\"\n [content]=\"content\"\n (isOpenChange)=\"isOpenChangeHandler($event)\"\n >\n </stream-modal>\n</ng-template>\n\n<ng-template #allOptions>\n <div class=\"str-chat__modal__poll-option-list str-chat-angular__poll-actions\">\n <div class=\"str-chat__modal-header\">\n <div class=\"str-chat__modal-header__title\" translate>\n streamChat.Poll options\n </div>\n </div>\n <div class=\"str-chat__modal__poll-option-list__body\">\n <div class=\"str-chat__modal__poll-option-list__title\">{{ name }}</div>\n <stream-poll-options-list\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [maxOptionsDisplayed]=\"undefined\"\n ></stream-poll-options-list>\n <stream-notification-list></stream-notification-list>\n </div>\n </div>\n</ng-template>\n<ng-template #suggestOption>\n <stream-add-option\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [closeModal]=\"modalClosed\"\n ></stream-add-option>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #addAnswer>\n <stream-upsert-answer\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [answer]=\"ownAnwer\"\n [closeModal]=\"modalClosed\"\n ></stream-upsert-answer>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #viewComments>\n <stream-poll-answers-list\n (upsertOwnAnswer)=\"modalOpened('addAnswer')\"\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n ></stream-poll-answers-list>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #viewResults>\n <stream-poll-results-list\n [messageId]=\"messageId\"\n [pollId]=\"pollId\"\n ></stream-poll-results-list>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #endVote>\n <div\n class=\"str-chat__dialog str-chat__dialog--prompt str-chat__modal__end-vote\"\n >\n <div class=\"str-chat__dialog__body\">\n <div class=\"str-chat__dialog__title\" translate>streamChat.End vote</div>\n <div class=\"str-chat__dialog__prompt\" translate>\n streamChat.After a poll is closed, no more votes can be cast\n </div>\n <stream-notification-list></stream-notification-list>\n <div class=\"str-chat__dialog__controls\">\n <button\n class=\"str-chat__dialog__controls-button\"\n (click)=\"modalClosed()\"\n >\n {{ \"streamChat.Cancel\" | translate }}\n </button>\n <button class=\"str-chat__dialog__controls-button\" (click)=\"closePoll()\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i8.ModalComponent, selector: "stream-modal", inputs: ["isOpen", "content"], outputs: ["isOpenChange"] }, { kind: "component", type: i9.NotificationListComponent, selector: "stream-notification-list" }, { kind: "component", type: i10.PollOptionsListComponent, selector: "stream-poll-options-list", inputs: ["maxOptionsDisplayed"] }, { kind: "component", type: i11.PollResultsListComponent, selector: "stream-poll-results-list" }, { kind: "component", type: i12.PollAnswersListComponent, selector: "stream-poll-answers-list", outputs: ["upsertOwnAnswer"] }, { kind: "component", type: i13.UpsertAnswerComponent, selector: "stream-upsert-answer", inputs: ["answer", "closeModal"] }, { kind: "component", type: i14.AddOptionComponent, selector: "stream-add-option", inputs: ["closeModal"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollActionsComponent, decorators: [{
112
+ type: Component,
113
+ args: [{ selector: 'stream-poll-actions', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"str-chat__poll-actions\">\n <ng-container\n *ngIf=\"maxOptionsDisplayed && options.length > maxOptionsDisplayed\"\n >\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('allOptions')\">\n {{ \"streamChat.See all options ({{count}})\" | translate:{count:\n options.length} }}\n </button>\n </ng-container>\n <ng-container\n *ngIf=\"\n allowUserSuggestions &&\n canVote &&\n !isClosed &&\n options.length < maxPollOptions\n \"\n >\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('suggestOption')\"\n >\n {{ \"streamChat.Suggest an option\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"allowAnswers && canVote && !isClosed\">\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('addAnswer')\"\n (keyup.enter)=\"modalOpened('addAnswer')\"\n >\n <ng-container *ngIf=\"ownAnwer; else newAnswer\">\n {{ \"streamChat.Update your comment\" | translate }}\n </ng-container>\n <ng-template #newAnswer>\n {{ \"streamChat.Add a comment\" | translate }}\n </ng-template>\n </button>\n </ng-container>\n <ng-container *ngIf=\"answerCount > 0 && canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewComments')\">\n {{ (answerCount === 1 ? \"streamChat.View {{ count }} comment\" :\n \"streamChat.View {{ count }} comments\") | translate:{count: answerCount}\n }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewResults')\">\n {{ \"streamChat.View results\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"isOwnPoll && !isClosed\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('endVote')\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"selectedAction\">\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.modalTemplate$ | async) || defaultModal;\n context: getModalContext()\n \"\n ></ng-container>\n</ng-container>\n\n<ng-template\n #defaultModal\n let-isOpen=\"isOpen\"\n let-isOpenChangeHandler=\"isOpenChangeHandler\"\n let-content=\"content\"\n>\n <stream-modal\n class=\"str-chat__poll-actions str-chat-angular__poll-actions\"\n [isOpen]=\"isOpen\"\n [content]=\"content\"\n (isOpenChange)=\"isOpenChangeHandler($event)\"\n >\n </stream-modal>\n</ng-template>\n\n<ng-template #allOptions>\n <div class=\"str-chat__modal__poll-option-list str-chat-angular__poll-actions\">\n <div class=\"str-chat__modal-header\">\n <div class=\"str-chat__modal-header__title\" translate>\n streamChat.Poll options\n </div>\n </div>\n <div class=\"str-chat__modal__poll-option-list__body\">\n <div class=\"str-chat__modal__poll-option-list__title\">{{ name }}</div>\n <stream-poll-options-list\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [maxOptionsDisplayed]=\"undefined\"\n ></stream-poll-options-list>\n <stream-notification-list></stream-notification-list>\n </div>\n </div>\n</ng-template>\n<ng-template #suggestOption>\n <stream-add-option\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [closeModal]=\"modalClosed\"\n ></stream-add-option>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #addAnswer>\n <stream-upsert-answer\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [answer]=\"ownAnwer\"\n [closeModal]=\"modalClosed\"\n ></stream-upsert-answer>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #viewComments>\n <stream-poll-answers-list\n (upsertOwnAnswer)=\"modalOpened('addAnswer')\"\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n ></stream-poll-answers-list>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #viewResults>\n <stream-poll-results-list\n [messageId]=\"messageId\"\n [pollId]=\"pollId\"\n ></stream-poll-results-list>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #endVote>\n <div\n class=\"str-chat__dialog str-chat__dialog--prompt str-chat__modal__end-vote\"\n >\n <div class=\"str-chat__dialog__body\">\n <div class=\"str-chat__dialog__title\" translate>streamChat.End vote</div>\n <div class=\"str-chat__dialog__prompt\" translate>\n streamChat.After a poll is closed, no more votes can be cast\n </div>\n <stream-notification-list></stream-notification-list>\n <div class=\"str-chat__dialog__controls\">\n <button\n class=\"str-chat__dialog__controls-button\"\n (click)=\"modalClosed()\"\n >\n {{ \"streamChat.Cancel\" | translate }}\n </button>\n <button class=\"str-chat__dialog__controls-button\" (click)=\"closePoll()\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n" }]
114
+ }], ctorParameters: function () { return [{ type: i1.CustomTemplatesService }, { type: i2.ChatClientService }, { type: i0.ChangeDetectorRef }, { type: i3.ChannelService }, { type: i4.NotificationService }, { type: i5.MessageActionsService }]; }, propDecorators: { maxOptionsDisplayed: [{
115
+ type: Input
116
+ }], maxPollOptions: [{
117
+ type: Input
118
+ }], allOptions: [{
119
+ type: ViewChild,
120
+ args: ['allOptions']
121
+ }], suggestOption: [{
122
+ type: ViewChild,
123
+ args: ['suggestOption']
124
+ }], addAnswer: [{
125
+ type: ViewChild,
126
+ args: ['addAnswer']
127
+ }], viewComments: [{
128
+ type: ViewChild,
129
+ args: ['viewComments']
130
+ }], viewResults: [{
131
+ type: ViewChild,
132
+ args: ['viewResults']
133
+ }], endVote: [{
134
+ type: ViewChild,
135
+ args: ['endVote']
136
+ }] } });
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbC1hY3Rpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9wb2xscy9wb2xsLWFjdGlvbnMvcG9sbC1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9wb2xscy9wb2xsLWFjdGlvbnMvcG9sbC1hY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQjNEOztHQUVHO0FBT0gsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGlCQUFpQjtJQTBCekQsWUFDRSxzQkFBOEMsRUFDOUMsaUJBQW9DLEVBQ3BDLEtBQXdCLEVBQ3hCLGNBQThCLEVBQzlCLG1CQUF3QyxFQUNoQyxjQUFxQztRQUU3QyxLQUFLLENBQ0gsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsY0FBYyxFQUNkLG1CQUFtQixDQUNwQixDQUFDO1FBUk0sbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBL0IvQzs7V0FFRztRQUNNLHdCQUFtQixHQUF1QixFQUFFLENBQUM7UUFDdEQ7O1dBRUc7UUFDTSxtQkFBYyxHQUFHLEdBQUcsQ0FBQztRQUM5QixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsWUFBTyxHQUFpQixFQUFFLENBQUM7UUFDM0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0IsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQixtQkFBYyxHQUF1QixTQUFTLENBQUM7UUFDL0MsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUEwRHBCLGdCQUFXLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztZQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNoRTtRQUNILENBQUMsQ0FBQztRQUVGLGdCQUFXLEdBQUcsR0FBRyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO1lBQ2hDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDckI7UUFDSCxDQUFDLENBQUM7SUFsREYsQ0FBQztJQUVTLGtCQUFrQixDQUMxQixJQUFVLEVBQ1YsWUFBd0I7UUFFeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FDbEQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDVixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLDRCQUE0QixFQUFFLEtBQUssQ0FBQyw0QkFBNEI7WUFDaEUsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1lBQ2xDLFlBQVksRUFBRSxLQUFLLENBQUMsYUFBYTtZQUNqQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLFVBQVUsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMzQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1lBQzFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7U0FDakQsQ0FBQyxFQUNGLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQztZQUN6QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDLDRCQUE0QixJQUFJLEtBQUssQ0FBQztZQUN4RSxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDO1lBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUMvRCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQztZQUM5QyxZQUFZLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQ0YsQ0FBQztRQUVGLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFtQkQsS0FBSyxDQUFDLFNBQVM7UUFDYixJQUFJO1lBQ0YsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx3QkFBd0IsQ0FDL0MsK0JBQStCLENBQ2hDLENBQUM7WUFDRixNQUFNLEtBQUssQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPO1lBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3hCLG1CQUFtQixFQUFFLENBQUMsTUFBZSxFQUFFLEVBQUU7Z0JBQ3ZDLElBQUksTUFBTSxFQUFFO29CQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWUsQ0FBQyxDQUFDO2lCQUN4QztxQkFBTTtvQkFDTCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQ3BCO1lBQ0gsQ0FBQztZQUNELE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWUsQ0FBQztTQUNwQyxDQUFDO0lBQ0osQ0FBQzs7aUhBdEhVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLGl1QkNsQ2pDLDBrS0EySkE7MkZEekhhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTTtnUkFNdEMsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUlHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBV21CLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDSyxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ0YsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNLLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDQyxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0YsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VQb2xsQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1wb2xsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb2xsLCBQb2xsQW5zd2VyLCBQb2xsT3B0aW9uIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgTW9kYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQ3VzdG9tVGVtcGxhdGVzU2VydmljZSB9IGZyb20gJy4uLy4uL2N1c3RvbS10ZW1wbGF0ZXMuc2VydmljZSc7XG5pbXBvcnQgeyBDaGF0Q2xpZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NoYXQtY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVzc2FnZUFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbWVzc2FnZS1hY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcblxudHlwZSBBY3Rpb24gPVxuICB8ICdhbGxPcHRpb25zJ1xuICB8ICdzdWdnZXN0T3B0aW9uJ1xuICB8ICdhZGRBbnN3ZXInXG4gIHwgJ3ZpZXdDb21tZW50cydcbiAgfCAndmlld1Jlc3VsdHMnXG4gIHwgJ2VuZFZvdGUnO1xuXG4vKipcbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1wb2xsLWFjdGlvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG9sbC1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBvbGxBY3Rpb25zQ29tcG9uZW50IGV4dGVuZHMgQmFzZVBvbGxDb21wb25lbnQge1xuICAvKipcbiAgICogSWYgdGhlcmUgYXJlIG1vcmUgb3B0aW9ucyB0aGFuIHRoaXMgbnVtYmVyLCB0aGUgXCJTZWUgYWxsIG9wdGlvbnNcIiBidXR0b24gd2lsbCBiZSBkaXNwbGF5ZWRcbiAgICovXG4gIEBJbnB1dCgpIG1heE9wdGlvbnNEaXNwbGF5ZWQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IDEwO1xuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIG9wdGlvbnMgYWxsb3dlZCBmb3IgdGhlIHBvbGwsIHRoaXMgaXMgZGVmaW5lZCBieSBTdHJlYW0gQVBJXG4gICAqL1xuICBASW5wdXQoKSBtYXhQb2xsT3B0aW9ucyA9IDEwMDtcbiAgbmFtZSA9ICcnO1xuICBvcHRpb25zOiBQb2xsT3B0aW9uW10gPSBbXTtcbiAgaXNDbG9zZWQgPSBmYWxzZTtcbiAgYWxsb3dVc2VyU3VnZ2VzdGlvbnMgPSBmYWxzZTtcbiAgYWxsb3dBbnN3ZXJzID0gZmFsc2U7XG4gIGFuc3dlckNvdW50ID0gMDtcbiAgaXNPd25Qb2xsID0gZmFsc2U7XG4gIG93bkFud2VyOiBQb2xsQW5zd2VyIHwgdW5kZWZpbmVkO1xuICBzZWxlY3RlZEFjdGlvbjogQWN0aW9uIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBpc01vZGFsT3BlbiA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdhbGxPcHRpb25zJykgYWxsT3B0aW9ucyE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuICBAVmlld0NoaWxkKCdzdWdnZXN0T3B0aW9uJykgc3VnZ2VzdE9wdGlvbiE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuICBAVmlld0NoaWxkKCdhZGRBbnN3ZXInKSBhZGRBbnN3ZXIhOiBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgQFZpZXdDaGlsZCgndmlld0NvbW1lbnRzJykgdmlld0NvbW1lbnRzITogVGVtcGxhdGVSZWY8dm9pZD47XG4gIEBWaWV3Q2hpbGQoJ3ZpZXdSZXN1bHRzJykgdmlld1Jlc3VsdHMhOiBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgQFZpZXdDaGlsZCgnZW5kVm90ZScpIGVuZFZvdGUhOiBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlOiBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLFxuICAgIGNoYXRDbGllbnRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZSxcbiAgICBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlLFxuICAgIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZUFjdGlvbnNTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgY3VzdG9tVGVtcGxhdGVzU2VydmljZSxcbiAgICAgIGNoYXRDbGllbnRTZXJ2aWNlLFxuICAgICAgY2RSZWYsXG4gICAgICBjaGFubmVsU2VydmljZSxcbiAgICAgIG5vdGlmaWNhdGlvblNlcnZpY2VcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXRlU3RvcmVTZWxlY3RvcihcbiAgICBwb2xsOiBQb2xsLFxuICAgIG1hcmtGb3JDaGVjazogKCkgPT4gdm9pZFxuICApOiAoKSA9PiB2b2lkIHtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9IHBvbGwuc3RhdGUuc3Vic2NyaWJlV2l0aFNlbGVjdG9yKFxuICAgICAgKHN0YXRlKSA9PiAoe1xuICAgICAgICBvcHRpb25zOiBzdGF0ZS5vcHRpb25zLFxuICAgICAgICBpc19jbG9zZWQ6IHN0YXRlLmlzX2Nsb3NlZCxcbiAgICAgICAgYWxsb3dfdXNlcl9zdWdnZXN0ZWRfb3B0aW9uczogc3RhdGUuYWxsb3dfdXNlcl9zdWdnZXN0ZWRfb3B0aW9ucyxcbiAgICAgICAgYWxsb3dfYW5zd2Vyczogc3RhdGUuYWxsb3dfYW5zd2VycyxcbiAgICAgICAgYW5zd2VyX2NvdW50OiBzdGF0ZS5hbnN3ZXJzX2NvdW50LFxuICAgICAgICBjcmVhdGVkX2J5OiBzdGF0ZS5jcmVhdGVkX2J5LFxuICAgICAgICBuYW1lOiBzdGF0ZS5uYW1lLFxuICAgICAgICBvd25fYW5zd2VyOiBzdGF0ZS5vd25BbnN3ZXIsXG4gICAgICAgIG1heF92b3Rlc19hbGxvd2VkOiBzdGF0ZS5tYXhfdm90ZXNfYWxsb3dlZCxcbiAgICAgICAgb3duX3ZvdGVzX2J5X29wdGlvbl9pZDogc3RhdGUub3duVm90ZXNCeU9wdGlvbklkLFxuICAgICAgfSksXG4gICAgICAoc3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gc3RhdGUub3B0aW9ucztcbiAgICAgICAgdGhpcy5pc0Nsb3NlZCA9IHN0YXRlLmlzX2Nsb3NlZCA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5hbGxvd1VzZXJTdWdnZXN0aW9ucyA9IHN0YXRlLmFsbG93X3VzZXJfc3VnZ2VzdGVkX29wdGlvbnMgPz8gZmFsc2U7XG4gICAgICAgIHRoaXMuYWxsb3dBbnN3ZXJzID0gc3RhdGUuYWxsb3dfYW5zd2VycyA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5hbnN3ZXJDb3VudCA9IHN0YXRlLmFuc3dlcl9jb3VudCA/PyAwO1xuICAgICAgICB0aGlzLmlzT3duUG9sbCA9IHN0YXRlLmNyZWF0ZWRfYnk/LmlkID09PSB0aGlzLmN1cnJlbnRVc2VyPy5pZDtcbiAgICAgICAgdGhpcy5uYW1lID0gc3RhdGUubmFtZTtcbiAgICAgICAgdGhpcy5vd25BbndlciA9IHN0YXRlLm93bl9hbnN3ZXIgPz8gdW5kZWZpbmVkO1xuICAgICAgICBtYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIHVuc3Vic2NyaWJlO1xuICB9XG5cbiAgbW9kYWxPcGVuZWQgPSAoYWN0aW9uOiBBY3Rpb24pID0+IHtcbiAgICB0aGlzLnNlbGVjdGVkQWN0aW9uID0gYWN0aW9uO1xuICAgIGlmICghdGhpcy5pc01vZGFsT3Blbikge1xuICAgICAgdGhpcy5pc01vZGFsT3BlbiA9IHRydWU7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLm1vZGFsT3BlbmVkRm9yTWVzc2FnZS5uZXh0KHRoaXMubWVzc2FnZUlkKTtcbiAgICB9XG4gIH07XG5cbiAgbW9kYWxDbG9zZWQgPSAoKSA9PiB7XG4gICAgdGhpcy5zZWxlY3RlZEFjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5pc01vZGFsT3Blbikge1xuICAgICAgdGhpcy5pc01vZGFsT3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5tb2RhbE9wZW5lZEZvck1lc3NhZ2UubmV4dCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH07XG5cbiAgYXN5bmMgY2xvc2VQb2xsKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnBvbGw/LmNsb3NlKCk7XG4gICAgICB0aGlzLm1vZGFsQ2xvc2VkKCk7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAnc3RyZWFtQ2hhdC5GYWlsZWQgdG8gZW5kIHZvdGUnXG4gICAgICApO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgZ2V0TW9kYWxDb250ZXh0KCk6IE1vZGFsQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzT3BlbjogdGhpcy5pc01vZGFsT3BlbixcbiAgICAgIGlzT3BlbkNoYW5nZUhhbmRsZXI6IChpc09wZW46IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICAgIHRoaXMubW9kYWxPcGVuZWQodGhpcy5zZWxlY3RlZEFjdGlvbiEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubW9kYWxDbG9zZWQoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGNvbnRlbnQ6IHRoaXNbdGhpcy5zZWxlY3RlZEFjdGlvbiFdLFxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hY3Rpb25zXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIm1heE9wdGlvbnNEaXNwbGF5ZWQgJiYgb3B0aW9ucy5sZW5ndGggPiBtYXhPcHRpb25zRGlzcGxheWVkXCJcbiAgPlxuICAgIDxidXR0b24gY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hY3Rpb25cIiAoY2xpY2spPVwibW9kYWxPcGVuZWQoJ2FsbE9wdGlvbnMnKVwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LlNlZSBhbGwgb3B0aW9ucyAoe3tjb3VudH19KVwiIHwgdHJhbnNsYXRlOntjb3VudDpcbiAgICAgIG9wdGlvbnMubGVuZ3RofSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICBhbGxvd1VzZXJTdWdnZXN0aW9ucyAmJlxuICAgICAgY2FuVm90ZSAmJlxuICAgICAgIWlzQ2xvc2VkICYmXG4gICAgICBvcHRpb25zLmxlbmd0aCA8IG1heFBvbGxPcHRpb25zXG4gICAgXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtYWN0aW9uXCJcbiAgICAgIChjbGljayk9XCJtb2RhbE9wZW5lZCgnc3VnZ2VzdE9wdGlvbicpXCJcbiAgICA+XG4gICAgICB7eyBcInN0cmVhbUNoYXQuU3VnZ2VzdCBhbiBvcHRpb25cIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbG93QW5zd2VycyAmJiBjYW5Wb3RlICYmICFpc0Nsb3NlZFwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtYWN0aW9uXCJcbiAgICAgIChjbGljayk9XCJtb2RhbE9wZW5lZCgnYWRkQW5zd2VyJylcIlxuICAgICAgKGtleXVwLmVudGVyKT1cIm1vZGFsT3BlbmVkKCdhZGRBbnN3ZXInKVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm93bkFud2VyOyBlbHNlIG5ld0Fuc3dlclwiPlxuICAgICAgICB7eyBcInN0cmVhbUNoYXQuVXBkYXRlIHlvdXIgY29tbWVudFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbmV3QW5zd2VyPlxuICAgICAgICB7eyBcInN0cmVhbUNoYXQuQWRkIGEgY29tbWVudFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFuc3dlckNvdW50ID4gMCAmJiBjYW5RdWVyeVZvdGVzXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLWFjdGlvblwiIChjbGljayk9XCJtb2RhbE9wZW5lZCgndmlld0NvbW1lbnRzJylcIj5cbiAgICAgIHt7IChhbnN3ZXJDb3VudCA9PT0gMSA/IFwic3RyZWFtQ2hhdC5WaWV3IHt7IGNvdW50IH19IGNvbW1lbnRcIiA6XG4gICAgICBcInN0cmVhbUNoYXQuVmlldyB7eyBjb3VudCB9fSBjb21tZW50c1wiKSB8IHRyYW5zbGF0ZTp7Y291bnQ6IGFuc3dlckNvdW50fVxuICAgICAgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5RdWVyeVZvdGVzXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLWFjdGlvblwiIChjbGljayk9XCJtb2RhbE9wZW5lZCgndmlld1Jlc3VsdHMnKVwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LlZpZXcgcmVzdWx0c1wiIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPd25Qb2xsICYmICFpc0Nsb3NlZFwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hY3Rpb25cIiAoY2xpY2spPVwibW9kYWxPcGVuZWQoJ2VuZFZvdGUnKVwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LkVuZCB2b3RlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQWN0aW9uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2UubW9kYWxUZW1wbGF0ZSQgfCBhc3luYykgfHwgZGVmYXVsdE1vZGFsO1xuICAgICAgY29udGV4dDogZ2V0TW9kYWxDb250ZXh0KClcbiAgICBcIlxuICA+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlXG4gICNkZWZhdWx0TW9kYWxcbiAgbGV0LWlzT3Blbj1cImlzT3BlblwiXG4gIGxldC1pc09wZW5DaGFuZ2VIYW5kbGVyPVwiaXNPcGVuQ2hhbmdlSGFuZGxlclwiXG4gIGxldC1jb250ZW50PVwiY29udGVudFwiXG4+XG4gIDxzdHJlYW0tbW9kYWxcbiAgICBjbGFzcz1cInN0ci1jaGF0X19wb2xsLWFjdGlvbnMgc3RyLWNoYXQtYW5ndWxhcl9fcG9sbC1hY3Rpb25zXCJcbiAgICBbaXNPcGVuXT1cImlzT3BlblwiXG4gICAgW2NvbnRlbnRdPVwiY29udGVudFwiXG4gICAgKGlzT3BlbkNoYW5nZSk9XCJpc09wZW5DaGFuZ2VIYW5kbGVyKCRldmVudClcIlxuICA+XG4gIDwvc3RyZWFtLW1vZGFsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNhbGxPcHRpb25zPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19wb2xsLW9wdGlvbi1saXN0IHN0ci1jaGF0LWFuZ3VsYXJfX3BvbGwtYWN0aW9uc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWwtaGVhZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsLWhlYWRlcl9fdGl0bGVcIiB0cmFuc2xhdGU+XG4gICAgICAgIHN0cmVhbUNoYXQuUG9sbCBvcHRpb25zXG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19wb2xsLW9wdGlvbi1saXN0X19ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19wb2xsLW9wdGlvbi1saXN0X190aXRsZVwiPnt7IG5hbWUgfX08L2Rpdj5cbiAgICAgIDxzdHJlYW0tcG9sbC1vcHRpb25zLWxpc3RcbiAgICAgICAgW3BvbGxJZF09XCJwb2xsSWRcIlxuICAgICAgICBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiXG4gICAgICAgIFttYXhPcHRpb25zRGlzcGxheWVkXT1cInVuZGVmaW5lZFwiXG4gICAgICA+PC9zdHJlYW0tcG9sbC1vcHRpb25zLWxpc3Q+XG4gICAgICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0Pjwvc3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3N1Z2dlc3RPcHRpb24+XG4gIDxzdHJlYW0tYWRkLW9wdGlvblxuICAgIFtwb2xsSWRdPVwicG9sbElkXCJcbiAgICBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiXG4gICAgW2Nsb3NlTW9kYWxdPVwibW9kYWxDbG9zZWRcIlxuICA+PC9zdHJlYW0tYWRkLW9wdGlvbj5cbiAgPHN0cmVhbS1ub3RpZmljYXRpb24tbGlzdD48L3N0cmVhbS1ub3RpZmljYXRpb24tbGlzdD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2FkZEFuc3dlcj5cbiAgPHN0cmVhbS11cHNlcnQtYW5zd2VyXG4gICAgW3BvbGxJZF09XCJwb2xsSWRcIlxuICAgIFttZXNzYWdlSWRdPVwibWVzc2FnZUlkXCJcbiAgICBbYW5zd2VyXT1cIm93bkFud2VyXCJcbiAgICBbY2xvc2VNb2RhbF09XCJtb2RhbENsb3NlZFwiXG4gID48L3N0cmVhbS11cHNlcnQtYW5zd2VyPlxuICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0Pjwvc3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjdmlld0NvbW1lbnRzPlxuICA8c3RyZWFtLXBvbGwtYW5zd2Vycy1saXN0XG4gICAgKHVwc2VydE93bkFuc3dlcik9XCJtb2RhbE9wZW5lZCgnYWRkQW5zd2VyJylcIlxuICAgIFtwb2xsSWRdPVwicG9sbElkXCJcbiAgICBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiXG4gID48L3N0cmVhbS1wb2xsLWFuc3dlcnMtbGlzdD5cbiAgPHN0cmVhbS1ub3RpZmljYXRpb24tbGlzdD48L3N0cmVhbS1ub3RpZmljYXRpb24tbGlzdD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3ZpZXdSZXN1bHRzPlxuICA8c3RyZWFtLXBvbGwtcmVzdWx0cy1saXN0XG4gICAgW21lc3NhZ2VJZF09XCJtZXNzYWdlSWRcIlxuICAgIFtwb2xsSWRdPVwicG9sbElkXCJcbiAgPjwvc3RyZWFtLXBvbGwtcmVzdWx0cy1saXN0PlxuICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0Pjwvc3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZW5kVm90ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwic3RyLWNoYXRfX2RpYWxvZyBzdHItY2hhdF9fZGlhbG9nLS1wcm9tcHQgc3RyLWNoYXRfX21vZGFsX19lbmQtdm90ZVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2RpYWxvZ19fYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX3RpdGxlXCIgdHJhbnNsYXRlPnN0cmVhbUNoYXQuRW5kIHZvdGU8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fZGlhbG9nX19wcm9tcHRcIiB0cmFuc2xhdGU+XG4gICAgICAgIHN0cmVhbUNoYXQuQWZ0ZXIgYSBwb2xsIGlzIGNsb3NlZCwgbm8gbW9yZSB2b3RlcyBjYW4gYmUgY2FzdFxuICAgICAgPC9kaXY+XG4gICAgICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0Pjwvc3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0PlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX2NvbnRyb2xzXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX2NvbnRyb2xzLWJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cIm1vZGFsQ2xvc2VkKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgXCJzdHJlYW1DaGF0LkNhbmNlbFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwic3RyLWNoYXRfX2RpYWxvZ19fY29udHJvbHMtYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlUG9sbCgpXCI+XG4gICAgICAgICAge3sgXCJzdHJlYW1DaGF0LkVuZCB2b3RlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19