@inboxsdk/core 2.1.37 → 2.1.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/inboxsdk.js +449 -483
  2. package/package.json +1 -1
  3. package/pageWorld.js +13 -12
  4. package/src/common/isNotNil.d.ts.map +1 -0
  5. package/src/inboxsdk.d.ts +6 -50
  6. package/src/injected-js/xhr-proxy-factory.d.ts.map +1 -1
  7. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.d.ts.map +1 -1
  8. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.d.ts.map +1 -1
  9. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.d.ts.map +1 -1
  10. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.d.ts.map +1 -1
  11. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.d.ts +2 -2
  12. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.d.ts.map +1 -1
  13. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.d.ts.map +1 -1
  14. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.d.ts +2 -2
  15. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.d.ts.map +1 -1
  16. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.d.ts.map +1 -1
  17. package/src/platform-implementation-js/platform-implementation.d.ts.map +1 -1
  18. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts +3 -5
  19. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts.map +1 -1
  20. package/src/platform-implementation-js/views/conversations/custom-message-view.d.ts +4 -12
  21. package/src/platform-implementation-js/views/conversations/custom-message-view.d.ts.map +1 -1
  22. package/src/platform-implementation-js/views/conversations/message-view.d.ts +40 -10
  23. package/src/platform-implementation-js/views/conversations/message-view.d.ts.map +1 -1
  24. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.d.ts +1 -2
  25. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.d.ts.map +1 -1
  26. package/src/platform-implementation-js/lib/isNotNil.d.ts.map +0 -1
  27. /package/src/{platform-implementation-js/lib → common}/isNotNil.d.ts +0 -0
package/inboxsdk.js CHANGED
@@ -863,6 +863,21 @@ function isElementVisible(el) {
863
863
 
864
864
  /***/ }),
865
865
 
866
+ /***/ 6230:
867
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
868
+
869
+ "use strict";
870
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
871
+ /* harmony export */ "Z": () => (/* binding */ isNotNil)
872
+ /* harmony export */ });
873
+ // Type predicate to avoid opting out of strict type checking in filter operations.
874
+ // Adapted from https://stackoverflow.com/a/46700791
875
+ function isNotNil(value) {
876
+ return value != null;
877
+ }
878
+
879
+ /***/ }),
880
+
866
881
  /***/ 7403:
867
882
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
868
883
 
@@ -875,7 +890,7 @@ function isElementVisible(el) {
875
890
 
876
891
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- SDK_VERSION is injected by webpack
877
892
  ///@ts-ignore
878
- const BUILD_VERSION = "2.1.37-1709762454236-9dd4175d759b8d19";
893
+ const BUILD_VERSION = "2.1.39-1712261377230-745de69ef3533e1a";
879
894
  if (false) {}
880
895
 
881
896
  /***/ }),
@@ -1287,6 +1302,8 @@ function makeElementStreamMerger() {
1287
1302
  var gmail_element_getter = __webpack_require__(2851);
1288
1303
  // EXTERNAL MODULE: ./src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.ts + 31 modules
1289
1304
  var gmail_compose_view = __webpack_require__(1166);
1305
+ // EXTERNAL MODULE: ./src/common/isNotNil.ts
1306
+ var isNotNil = __webpack_require__(6230);
1290
1307
  ;// CONCATENATED MODULE: ./src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.ts
1291
1308
  /* module decorator */ module = __webpack_require__.hmd(module);
1292
1309
 
@@ -1297,14 +1314,15 @@ var gmail_compose_view = __webpack_require__(1166);
1297
1314
 
1298
1315
 
1299
1316
 
1317
+
1300
1318
  var impStream = js_default()(module, imp);
1301
1319
  function setupComposeViewDriverStream(gmailDriver, messageViewDriverStream, xhrInterceptorStream) {
1302
1320
  return impStream.flatMapLatest(imp => imp(gmailDriver, messageViewDriverStream, xhrInterceptorStream));
1303
1321
  }
1304
1322
  function imp(gmailDriver, messageViewDriverStream, xhrInterceptorStream) {
1305
1323
  return kefir_esm.fromPromise(gmail_element_getter/* default.waitForGmailModeToSettle */.Z.waitForGmailModeToSettle()).flatMap(() => {
1306
- var elementStream;
1307
- var isStandalone = false;
1324
+ let elementStream;
1325
+ let isStandalone = false;
1308
1326
  if (gmail_element_getter/* default.isStandaloneComposeWindow */.Z.isStandaloneComposeWindow()) {
1309
1327
  elementStream = _setupStandaloneComposeElementStream();
1310
1328
  isStandalone = true;
@@ -1324,7 +1342,7 @@ function imp(gmailDriver, messageViewDriverStream, xhrInterceptorStream) {
1324
1342
  }
1325
1343
  function _setupStandardComposeElementStream() {
1326
1344
  return _waitForContainerAndMonitorChildrenStream(() => gmail_element_getter/* default.getComposeWindowContainer */.Z.getComposeWindowContainer()).flatMap(composeGrandParent => {
1327
- var composeParentEl = composeGrandParent.el.querySelector('div.AD');
1345
+ const composeParentEl = composeGrandParent.el.querySelector('div.AD');
1328
1346
  if (composeParentEl) {
1329
1347
  return (0,make_element_child_stream/* default */.Z)(composeParentEl).takeUntilBy(composeGrandParent.removalStream).map(_informElement('composeFullscreenStateChanged'));
1330
1348
  } else {
@@ -1353,7 +1371,7 @@ function _setupStandardComposeElementStream() {
1353
1371
  el,
1354
1372
  removalStream: removalStream.merge(hiddenStream).take(1)
1355
1373
  };
1356
- }).filter(Boolean)).flatMap(event => {
1374
+ }).filter(isNotNil/* default */.Z)).flatMap(event => {
1357
1375
  if (!event) throw new Error('Should not happen');
1358
1376
  const el = event.el.querySelector('[role=dialog]');
1359
1377
  if (!el || !el.querySelector('form')) {
@@ -2344,7 +2362,7 @@ function _getArrayValueFromPath(responseArray, path) {
2344
2362
  /* unused harmony exports extractThreadsFromSearchResponse_20220909, replaceThreadsInSearchResponse_20220909 */
2345
2363
  /* harmony import */ var bignumber_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4431);
2346
2364
  /* harmony import */ var bignumber_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(bignumber_js__WEBPACK_IMPORTED_MODULE_0__);
2347
- /* harmony import */ var _lib_isNotNil__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8727);
2365
+ /* harmony import */ var _common_isNotNil__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6230);
2348
2366
 
2349
2367
 
2350
2368
  function extractThreadsFromSearchResponse(response) {
@@ -2378,7 +2396,7 @@ function extractThreadsFromSearchResponse(response) {
2378
2396
  }))
2379
2397
  }
2380
2398
  };
2381
- }).filter(_lib_isNotNil__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z);
2399
+ }).filter(_common_isNotNil__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z);
2382
2400
  }
2383
2401
  function extractThreadsFromSearchResponse_20220909(parsedResponse) {
2384
2402
  const threadDescriptors = parsedResponse && parsedResponse[2];
@@ -2403,7 +2421,7 @@ function extractThreadsFromSearchResponse_20220909(parsedResponse) {
2403
2421
  }))
2404
2422
  }
2405
2423
  };
2406
- }).filter(_lib_isNotNil__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z);
2424
+ }).filter(_common_isNotNil__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z);
2407
2425
  }
2408
2426
  function extractThreadsFromThreadResponse(response) {
2409
2427
  const parsedResponse = JSON.parse(response);
@@ -2456,7 +2474,7 @@ function extractThreadsFromThreadResponse(response) {
2456
2474
  }
2457
2475
  };
2458
2476
  }
2459
- }).filter(_lib_isNotNil__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z);
2477
+ }).filter(_common_isNotNil__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z);
2460
2478
  }
2461
2479
  function extractThreadsFromThreadResponse_20220909(parsedResponse) {
2462
2480
  const threadDescriptors = parsedResponse && parsedResponse[1];
@@ -2505,7 +2523,7 @@ function extractThreadsFromThreadResponse_20220909(parsedResponse) {
2505
2523
  }
2506
2524
  };
2507
2525
  }
2508
- }).filter(_lib_isNotNil__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z);
2526
+ }).filter(_common_isNotNil__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z);
2509
2527
  }
2510
2528
  function getRecipientsFromMessageDescriptor(messageDescriptor) {
2511
2529
  if (!messageDescriptor[2]) return;
@@ -4900,8 +4918,8 @@ function getAddressInformationExtractor(addressType, composeView) {
4900
4918
  }
4901
4919
  };
4902
4920
  }
4903
- // EXTERNAL MODULE: ./src/platform-implementation-js/lib/isNotNil.ts
4904
- var isNotNil = __webpack_require__(8727);
4921
+ // EXTERNAL MODULE: ./src/common/isNotNil.ts
4922
+ var isNotNil = __webpack_require__(6230);
4905
4923
  ;// CONCATENATED MODULE: ./src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.ts
4906
4924
 
4907
4925
 
@@ -5676,6 +5694,7 @@ function setFromEmail(driver, gmailComposeView, email) {
5676
5694
 
5677
5695
 
5678
5696
 
5697
+
5679
5698
 
5680
5699
 
5681
5700
  let hasReportedMissingBody = false;
@@ -5792,7 +5811,7 @@ class GmailComposeView {
5792
5811
  return null;
5793
5812
  }
5794
5813
  }
5795
- }).filter(Boolean);
5814
+ }).filter(isNotNil/* default */.Z);
5796
5815
  this.#eventStream.plug(kefir_esm.merge([saveAndSendStream, kefir_esm.fromEvents(this.#element, 'buttonAdded').map(() => {
