@banta/sdk 4.6.1 → 4.6.3

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.
@@ -8620,6 +8620,7 @@
8620
8620
 
8621
8621
  var CommentViewComponent = /** @class */ (function () {
8622
8622
  function CommentViewComponent(backend) {
8623
+ var _this = this;
8623
8624
  this.backend = backend;
8624
8625
  this._sourceSubs = new rxjs.Subscription();
8625
8626
  this._selected = new rxjs.Subject();
@@ -8638,6 +8639,7 @@
8638
8639
  this.menuMessage = null;
8639
8640
  this.messages = [];
8640
8641
  this.customSortEnabled = false;
8642
+ this.sourceLoaded = new Promise(function (r) { return _this.markSourceLoaded = r; });
8641
8643
  this.maxMessages = 2000;
8642
8644
  this.maxVisibleMessages = 200;
8643
8645
  this.newestLast = false;
@@ -8655,6 +8657,61 @@
8655
8657
  enumerable: false,
8656
8658
  configurable: true
8657
8659
  });
8660
+ /**
8661
+ * Returns true if this message can be found within one of the message buffers (older, current, newer)
8662
+ * @param message
8663
+ */
8664
+ CommentViewComponent.prototype.isMessageLoadedInContext = function (message) {
8665
+ return this.olderMessages.find(function (x) { return x.id === message.id; })
8666
+ || this.messages.find(function (x) { return x.id === message.id; })
8667
+ || this.newMessages.find(function (x) { return x.id === message.id; });
8668
+ };
8669
+ CommentViewComponent.prototype.loadMessageInContext = function (message) {
8670
+ return __awaiter(this, void 0, void 0, function () {
8671
+ var pageSize, items, index, startIndex;
8672
+ return __generator(this, function (_c) {
8673
+ switch (_c.label) {
8674
+ case 0: return [4 /*yield*/, this.sourceLoaded];
8675
+ case 1:
8676
+ _c.sent();
8677
+ console.log("Loading message " + message.id + " in context...");
8678
+ _c.label = 2;
8679
+ case 2:
8680
+ if (!(this.hasMore && !this.isMessageLoadedInContext(message))) return [3 /*break*/, 4];
8681
+ console.log("...Need to load more comments to find " + message.id);
8682
+ return [4 /*yield*/, this.showMore()];
8683
+ case 3:
8684
+ _c.sent();
8685
+ return [3 /*break*/, 2];
8686
+ case 4:
8687
+ console.log("Finished loading comments, hasMore=" + this.hasMore);
8688
+ if (!this.isMessageLoadedInContext(message)) {
8689
+ console.error("Error while loading message in context: Failed to find message " + message.id + ", maybe it was deleted!");
8690
+ return [2 /*return*/, false];
8691
+ }
8692
+ pageSize = this.maxVisibleMessages;
8693
+ items = [].concat(this.olderMessages, this.messages, this.newMessages);
8694
+ index = items.findIndex(function (x) { return x.id === message.id; });
8695
+ if (index < 0) {
8696
+ console.error("Error while loading message in context: Message was not present in message list!");
8697
+ return [2 /*return*/, false];
8698
+ }
8699
+ console.log("Total messages: " + items.length);
8700
+ console.log("Page size: " + pageSize);
8701
+ console.log("Message index: " + index);
8702
+ startIndex = Math.max(0, index - pageSize / 2);
8703
+ console.log("Start index: " + index);
8704
+ this.newMessages = items.splice(0, startIndex);
8705
+ this.messages = items.splice(0, pageSize);
8706
+ this.olderMessages = items;
8707
+ console.log(this.olderMessages.length + " older messages");
8708
+ console.log(this.messages.length + " current messages");
8709
+ console.log(this.newMessages.length + " newer messages");
8710
+ return [2 /*return*/];
8711
+ }
8712
+ });
8713
+ });
8714
+ };
8658
8715
  /**
8659
8716
  * Get the CommentComponent instantiated for the given ChatMessage,
8660
8717
  * if it exists in the current view. Note that messages which are not
@@ -8796,6 +8853,8 @@
8796
8853
  messages.forEach(function (m) { var _a; return (_a = m.transientState) !== null && _a !== void 0 ? _a : (m.transientState = {}); });
8797
8854
  this.messages = this.newestLast ? messages.slice().reverse() : messages;
8798
8855
  this.sortMessages();
8856
+ if (this.markSourceLoaded)
8857
+ this.markSourceLoaded();
8799
8858
  return [2 /*return*/];
8800
8859
  }
8801
8860
  });
@@ -8821,6 +8880,7 @@
8821
8880
  overflow = this.messages.splice(this.maxVisibleMessages, this.messages.length);
8822
8881
  this.olderMessages = overflow.concat(this.olderMessages);
8823
8882
  this.olderMessages.splice(this.maxMessages - this.maxVisibleMessages, this.olderMessages.length);
8883
+ this.hasMore = this.olderMessages.length > 0;
8824
8884
  return [2 /*return*/];
8825
8885
  });
8826
8886
  });
@@ -9040,6 +9100,7 @@
9040
9100
  this.activatedRoute = activatedRoute;
9041
9101
  this.matSnackBar = matSnackBar;
9042
9102
  this.ngZone = ngZone;
9103
+ this.viewReady = new Promise(function (r) { return _this.markViewReady = r; });
9043
9104
  // Loading Screen
9044
9105
  this._loadingMessage = '';
9045
9106
  this.loadingMessageVisible = false;
@@ -9057,6 +9118,7 @@
9057
9118
  "We'll keep trying, but it's not looking great. \n Commenting & chat services may be down. \n If you continue to experience issues, please contact support.\n "
9058
9119
  ];
9059
9120
  this.useInlineReplies = true;
9121
+ this.loaded = new Promise(function (r) { return _this.markLoaded = r; });
9060
9122
  // Properties
9061
9123
  this._signInSelected = new rxjs.Subject();
9062
9124
  this._permissionDeniedError = new rxjs.Subject();
@@ -9093,27 +9155,28 @@
9093
9155
  { hashtag: 'timeout', description: 'Cause a slow timeout error' },
