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.
- package/assets/i18n/en.d.ts +42 -0
- package/assets/version.d.ts +1 -1
- package/esm2020/assets/i18n/en.mjs +43 -1
- package/esm2020/assets/version.mjs +2 -2
- package/esm2020/lib/channel-list/channel-list.component.mjs +3 -3
- package/esm2020/lib/channel-preview/channel-preview.component.mjs +4 -1
- package/esm2020/lib/channel.service.mjs +6 -3
- package/esm2020/lib/custom-templates.service.mjs +9 -1
- package/esm2020/lib/icon/icon.component.mjs +1 -1
- package/esm2020/lib/message/message.component.mjs +21 -6
- package/esm2020/lib/message-actions.service.mjs +5 -1
- package/esm2020/lib/message-input/message-input.component.mjs +30 -5
- package/esm2020/lib/message-preview.mjs +3 -2
- package/esm2020/lib/modal/modal.component.mjs +3 -3
- package/esm2020/lib/modal/stream-modal.module.mjs +19 -0
- package/esm2020/lib/notification-list/stream-notification.module.mjs +20 -0
- package/esm2020/lib/paginated-list/stream-paginated-list.module.mjs +20 -0
- package/esm2020/lib/polls/base-poll.component.mjs +87 -0
- package/esm2020/lib/polls/poll/poll.component.mjs +34 -0
- package/esm2020/lib/polls/poll-actions/add-option/add-option.component.mjs +67 -0
- package/esm2020/lib/polls/poll-actions/poll-actions.component.mjs +137 -0
- package/esm2020/lib/polls/poll-actions/poll-answers-list/poll-answers-list.component.mjs +82 -0
- package/esm2020/lib/polls/poll-actions/poll-results/poll-results-list/poll-results-list.component.mjs +63 -0
- package/esm2020/lib/polls/poll-actions/poll-results/poll-vote/poll-vote.component.mjs +33 -0
- package/esm2020/lib/polls/poll-actions/poll-results/poll-vote-results-list/poll-vote-results-list.component.mjs +82 -0
- package/esm2020/lib/polls/poll-actions/upsert-answer/upsert-answer.component.mjs +60 -0
- package/esm2020/lib/polls/poll-composer/poll-composer.component.mjs +134 -0
- package/esm2020/lib/polls/poll-composer/validators.mjs +18 -0
- package/esm2020/lib/polls/poll-header/poll-header.component.mjs +80 -0
- package/esm2020/lib/polls/poll-option-selector/poll-option-selector.component.mjs +137 -0
- package/esm2020/lib/polls/poll-options-list/poll-options-list.component.mjs +39 -0
- package/esm2020/lib/polls/poll-preview/poll-preview.component.mjs +31 -0
- package/esm2020/lib/polls/stream-polls.module.mjs +108 -0
- package/esm2020/lib/polls/unique.validator.mjs +13 -0
- package/esm2020/lib/stream-chat.module.mjs +26 -19
- package/esm2020/lib/types.mjs +1 -1
- package/esm2020/public-api.mjs +18 -1
- package/fesm2015/stream-chat-angular.mjs +1333 -61
- package/fesm2015/stream-chat-angular.mjs.map +1 -1
- package/fesm2020/stream-chat-angular.mjs +1291 -59
- package/fesm2020/stream-chat-angular.mjs.map +1 -1
- package/lib/channel.service.d.ts +2 -1
- package/lib/custom-templates.service.d.ts +14 -0
- package/lib/icon/icon.component.d.ts +1 -1
- package/lib/message/message.component.d.ts +1 -1
- package/lib/message-actions.service.d.ts +4 -0
- package/lib/message-input/message-input.component.d.ts +11 -1
- package/lib/message-preview.d.ts +1 -1
- package/lib/modal/stream-modal.module.d.ts +9 -0
- package/lib/notification-list/stream-notification.module.d.ts +10 -0
- package/lib/paginated-list/stream-paginated-list.module.d.ts +10 -0
- package/lib/polls/base-poll.component.d.ts +43 -0
- package/lib/polls/poll/poll.component.d.ts +12 -0
- package/lib/polls/poll-actions/add-option/add-option.component.d.ts +22 -0
- package/lib/polls/poll-actions/poll-actions.component.d.ts +50 -0
- package/lib/polls/poll-actions/poll-answers-list/poll-answers-list.component.d.ts +25 -0
- package/lib/polls/poll-actions/poll-results/poll-results-list/poll-results-list.component.d.ts +22 -0
- package/lib/polls/poll-actions/poll-results/poll-vote/poll-vote.component.d.ts +20 -0
- package/lib/polls/poll-actions/poll-results/poll-vote-results-list/poll-vote-results-list.component.d.ts +24 -0
- package/lib/polls/poll-actions/upsert-answer/upsert-answer.component.d.ts +27 -0
- package/lib/polls/poll-composer/poll-composer.component.d.ts +43 -0
- package/lib/polls/poll-composer/validators.d.ts +3 -0
- package/lib/polls/poll-header/poll-header.component.d.ts +19 -0
- package/lib/polls/poll-option-selector/poll-option-selector.component.d.ts +27 -0
- package/lib/polls/poll-options-list/poll-options-list.component.d.ts +17 -0
- package/lib/polls/poll-preview/poll-preview.component.d.ts +13 -0
- package/lib/polls/stream-polls.module.d.ts +26 -0
- package/lib/polls/unique.validator.d.ts +2 -0
- package/lib/stream-chat.module.d.ts +20 -19
- package/lib/types.d.ts +2 -1
- package/package.json +6 -2
- package/public-api.d.ts +17 -0
- package/src/assets/i18n/en.ts +46 -0
- package/src/assets/styles/css/index.css +1 -1
- package/src/assets/styles/css/index.layout.css +1 -1
- package/src/assets/styles/scss/AttachmentList/AttachmentList-layout.scss +50 -0
- package/src/assets/styles/scss/AttachmentList/AttachmentList-theme.scss +56 -0
- package/src/assets/styles/scss/AttachmentPreviewList/AttachmentPreviewList-layout.scss +4 -1
- package/src/assets/styles/scss/AttachmentPreviewList/AttachmentPreviewList-theme.scss +11 -0
- package/src/assets/styles/scss/Autocomplete/Autocomplete-layout.scss +14 -0
- package/src/assets/styles/scss/Autocomplete/Autocomplete-theme.scss +11 -0
- package/src/assets/styles/scss/Dialog/Dialog-layout.scss +13 -5
- package/src/assets/styles/scss/DropzoneContainer/DropzoneContainer-layout.scss +14 -0
- package/src/assets/styles/scss/DropzoneContainer/DropzoneContainer-theme.scss +17 -0
- package/src/assets/styles/scss/Form/Form-layout.scss +40 -0
- package/src/assets/styles/scss/Form/Form-theme.scss +75 -10
- package/src/assets/styles/scss/Icon/Icon-layout.scss +6 -0
- package/src/assets/styles/scss/Icon/Icon-theme.scss +4 -0
- package/src/assets/styles/scss/LinkPreview/LinkPreview-layout.scss +18 -0
- package/src/assets/styles/scss/LinkPreview/LinkPreview-theme.scss +15 -0
- package/src/assets/styles/scss/Location/Location-layout.scss +52 -0
- package/src/assets/styles/scss/Location/Location-theme.scss +32 -0
- package/src/assets/styles/scss/Message/Message-layout.scss +37 -2
- package/src/assets/styles/scss/Message/Message-theme.scss +40 -1
- package/src/assets/styles/scss/MessageActionsBox/MessageActionsBox-theme.scss +8 -0
- package/src/assets/styles/scss/MessageInput/MessageInput-layout.scss +32 -13
- package/src/assets/styles/scss/MessageInput/MessageInput-theme.scss +28 -20
- package/src/assets/styles/scss/Modal/Modal-layout.scss +2 -0
- package/src/assets/styles/scss/Modal/Modal-theme.scss +21 -6
- package/src/assets/styles/scss/Poll/Poll-layout.scss +45 -44
- package/src/assets/styles/scss/Poll/Poll-theme.scss +8 -36
- package/src/assets/styles/scss/_icons.scss +1 -0
- package/src/assets/styles/scss/index.layout.scss +3 -1
- package/src/assets/styles/scss/index.scss +2 -0
- package/src/assets/version.ts +1 -1
- /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
|
|
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
|
|
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,
|
|
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
|