5797
5816
  return {
5798
5817
  eventName: 'buttonAdded'
@@ -10610,7 +10629,7 @@ options.insert = htmlElement => {
10610
10629
  htmlElement.setAttribute('data-inboxsdk-version',
10611
10630
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- this is injected by webpack
10612
10631
  ///@ts-ignore
10613
- "2.1.37-1709762454236-9dd4175d759b8d19");
10632
+ "2.1.39-1712261377230-745de69ef3533e1a");
10614
10633
  document.head.append(htmlElement);
10615
10634
  };
10616
10635
  options.domAPI = (styleDomAPI_default());
@@ -10720,21 +10739,6 @@ style="width: 396px; height: 18px; max-height: 18px; padding: 5px; color: rgb(34
10720
10739
 
10721
10740
  /***/ }),
10722
10741
 
10723
- /***/ 8727:
10724
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
10725
-
10726
- "use strict";
10727
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
10728
- /* harmony export */ "Z": () => (/* binding */ isNotNil)
10729
- /* harmony export */ });
10730
- // Type predicate to avoid opting out of strict type checking in filter operations.
10731
- // Adapted from https://stackoverflow.com/a/46700791
10732
- function isNotNil(value) {
10733
- return value != null;
10734
- }
10735
-
10736
- /***/ }),
10737
-
10738
10742
  /***/ 3045:
10739
10743
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
10740
10744
 
@@ -11752,7 +11756,7 @@ if (!globalThis.__InboxSDKImpLoader) {
11752
11756
  await onready;
11753
11757
  const {
11754
11758
  makePlatformImplementation
11755
- } = await Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6361));
11759
+ } = await Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 1359));
11756
11760
  return makePlatformImplementation(appId, opts, {
11757
11761
  piMainStarted,
11758
11762
  piLoadStarted,
@@ -11833,99 +11837,6 @@ class Compose {
11833
11837
 
11834
11838
  /***/ }),
11835
11839
 
11836
- /***/ 5558:
11837
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
11838
-
11839
- "use strict";
11840
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
11841
- /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__),
11842
- /* harmony export */ "kI": () => (/* binding */ MessageViewToolbarSectionNames)
11843
- /* harmony export */ });
11844
- /* unused harmony export MessageViewViewStates */
11845
- /* harmony import */ var kefir__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6609);
11846
- /* harmony import */ var _common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7791);
11847
- /* harmony import */ var _views_conversations_thread_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7422);
11848
- /* harmony import */ var _views_conversations_message_view__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5052);
11849
- /* harmony import */ var _lib_handler_registry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3208);
11850
-
11851
-
11852
-
11853
-
11854
-
11855
- const memberMap = new WeakMap();
11856
- const MessageViewViewStates = Object.freeze({
11857
- /**
11858
- * One case where a {@link MessageView} is 'HIDDEN' is when there are too many messages in a thread,
11859
- * and the message doesn't show at all.
11860
- */
11861
- HIDDEN: 'HIDDEN',
11862
- /**
11863
- * {@link MessageView}s are collapsed when they are partially shown. The {@link MessageView}'s subject line and timestamp is visible, but the body of the message may be truncated.
11864
- */
11865
- COLLAPSED: 'COLLAPSED',
11866
- EXPANDED: 'EXPANDED'
11867
- });
11868
- const MessageViewToolbarSectionNames = Object.freeze({
11869
- MORE: 'MORE'
11870
- });
11871
- class Conversations {
11872
- MessageViewViewStates = MessageViewViewStates;
11873
- MessageViewToolbarSectionNames = MessageViewToolbarSectionNames;
11874
- constructor(appId, driver, membrane) {
11875
- const members = {
11876
- appId,
11877
- driver,
11878
- threadViewHandlerRegistry: new _lib_handler_registry__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z(),
11879
- messageViewHandlerRegistries: {
11880
- all: new _lib_handler_registry__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z(),
11881
- loaded: new _lib_handler_registry__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z()
11882
- },
11883
- attachmentCardViewHandlerRegistry: new _lib_handler_registry__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z()
11884
- };
11885
- memberMap.set(this, members);
11886
- driver.getStopper().onValue(() => {
11887
- members.threadViewHandlerRegistry.dumpHandlers();
11888
- members.messageViewHandlerRegistries.all.dumpHandlers();
11889
- members.messageViewHandlerRegistries.loaded.dumpHandlers();
11890
- });
11891
- driver.getAttachmentCardViewDriverStream().filter(cardDriver => cardDriver.getAttachmentType() === 'FILE').onValue(attachmentCardViewDriver => {
11892
- const attachmentCardView = membrane.get(attachmentCardViewDriver);
11893
- members.attachmentCardViewHandlerRegistry.addTarget(attachmentCardView);
11894
- });
11895
- _setupViewDriverWatcher(appId, driver.getThreadViewDriverStream().filter(t => !t.isLoadingStub()), _views_conversations_thread_view__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, members.threadViewHandlerRegistry, this, membrane);
11896
- _setupViewDriverWatcher(appId, driver.getMessageViewDriverStream(), _views_conversations_message_view__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, members.messageViewHandlerRegistries.all, this, membrane);
11897
- _setupViewDriverWatcher(appId, driver.getMessageViewDriverStream().flatMap(messageViewDriver => messageViewDriver.isLoaded() ? kefir__WEBPACK_IMPORTED_MODULE_0__.constant(messageViewDriver) : messageViewDriver.getEventStream().filter(event => event.eventName === 'messageLoad').map(() => messageViewDriver).take(1)), _views_conversations_message_view__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, members.messageViewHandlerRegistries.loaded, this, membrane);
11898
- }
11899
- registerThreadViewHandler(handler) {
11900
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).threadViewHandlerRegistry.registerHandler(handler);
11901
- }
11902
- registerMessageViewHandler(handler) {
11903
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewHandlerRegistries.loaded.registerHandler(handler);
11904
- }
11905
- registerMessageViewHandlerAll(handler) {
11906
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewHandlerRegistries.all.registerHandler(handler);
11907
- }
11908
- registerFileAttachmentCardViewHandler(handler) {
11909
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).attachmentCardViewHandlerRegistry.registerHandler(handler);
11910
- }
11911
- }
11912
- function _setupViewDriverWatcher(appId, stream, ViewClass, handlerRegistry, ConversationsInstance, membrane) {
11913
- var combinedStream = stream.map(function (viewDriver) {
11914
- const view = membrane.get(viewDriver);
11915
- return {
11916
- viewDriver,
11917
- view
11918
- };
11919
- });
11920
- // A delay is currently necessary so that ThreadView can wait for its MessageViews.
11921
- combinedStream.flatMap(event => event.viewDriver.getReadyStream().map(() => event).takeUntilBy(kefir__WEBPACK_IMPORTED_MODULE_0__.fromEvents(event.view, 'destroy'))).onValue(function (event) {
11922
- handlerRegistry.addTarget(event.view);
11923
- });
11924
- }
11925
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Conversations);
11926
-
11927
- /***/ }),
11928
-
11929
11840
  /***/ 326:
11930
11841
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
11931
11842
 
@@ -12440,7 +12351,7 @@ function _updateNavMenu(members, newRouteViewDriver) {
12440
12351
 
12441
12352
  /***/ }),
12442
12353
 
12443
- /***/ 6361:
12354
+ /***/ 1359:
12444
12355
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
12445
12356
 
12446
12357
  "use strict";
@@ -12484,43 +12395,45 @@ class Membrane {
12484
12395
  ;// CONCATENATED MODULE: ./src/platform-implementation-js/views/conversations/attachment-card-view.ts
12485
12396
 
12486
12397
  class AttachmentCardView extends safe_event_emitter/* default */.Z {
12398
+ #attachmentCardImplementation;
12399
+ #driver;
12400
+ #membrane;
12401
+ destroyed = false;
12487
12402
  constructor(attachmentCardImplementation, driver, membrane) {
12488
12403
  super();
12489
- this.destroyed = false;
12490
- this._driver = driver;
12491
- this._membrane = membrane;
12492
- this._attachmentCardImplementation = attachmentCardImplementation;
12493
- this._attachmentCardImplementation.getStopper().onValue(() => {
12404
+ this.#driver = driver;
12405
+ this.#membrane = membrane;
12406
+ this.#attachmentCardImplementation = attachmentCardImplementation;
12407
+ this.#attachmentCardImplementation.getStopper().onValue(() => {
12494
12408
  this.destroyed = true;
12495
12409
  this.emit('destroy');
12496
12410
  });
12497
12411
  }
12498
12412
  getAttachmentType() {
12499
- return this._attachmentCardImplementation.getAttachmentType();
12413
+ return this.#attachmentCardImplementation.getAttachmentType();
12500
12414
  }
12501
12415
  addButton(buttonOptions) {
12502
- this._attachmentCardImplementation.addButton(buttonOptions);
12416
+ this.#attachmentCardImplementation.addButton(buttonOptions);
12503
12417
  }
12504
12418
  getTitle() {
12505
- return this._attachmentCardImplementation.getTitle();
12419
+ return this.#attachmentCardImplementation.getTitle();
12506
12420
  }
12507
12421
 
12508
12422
  /**
12509
12423
  * @deprecated Please use the same-named method on the AttachmentCardClickEvent object instead.
12510
12424
  */
12511
12425
  getDownloadURL() {
12512
- this._driver.getLogger().deprecationWarning('AttachmentCardView.getDownloadURL', 'AttachmentCardView.addButton -> onClick -> AttachmentCardClickEvent');
12513
- if (this._driver.getOpts().REQUESTED_API_VERSION !== 1) {
12426
+ this.#driver.getLogger().deprecationWarning('AttachmentCardView.getDownloadURL', 'AttachmentCardView.addButton -> onClick -> AttachmentCardClickEvent');
12427
+ if (this.#driver.getOpts().REQUESTED_API_VERSION !== 1) {
12514
12428
  throw new Error('This method was discontinued after API version 1');
12515
12429
  }
12516
- return this._attachmentCardImplementation.getDownloadURL();
12430
+ return this.#attachmentCardImplementation.getDownloadURL();
12517
12431
  }
12518
12432
  getMessageView() {
12519
- const messageViewDriver = this._attachmentCardImplementation.getMessageViewDriver();
12520
- return messageViewDriver ? this._membrane.get(messageViewDriver) : null;
12433
+ const messageViewDriver = this.#attachmentCardImplementation.getMessageViewDriver();
12434
+ return messageViewDriver ? this.#membrane.get(messageViewDriver) : null;
12521
12435
  }
12522
12436
  }
12523
- /* harmony default export */ const attachment_card_view = (AttachmentCardView);
12524
12437
  // EXTERNAL MODULE: ./node_modules/lodash/find.js
12525
12438
  var find = __webpack_require__(3311);
12526
12439
  var find_default = /*#__PURE__*/__webpack_require__.n(find);
@@ -12825,34 +12738,306 @@ class GmailAttachmentCardView {
12825
12738
  });
12826
12739
  this._addButton(buttonView);
12827
12740
  }