9094
9156
  { hashtag: 'slow', description: 'Be slow when this message is posted' },
9095
9157
  ];
9158
+ this.loadingSharedComment = false;
9096
9159
  this.sendMessage = function (message) { return __awaiter(_this, void 0, void 0, function () {
9097
9160
  var _a, intercept, e_1;
9098
- return __generator(this, function (_d) {
9099
- switch (_d.label) {
9161
+ return __generator(this, function (_e) {
9162
+ switch (_e.label) {
9100
9163
  case 0:
9101
- _d.trys.push([0, 4, , 5]);
9164
+ _e.trys.push([0, 4, , 5]);
9102
9165
  return [4 /*yield*/, ((_a = this.shouldInterceptMessageSend) === null || _a === void 0 ? void 0 : _a.call(this, message, this.source))];
9103
9166
  case 1:
9104
- intercept = _d.sent();
9167
+ intercept = _e.sent();
9105
9168
  if (!!intercept) return [3 /*break*/, 3];
9106
9169
  return [4 /*yield*/, this.source.send(message)];
9107
9170
  case 2:
9108
- _d.sent();
9109
- _d.label = 3;
9171
+ _e.sent();
9172
+ _e.label = 3;
9110
9173
  case 3:
9111
9174
  if (this.source.sortOrder !== common$1.CommentsOrder.NEWEST) {
9112
9175
  this.sortOrder = common$1.CommentsOrder.NEWEST;
9113
9176
  }
9114
9177
  return [2 /*return*/, true];
9115
9178
  case 4:
9116
- e_1 = _d.sent();
9179
+ e_1 = _e.sent();
9117
9180
  this.handleBackendException(e_1, 'Could not send: ');
9118
9181
  return [3 /*break*/, 5];
9119
9182
  case 5: return [2 /*return*/];
@@ -9122,21 +9185,21 @@
9122
9185
  }); };
9123
9186
  this.sendReply = function (message) { return __awaiter(_this, void 0, void 0, function () {
9124
9187
  var _b, intercept, e_2;
9125
- return __generator(this, function (_d) {
9126
- switch (_d.label) {
9188
+ return __generator(this, function (_e) {
9189
+ switch (_e.label) {
9127
9190
  case 0:
9128
- _d.trys.push([0, 4, , 5]);
9191
+ _e.trys.push([0, 4, , 5]);
9129
9192
  return [4 /*yield*/, ((_b = this.shouldInterceptMessageSend) === null || _b === void 0 ? void 0 : _b.call(this, message, this.selectedMessageThread))];
9130
9193
  case 1:
9131
- intercept = _d.sent();
9194
+ intercept = _e.sent();
9132
9195
  if (!!intercept) return [3 /*break*/, 3];
9133
9196
  return [4 /*yield*/, this.selectedMessageThread.send(message)];
9134
9197
  case 2:
9135
- _d.sent();
9136
- _d.label = 3;
9198
+ _e.sent();
9199
+ _e.label = 3;
9137
9200
  case 3: return [2 /*return*/, true];
9138
9201
  case 4:
9139
- e_2 = _d.sent();
9202
+ e_2 = _e.sent();
9140
9203
  this.handleBackendException(e_2, 'Could not send reply: ');
9141
9204
  return [3 /*break*/, 5];
9142
9205
  case 5: return [2 /*return*/];
@@ -9183,9 +9246,9 @@
9183
9246
  var queryString = window.location.search.substring(1);
9184
9247
  var query = queryString.split('&')
9185
9248
  .map(function (s) { return s.split('='); })
9186
- .reduce(function (o, _d) {
9187
- var _e = __read(_d, 2), k = _e[0], v = _e[1];
9188
- return (o[k] = v, o);
9249
+ .reduce(function (o, _e) {
9250
+ var _f = __read(_e, 2), k = _f[0], v = _f[1];
9251
+ return (o[decodeURIComponent(k)] = decodeURIComponent(v), o);
9189
9252
  }, {});
9190
9253
  var commentID = query['comment'];
9191
9254
  if (commentID) {
@@ -9225,6 +9288,7 @@
9225
9288
  }
9226
9289
  callback();
9227
9290
  }
9291
+ this.markViewReady();
9228
9292
  };
9229
9293
  BantaCommentsComponent.prototype.ngOnDestroy = function () {
9230
9294
  this._subs.unsubscribe();
@@ -9234,19 +9298,19 @@
9234
9298
  BantaCommentsComponent.prototype.setSourceFromTopicID = function (topicID) {
9235
9299
  return __awaiter(this, void 0, void 0, function () {
9236
9300
  var _this = this;
9237
- return __generator(this, function (_d) {
9301
+ return __generator(this, function (_e) {
9238
9302
  if (typeof window === 'undefined')
9239
9303
  return [2 /*return*/];
9240
9304
  setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
9241
- var _d;
9242
- return __generator(this, function (_e) {
9243
- switch (_e.label) {
9305
+ var _e;
9306
+ return __generator(this, function (_f) {
9307
+ switch (_f.label) {
9244
9308
  case 0:
9245
9309
  console.log("[banta-comments] Subscribing to topic source '" + topicID + "'");
9246
- _d = this;
9310
+ _e = this;
9247
9311
  return [4 /*yield*/, this.backend.getSourceForTopic(topicID, { sortOrder: this.sortOrder })];
9248
9312
  case 1:
9249
- _d.source = _e.sent();
9313
+ _e.source = _f.sent();
9250
9314
  this._sourceIsOwned = true;
9251
9315
  return [2 /*return*/];
9252
9316
  }
@@ -9277,25 +9341,25 @@
9277
9341
  BantaCommentsComponent.prototype.startLoading = function () {
9278
9342
  return __awaiter(this, void 0, void 0, function () {
9279
9343
  var _this = this;
9280
- return __generator(this, function (_d) {
9281
- switch (_d.label) {
9344
+ return __generator(this, function (_e) {
9345
+ switch (_e.label) {
9282
9346
  case 0:
9283
9347
  this.loadingStartedAt = this.messageChangedAt = Date.now();
9284
9348
  if (this.updateLoading())
9285
9349
  return [2 /*return*/];
9286
9350
  return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(function () { return resolve(); }, 100); })];
9287
9351
  case 1:
9288
- _d.sent();
9352
+ _e.sent();
9289
9353
  if (this.updateLoading())
9290
9354
  return [2 /*return*/];
9291
9355
  return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(function () { return resolve(); }, 250); })];
9292
9356
  case 2:
9293
- _d.sent();
9357
+ _e.sent();
9294
9358
  if (this.updateLoading())
9295
9359
  return [2 /*return*/];
9296
9360
  return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(function () { return resolve(); }, 500); })];
9297
9361
  case 3:
9298
- _d.sent();
9362
+ _e.sent();
9299
9363
  if (this.updateLoading())
9300
9364
  return [2 /*return*/];
9301
9365
  console.log("[Banta] Loading is taking a long time! Showing loading screen.");
@@ -9344,6 +9408,7 @@
9344
9408
  this.loadingMessage = "Here we go!";
9345
9409
  setTimeout(function () {
9346
9410
  _this.loading = false;
9411
+ _this.markLoaded();
9347
9412
  }, 750);
9348
9413
  return true;
9349
9414
  }
@@ -9478,65 +9543,88 @@
9478
9543
  var comment = document.querySelectorAll("[data-comment-id=\"" + commentId + "\"]");
9479
9544
  if (comment.length > 0) {
9480
9545
  // comment.item(0).scroll({behavior: 'smooth'});
9481
- comment.item(0).scrollIntoView();
9546
+ comment.item(0).scrollIntoView({
9547
+ inline: 'center',
9548
+ block: 'center'
9549
+ });
9482
9550
  }
9483
9551
  }, 1000);
9484
9552
  };
9485
9553
  BantaCommentsComponent.prototype.navigateToSharedComment = function (id) {
9486
- var _a, _b, _c;
9554
+ var _a, _b, _c, _d;
9487
9555
  return __awaiter(this, void 0, void 0, function () {
9488
9556
  var source, message, e_3, parentMessage, thread;
9489
- return __generator(this, function (_d) {
9490
- switch (_d.label) {
9557
+ return __generator(this, function (_e) {
9558
+ switch (_e.label) {
9491
9559
  case 0:
9560
+ this.loadingSharedComment = true;
9492
9561
  source = this.source;
9493
9562
  return [4 /*yield*/, source.ready];
9494
9563
  case 1:
9495
- _d.sent();
9496
- console.log("Navigating to shared comment with ID '" + id + "'...");
9497
- _d.label = 2;
9564
+ _e.sent();
9565
+ return [4 /*yield*/, this.viewReady];
9498
9566
  case 2:
9499
- _d.trys.push([2, 4, , 5]);
9500
- return [4 /*yield*/, this.source.get(id)];
9567
+ _e.sent();
9568
+ return [4 /*yield*/, this.loaded];
9501
9569
  case 3:
9502
- message = _d.sent();
9503
- return [3 /*break*/, 5];
9570
+ _e.sent();
9571
+ console.log("Navigating to shared comment with ID '" + id + "'...");
9572
+ _e.label = 4;
9504
9573
  case 4:
9505
- e_3 = _d.sent();
9574
+ _e.trys.push([4, 6, , 7]);
9575
+ return [4 /*yield*/, this.source.get(id)];
9576
+ case 5:
9577
+ message = _e.sent();
9578
+ return [3 /*break*/, 7];
9579
+ case 6:
9580
+ e_3 = _e.sent();
9506
9581
  console.error("Failed to find comment from URL: " + e_3.message);
9582
+ alert("Could not load desired comment. It may have been removed.");
9507
9583
  return [2 /*return*/];
9508
- case 5:
9584
+ case 7:
9509
9585
  (_a = message.transientState) !== null && _a !== void 0 ? _a : (message.transientState = {});
9510
- if (!message.parentMessageId) return [3 /*break*/, 11];
9586
+ if (!message.parentMessageId) return [3 /*break*/, 14];
9511
9587
  return [4 /*yield*/, this.source.get(message.parentMessageId)];
9512
- case 6:
9513
- parentMessage = _d.sent();
9588
+ case 8:
9589
+ parentMessage = _e.sent();
9514
9590
  (_b = parentMessage.transientState) !== null && _b !== void 0 ? _b : (parentMessage.transientState = {});
9591
+ // Make sure that this message is loaded and visible to the user
9592
+ return [4 /*yield*/, this.commentView.loadMessageInContext(parentMessage)];
9593
+ case 9:
9594
+ // Make sure that this message is loaded and visible to the user
9595
+ _e.sent();
9515
9596
  return [4 /*yield*/, this.selectMessage(parentMessage)];
9516
- case 7:
9517
- thread = _d.sent();
9597
+ case 10:
9598
+ thread = _e.sent();
9518
9599
  // Need to re-retrieve the message within the new chat source to affect its
9519
9600
  // transient state.
9520
9601
  return [4 /*yield*/, thread.ready];
9521
- case 8:
9602
+ case 11:
9522
9603
  // Need to re-retrieve the message within the new chat source to affect its
9523
9604
  // transient state.
9524
- _d.sent();
9605
+ _e.sent();
9525
9606
  return [4 /*yield*/, thread.get(message.id)];
9526
- case 9:
9527
- message = _d.sent();
9607
+ case 12:
9608
+ message = _e.sent();
9528
9609
  (_c = message.transientState) !== null && _c !== void 0 ? _c : (message.transientState = {});
9529
9610
  message.transientState.highlighted = true;
9530
9611
  console.dir(message);
9531
9612
  return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(function () { return resolve(); }, 500); })];
9532
- case 10:
9533
- _d.sent();
9534
- return [3 /*break*/, 12];
9535
- case 11:
9536
- this.selectMessage(message);
9537
- _d.label = 12;
9538
- case 12:
9613
+ case 13:
9614
+ _e.sent();
9615
+ return [3 /*break*/, 16];
9616
+ case 14:
9617
+ // Make sure that this message is loaded and visible to the user
9618
+ return [4 /*yield*/, this.commentView.loadMessageInContext(message)];
9619
+ case 15:
9620
+ // Make sure that this message is loaded and visible to the user
9621
+ _e.sent();
9622
+ (_d = message.transientState) !== null && _d !== void 0 ? _d : (message.transientState = {});
9623
+ message.transientState.highlighted = true;
9624
+ _e.label = 16;
9625
+ case 16:
9539
9626
  this.scrollToComment(id);
9627
+ this.loadingSharedComment = false;
9540
9628
  return [2 /*return*/];
9541
9629
  }
9542
9630
  });
@@ -9573,31 +9661,31 @@
9573
9661
  BantaCommentsComponent.prototype.likeMessage = function (source, message) {
9574
9662
  return __awaiter(this, void 0, void 0, function () {
9575
9663
  var e_4;
9576
- return __generator(this, function (_d) {
9577
- switch (_d.label) {
9664
+ return __generator(this, function (_e) {
9665
+ switch (_e.label) {
9578
9666
  case 0:
9579
9667
  if (!!this.user) return [3 /*break*/, 2];
9580
9668
  return [4 /*yield*/, this.showSignIn()];
9581
9669
  case 1:
9582
- _d.sent();
9670
+ _e.sent();
9583
9671
  return [2 /*return*/];
9584
9672
  case 2:
9585
9673
  this._upvoted.next(message);
9586
9674
  message.transientState.liking = true;
9587
- _d.label = 3;
9675
+ _e.label = 3;
9588
9676
  case 3:
9589
- _d.trys.push([3, 5, 6, 8]);
9677
+ _e.trys.push([3, 5, 6, 8]);
9590
9678
  return [4 /*yield*/, source.likeMessage(message.id)];
9591
9679
  case 4:
9592
- _d.sent();
9680
+ _e.sent();
9593
9681
  return [3 /*break*/, 8];
9594
9682
  case 5:
9595
- e_4 = _d.sent();
9683
+ e_4 = _e.sent();
9596
9684
  this.handleBackendExceptionAsAlert(e_4, 'Could not like this message: ');
9597
9685
  return [3 /*break*/, 8];
9598
9686
  case 6: return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(function () { return resolve(); }, 250); })];
9599
9687
  case 7:
9600
- _d.sent();
9688
+ _e.sent();
9601
9689
  message.transientState.liking = false;
9602
9690
  return [7 /*endfinally*/];
9603
9691
  case 8: return [2 /*return*/];
@@ -9609,33 +9697,33 @@
9609
9697
  var _a;
9610
9698
  return __awaiter(this, void 0, void 0, function () {
9611
9699
  var e_5;
9612
- return __generator(this, function (_d) {
9613
- switch (_d.label) {
9700
+ return __generator(this, function (_e) {
9701
+ switch (_e.label) {
9614
9702
  case 0:
9615
9703
  if (!!this.user) return [3 /*break*/, 2];
9616
9704
  return [4 /*yield*/, this.showSignIn()];
9617
9705
  case 1:
9618
- _d.sent();
9706
+ _e.sent();
9619
9707
  return [2 /*return*/];
9620
9708
  case 2:
9621
9709
  this._upvoted.next(message);
9622
9710
  message.transientState.liking = true;
9623
9711
  if ((_a = message.userState) === null || _a === void 0 ? void 0 : _a.liked)
9624
9712
  message.likes = (message.likes || 0) - 1;
9625
- _d.label = 3;
9713
+ _e.label = 3;
9626
9714
  case 3:
9627
- _d.trys.push([3, 5, , 6]);
9715
+ _e.trys.push([3, 5, , 6]);
9628
9716
  return [4 /*yield*/, source.unlikeMessage(message.id)];
9629
9717
  case 4:
9630
- _d.sent();
9718
+ _e.sent();
9631
9719
  return [3 /*break*/, 6];
9632
9720
  case 5:
9633
- e_5 = _d.sent();
9721
+ e_5 = _e.sent();
9634
9722
  this.handleBackendExceptionAsAlert(e_5, 'Failed to unlike this message: ');
9635
9723
  return [3 /*break*/, 6];
9636
9724
  case 6: return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(function () { return resolve(); }, 250); })];
9637
9725
  case 7:
9638
- _d.sent();
9726
+ _e.sent();
9639
9727
  message.transientState.liking = false;
9640
9728
  return [2 /*return*/];
9641
9729
  }
@@ -9644,7 +9732,7 @@
9644
9732
  };
9645
9733
  BantaCommentsComponent.prototype.reportMessage = function (message) {
9646
9734
  return __awaiter(this, void 0, void 0, function () {
9647
- return __generator(this, function (_d) {
9735
+ return __generator(this, function (_e) {
9648
9736
  this._reported.next(message);
9649
9737
  return [2 /*return*/];
9650
9738
  });
@@ -9654,7 +9742,7 @@
9654
9742
  return __awaiter(this, void 0, void 0, function () {
9655
9743
  var message;
9656
9744
  var _this = this;
9657
- return __generator(this, function (_d) {
9745
+ return __generator(this, function (_e) {
9658
9746
  message = this.selectedMessage;
9659
9747
  this._selected.next(null);
9660
9748
  this.selectedMessage = null;
@@ -9673,8 +9761,8 @@
9673
9761
  return __awaiter(this, void 0, void 0, function () {
9674
9762
  var selectedMessageThread;
9675
9763
  var _this = this;
9676
- return __generator(this, function (_d) {
9677
- switch (_d.label) {
9764
+ return __generator(this, function (_e) {
9765
+ switch (_e.label) {
9678
9766
  case 0:
9679
9767
  if (this.selectedMessage === message) {
9680
9768
  this.unselectMessage();
@@ -9684,10 +9772,10 @@
9684
9772
  this.selectedMessage = message;
9685
9773
  return [4 /*yield*/, this.backend.getSourceForThread(this.topicID, message.id)];
9686
9774
  case 1:
9687
- selectedMessageThread = _d.sent();
9775
+ selectedMessageThread = _e.sent();
9688
9776
  setTimeout(function () { return _this.selectedMessageVisible = true; });
9689
9777
  setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
9690
- return __generator(this, function (_d) {
9778
+ return __generator(this, function (_e) {
9691
9779
  this.selectedMessageThread = selectedMessageThread;
9692
9780
  return [2 /*return*/];
9693
9781
  });
@@ -9699,7 +9787,7 @@
9699
9787
  };
9700
9788
  BantaCommentsComponent.prototype.showSignIn = function () {
9701
9789
  return __awaiter(this, void 0, void 0, function () {
9702
- return __generator(this, function (_d) {
9790
+ return __generator(this, function (_e) {
9703
9791
  this._signInSelected.next();
9704
9792
  return [2 /*return*/];
9705
9793
  });
@@ -9707,7 +9795,7 @@
9707
9795
  };
9708
9796
  BantaCommentsComponent.prototype.showEditAvatar = function () {
9709
9797
  return __awaiter(this, void 0, void 0, function () {
9710
- return __generator(this, function (_d) {
9798
+ return __generator(this, function (_e) {
9711
9799
  this._editAvatarSelected.next();
9712
9800
  return [2 /*return*/];
9713
9801
  });
@@ -9715,7 +9803,7 @@
9715
9803
  };
9716
9804
  BantaCommentsComponent.prototype.selectMessageUser = function (message) {
9717
9805
  return __awaiter(this, void 0, void 0, function () {
9718
- return __generator(this, function (_d) {
9806
+ return __generator(this, function (_e) {
9719
9807
  this._userSelected.next(message);
9720
9808
  return [2 /*return*/];
9721
9809
  });
@@ -9723,7 +9811,7 @@
9723
9811
  };
9724
9812
  BantaCommentsComponent.prototype.selectUsername = function (user) {
9725
9813
  return __awaiter(this, void 0, void 0, function () {
9726
- return __generator(this, function (_d) {
9814
+ return __generator(this, function (_e) {
9727
9815
  this._usernameSelected.next(user);
9728
9816
  return [2 /*return*/];
9729
9817
  });
@@ -9731,7 +9819,7 @@
9731
9819
  };
9732
9820
  BantaCommentsComponent.prototype.selectAvatar = function (user) {
9733
9821
  return __awaiter(this, void 0, void 0, function () {
9734
- return __generator(this, function (_d) {
9822
+ return __generator(this, function (_e) {
9735
9823
  this._avatarSelected.next(user);
9736
9824
  return [2 /*return*/];
9737
9825
  });
@@ -9739,7 +9827,7 @@
9739
9827
  };
9740
9828
  BantaCommentsComponent.prototype.shareMessage = function (message) {
9741
9829
  return __awaiter(this, void 0, void 0, function () {
9742
- return __generator(this, function (_d) {
9830
+ return __generator(this, function (_e) {
9743
9831
  this._shared.next(message);
9744
9832
  return [2 /*return*/];
9745
9833
  });
@@ -9749,28 +9837,28 @@
9749
9837
  var _a;
9750
9838
  return __awaiter(this, void 0, void 0, function () {
9751
9839
  var e_6;
9752
- return __generator(this, function (_d) {
9753
- switch (_d.label) {
9840
+ return __generator(this, function (_e) {
9841
+ switch (_e.label) {
9754
9842
  case 0:
9755
9843
  if (!!this.user) return [3 /*break*/, 2];
9756
9844
  return [4 /*yield*/, this.showSignIn()];
9757
9845
  case 1:
9758
- _d.sent();
9846
+ _e.sent();
9759
9847
  return [2 /*return*/];
9760
9848
  case 2:
9761
9849
  if (!confirm("Are you sure you want to delete this comment? You cannot undo this action."))
9762
9850
  return [2 /*return*/];
9763
- _d.label = 3;
9851
+ _e.label = 3;
9764
9852
  case 3:
9765
- _d.trys.push([3, 5, , 6]);
9853
+ _e.trys.push([3, 5, , 6]);
9766
9854
  return [4 /*yield*/, this.source.deleteMessage(message.id)];
9767
9855
  case 4:
9768
- _d.sent();
9856
+ _e.sent();
9769
9857
  if (((_a = this.selectedMessage) === null || _a === void 0 ? void 0 : _a.id) === message.id)
9770
9858
  this.unselectMessage();
9771
9859
  return [3 /*break*/, 6];
9772
9860
  case 5:
9773
- e_6 = _d.sent();
9861
+ e_6 = _e.sent();
9774
9862
  this.handleBackendExceptionAsAlert(e_6, "Could not delete message: ");
9775
9863
  return [3 /*break*/, 6];
9776
9864
  case 6: return [2 /*return*/];
@@ -9781,22 +9869,22 @@
9781
9869
  BantaCommentsComponent.prototype.editMessage = function (source, message, newText) {
9782
9870
  return __awaiter(this, void 0, void 0, function () {
9783
9871
  var e_7;
9784
- return __generator(this, function (_d) {
9785
- switch (_d.label) {
9872
+ return __generator(this, function (_e) {
9873
+ switch (_e.label) {
9786
9874
  case 0:
9787
9875
  if (!!this.user) return [3 /*break*/, 2];
9788
9876
  return [4 /*yield*/, this.showSignIn()];
9789
9877
  case 1:
9790
- _d.sent();
9878
+ _e.sent();
9791
9879
  return [2 /*return*/];
9792
9880
  case 2:
9793
- _d.trys.push([2, 4, , 5]);
9881
+ _e.trys.push([2, 4, , 5]);
9794
9882
  return [4 /*yield*/, source.editMessage(message.id, newText)];
9795
9883
  case 3:
9796
- _d.sent();
9884
+ _e.sent();
9797
9885
  return [3 /*break*/, 5];
9798
9886
  case 4:
9799
- e_7 = _d.sent();
9887
+ e_7 = _e.sent();
9800
9888
  this.handleBackendExceptionAsAlert(e_7, 'Could not edit this message: ');
9801
9889
  return [2 /*return*/];
9802
9890
  case 5:
@@ -9809,7 +9897,7 @@
9809
9897
  };
9810
9898
  BantaCommentsComponent.prototype.startEditing = function (message) {
9811
9899
  return __awaiter(this, void 0, void 0, function () {
9812
- return __generator(this, function (_d) {
9900
+ return __generator(this, function (_e) {
9813
9901
  this.selectedMessage.transientState.editing = false;
9814
9902
  message.transientState.editing = true;
9815
9903
  return [2 /*return*/];
@@ -9819,23 +9907,23 @@
9819
9907
  BantaCommentsComponent.prototype.saveEdit = function (message, text) {
9820
9908
  return __awaiter(this, void 0, void 0, function () {
9821
9909
  var e_8;
9822
- return __generator(this, function (_d) {
9823
- switch (_d.label) {
9910
+ return __generator(this, function (_e) {
9911
+ switch (_e.label) {
9824
9912
  case 0:
9825
9913
  if (!!this.user) return [3 /*break*/, 2];
9826
9914
  return [4 /*yield*/, this.showSignIn()];
9827
9915
  case 1:
9828
- _d.sent();
9916
+ _e.sent();
9829
9917
  return [2 /*return*/];
9830
9918
  case 2:
9831
- _d.trys.push([2, 4, , 5]);
9919
+ _e.trys.push([2, 4, , 5]);
9832
9920
  return [4 /*yield*/, this.source.editMessage(message.id, text)];
9833
9921
  case 3:
9834
- _d.sent();
9922
+ _e.sent();
9835
9923
  message.transientState.editing = false;
9836
9924
  return [3 /*break*/, 5];
9837
9925
  case 4:
9838
- e_8 = _d.sent();
9926
+ e_8 = _e.sent();
9839
9927
  this.handleBackendExceptionAsAlert(e_8, "Could not edit message: ");
9840
9928
  return [3 /*break*/, 5];
9841
9929
  case 5: return [2 /*return*/];
@@ -9848,8 +9936,8 @@
9848
9936
  BantaCommentsComponent.decorators = [
9849
9937
  { type: core.Component, args: [{
9850
9938
  selector: 'banta-comments',
9851
- template: "<ng-container *ngIf=\"loading\">\r\n <div class=\"loading-screen\" [class.visible]=\"showLoadingScreen\">\r\n <h1>Loading...</h1>\r\n <div>\r\n <mat-spinner [diameter]=\"300\" [strokeWidth]=\"2\"></mat-spinner>\r\n </div>\r\n\r\n <p class=\"loading-message\" [class.visible]=\"loadingMessageVisible\">{{loadingMessage}}</p>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"!loading\">\r\n <div class=\"focused\" [class.visible]=\"selectedMessageVisible\" *ngIf=\"selectedMessage && !useInlineReplies\">\r\n\r\n <div>\r\n <a mat-button href=\"javascript:;\" (click)=\"unselectMessage()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n Latest Comments\r\n </a>\r\n </div>\r\n\r\n <banta-comment\r\n [message]=\"selectedMessage\"\r\n [liking]=\"selectedMessage.transientState.liking\"\r\n [mine]=\"user?.id === selectedMessage.user?.id\"\r\n [permissions]=\"source?.permissions\"\r\n [showReplyAction]=\"false\"\r\n [editing]=\"selectedMessage.transientState.editing\"\r\n [maxLength]=\"maxCommentLength\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (editStarted)=\"startEditing(selectedMessage)\"\r\n (editEnded)=\"selectedMessage.transientState.editing = false\"\r\n (edited)=\"saveEdit(selectedMessage, $event)\"\r\n (userSelected)=\"selectMessageUser(selectedMessage)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (liked)=\"likeMessage(source, selectedMessage)\"\r\n (unliked)=\"unlikeMessage(source, selectedMessage)\"\r\n (reported)=\"reportMessage(selectedMessage)\"\r\n (selected)=\"selectMessage(selectedMessage)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage(selectedMessage)\"\r\n ></banta-comment>\r\n\r\n <div class=\"replies\">\r\n\r\n <ng-container *ngIf=\"!selectedMessageThread\">\r\n <div class=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectedMessageThread\">\r\n <banta-comment-view\r\n class=\"replies\"\r\n #threadView\r\n [source]=\"selectedMessageThread\"\r\n [allowReplies]=\"false\"\r\n [fixedHeight]=\"false\"\r\n [showEmptyState]=\"false\"\r\n [newestLast]=\"true\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (liked)=\"likeMessage(selectedMessageThread, $event)\"\r\n (unliked)=\"unlikeMessage(selectedMessageThread, $event)\"\r\n (messageEdited)=\"editMessage(selectedMessageThread, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage($event)\"\r\n [customMenuItems]=\"customMenuItems\"\r\n ></banta-comment-view>\r\n\r\n <banta-comment-field\r\n [sendLabel]=\"replyLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n (signInSelected)=\"showSignIn()\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n [source]=\"selectedMessageThread\"\r\n [maxLength]=\"maxCommentLength\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [signInLabel]=\"signInLabel\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [user]=\"user\"\r\n [label]=\"postReplyLabel\"\r\n [submit]=\"sendReply\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"sendReplyOptionsTemplate\"></ng-container>\r\n </banta-comment-field>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"main\" [class.hidden]=\"selectedMessage && !useInlineReplies\">\r\n <banta-comment-field\r\n [source]=\"source\"\r\n [user]=\"user\"\r\n [sendLabel]=\"sendLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [signInLabel]=\"signInLabel\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n [label]=\"postCommentLabel\"\r\n [maxLength]=\"maxCommentLength\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n (signInSelected)=\"showSignIn()\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [submit]=\"sendMessage\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n \r\n </banta-comment-field>\r\n\r\n <banta-comment-sort\r\n [(sort)]=\"sortOrder\"></banta-comment-sort>\r\n\r\n <banta-comment-view\r\n #commentView\r\n [class.faded]=\"selectedMessage && !useInlineReplies\"\r\n [source]=\"source\"\r\n [fixedHeight]=\"fixedHeight\"\r\n [maxMessages]=\"maxMessages\"\r\n [maxVisibleMessages]=\"maxVisibleMessages\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n [customMenuItems]=\"customMenuItems\"\r\n (userSelected)=\"selectMessageUser($event)\"\r\n (sortOrderChanged)=\"sortOrder = $event\"\r\n (selected)=\"selectMessage($event)\"\r\n (liked)=\"likeMessage(source, $event)\"\r\n (unliked)=\"unlikeMessage(source, $event)\"\r\n (messageEdited)=\"editMessage(source, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n [selectedMessage]=\"selectedMessage\"\r\n (deleted)=\"deleteMessage($event)\"\r\n >\r\n <div class=\"inline-replies\">\r\n <div class=\"focused\" [class.visible]=\"selectedMessageVisible\" *ngIf=\"selectedMessage\">\r\n <div class=\"replies\">\r\n \r\n <ng-container *ngIf=\"!selectedMessageThread\">\r\n <div class=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"selectedMessageThread\">\r\n <banta-comment-view\r\n [source]=\"selectedMessageThread\"\r\n [allowReplies]=\"false\"\r\n [fixedHeight]=\"false\"\r\n [showEmptyState]=\"false\"\r\n [newestLast]=\"true\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (liked)=\"likeMessage(selectedMessageThread, $event)\"\r\n (unliked)=\"unlikeMessage(selectedMessageThread, $event)\"\r\n (messageEdited)=\"editMessage(selectedMessageThread, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage($event)\"\r\n ></banta-comment-view>\r\n \r\n <banta-comment-field\r\n [sendLabel]=\"replyLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n (signInSelected)=\"showSignIn()\"\r\n [maxLength]=\"maxCommentLength\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n [source]=\"selectedMessageThread\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [signInLabel]=\"signInLabel\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [user]=\"user\"\r\n [label]=\"postReplyLabel\"\r\n [submit]=\"sendReply\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"sendReplyOptionsTemplate\"></ng-container>\r\n </banta-comment-field>\r\n </ng-container>\r\n </div>\r\n </div> \r\n </div>\r\n </banta-comment-view>\r\n </div>\r\n</ng-container>\r\n",
9852
- styles: [":host{display:flex;flex-direction:column}@-webkit-keyframes select-comment{0%{transform:scale(1.15)}to{transform:scale(1)}}@keyframes select-comment{0%{transform:scale(1.15)}to{transform:scale(1)}}.focused{-webkit-animation-name:select-comment;animation-name:select-comment;-webkit-animation-duration:.4s;animation-duration:.4s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.focused .replies{margin-top:1em;margin-left:2em;border-left:2px solid #333;padding-left:2em}banta-comment-view{opacity:1;transition:opacity .4s ease-in-out}banta-comment-view.faded{opacity:.25}.loading{display:block;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;margin:0 auto;min-height:16em}.main.hidden{display:none}.loading-screen{text-align:center;opacity:0;transition:opacity .25s ease-in-out}.loading-screen.visible{opacity:1}.loading-screen h1{font-weight:100}.loading-screen mat-spinner{margin:5em auto}.loading-screen .loading-message{opacity:0;transition:opacity .25s ease-in-out;width:500px;max-width:100%;margin:0 auto}.loading-screen .loading-message.visible{opacity:1}banta-comment-sort{margin:0 0 0 auto;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;display:block}.inline-replies{margin-left:4em}@media (max-width:500px){.focused .replies{margin-left:0}.inline-replies{margin-left:1em}.focused .replies{padding-left:.5em}banta-comment-sort{margin:0;width:100%}}:host-context(.banta-mobile) .focused .replies{margin-left:0}:host-context(.banta-mobile) .inline-replies{margin-left:1em}:host-context(.banta-mobile) .focused .replies{padding-left:.5em}:host-context(.banta-mobile) banta-comment-sort{margin:0;width:100%}"]
9939
+ template: "<ng-container *ngIf=\"loading\">\r\n <div class=\"loading-screen\" [class.visible]=\"showLoadingScreen\">\r\n <h1>Loading...</h1>\r\n <div>\r\n <mat-spinner [diameter]=\"300\" [strokeWidth]=\"2\"></mat-spinner>\r\n </div>\r\n\r\n <p class=\"loading-message\" [class.visible]=\"loadingMessageVisible\">{{loadingMessage}}</p>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"!loading\">\r\n <div class=\"focused\" [class.visible]=\"selectedMessageVisible\" *ngIf=\"selectedMessage && !useInlineReplies\">\r\n\r\n <div>\r\n <a mat-button href=\"javascript:;\" (click)=\"unselectMessage()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n Latest Comments\r\n </a>\r\n </div>\r\n\r\n <banta-comment\r\n [message]=\"selectedMessage\"\r\n [liking]=\"selectedMessage.transientState.liking\"\r\n [mine]=\"user?.id === selectedMessage.user?.id\"\r\n [permissions]=\"source?.permissions\"\r\n [showReplyAction]=\"false\"\r\n [editing]=\"selectedMessage.transientState.editing\"\r\n [maxLength]=\"maxCommentLength\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (editStarted)=\"startEditing(selectedMessage)\"\r\n (editEnded)=\"selectedMessage.transientState.editing = false\"\r\n (edited)=\"saveEdit(selectedMessage, $event)\"\r\n (userSelected)=\"selectMessageUser(selectedMessage)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (liked)=\"likeMessage(source, selectedMessage)\"\r\n (unliked)=\"unlikeMessage(source, selectedMessage)\"\r\n (reported)=\"reportMessage(selectedMessage)\"\r\n (selected)=\"selectMessage(selectedMessage)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage(selectedMessage)\"\r\n ></banta-comment>\r\n\r\n <div class=\"replies\">\r\n\r\n <ng-container *ngIf=\"!selectedMessageThread\">\r\n <div class=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectedMessageThread\">\r\n <banta-comment-view\r\n class=\"replies\"\r\n #threadView\r\n [source]=\"selectedMessageThread\"\r\n [allowReplies]=\"false\"\r\n [fixedHeight]=\"false\"\r\n [showEmptyState]=\"false\"\r\n [newestLast]=\"true\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (liked)=\"likeMessage(selectedMessageThread, $event)\"\r\n (unliked)=\"unlikeMessage(selectedMessageThread, $event)\"\r\n (messageEdited)=\"editMessage(selectedMessageThread, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage($event)\"\r\n [customMenuItems]=\"customMenuItems\"\r\n ></banta-comment-view>\r\n\r\n <banta-comment-field\r\n [sendLabel]=\"replyLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n (signInSelected)=\"showSignIn()\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n [source]=\"selectedMessageThread\"\r\n [maxLength]=\"maxCommentLength\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [signInLabel]=\"signInLabel\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [user]=\"user\"\r\n [label]=\"postReplyLabel\"\r\n [submit]=\"sendReply\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"sendReplyOptionsTemplate\"></ng-container>\r\n </banta-comment-field>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"main\" [class.hidden]=\"selectedMessage && !useInlineReplies\">\r\n <banta-comment-field\r\n [source]=\"source\"\r\n [user]=\"user\"\r\n [sendLabel]=\"sendLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [signInLabel]=\"signInLabel\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n [label]=\"postCommentLabel\"\r\n [maxLength]=\"maxCommentLength\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n (signInSelected)=\"showSignIn()\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [submit]=\"sendMessage\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n \r\n </banta-comment-field>\r\n\r\n <banta-comment-sort\r\n [(sort)]=\"sortOrder\"></banta-comment-sort>\r\n\r\n <div class=\"loading-comment\" *ngIf=\"loadingSharedComment\">\r\n <h1>Loading desired comment...</h1>\r\n <mat-spinner [diameter]=\"300\" [strokeWidth]=\"2\"></mat-spinner>\r\n <p>\r\n If there are a lot of comments, this might take awhile!\r\n </p>\r\n </div>\r\n <banta-comment-view\r\n #commentView\r\n [class.faded]=\"selectedMessage && !useInlineReplies\"\r\n [source]=\"source\"\r\n [fixedHeight]=\"fixedHeight\"\r\n [maxMessages]=\"maxMessages\"\r\n [maxVisibleMessages]=\"maxVisibleMessages\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n [customMenuItems]=\"customMenuItems\"\r\n (userSelected)=\"selectMessageUser($event)\"\r\n (sortOrderChanged)=\"sortOrder = $event\"\r\n (selected)=\"selectMessage($event)\"\r\n (liked)=\"likeMessage(source, $event)\"\r\n (unliked)=\"unlikeMessage(source, $event)\"\r\n (messageEdited)=\"editMessage(source, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n [selectedMessage]=\"selectedMessage\"\r\n (deleted)=\"deleteMessage($event)\"\r\n >\r\n <div class=\"inline-replies\">\r\n <div class=\"focused\" [class.visible]=\"selectedMessageVisible\" *ngIf=\"selectedMessage\">\r\n <div class=\"replies\">\r\n \r\n <ng-container *ngIf=\"!selectedMessageThread\">\r\n <div class=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"selectedMessageThread\">\r\n <banta-comment-view\r\n [source]=\"selectedMessageThread\"\r\n [allowReplies]=\"false\"\r\n [fixedHeight]=\"false\"\r\n [showEmptyState]=\"false\"\r\n [newestLast]=\"true\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (liked)=\"likeMessage(selectedMessageThread, $event)\"\r\n (unliked)=\"unlikeMessage(selectedMessageThread, $event)\"\r\n (messageEdited)=\"editMessage(selectedMessageThread, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage($event)\"\r\n ></banta-comment-view>\r\n \r\n <banta-comment-field\r\n [sendLabel]=\"replyLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n (signInSelected)=\"showSignIn()\"\r\n [maxLength]=\"maxCommentLength\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n [source]=\"selectedMessageThread\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [signInLabel]=\"signInLabel\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [user]=\"user\"\r\n [label]=\"postReplyLabel\"\r\n [submit]=\"sendReply\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"sendReplyOptionsTemplate\"></ng-container>\r\n </banta-comment-field>\r\n </ng-container>\r\n </div>\r\n </div> \r\n </div>\r\n </banta-comment-view>\r\n </div>\r\n</ng-container>\r\n",
9940
+ styles: [":host{display:flex;flex-direction:column}@-webkit-keyframes select-comment{0%{transform:scale(1.15)}to{transform:scale(1)}}@keyframes select-comment{0%{transform:scale(1.15)}to{transform:scale(1)}}.focused{-webkit-animation-name:select-comment;animation-name:select-comment;-webkit-animation-duration:.4s;animation-duration:.4s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.focused .replies{margin-top:1em;margin-left:2em;border-left:2px solid #333;padding-left:2em}banta-comment-view{opacity:1;transition:opacity .4s ease-in-out}banta-comment-view.faded{opacity:.25}.loading{display:block;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;margin:0 auto;min-height:16em}.main.hidden{display:none}.loading-screen{text-align:center;opacity:0;transition:opacity .25s ease-in-out}.loading-screen.visible{opacity:1}.loading-screen h1{font-weight:100}.loading-screen mat-spinner{margin:5em auto}.loading-screen .loading-message{opacity:0;transition:opacity .25s ease-in-out;width:500px;max-width:100%;margin:0 auto}.loading-screen .loading-message.visible{opacity:1}banta-comment-sort{margin:0 0 0 auto;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;display:block}.inline-replies{margin-left:4em}@media (max-width:500px){.focused .replies{margin-left:0}.inline-replies{margin-left:1em}.focused .replies{padding-left:.5em}banta-comment-sort{margin:0;width:100%}}:host-context(.banta-mobile) .focused .replies{margin-left:0}:host-context(.banta-mobile) .inline-replies{margin-left:1em}:host-context(.banta-mobile) .focused .replies{padding-left:.5em}:host-context(.banta-mobile) banta-comment-sort{margin:0;width:100%}.loading-comment{z-index:100;border:1px solid #333;background:#000;color:#fff;padding:1em;border-radius:4px;text-align:center}.loading-comment h1{font-weight:100;text-align:center}.loading-comment mat-spinner{margin:0 auto}"]
9853
9941
  },] }
9854
9942
  ];
9855
9943
  BantaCommentsComponent.ctorParameters = function () { return [