12828
- _addMoreButtons(buttonDescriptors) {
12829
- (buttonDescriptors || []).filter(function (buttonDescriptor) {
12830
- return !buttonDescriptor.downloadUrl;
12831
- }).forEach(desc => {
12832
- this.addButton(desc);
12833
- });
12741
+ _addMoreButtons(buttonDescriptors) {
12742
+ (buttonDescriptors || []).filter(function (buttonDescriptor) {
12743
+ return !buttonDescriptor.downloadUrl;
12744
+ }).forEach(desc => {
12745
+ this.addButton(desc);
12746
+ });
12747
+ }
12748
+ _addButton(buttonView) {
12749
+ buttonView.addClass('aQv');
12750
+ this._getButtonContainerElement().appendChild(buttonView.getElement());
12751
+ }
12752
+ _getPreviewImageUrl() {
12753
+ var previewImage = this._getPreviewImage();
12754
+ if (!previewImage) {
12755
+ return null;
12756
+ }
12757
+ return previewImage.src;
12758
+ }
12759
+ _getPreviewImage() {
12760
+ return this._element.querySelector('img.aQG');
12761
+ }
12762
+ _getButtonContainerElement() {
12763
+ return (0,querySelectorOrFail/* default */.Z)(this._element, '.aQw');
12764
+ }
12765
+ }
12766
+ /* harmony default export */ const gmail_attachment_card_view = (GmailAttachmentCardView);
12767
+ // EXTERNAL MODULE: ./node_modules/asap/browser-asap.js
12768
+ var browser_asap = __webpack_require__(9272);
12769
+ var browser_asap_default = /*#__PURE__*/__webpack_require__.n(browser_asap);
12770
+ // EXTERNAL MODULE: ./src/platform-implementation-js/views/conversations/thread-view.ts
12771
+ var thread_view = __webpack_require__(7422);
12772
+ // EXTERNAL MODULE: ./src/platform-implementation-js/lib/handler-registry.ts
12773
+ var handler_registry = __webpack_require__(3208);
12774
+ ;// CONCATENATED MODULE: ./src/platform-implementation-js/namespaces/conversations.ts
12775
+
12776
+
12777
+
12778
+
12779
+
12780
+ const memberMap = new WeakMap();
12781
+ const MessageViewViewStates = Object.freeze({
12782
+ /**
12783
+ * One case where a {@link MessageView} is 'HIDDEN' is when there are too many messages in a thread,
12784
+ * and the message doesn't show at all.
12785
+ */
12786
+ HIDDEN: 'HIDDEN',
12787
+ /**
12788
+ * {@link MessageView}s are collapsed when they are partially shown. The {@link MessageView}'s subject line and timestamp is visible, but the body of the message may be truncated.
12789
+ */
12790
+ COLLAPSED: 'COLLAPSED',
12791
+ EXPANDED: 'EXPANDED'
12792
+ });
12793
+ const MessageViewToolbarSectionNames = Object.freeze({
12794
+ MORE: 'MORE'
12795
+ });
12796
+ class Conversations {
12797
+ MessageViewViewStates = MessageViewViewStates;
12798
+ MessageViewToolbarSectionNames = MessageViewToolbarSectionNames;
12799
+ constructor(appId, driver, membrane) {
12800
+ const members = {
12801
+ appId,
12802
+ driver,
12803
+ threadViewHandlerRegistry: new handler_registry/* default */.Z(),
12804
+ messageViewHandlerRegistries: {
12805
+ all: new handler_registry/* default */.Z(),
12806
+ loaded: new handler_registry/* default */.Z()
12807
+ },
12808
+ attachmentCardViewHandlerRegistry: new handler_registry/* default */.Z()
12809
+ };
12810
+ memberMap.set(this, members);
12811
+ driver.getStopper().onValue(() => {
12812
+ members.threadViewHandlerRegistry.dumpHandlers();
12813
+ members.messageViewHandlerRegistries.all.dumpHandlers();
12814
+ members.messageViewHandlerRegistries.loaded.dumpHandlers();
12815
+ });
12816
+ driver.getAttachmentCardViewDriverStream().filter(cardDriver => cardDriver.getAttachmentType() === 'FILE').onValue(attachmentCardViewDriver => {
12817
+ const attachmentCardView = membrane.get(attachmentCardViewDriver);
12818
+ members.attachmentCardViewHandlerRegistry.addTarget(attachmentCardView);
12819
+ });
12820
+ _setupViewDriverWatcher(appId, driver.getThreadViewDriverStream().filter(t => !t.isLoadingStub()), thread_view/* default */.Z, members.threadViewHandlerRegistry, this, membrane);
12821
+ _setupViewDriverWatcher(appId, driver.getMessageViewDriverStream(), MessageView, members.messageViewHandlerRegistries.all, this, membrane);
12822
+ _setupViewDriverWatcher(appId, driver.getMessageViewDriverStream().flatMap(messageViewDriver => messageViewDriver.isLoaded() ? kefir_esm.constant(messageViewDriver) : messageViewDriver.getEventStream().filter(event => event.eventName === 'messageLoad').map(() => messageViewDriver).take(1)), MessageView, members.messageViewHandlerRegistries.loaded, this, membrane);
12823
+ }
12824
+ registerThreadViewHandler(handler) {
12825
+ return (0,get_or_fail/* default */.Z)(memberMap, this).threadViewHandlerRegistry.registerHandler(handler);
12826
+ }
12827
+ registerMessageViewHandler(handler) {
12828
+ return (0,get_or_fail/* default */.Z)(memberMap, this).messageViewHandlerRegistries.loaded.registerHandler(handler);
12829
+ }
12830
+ registerMessageViewHandlerAll(handler) {
12831
+ return (0,get_or_fail/* default */.Z)(memberMap, this).messageViewHandlerRegistries.all.registerHandler(handler);
12832
+ }
12833
+ registerFileAttachmentCardViewHandler(handler) {
12834
+ return (0,get_or_fail/* default */.Z)(memberMap, this).attachmentCardViewHandlerRegistry.registerHandler(handler);
12835
+ }
12836
+ }
12837
+ function _setupViewDriverWatcher(appId, stream, ViewClass, handlerRegistry, ConversationsInstance, membrane) {
12838
+ var combinedStream = stream.map(function (viewDriver) {
12839
+ const view = membrane.get(viewDriver);
12840
+ return {
12841
+ viewDriver,
12842
+ view
12843
+ };
12844
+ });
12845
+ // A delay is currently necessary so that ThreadView can wait for its MessageViews.
12846
+ combinedStream.flatMap(event => event.viewDriver.getReadyStream().map(() => event).takeUntilBy(kefir_esm.fromEvents(event.view, 'destroy'))).onValue(function (event) {
12847
+ handlerRegistry.addTarget(event.view);
12848
+ });
12849
+ }
12850
+ /* harmony default export */ const conversations = (Conversations);
12851
+ ;// CONCATENATED MODULE: ./src/platform-implementation-js/views/conversations/message-view.ts
12852
+
12853
+
12854
+
12855
+ /**
12856
+ * Represents a visible message in the UI. There are properties to access data about the message itself as well as change the state of the UI. MessageViews have a view state as well as a loaded state. These 2 properties are orthogonal to each other.
12857
+
12858
+ * A messages' view state can be one of {@link MessageViewViewStates.EXPANDED}, {@link MessageViewViewStates.COLLAPSED} or {@link MessageViewViewStates.HIDDEN}. Gmail visually display messages in a thread in different ways depending on what they are trying to show a user. These values are described in the enum MessageViewViewStates. The load state of a message determines whether all of the data pertaining to a message has been loaded in the UI. In some case, not all the information (such as recipients or the body) may be loaded, typically when the the view state is COLLAPSED or HIDDEN.
12859
+
12860
+ * @note You should not depend on any relationship between the view state
12861
+ * and load state. Instead, use the provided {MessageView#getViewState} and {MessageView#isLoaded} methods.
12862
+ */
12863
+ class MessageView extends safe_event_emitter/* default */.Z {
12864
+ destroyed = false;
12865
+ #driver;
12866
+ #linksInBody;
12867
+ #membrane;
12868
+ #messageViewImplementation;
12869
+ constructor(messageViewImplementation, membrane, driver) {
12870
+ super();
12871
+ this.#driver = driver;
12872
+ this.#linksInBody = null;
12873
+ this.#membrane = membrane;
12874
+ this.#messageViewImplementation = messageViewImplementation;
12875
+ this.#bindToEventStream(messageViewImplementation.getEventStream());
12876
+ }
12877
+ addAttachmentCardView(cardOptions) {
12878
+ const attachmentCardViewDriver = this.#messageViewImplementation.addAttachmentCard(cardOptions);
12879
+ const attachmentCardView = this.#membrane.get(attachmentCardViewDriver);
12880
+ attachmentCardViewDriver.getPreviewClicks().onValue(e => {
12881
+ if (cardOptions.previewOnClick) {
12882
+ cardOptions.previewOnClick({
12883
+ attachmentCardView,
12884
+ preventDefault: () => e.preventDefault()
12885
+ });
12886
+ }
12887
+ });
12888
+ return attachmentCardView;
12889
+ }
12890
+
12891
+ // TODO why is this a separate method?
12892
+ addAttachmentCardViewNoPreview(cardOptions) {
12893
+ return this.addAttachmentCardView(cardOptions);
12894
+ }
12895
+ addAttachmentsToolbarButton(buttonOptions) {
12896
+ this.#messageViewImplementation.addButtonToDownloadAllArea({
12897
+ tooltip: buttonOptions.tooltip,
12898
+ iconUrl: buttonOptions.iconUrl,
12899
+ onClick: () => {
12900
+ const attachmentCardViews = this.#messageViewImplementation.getAttachmentCardViewDrivers().map(cardDriver => this.#membrane.get(cardDriver));
12901
+ buttonOptions.onClick({
12902
+ attachmentCardViews
12903
+ });
12904
+ }
12905
+ });
12906
+ }
12907
+ addToolbarButton(buttonOptions) {
12908
+ if (typeof buttonOptions.onClick !== 'function' || typeof buttonOptions.title !== 'string' || !Object.prototype.hasOwnProperty.call(MessageViewToolbarSectionNames, buttonOptions.section)) {
12909
+ throw new Error('Missing required properties on MessageViewToolbarButtonDescriptor object');
12910
+ }
12911
+ this.#messageViewImplementation.addMoreMenuItem(buttonOptions);
12912
+ }
12913
+ getBodyElement() {
12914
+ return this.#messageViewImplementation.getContentsElement();
12915
+ }
12916
+ getMessageID() {
12917
+ this.#driver.getLogger().deprecationWarning('messageView.getMessageID', 'messageView.getMessageIDAsync');
12918
+ return this.#messageViewImplementation.getMessageID();
12919
+ }
12920
+ getMessageIDAsync() {
12921
+ return this.#messageViewImplementation.getMessageIDAsync();
12922
+ }
12923
+
12924
+ // TODO non-file-attachment card views are asynchronously loaded. Add some sort of
12925
+ // registerAttachmentCardViewHandler function to listen for other types of
12926
+ // attachment cards if we want to continue support for them.
12927
+ getFileAttachmentCardViews() {
12928
+ return this.#messageViewImplementation.getAttachmentCardViewDrivers().filter(cardDriver => cardDriver.getAttachmentType() === 'FILE').map(attachmentCardViewDriver => this.#membrane.get(attachmentCardViewDriver));
12929
+ }
12930
+
12931
+ // Deprecated name
12932
+ getAttachmentCardViews() {
12933
+ this.#driver.getLogger().deprecationWarning('MessageView.getAttachmentCardViews', 'MessageView.getFileAttachmentCardViews');
12934
+ if (this.#driver.getOpts().REQUESTED_API_VERSION !== 1) {
12935
+ throw new Error('This method was discontinued after API version 1');
12936
+ }
12937
+ return this.getFileAttachmentCardViews();
12938
+ }
12939
+ isElementInQuotedArea(element) {
12940
+ return this.#messageViewImplementation.isElementInQuotedArea(element);
12941
+ }
12942
+
12943
+ /**
12944
+ * Returns whether this message has been loaded yet. If the message has not been loaded, some of the data related methods on this object may return empty results. The message may be loaded once the user clicks on the message stub.
12945
+ */
12946
+ isLoaded() {
12947
+ return this.#messageViewImplementation.isLoaded();
12948
+ }
12949
+ getLinksInBody() {
12950
+ if (!this.#linksInBody) {
12951
+ const anchors = this.getBodyElement().querySelectorAll('a');
12952
+ this.#linksInBody = Array.from(anchors).map(anchor => ({
12953
+ text: anchor.textContent,
12954
+ html: anchor.innerHTML,
12955
+ href: anchor.href,
12956
+ element: anchor,
12957
+ isInQuotedArea: this.isElementInQuotedArea(anchor)
12958
+ }));
12959
+ }
12960
+ return this.#linksInBody;
12961
+ }
12962
+
12963
+ /**
12964
+ * Get the contact of the sender of this message.
12965
+ * @returns {Contact} The contact of the sender of this message.
12966
+ * @throws {Error} If the message has not been loaded yet.
12967
+ *
12968
+ * @note If you're using this method on an array of {MessageView}s returned by {@link ThreadRowView#getMessageViewsAll}, make sure to check {@link MessageView#isLoaded} before calling this method.
12969
+ */
12970
+ getSender() {
12971
+ return this.#messageViewImplementation.getSender();
12972
+ }
12973
+ getRecipients() {
12974
+ this.#driver.getLogger().deprecationWarning('MessageView.getRecipients', 'MessageView.getRecipientEmailAddresses() or MessageView.getRecipientsFull()');
12975
+ return this.getRecipientEmailAddresses().map(emailAddress => ({
12976
+ emailAddress,
12977
+ name: null
12978
+ }));
12979
+ }
12980
+ getRecipientEmailAddresses() {
12981
+ return this.#messageViewImplementation.getRecipientEmailAddresses();
12982
+ }
12983
+ getRecipientsFull() {
12984
+ return this.#messageViewImplementation.getRecipientsFull();
12834
12985
  }
12835
- _addButton(buttonView) {
12836
- buttonView.addClass('aQv');
12837
- this._getButtonContainerElement().appendChild(buttonView.getElement());
12986
+ getThreadView() {
12987
+ return this.#membrane.get(this.#messageViewImplementation.getThreadViewDriver());
12838
12988
  }
12839
- _getPreviewImageUrl() {
12840
- var previewImage = this._getPreviewImage();
12841
- if (!previewImage) {
12842
- return null;
12843
- }
12844
- return previewImage.src;
12989
+ getDateString() {
12990
+ return this.#messageViewImplementation.getDateString();
12845
12991
  }
12846
- _getPreviewImage() {
12847
- return this._element.querySelector('img.aQG');
12992
+ addAttachmentIcon(iconDescriptor) {
12993
+ return this.#messageViewImplementation.addAttachmentIcon(iconDescriptor);
12848
12994
  }
12849
- _getButtonContainerElement() {
12850
- return (0,querySelectorOrFail/* default */.Z)(this._element, '.aQw');
12995
+ getViewState() {
12996
+ return MessageViewViewStates[this.#messageViewImplementation.getViewState()];
12997
+ }
12998
+ hasOpenReply() {
12999
+ this.#driver.getLogger().deprecationWarning('MessageView.hasOpenReply');
13000
+ if (this.#driver.getOpts().REQUESTED_API_VERSION !== 1) {
13001
+ throw new Error('This method was discontinued after API version 1');
13002
+ }
13003
+ return this.#messageViewImplementation.hasOpenReply();
13004
+ }
13005
+ #bindToEventStream(stream) {
13006
+ stream.onEnd(() => {
13007
+ this.destroyed = true;
13008
+ this.emit('destroy');
13009
+ this.removeAllListeners();
13010
+ });
13011
+ stream.filter(event => event.type !== 'internal' && event.eventName === 'contactHover').onValue(event => {
13012
+ this.emit(event.eventName, {
13013
+ contactType: event.contactType,
13014
+ contact: event.contact,
13015
+ messageView: this,
13016
+ threadView: this.getThreadView()
13017
+ });
13018
+ });
13019
+ if (this.isLoaded()) {
13020
+ browser_asap_default()(() => {
13021
+ this.emit('load', {
13022
+ messageView: this
13023
+ });
13024
+ });
13025
+ } else {
13026
+ stream.filter(event => event.eventName === 'messageLoad').onValue(() => {
13027
+ this.emit('load', {
13028
+ messageView: this
13029
+ });
13030
+ });
13031
+ }
13032
+ stream.filter(event => event.eventName === 'viewStateChange').onValue(event => {
13033
+ this.emit('viewStateChange', {
13034
+ oldViewState: MessageViewViewStates[event.oldValue],
13035
+ newViewState: MessageViewViewStates[event.newValue],
13036
+ messageView: this
13037
+ });
13038
+ });
12851
13039
  }
12852
13040
  }
12853
- /* harmony default export */ const gmail_attachment_card_view = (GmailAttachmentCardView);
12854
- // EXTERNAL MODULE: ./src/platform-implementation-js/views/conversations/message-view.ts
12855
- var message_view = __webpack_require__(5052);
12856
13041
  // EXTERNAL MODULE: ./node_modules/lodash/sortBy.js
12857
13042
  var sortBy = __webpack_require__(9734);
12858
13043
  var sortBy_default = /*#__PURE__*/__webpack_require__.n(sortBy);
@@ -13575,7 +13760,7 @@ class GmailMessageView {
13575
13760
  attributes: true,
13576
13761
  attributeFilter: ['class'],
13577
13762
  attributeOldValue: true
13578
- }).takeUntilBy(this.#stopper).map(function (mutation) {
13763
+ }).takeUntilBy(this.#stopper).map(mutation => {
13579
13764
  const currentClassList = mutation.target.classList;
13580
13765
  const mutationOldValue = mutation.oldValue;
13581
13766
  let oldValue;
@@ -13599,14 +13784,14 @@ class GmailMessageView {
13599
13784
  newValue,
13600
13785
  currentClassList
13601
13786
  };
13602
- }).map(function (event) {
13787
+ }).map(event => {
13603
13788
  if (event.newValue === 'EXPANDED' && event.oldValue !== 'EXPANDED') {
13604
13789
  self.#checkMessageOpenState(event.currentClassList);
13605
13790
  }
13606
13791
  return event;
13607
- }).filter(function (event) {
13792
+ }).filter(event => {
13608
13793
  return event.newValue !== event.oldValue && !!event.oldValue && !!event.newValue;
13609
- }).map(function (event) {
13794
+ }).map(event => {
13610
13795
  return {
13611
13796
  eventName: 'viewStateChange',
13612
13797
  oldValue: event.oldValue,
@@ -13744,8 +13929,6 @@ function _extractContactInformation(span) {
13744
13929
  };
13745
13930
  }
13746
13931
  /* harmony default export */ const gmail_message_view = (GmailMessageView);
13747
- // EXTERNAL MODULE: ./src/platform-implementation-js/views/conversations/thread-view.ts
13748
- var thread_view = __webpack_require__(7422);
13749
13932
  // EXTERNAL MODULE: ./node_modules/pdelay/js/index.js
13750
13933
  var pdelay_js = __webpack_require__(443);
13751
13934
  // EXTERNAL MODULE: ./src/platform-implementation-js/lib/idMap.ts + 1 modules
@@ -13756,95 +13939,98 @@ var SimpleElementView = __webpack_require__(8989);
13756
13939
 
13757
13940
 
13758
13941
  class CustomMessageView extends safe_event_emitter/* default */.Z {
13759
- _destroyed = false;
13760
- _stopper = js_default()();
13761
- _isCollapsed = true;
13942
+ #el;
13943
+ #iconEl;
13944
+ #contentEl;
13945
+ #contentHeaderEl;
13946
+ #contentBodyEl;
13947
+ destroyed = false;
13948
+ #stopper = js_default()();
13949
+ #isCollapsed = true;
13950
+ #lastDescriptor;
13762
13951
  constructor(descriptorStream, onReady) {
13763
13952
  super();
13764
- this._setupElement();
13765
- descriptorStream.takeUntilBy(this._stopper).onValue(descriptor => {
13766
- this._el.setAttribute('data-inboxsdk-sortdate', String(descriptor.sortDate.getTime()));
13767
- const previousDescriptor = this._lastDescriptor;
13768
- this._lastDescriptor = descriptor;
13953
+ this.#el = document.createElement('div');
13954
+ this.#el.classList.add('inboxsdk__custom_message_view');
13955
+ this.#el.classList.add('inboxsdk__custom_message_view_collapsed');
13956
+ this.#iconEl = document.createElement('div');
13957
+ this.#iconEl.classList.add('inboxsdk__custom_message_view_icon');
13958
+ this.#contentEl = document.createElement('div');
13959
+ this.#contentEl.classList.add('inboxsdk__custom_message_view_content');
13960
+ this.#contentHeaderEl = document.createElement('div');
13961
+ this.#contentHeaderEl.classList.add('inboxsdk__custom_message_view_header');
13962
+ this.#contentBodyEl = document.createElement('div');
13963
+ this.#contentBodyEl.classList.add('inboxsdk__custom_message_view_body');
13964
+ this.#el.appendChild(this.#iconEl);
13965
+ this.#el.appendChild(this.#contentEl);
13966
+ this.#el.addEventListener('click', e => {
13967
+ if (this.#isCollapsed) {
13968
+ this.expand();
13969
+ e.preventDefault();
13970
+ e.stopPropagation();
13971
+ }
13972
+ });
13973
+ this.#contentHeaderEl.addEventListener('click', e => {
13974
+ this.collapse();
13975
+ e.preventDefault();
13976
+ e.stopPropagation();
13977
+ });
13978
+ descriptorStream.takeUntilBy(this.#stopper).onValue(descriptor => {
13979
+ this.#el.setAttribute('data-inboxsdk-sortdate', String(descriptor.sortDate.getTime()));
13980
+ const previousDescriptor = this.#lastDescriptor;
13981
+ this.#lastDescriptor = descriptor;
13769
13982
  if (!previousDescriptor || previousDescriptor.iconUrl !== descriptor.iconUrl) {
13770
13983
  const img = document.createElement('img');
13771
13984
  img.src = descriptor.iconUrl;
13772
- this._iconEl.innerHTML = '';
13773
- this._iconEl.appendChild(img);
13985
+ this.#iconEl.innerHTML = '';
13986
+ this.#iconEl.appendChild(img);
13774
13987
  }
13775
- if ((!previousDescriptor || previousDescriptor.collapsedEl !== descriptor.collapsedEl) && this._isCollapsed) {
13988
+ if ((!previousDescriptor || previousDescriptor.collapsedEl !== descriptor.collapsedEl) && this.#isCollapsed) {
13776
13989
  if (previousDescriptor) previousDescriptor.collapsedEl.remove();
13777
- this._contentEl.appendChild(descriptor.collapsedEl);
13990
+ this.#contentEl.appendChild(descriptor.collapsedEl);
13778
13991
  }
13779
13992
  if (!previousDescriptor || previousDescriptor.headerEl !== descriptor.headerEl) {
13780
13993
  if (previousDescriptor) previousDescriptor.headerEl.remove();
13781
- this._contentHeaderEl.appendChild(descriptor.headerEl);
13994
+ this.#contentHeaderEl.appendChild(descriptor.headerEl);
13782
13995
  }
13783
13996
  if (!previousDescriptor || previousDescriptor.bodyEl !== descriptor.bodyEl) {
13784
13997
  if (previousDescriptor) previousDescriptor.bodyEl.remove();
13785
- this._contentBodyEl.appendChild(descriptor.bodyEl);
13998
+ this.#contentBodyEl.appendChild(descriptor.bodyEl);
13786
13999
  }
13787
14000
  }).take(1).onValue(onReady);
13788
14001
  }
13789
14002
  destroy() {
13790
- if (this._destroyed) return;
13791
- this._destroyed = true;
13792
- this._stopper.destroy();
14003
+ if (this.destroyed) return;
14004
+ this.destroyed = true;
14005
+ this.#stopper.destroy();
13793
14006
  this.emit('destroy');
13794
- this._el.remove();
14007
+ this.#el.remove();
13795
14008
  }
13796
14009
  expand() {
13797
- this._isCollapsed = false;
13798
- const descriptor = this._lastDescriptor;
14010
+ this.#isCollapsed = false;
14011
+ const descriptor = this.#lastDescriptor;
13799
14012
  if (descriptor) descriptor.collapsedEl.remove();
13800
- this._contentEl.appendChild(this._contentHeaderEl);
13801
- this._contentEl.appendChild(this._contentBodyEl);
13802
- this._el.classList.remove('inboxsdk__custom_message_view_collapsed');
14013
+ this.#contentEl.appendChild(this.#contentHeaderEl);
14014
+ this.#contentEl.appendChild(this.#contentBodyEl);
14015
+ this.#el.classList.remove('inboxsdk__custom_message_view_collapsed');
13803
14016
  this.emit('expanded');
13804
14017
  }
13805
14018
  collapse() {
13806
- this._isCollapsed = true;
13807
- this._contentHeaderEl.remove();
13808
- this._contentBodyEl.remove();
13809
- const descriptor = this._lastDescriptor;
14019
+ this.#isCollapsed = true;
14020
+ this.#contentHeaderEl.remove();
14021
+ this.#contentBodyEl.remove();
14022
+ const descriptor = this.#lastDescriptor;
13810
14023
  if (descriptor) {
13811
- this._contentEl.appendChild(descriptor.collapsedEl);
14024
+ this.#contentEl.appendChild(descriptor.collapsedEl);
13812
14025
  }
13813
- this._el.classList.add('inboxsdk__custom_message_view_collapsed');
14026
+ this.#el.classList.add('inboxsdk__custom_message_view_collapsed');
13814
14027
  this.emit('collapsed');
13815
14028
  }
13816
14029
  getElement() {
13817
- return this._el;
14030
+ return this.#el;
13818
14031
  }
13819
14032
  getSortDate() {
13820
- if (this._lastDescriptor) return this._lastDescriptor.sortDate;else return null;
13821
- }
13822
- _setupElement() {
13823
- this._el = document.createElement('div');
13824
- this._el.classList.add('inboxsdk__custom_message_view');
13825
- this._el.classList.add('inboxsdk__custom_message_view_collapsed');
13826
- this._iconEl = document.createElement('div');
13827
- this._iconEl.classList.add('inboxsdk__custom_message_view_icon');
13828
- this._contentEl = document.createElement('div');
13829
- this._contentEl.classList.add('inboxsdk__custom_message_view_content');
13830
- this._contentHeaderEl = document.createElement('div');
13831
- this._contentHeaderEl.classList.add('inboxsdk__custom_message_view_header');
13832
- this._contentBodyEl = document.createElement('div');
13833
- this._contentBodyEl.classList.add('inboxsdk__custom_message_view_body');
13834
- this._el.appendChild(this._iconEl);
13835
- this._el.appendChild(this._contentEl);
13836
- this._el.addEventListener('click', e => {
13837
- if (this._isCollapsed) {
13838
- this.expand();
13839
- e.preventDefault();
13840
- e.stopPropagation();
13841
- }
13842
- });
13843
- this._contentHeaderEl.addEventListener('click', e => {
13844
- this.collapse();
13845
- e.preventDefault();
13846
- e.stopPropagation();
13847
- });
14033
+ if (this.#lastDescriptor) return this.#lastDescriptor.sortDate;else return null;
13848
14034
  }
13849
14035
  }
13850
14036
  // EXTERNAL MODULE: ./src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.ts + 2 modules
@@ -13852,9 +14038,6 @@ var gmail_element_getter = __webpack_require__(2851);
13852
14038
  // EXTERNAL MODULE: ./node_modules/lodash/escape.js
13853
14039
  var lodash_escape = __webpack_require__(1675);
13854
14040
  var escape_default = /*#__PURE__*/__webpack_require__.n(lodash_escape);
13855
- // EXTERNAL MODULE: ./node_modules/asap/browser-asap.js
13856
- var browser_asap = __webpack_require__(9272);
13857
- var browser_asap_default = /*#__PURE__*/__webpack_require__.n(browser_asap);
13858
14041
  // EXTERNAL MODULE: ./src/platform-implementation-js/lib/stream-wait-for.ts
13859
14042
  var stream_wait_for = __webpack_require__(3511);
13860
14043
  // EXTERNAL MODULE: ./src/platform-implementation-js/lib/dom/insert-element-in-order.ts
@@ -15333,7 +15516,7 @@ options.insert = htmlElement => {
15333
15516
  htmlElement.setAttribute('data-inboxsdk-version',
15334
15517
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- this is injected by webpack
15335
15518
  ///@ts-ignore
15336
- "2.1.37-1709762454236-9dd4175d759b8d19");
15519
+ "2.1.39-1712261377230-745de69ef3533e1a");
15337
15520
  document.head.append(htmlElement);
15338
15521
  };
15339
15522
  options.domAPI = (styleDomAPI_default());
@@ -15950,8 +16133,8 @@ function _getLabelHTML(label) {
15950
16133
  // EXTERNAL MODULE: ./node_modules/page-parser-tree/js/index.js
15951
16134
  var page_parser_tree_js = __webpack_require__(6330);
15952
16135
  var page_parser_tree_js_default = /*#__PURE__*/__webpack_require__.n(page_parser_tree_js);
15953
- // EXTERNAL MODULE: ./src/platform-implementation-js/lib/isNotNil.ts
15954
- var isNotNil = __webpack_require__(8727);
16136
+ // EXTERNAL MODULE: ./src/common/isNotNil.ts
16137
+ var isNotNil = __webpack_require__(6230);
15955
16138
  ;// CONCATENATED MODULE: ./src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/page-parser.ts
15956
16139
 
15957
16140
 
@@ -16586,7 +16769,7 @@ const dummyPacket = Object.freeze({
16586
16769
  // do nothing
16587
16770
  })
16588
16771
  });
16589
- const memberMap = new WeakMap();
16772
+ const butter_bar_memberMap = new WeakMap();
16590
16773
  class ButterBar {
16591
16774
  constructor(appId, driver) {
16592
16775
  const members = {
@@ -16594,7 +16777,7 @@ class ButterBar {
16594
16777
  messagesByKey: new Map(),
16595
16778
  queuedPackets: []
16596
16779
  };
16597
- memberMap.set(this, members);
16780
+ butter_bar_memberMap.set(this, members);
16598
16781
  }
16599
16782
  showMessage(options) {
16600
16783
  defaults_default()(options, {
@@ -16604,7 +16787,7 @@ class ButterBar {
16604
16787
  persistent: false
16605
16788
  });
16606
16789
  this.hideMessage(options.messageKey);
16607
- const members = (0,get_or_fail/* default */.Z)(memberMap, this);
16790
+ const members = (0,get_or_fail/* default */.Z)(butter_bar_memberMap, this);
16608
16791
  const butterBarDriver = members.driver.getButterBarDriver();
16609
16792
  const messageId = Date.now() + '-' + Math.random();
16610
16793
  {
@@ -16718,7 +16901,7 @@ class ButterBar {
16718
16901
  }
16719
16902
  hideMessage(messageKey) {
16720
16903
  if (messageKey) {
16721
- const members = (0,get_or_fail/* default */.Z)(memberMap, this);
16904
+ const members = (0,get_or_fail/* default */.Z)(butter_bar_memberMap, this);
16722
16905
  const message = members.messagesByKey.get(messageKey);
16723
16906
  if (message) {
16724
16907
  message.destroy();
@@ -16726,15 +16909,13 @@ class ButterBar {
16726
16909
  }
16727
16910
  }
16728
16911
  hideGmailMessage() {
16729
- const members = (0,get_or_fail/* default */.Z)(memberMap, this);
16912
+ const members = (0,get_or_fail/* default */.Z)(butter_bar_memberMap, this);
16730
16913
  const butterBarDriver = members.driver.getButterBarDriver();
16731
16914
  butterBarDriver.hideGmailMessage();
16732
16915
  }
16733
16916
  }
16734
16917
  // EXTERNAL MODULE: ./src/platform-implementation-js/namespaces/compose.ts
16735
16918
  var compose = __webpack_require__(8731);
16736
- // EXTERNAL MODULE: ./src/platform-implementation-js/namespaces/conversations.ts
16737
- var conversations = __webpack_require__(5558);
16738
16919
  // EXTERNAL MODULE: ./src/platform-implementation-js/namespaces/keyboard.ts + 1 modules
16739
16920
  var keyboard = __webpack_require__(326);
16740
16921
  // EXTERNAL MODULE: ./src/platform-implementation-js/widgets/modal-view.ts
@@ -16929,8 +17110,6 @@ const widgets_memberMap = new Map();
16929
17110
  /* harmony default export */ const widgets = (Widgets);
16930
17111
  // EXTERNAL MODULE: ./src/platform-implementation-js/namespaces/modal.ts
16931
17112
  var modal = __webpack_require__(4198);
16932
- // EXTERNAL MODULE: ./src/platform-implementation-js/lib/handler-registry.ts
16933
- var handler_registry = __webpack_require__(3208);
16934
17113
  ;// CONCATENATED MODULE: ./src/platform-implementation-js/namespaces/lists.ts
16935
17114
 
16936
17115
 
@@ -19423,7 +19602,7 @@ mole_view_module_options.insert = htmlElement => {
19423
19602
  htmlElement.setAttribute('data-inboxsdk-version',
19424
19603
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- this is injected by webpack
19425
19604
  ///@ts-ignore
19426
- "2.1.37-1709762454236-9dd4175d759b8d19");
19605
+ "2.1.39-1712261377230-745de69ef3533e1a");
19427
19606
  document.head.append(htmlElement);
19428
19607
  };
19429
19608
  mole_view_module_options.domAPI = (styleDomAPI_default());
@@ -20357,23 +20536,24 @@ var uniqBy_default = /*#__PURE__*/__webpack_require__.n(uniqBy);
20357
20536
  ;// CONCATENATED MODULE: ./src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.ts
20358
20537
 
20359
20538
 
20539
+
20360
20540
  class UserInfo {
20541
+ #userEmail;
20361
20542
  constructor(driver) {
20362
- this._failedWaitFor = false;
20363
- this._userEmail = driver.getUserEmailAddress();
20543
+ this.#userEmail = driver.getUserEmailAddress();
20364
20544
  }
20365
20545
 
20366
- // deprecated
20546
+ /** @deprecated */
20367
20547
  getUserName() {
20368
20548
  const nameEl = document.querySelector('div.gb_w div.gb_B .gb_D');
20369
20549
  if (nameEl) {
20370
20550
  return nameEl.textContent;
20371
20551
  }
20372
- const contact = find_default()(this.getAccountSwitcherContactList(), contact => contact.emailAddress === this._userEmail);
20552
+ const contact = find_default()(this.getAccountSwitcherContactList(), contact => contact.emailAddress === this.#userEmail);
20373
20553
  if (contact && contact.name != null) {
20374
20554
  return contact.name;
20375
20555
  }
20376
- return this._userEmail;
20556
+ return this.#userEmail;
20377
20557
  }
20378
20558
 
20379
20559
  /** @deprecated */
@@ -20387,7 +20567,7 @@ class UserInfo {
20387
20567
  name: nameEl.textContent,
20388
20568
  emailAddress: emailAddressEl.textContent
20389
20569
  };
20390
- }).filter(Boolean);
20570
+ }).filter(isNotNil/* default */.Z);
20391
20571
  const extras = Array.from(document.querySelectorAll('[role=banner] div[aria-label] div > a[target="_blank"] > img + div')).map(el => {
20392
20572
  const match = el.children[1].textContent.match(/\S+/);
20393
20573
  if (!match) {
@@ -21726,6 +21906,8 @@ var immutability_helper_default = /*#__PURE__*/__webpack_require__.n(immutabilit
21726
21906
 
21727
21907
 
21728
21908
 
21909
+
21910
+
21729
21911
  const threadListHandlersToSearchStrings = new Map();
21730
21912
  const MAX_THREADS_PER_PAGE = 50;
21731
21913
 
@@ -21892,8 +22074,8 @@ const setupSearchReplacing = (driver, customRouteID, onActivate, findIdFailure)
21892
22074
  total = 0;
21893
22075
  threadDescriptors = [];
21894
22076
  }
21895
- const initialIDPairs = threadDescriptors.map(threadDescriptorToInitialIDPair).filter(Boolean);
21896
- const idPairsWithRFC = (await Promise.all(initialIDPairs.map(pair => initialIDPairToIDPairWithRFC(driver, pair, findIdFailure)))).filter(Boolean);
22077
+ const initialIDPairs = threadDescriptors.map(threadDescriptorToInitialIDPair).filter(isNotNil/* default */.Z);
22078
+ const idPairsWithRFC = (await Promise.all(initialIDPairs.map(pair => initialIDPairToIDPairWithRFC(driver, pair, findIdFailure)))).filter(isNotNil/* default */.Z);
21897
22079
  const messageIDQuery = idPairsWithRFC.length > 0 ? idPairsWithRFC.map(_ref2 => {
21898
22080
  let {
21899
22081
  rfcId
@@ -21914,7 +22096,9 @@ const setupSearchReplacing = (driver, customRouteID, onActivate, findIdFailure)
21914
22096
  const searchResultsResponse_promise = driver.getPageCommunicator().ajaxInterceptStream.filter(e => e.type === 'searchResultsResponse' && e.query === newQuery && e.start === start).map(x => x.response).take(1).toPromise();
21915
22097
 
21916
22098
  // Figure out any gmail thread ids we don't know yet.
21917
- const completedIDPairs = (await Promise.all(idPairsWithRFC.map(pair => idPairWithRFCToCompletedIDPair(driver, pair, findIdFailure)))).filter(Boolean);
22099
+ // Use uniqBy to remove duplicates which cause issues with Gmail sometimes
22100
+ // https://github.com/InboxSDK/InboxSDK/issues/1130
22101
+ const completedIDPairs = uniqBy_default()((await Promise.all(idPairsWithRFC.map(pair => idPairWithRFCToCompletedIDPair(driver, pair, findIdFailure)))).filter(isNotNil/* default */.Z), p => p.gtid);
21918
22102
  const response = await searchResultsResponse_promise;
21919
22103
  driver.signalCustomThreadListActivity(customRouteID);
21920
22104
 
@@ -21928,7 +22112,7 @@ const setupSearchReplacing = (driver, customRouteID, onActivate, findIdFailure)
21928
22112
  gtid
21929
22113
  } = _ref3;
21930
22114
  return find_default()(extractedThreads, t => t.oldGmailThreadID === gtid);
21931
- }).filter(Boolean);
22115
+ }).filter(isNotNil/* default */.Z);
21932
22116
  const doesNeedReorder = extractedThreads.length !== extractedThreadsInCompletedIDPairsOrder.length || extractedThreads.some((extractedThread, index) => extractedThread !== extractedThreadsInCompletedIDPairsOrder[index]);
21933
22117
  let reorderedThreads;
21934
22118
  if (doesNeedReorder) {
@@ -22127,6 +22311,7 @@ function copyAndValidateAutocompleteResults(driver, results) {
22127
22311
 
22128
22312
 
22129
22313
 
22314
+
22130
22315
  function registerSearchSuggestionsProvider(driver, handler) {
22131
22316
  // We inject the app-provided suggestions into Gmail's AJAX response. Then we
22132
22317
  // watch the DOM for our injected suggestions to show up and attach click and
@@ -22169,10 +22354,10 @@ function registerSearchSuggestionsProvider(driver, handler) {
22169
22354
  }).map(event => event.suggestions);
22170
22355
 
22171
22356
  // Wait for the first routeViewDriver to happen before looking for the search box.
22172
- const searchBoxStream = driver.getRouteViewDriverStream().toProperty(() => null).map(() => gmail_element_getter/* default.getSearchInput */.Z.getSearchInput()).filter(Boolean).take(1);
22357
+ const searchBoxStream = driver.getRouteViewDriverStream().toProperty(() => null).map(() => gmail_element_getter/* default.getSearchInput */.Z.getSearchInput()).filter(isNotNil/* default */.Z).take(1);
22173
22358
 
22174
22359
  // Wait for the search box to be focused before looking for the suggestions box.
22175
- const suggestionsBoxTbodyStream = searchBoxStream.flatMapLatest(searchBox => kefir_esm.fromEvents(searchBox, 'focus')).map(() => gmail_element_getter/* default.getSearchSuggestionsBoxParent */.Z.getSearchSuggestionsBoxParent()).filter(Boolean).flatMapLatest(make_element_child_stream/* default */.Z).map(x => x.el.firstElementChild).take(1).toProperty();
22360
+ const suggestionsBoxTbodyStream = searchBoxStream.flatMapLatest(searchBox => kefir_esm.fromEvents(searchBox, 'focus')).map(() => gmail_element_getter/* default.getSearchSuggestionsBoxParent */.Z.getSearchSuggestionsBoxParent()).filter(isNotNil/* default */.Z).flatMapLatest(make_element_child_stream/* default */.Z).map(x => x.el.firstElementChild).take(1).toProperty();
22176
22361
 
22177
22362
  // This stream emits an event after every time Gmail changes the suggestions
22178
22363
  // list.
@@ -22708,6 +22893,7 @@ function routeIDmatchesHash(routeID, hash) {
22708
22893
 
22709
22894
 
22710
22895
 
22896
+
22711
22897
  function setupRouteViewDriverStream(gmailRouteProcessor, driver) {
22712
22898
  const customRouteIDs = driver.getCustomRouteIDs();
22713
22899
  const customListRouteIDs = driver.getCustomListRouteIDs();
@@ -22857,7 +23043,7 @@ function setupRouteViewDriverStream(gmailRouteProcessor, driver) {
22857
23043
  return;
22858
23044
  }
22859
23045
  return new gmail_route_view(options, gmailRouteProcessor, driver);
22860
- }).filter(Boolean).map(gmailRouteView => {
23046
+ }).filter(isNotNil/* default */.Z).map(gmailRouteView => {
22861
23047
  if (latestGmailRouteView) {
22862
23048
  latestGmailRouteView.destroy();
22863
23049
  }
@@ -22881,6 +23067,7 @@ function setupRouteViewDriverStream(gmailRouteProcessor, driver) {
22881
23067
 
22882
23068
 
22883
23069
 
23070
+
22884
23071
  class NativeGmailNavItemView {
22885
23072
  _activeMarkerElement = null;
22886
23073
  _isActive = false;
@@ -22899,7 +23086,7 @@ class NativeGmailNavItemView {
22899
23086
  if (parentElement) {
22900
23087
  (0,make_mutation_observer_chunked_stream/* default */.Z)(parentElement, {
22901
23088
  childList: true
22902
- }).map(() => parentElement.querySelector(`.aim a[href*="#${this._navItemName}"]`)).filter(Boolean).map(link => findParent(link, el => el.classList.contains('aim'))).filter(Boolean).filter(newElement => newElement !== this._element).onValue(newElement => {
23089
+ }).map(() => parentElement.querySelector(`.aim a[href*="#${this._navItemName}"]`)).filter(isNotNil/* default */.Z).map(link => findParent(link, el => el.classList.contains('aim'))).filter(isNotNil/* default */.Z).filter(newElement => newElement !== this._element).onValue(newElement => {
22903
23090
  if (newElement) {
22904
23091
  const currentContainerElement = this._itemContainerElement;
22905
23092
  if (currentContainerElement) {
@@ -24219,14 +24406,14 @@ class PlatformImplementation extends safe_event_emitter/* default */.Z {
24219
24406
  };
24220
24407
  platform_implementation_memberMap.set(this, members);
24221
24408
  if (false) {}
24222
- const membrane = new Membrane([[gmail_compose_view/* default */.Z, viewDriver => new compose_view/* default */.Z(driver, viewDriver, membrane)], [gmail_attachment_card_view, viewDriver => new attachment_card_view(viewDriver, driver, membrane)], [gmail_message_view, viewDriver => new message_view/* default */.Z(viewDriver, appId, membrane, this.Conversations, driver)], [gmail_thread_view, viewDriver => new thread_view/* default */.Z(viewDriver, appId, driver, membrane)], [gmail_thread_row_view/* default */.Z, viewDriver => new ThreadRowView(viewDriver)], [gmail_route_view, viewDriver => new route_view/* default */.Z(viewDriver)], [dummy_route_view_driver/* default */.Z, viewDriver => new route_view/* default */.Z(viewDriver)]]);
24409
+ const membrane = new Membrane([[gmail_compose_view/* default */.Z, viewDriver => new compose_view/* default */.Z(driver, viewDriver, membrane)], [gmail_attachment_card_view, viewDriver => new AttachmentCardView(viewDriver, driver, membrane)], [gmail_message_view, viewDriver => new MessageView(viewDriver, membrane, driver)], [gmail_thread_view, viewDriver => new thread_view/* default */.Z(viewDriver, appId, driver, membrane)], [gmail_thread_row_view/* default */.Z, viewDriver => new ThreadRowView(viewDriver)], [gmail_route_view, viewDriver => new route_view/* default */.Z(viewDriver)], [dummy_route_view_driver/* default */.Z, viewDriver => new route_view/* default */.Z(viewDriver)]]);
24223
24410
  this.destroyed = false;
24224
24411
  this.LOADER_VERSION = LOADER_VERSION;
24225
24412
  this.IMPL_VERSION = version/* BUILD_VERSION */.b;
24226
24413
  this.ButterBar = new ButterBar(appId, driver);
24227
24414
  driver.setButterBar(this.ButterBar);
24228
24415
  this.Compose = new compose/* default */.Z(driver, membrane);
24229
- this.Conversations = new conversations/* default */.ZP(appId, driver, membrane);
24416
+ this.Conversations = new conversations(appId, driver, membrane);
24230
24417
  this.Keyboard = new keyboard/* default */.Z(appId, appName, appIconUrl, driver);
24231
24418
  this.User = new User(driver, piOpts);
24232
24419
  this.Lists = new Lists(appId, driver, membrane);
@@ -24791,227 +24978,6 @@ class ContentPanelView extends _lib_safe_event_emitter__WEBPACK_IMPORTED_MODULE_
24791
24978
 
24792
24979
  /***/ }),
24793
24980
 
24794
- /***/ 5052:
24795
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
24796
-
24797
- "use strict";
24798
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
24799
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
24800
- /* harmony export */ });
24801
- /* harmony import */ var ud__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1010);
24802
- /* harmony import */ var asap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9272);
24803
- /* harmony import */ var asap__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(asap__WEBPACK_IMPORTED_MODULE_0__);
24804
- /* harmony import */ var _lib_safe_event_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6666);
24805
- /* harmony import */ var _common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7791);
24806
- /* harmony import */ var _namespaces_conversations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5558);
24807
- /* module decorator */ module = __webpack_require__.hmd(module);
24808
-
24809
-
24810
-
24811
-
24812
-
24813
- const memberMap = (0,ud__WEBPACK_IMPORTED_MODULE_3__.defonce)(module, () => new WeakMap());
24814
- class MessageView extends _lib_safe_event_emitter__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z {
24815
- destroyed = false;
24816
- constructor(messageViewImplementation, appId, membrane, Conversations, driver) {
24817
- super();
24818
- const members = {
24819
- messageViewImplementation,
24820
- membrane,
24821
- Conversations,
24822
- driver,
24823
- linksInBody: null
24824
- };
24825
- memberMap.set(this, members);
24826
- _bindToEventStream(this, members, messageViewImplementation.getEventStream());
24827
- }
24828
- addAttachmentCardView(cardOptions) {
24829
- const {
24830
- messageViewImplementation,
24831
- membrane
24832
- } = (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this);
24833
- const attachmentCardViewDriver = messageViewImplementation.addAttachmentCard(cardOptions);
24834
- const attachmentCardView = membrane.get(attachmentCardViewDriver);
24835
- attachmentCardViewDriver.getPreviewClicks().onValue(e => {
24836
- if (cardOptions.previewOnClick) {
24837
- cardOptions.previewOnClick({
24838
- attachmentCardView,
24839
- preventDefault: () => e.preventDefault()
24840
- });
24841
- }
24842
- });
24843
- return attachmentCardView;
24844
- }
24845
-
24846
- // TODO why is this a separate method?
24847
- addAttachmentCardViewNoPreview(cardOptions) {
24848
- return this.addAttachmentCardView(cardOptions);
24849
- }
24850
- addAttachmentsToolbarButton(buttonOptions) {
24851
- const {
24852
- messageViewImplementation,
24853
- membrane
24854
- } = (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this);
24855
- messageViewImplementation.addButtonToDownloadAllArea({
24856
- tooltip: buttonOptions.tooltip,
24857
- iconUrl: buttonOptions.iconUrl,
24858
- onClick: () => {
24859
- const attachmentCardViews = messageViewImplementation.getAttachmentCardViewDrivers().map(cardDriver => membrane.get(cardDriver));
24860
- buttonOptions.onClick({
24861
- attachmentCardViews
24862
- });
24863
- }
24864
- });
24865
- }
24866
- addToolbarButton(buttonOptions) {
24867
- if (typeof buttonOptions.onClick !== 'function' || typeof buttonOptions.title !== 'string' || !Object.prototype.hasOwnProperty.call(_namespaces_conversations__WEBPACK_IMPORTED_MODULE_2__/* .MessageViewToolbarSectionNames */ .kI, buttonOptions.section)) {
24868
- throw new Error('Missing required properties on MessageViewToolbarButtonDescriptor object');
24869
- }
24870
- const {
24871
- messageViewImplementation
24872
- } = (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this);
24873
- messageViewImplementation.addMoreMenuItem(buttonOptions);
24874
- }
24875
- getBodyElement() {
24876
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.getContentsElement();
24877
- }
24878
- getMessageID() {
24879
- (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).driver.getLogger().deprecationWarning('messageView.getMessageID', 'messageView.getMessageIDAsync');
24880
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.getMessageID();
24881
- }
24882
- getMessageIDAsync() {
24883
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.getMessageIDAsync();
24884
- }
24885
-
24886
- // TODO non-file-attachment card views are asynchronously loaded. Add some sort of
24887
- // registerAttachmentCardViewHandler function to listen for other types of
24888
- // attachment cards if we want to continue support for them.
24889
- getFileAttachmentCardViews() {
24890
- const {
24891
- messageViewImplementation,
24892
- membrane
24893
- } = (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this);
24894
- return messageViewImplementation.getAttachmentCardViewDrivers().filter(cardDriver => cardDriver.getAttachmentType() === 'FILE').map(attachmentCardViewDriver => membrane.get(attachmentCardViewDriver));
24895
- }
24896
-
24897
- // Deprecated name
24898
- getAttachmentCardViews() {
24899
- const {
24900
- driver
24901
- } = (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this);
24902
- driver.getLogger().deprecationWarning('MessageView.getAttachmentCardViews', 'MessageView.getFileAttachmentCardViews');
24903
- if (driver.getOpts().REQUESTED_API_VERSION !== 1) {
24904
- throw new Error('This method was discontinued after API version 1');
24905
- }
24906
- return this.getFileAttachmentCardViews();
24907
- }
24908
- isElementInQuotedArea(element) {
24909
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.isElementInQuotedArea(element);
24910
- }
24911
- isLoaded() {
24912
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.isLoaded();
24913
- }
24914
- getLinksInBody() {
24915
- const members = (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this);
24916
- if (!members.linksInBody) {
24917
- const anchors = this.getBodyElement().querySelectorAll('a');
24918
- members.linksInBody = Array.from(anchors).map(anchor => ({
24919
- text: anchor.textContent,
24920
- html: anchor.innerHTML,
24921
- href: anchor.href,
24922
- element: anchor,
24923
- isInQuotedArea: this.isElementInQuotedArea(anchor)
24924
- }));
24925
- }
24926
- return members.linksInBody;
24927
- }
24928
- getSender() {
24929
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.getSender();
24930
- }
24931
- getRecipients() {
24932
- (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).driver.getLogger().deprecationWarning('MessageView.getRecipients', 'MessageView.getRecipientEmailAddresses() or MessageView.getRecipientsFull()');
24933
- return this.getRecipientEmailAddresses().map(emailAddress => ({
24934
- emailAddress,
24935
- name: null
24936
- }));
24937
- }
24938
- getRecipientEmailAddresses() {
24939
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.getRecipientEmailAddresses();
24940
- }
24941
- getRecipientsFull() {
24942
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.getRecipientsFull();
24943
- }
24944
- getThreadView() {
24945
- const {
24946
- messageViewImplementation,
24947
- membrane
24948
- } = (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this);
24949
- return membrane.get(messageViewImplementation.getThreadViewDriver());
24950
- }
24951
- getDateString() {
24952
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.getDateString();
24953
- }
24954
- addAttachmentIcon(iconDescriptor) {
24955
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.addAttachmentIcon(iconDescriptor);
24956
- }
24957
- getViewState() {
24958
- const members = (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this);
24959
- return members.Conversations.MessageViewViewStates[members.messageViewImplementation.getViewState()];
24960
- }
24961
- hasOpenReply() {
24962
- const {
24963
- driver
24964
- } = (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this);
24965
- driver.getLogger().deprecationWarning('MessageView.hasOpenReply');
24966
- if (driver.getOpts().REQUESTED_API_VERSION !== 1) {
24967
- throw new Error('This method was discontinued after API version 1');
24968
- }
24969
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.hasOpenReply();
24970
- }
24971
- }
24972
- function _bindToEventStream(messageView, members, stream) {
24973
- stream.onEnd(function () {
24974
- messageView.destroyed = true;
24975
- messageView.emit('destroy');
24976
- messageView.removeAllListeners();
24977
- });
24978
- stream.filter(function (event) {
24979
- return event.type !== 'internal' && event.eventName === 'contactHover';
24980
- }).onValue(function (event) {
24981
- messageView.emit(event.eventName, {
24982
- contactType: event.contactType,
24983
- contact: event.contact,
24984
- messageView: messageView,
24985
- threadView: messageView.getThreadView()
24986
- });
24987
- });
24988
- if (messageView.isLoaded()) {
24989
- asap__WEBPACK_IMPORTED_MODULE_0___default()(() => {
24990
- messageView.emit('load', {
24991
- messageView
24992
- });
24993
- });
24994
- } else {
24995
- stream.filter(event => event.eventName === 'messageLoad').onValue(() => {
24996
- messageView.emit('load', {
24997
- messageView: messageView
24998
- });
24999
- });
25000
- }
25001
- stream.filter(function (event) {
25002
- return event.eventName === 'viewStateChange';
25003
- }).onValue(function (event) {
25004
- messageView.emit('viewStateChange', {
25005
- oldViewState: members.Conversations.MessageViewViewStates[event.oldValue],
25006
- newViewState: members.Conversations.MessageViewViewStates[event.newValue],
25007
- messageView: messageView
25008
- });
25009
- });
25010
- }
25011
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MessageView);
25012
-
25013
- /***/ }),
25014
-
25015
24981
  /***/ 7422:
25016
24982
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
25017
24983
 
@@ -25179,8 +25145,8 @@ const membersMap = (0,ud__WEBPACK_IMPORTED_MODULE_2__.defonce)(module, () => new
25179
25145
 
25180
25146
 
25181
25147
  class DummyRouteViewDriver {
25182
- _eventStream = kefir_bus__WEBPACK_IMPORTED_MODULE_0___default()();
25183
- _stopper = kefir_stopper__WEBPACK_IMPORTED_MODULE_1___default()();
25148
+ #eventStream = kefir_bus__WEBPACK_IMPORTED_MODULE_0___default()();
25149
+ #stopper = kefir_stopper__WEBPACK_IMPORTED_MODULE_1___default()();
25184
25150
  getRouteType() {
25185
25151
  return 'UNKNOWN';
25186
25152
  }
@@ -25191,14 +25157,14 @@ class DummyRouteViewDriver {
25191
25157
  return {};
25192
25158
  }
25193
25159
  getEventStream() {
25194
- return this._eventStream;
25160
+ return this.#eventStream;
25195
25161
  }
25196
25162
  getStopper() {
25197
- return this._stopper;
25163
+ return this.#stopper;
25198
25164
  }
25199
25165
  destroy() {
25200
- this._eventStream.end();
25201
- this._stopper.destroy();
25166
+ this.#eventStream.end();
25167
+ this.#stopper.destroy();
25202
25168
  }
25203
25169
  }
25204
25170
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DummyRouteViewDriver);