@inboxsdk/core 2.1.36 → 2.1.38

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 (30) hide show
  1. package/inboxsdk.js +433 -463
  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 +1 -1
  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/gmail-thread-row-view.d.ts.map +1 -1
  17. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.d.ts.map +1 -1
  18. package/src/platform-implementation-js/platform-implementation.d.ts.map +1 -1
  19. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts +3 -5
  20. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts.map +1 -1
  21. package/src/platform-implementation-js/views/conversations/custom-message-view.d.ts +4 -12
  22. package/src/platform-implementation-js/views/conversations/custom-message-view.d.ts.map +1 -1
  23. package/src/platform-implementation-js/views/conversations/message-view.d.ts +7 -7
  24. package/src/platform-implementation-js/views/conversations/message-view.d.ts.map +1 -1
  25. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.d.ts +1 -2
  26. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.d.ts.map +1 -1
  27. package/src/platform-implementation-js/views/thread-row-view.d.ts +3 -0
  28. package/src/platform-implementation-js/views/thread-row-view.d.ts.map +1 -1
  29. package/src/platform-implementation-js/lib/isNotNil.d.ts.map +0 -1
  30. /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.36-1709734898365-8d7c09f56e6cda19-MODIFIED";
893
+ const BUILD_VERSION = "2.1.38-1712087227941-d4c8bfd8eba680c6";
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'
@@ -8009,6 +8028,8 @@ class GmailThreadRowView {
8009
8028
  iconSettings: {},
8010
8029
  iconWrapper: document.createElement('div'),
8011
8030
  remove() {
8031
+ // Trigger any mouseleave handlers that were added by onHover.
8032
+ this.iconWrapper.dispatchEvent(new MouseEvent('mouseleave'));
8012
8033
  this.iconWrapper.remove();
8013
8034
  }
8014
8035
  };
@@ -8028,6 +8049,28 @@ class GmailThreadRowView {
8028
8049
  } else {
8029
8050
  iconWrapper.removeAttribute('data-tooltip');
8030
8051
  }
8052
+ if (iconDescriptor.onHover) {
8053
+ const {
8054
+ onHover
8055
+ } = iconDescriptor;
8056
+ // Using property instead of addEventListener so we replace any old handler
8057
+ // added by a previous iconDescriptor emitted from the stream.
8058
+ iconWrapper.onmouseenter = () => {
8059
+ // We only add the mouseleave listener here and use addEventListener so
8060
+ // it doesn't get replaced if a new iconDescriptor is emitted from the
8061
+ // stream while the user is hovering.
8062
+ const hoverEnd = new Promise(resolve => {
8063
+ iconWrapper.addEventListener('mouseleave', () => {
8064
+ resolve();
8065
+ }, {
8066
+ once: true
8067
+ });
8068
+ });
8069
+ onHover({
8070
+ hoverEnd
8071
+ });
8072
+ };
8073
+ }
8031
8074
  const labelParent = this._getLabelParent();
8032
8075
  if (!labelParent.contains(iconWrapper)) {
8033
8076
  (0,querySelectorOrFail/* default */.Z)(labelParent, '.y6').insertAdjacentElement('beforebegin', iconWrapper);
@@ -10586,7 +10629,7 @@ options.insert = htmlElement => {
10586
10629
  htmlElement.setAttribute('data-inboxsdk-version',
10587
10630
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- this is injected by webpack
10588
10631
  ///@ts-ignore
10589
- "2.1.36-1709734898365-8d7c09f56e6cda19-MODIFIED");
10632
+ "2.1.38-1712087227941-d4c8bfd8eba680c6");
10590
10633
  document.head.append(htmlElement);
10591
10634
  };
10592
10635
  options.domAPI = (styleDomAPI_default());
@@ -10696,21 +10739,6 @@ style="width: 396px; height: 18px; max-height: 18px; padding: 5px; color: rgb(34
10696
10739
 
10697
10740
  /***/ }),
10698
10741
 
10699
- /***/ 8727:
10700
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
10701
-
10702
- "use strict";
10703
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
10704
- /* harmony export */ "Z": () => (/* binding */ isNotNil)
10705
- /* harmony export */ });
10706
- // Type predicate to avoid opting out of strict type checking in filter operations.
10707
- // Adapted from https://stackoverflow.com/a/46700791
10708
- function isNotNil(value) {
10709
- return value != null;
10710
- }
10711
-
10712
- /***/ }),
10713
-
10714
10742
  /***/ 3045:
10715
10743
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
10716
10744
 
@@ -11728,7 +11756,7 @@ if (!globalThis.__InboxSDKImpLoader) {
11728
11756
  await onready;
11729
11757
  const {
11730
11758
  makePlatformImplementation
11731
- } = 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));
11732
11760
  return makePlatformImplementation(appId, opts, {
11733
11761
  piMainStarted,
11734
11762
  piLoadStarted,
@@ -11809,99 +11837,6 @@ class Compose {
11809
11837
 
11810
11838
  /***/ }),
11811
11839
 
11812
- /***/ 5558:
11813
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
11814
-
11815
- "use strict";
11816
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
11817
- /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__),
11818
- /* harmony export */ "kI": () => (/* binding */ MessageViewToolbarSectionNames)
11819
- /* harmony export */ });
11820
- /* unused harmony export MessageViewViewStates */
11821
- /* harmony import */ var kefir__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6609);
11822
- /* harmony import */ var _common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7791);
11823
- /* harmony import */ var _views_conversations_thread_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7422);
11824
- /* harmony import */ var _views_conversations_message_view__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5052);
11825
- /* harmony import */ var _lib_handler_registry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3208);
11826
-
11827
-
11828
-
11829
-
11830
-
11831
- const memberMap = new WeakMap();
11832
- const MessageViewViewStates = Object.freeze({
11833
- /**
11834
- * One case where a {@link MessageView} is 'HIDDEN' is when there are too many messages in a thread,
11835
- * and the message doesn't show at all.
11836
- */
11837
- HIDDEN: 'HIDDEN',
11838
- /**
11839
- * {@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.
11840
- */
11841
- COLLAPSED: 'COLLAPSED',
11842
- EXPANDED: 'EXPANDED'
11843
- });
11844
- const MessageViewToolbarSectionNames = Object.freeze({
11845
- MORE: 'MORE'
11846
- });
11847
- class Conversations {
11848
- MessageViewViewStates = MessageViewViewStates;
11849
- MessageViewToolbarSectionNames = MessageViewToolbarSectionNames;
11850
- constructor(appId, driver, membrane) {
11851
- const members = {
11852
- appId,
11853
- driver,
11854
- threadViewHandlerRegistry: new _lib_handler_registry__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z(),
11855
- messageViewHandlerRegistries: {
11856
- all: new _lib_handler_registry__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z(),
11857
- loaded: new _lib_handler_registry__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z()
11858
- },
11859
- attachmentCardViewHandlerRegistry: new _lib_handler_registry__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z()
11860
- };
11861
- memberMap.set(this, members);
11862
- driver.getStopper().onValue(() => {
11863
- members.threadViewHandlerRegistry.dumpHandlers();
11864
- members.messageViewHandlerRegistries.all.dumpHandlers();
11865
- members.messageViewHandlerRegistries.loaded.dumpHandlers();
11866
- });
11867
- driver.getAttachmentCardViewDriverStream().filter(cardDriver => cardDriver.getAttachmentType() === 'FILE').onValue(attachmentCardViewDriver => {
11868
- const attachmentCardView = membrane.get(attachmentCardViewDriver);
11869
- members.attachmentCardViewHandlerRegistry.addTarget(attachmentCardView);
11870
- });
11871
- _setupViewDriverWatcher(appId, driver.getThreadViewDriverStream().filter(t => !t.isLoadingStub()), _views_conversations_thread_view__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, members.threadViewHandlerRegistry, this, membrane);
11872
- _setupViewDriverWatcher(appId, driver.getMessageViewDriverStream(), _views_conversations_message_view__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, members.messageViewHandlerRegistries.all, this, membrane);
11873
- _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);
11874
- }
11875
- registerThreadViewHandler(handler) {
11876
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).threadViewHandlerRegistry.registerHandler(handler);
11877
- }
11878
- registerMessageViewHandler(handler) {
11879
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewHandlerRegistries.loaded.registerHandler(handler);
11880
- }
11881
- registerMessageViewHandlerAll(handler) {
11882
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewHandlerRegistries.all.registerHandler(handler);
11883
- }
11884
- registerFileAttachmentCardViewHandler(handler) {
11885
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).attachmentCardViewHandlerRegistry.registerHandler(handler);
11886
- }
11887
- }
11888
- function _setupViewDriverWatcher(appId, stream, ViewClass, handlerRegistry, ConversationsInstance, membrane) {
11889
- var combinedStream = stream.map(function (viewDriver) {
11890
- const view = membrane.get(viewDriver);
11891
- return {
11892
- viewDriver,
11893
- view
11894
- };
11895
- });
11896
- // A delay is currently necessary so that ThreadView can wait for its MessageViews.
11897
- combinedStream.flatMap(event => event.viewDriver.getReadyStream().map(() => event).takeUntilBy(kefir__WEBPACK_IMPORTED_MODULE_0__.fromEvents(event.view, 'destroy'))).onValue(function (event) {
11898
- handlerRegistry.addTarget(event.view);
11899
- });
11900
- }
11901
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Conversations);
11902
-
11903
- /***/ }),
11904
-
11905
11840
  /***/ 326:
11906
11841
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
11907
11842
 
@@ -12416,7 +12351,7 @@ function _updateNavMenu(members, newRouteViewDriver) {
12416
12351
 
12417
12352
  /***/ }),
12418
12353
 
12419
- /***/ 6361:
12354
+ /***/ 1359:
12420
12355
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
12421
12356
 
12422
12357
  "use strict";
@@ -12460,43 +12395,45 @@ class Membrane {
12460
12395
  ;// CONCATENATED MODULE: ./src/platform-implementation-js/views/conversations/attachment-card-view.ts
12461
12396
 
12462
12397
  class AttachmentCardView extends safe_event_emitter/* default */.Z {
12398
+ #attachmentCardImplementation;
12399
+ #driver;
12400
+ #membrane;
12401
+ destroyed = false;
12463
12402
  constructor(attachmentCardImplementation, driver, membrane) {
12464
12403
  super();
12465
- this.destroyed = false;
12466
- this._driver = driver;
12467
- this._membrane = membrane;
12468
- this._attachmentCardImplementation = attachmentCardImplementation;
12469
- this._attachmentCardImplementation.getStopper().onValue(() => {
12404
+ this.#driver = driver;
12405
+ this.#membrane = membrane;
12406
+ this.#attachmentCardImplementation = attachmentCardImplementation;
12407
+ this.#attachmentCardImplementation.getStopper().onValue(() => {
12470
12408
  this.destroyed = true;
12471
12409
  this.emit('destroy');
12472
12410
  });
12473
12411
  }
12474
12412
  getAttachmentType() {
12475
- return this._attachmentCardImplementation.getAttachmentType();
12413
+ return this.#attachmentCardImplementation.getAttachmentType();
12476
12414
  }
12477
12415
  addButton(buttonOptions) {
12478
- this._attachmentCardImplementation.addButton(buttonOptions);
12416
+ this.#attachmentCardImplementation.addButton(buttonOptions);
12479
12417
  }
12480
12418
  getTitle() {
12481
- return this._attachmentCardImplementation.getTitle();
12419
+ return this.#attachmentCardImplementation.getTitle();
12482
12420
  }
12483
12421
 
12484
12422
  /**
12485
12423
  * @deprecated Please use the same-named method on the AttachmentCardClickEvent object instead.
12486
12424
  */
12487
12425
  getDownloadURL() {
12488
- this._driver.getLogger().deprecationWarning('AttachmentCardView.getDownloadURL', 'AttachmentCardView.addButton -> onClick -> AttachmentCardClickEvent');
12489
- 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) {
12490
12428
  throw new Error('This method was discontinued after API version 1');
12491
12429
  }
12492
- return this._attachmentCardImplementation.getDownloadURL();
12430
+ return this.#attachmentCardImplementation.getDownloadURL();
12493
12431
  }
12494
12432
  getMessageView() {
12495
- const messageViewDriver = this._attachmentCardImplementation.getMessageViewDriver();
12496
- return messageViewDriver ? this._membrane.get(messageViewDriver) : null;
12433
+ const messageViewDriver = this.#attachmentCardImplementation.getMessageViewDriver();
12434
+ return messageViewDriver ? this.#membrane.get(messageViewDriver) : null;
12497
12435
  }
12498
12436
  }
12499
- /* harmony default export */ const attachment_card_view = (AttachmentCardView);
12500
12437
  // EXTERNAL MODULE: ./node_modules/lodash/find.js
12501
12438
  var find = __webpack_require__(3311);
12502
12439
  var find_default = /*#__PURE__*/__webpack_require__.n(find);
@@ -12827,8 +12764,260 @@ class GmailAttachmentCardView {
12827
12764
  }
12828
12765
  }
12829
12766
  /* harmony default export */ const gmail_attachment_card_view = (GmailAttachmentCardView);
12830
- // EXTERNAL MODULE: ./src/platform-implementation-js/views/conversations/message-view.ts
12831
- var message_view = __webpack_require__(5052);
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
+ class MessageView extends safe_event_emitter/* default */.Z {
12856
+ destroyed = false;
12857
+ #driver;
12858
+ #linksInBody;
12859
+ #membrane;
12860
+ #messageViewImplementation;
12861
+ constructor(messageViewImplementation, membrane, driver) {
12862
+ super();
12863
+ this.#driver = driver;
12864
+ this.#linksInBody = null;
12865
+ this.#membrane = membrane;
12866
+ this.#messageViewImplementation = messageViewImplementation;
12867
+ this.#bindToEventStream(messageViewImplementation.getEventStream());
12868
+ }
12869
+ addAttachmentCardView(cardOptions) {
12870
+ const attachmentCardViewDriver = this.#messageViewImplementation.addAttachmentCard(cardOptions);
12871
+ const attachmentCardView = this.#membrane.get(attachmentCardViewDriver);
12872
+ attachmentCardViewDriver.getPreviewClicks().onValue(e => {
12873
+ if (cardOptions.previewOnClick) {
12874
+ cardOptions.previewOnClick({
12875
+ attachmentCardView,
12876
+ preventDefault: () => e.preventDefault()
12877
+ });
12878
+ }
12879
+ });
12880
+ return attachmentCardView;
12881
+ }
12882
+
12883
+ // TODO why is this a separate method?
12884
+ addAttachmentCardViewNoPreview(cardOptions) {
12885
+ return this.addAttachmentCardView(cardOptions);
12886
+ }
12887
+ addAttachmentsToolbarButton(buttonOptions) {
12888
+ this.#messageViewImplementation.addButtonToDownloadAllArea({
12889
+ tooltip: buttonOptions.tooltip,
12890
+ iconUrl: buttonOptions.iconUrl,
12891
+ onClick: () => {
12892
+ const attachmentCardViews = this.#messageViewImplementation.getAttachmentCardViewDrivers().map(cardDriver => this.#membrane.get(cardDriver));
12893
+ buttonOptions.onClick({
12894
+ attachmentCardViews
12895
+ });
12896
+ }
12897
+ });
12898
+ }
12899
+ addToolbarButton(buttonOptions) {
12900
+ if (typeof buttonOptions.onClick !== 'function' || typeof buttonOptions.title !== 'string' || !Object.prototype.hasOwnProperty.call(MessageViewToolbarSectionNames, buttonOptions.section)) {
12901
+ throw new Error('Missing required properties on MessageViewToolbarButtonDescriptor object');
12902
+ }
12903
+ this.#messageViewImplementation.addMoreMenuItem(buttonOptions);
12904
+ }
12905
+ getBodyElement() {
12906
+ return this.#messageViewImplementation.getContentsElement();
12907
+ }
12908
+ getMessageID() {
12909
+ this.#driver.getLogger().deprecationWarning('messageView.getMessageID', 'messageView.getMessageIDAsync');
12910
+ return this.#messageViewImplementation.getMessageID();
12911
+ }
12912
+ getMessageIDAsync() {
12913
+ return this.#messageViewImplementation.getMessageIDAsync();
12914
+ }
12915
+
12916
+ // TODO non-file-attachment card views are asynchronously loaded. Add some sort of
12917
+ // registerAttachmentCardViewHandler function to listen for other types of
12918
+ // attachment cards if we want to continue support for them.
12919
+ getFileAttachmentCardViews() {
12920
+ return this.#messageViewImplementation.getAttachmentCardViewDrivers().filter(cardDriver => cardDriver.getAttachmentType() === 'FILE').map(attachmentCardViewDriver => this.#membrane.get(attachmentCardViewDriver));
12921
+ }
12922
+
12923
+ // Deprecated name
12924
+ getAttachmentCardViews() {
12925
+ this.#driver.getLogger().deprecationWarning('MessageView.getAttachmentCardViews', 'MessageView.getFileAttachmentCardViews');
12926
+ if (this.#driver.getOpts().REQUESTED_API_VERSION !== 1) {
12927
+ throw new Error('This method was discontinued after API version 1');
12928
+ }
12929
+ return this.getFileAttachmentCardViews();
12930
+ }
12931
+ isElementInQuotedArea(element) {
12932
+ return this.#messageViewImplementation.isElementInQuotedArea(element);
12933
+ }
12934
+ isLoaded() {
12935
+ return this.#messageViewImplementation.isLoaded();
12936
+ }
12937
+ getLinksInBody() {
12938
+ if (!this.#linksInBody) {
12939
+ const anchors = this.getBodyElement().querySelectorAll('a');
12940
+ this.#linksInBody = Array.from(anchors).map(anchor => ({
12941
+ text: anchor.textContent,
12942
+ html: anchor.innerHTML,
12943
+ href: anchor.href,
12944
+ element: anchor,
12945
+ isInQuotedArea: this.isElementInQuotedArea(anchor)
12946
+ }));
12947
+ }
12948
+ return this.#linksInBody;
12949
+ }
12950
+ getSender() {
12951
+ return this.#messageViewImplementation.getSender();
12952
+ }
12953
+ getRecipients() {
12954
+ this.#driver.getLogger().deprecationWarning('MessageView.getRecipients', 'MessageView.getRecipientEmailAddresses() or MessageView.getRecipientsFull()');
12955
+ return this.getRecipientEmailAddresses().map(emailAddress => ({
12956
+ emailAddress,
12957
+ name: null
12958
+ }));
12959
+ }
12960
+ getRecipientEmailAddresses() {
12961
+ return this.#messageViewImplementation.getRecipientEmailAddresses();
12962
+ }
12963
+ getRecipientsFull() {
12964
+ return this.#messageViewImplementation.getRecipientsFull();
12965
+ }
12966
+ getThreadView() {
12967
+ return this.#membrane.get(this.#messageViewImplementation.getThreadViewDriver());
12968
+ }
12969
+ getDateString() {
12970
+ return this.#messageViewImplementation.getDateString();
12971
+ }
12972
+ addAttachmentIcon(iconDescriptor) {
12973
+ return this.#messageViewImplementation.addAttachmentIcon(iconDescriptor);
12974
+ }
12975
+ getViewState() {
12976
+ return MessageViewViewStates[this.#messageViewImplementation.getViewState()];
12977
+ }
12978
+ hasOpenReply() {
12979
+ this.#driver.getLogger().deprecationWarning('MessageView.hasOpenReply');
12980
+ if (this.#driver.getOpts().REQUESTED_API_VERSION !== 1) {
12981
+ throw new Error('This method was discontinued after API version 1');
12982
+ }
12983
+ return this.#messageViewImplementation.hasOpenReply();
12984
+ }
12985
+ #bindToEventStream(stream) {
12986
+ stream.onEnd(() => {
12987
+ this.destroyed = true;
12988
+ this.emit('destroy');
12989
+ this.removeAllListeners();
12990
+ });
12991
+ stream.filter(event => event.type !== 'internal' && event.eventName === 'contactHover').onValue(event => {
12992
+ this.emit(event.eventName, {
12993
+ contactType: event.contactType,
12994
+ contact: event.contact,
12995
+ messageView: this,
12996
+ threadView: this.getThreadView()
12997
+ });
12998
+ });
12999
+ if (this.isLoaded()) {
13000
+ browser_asap_default()(() => {
13001
+ this.emit('load', {
13002
+ messageView: this
13003
+ });
13004
+ });
13005
+ } else {
13006
+ stream.filter(event => event.eventName === 'messageLoad').onValue(() => {
13007
+ this.emit('load', {
13008
+ messageView: this
13009
+ });
13010
+ });
13011
+ }
13012
+ stream.filter(event => event.eventName === 'viewStateChange').onValue(event => {
13013
+ this.emit('viewStateChange', {
13014
+ oldViewState: MessageViewViewStates[event.oldValue],
13015
+ newViewState: MessageViewViewStates[event.newValue],
13016
+ messageView: this
13017
+ });
13018
+ });
13019
+ }
13020
+ }
12832
13021
  // EXTERNAL MODULE: ./node_modules/lodash/sortBy.js
12833
13022
  var sortBy = __webpack_require__(9734);
12834
13023
  var sortBy_default = /*#__PURE__*/__webpack_require__.n(sortBy);
@@ -13551,7 +13740,7 @@ class GmailMessageView {
13551
13740
  attributes: true,
13552
13741
  attributeFilter: ['class'],
13553
13742
  attributeOldValue: true
13554
- }).takeUntilBy(this.#stopper).map(function (mutation) {
13743
+ }).takeUntilBy(this.#stopper).map(mutation => {
13555
13744
  const currentClassList = mutation.target.classList;
13556
13745
  const mutationOldValue = mutation.oldValue;
13557
13746
  let oldValue;
@@ -13575,14 +13764,14 @@ class GmailMessageView {
13575
13764
  newValue,
13576
13765
  currentClassList
13577
13766
  };
13578
- }).map(function (event) {
13767
+ }).map(event => {
13579
13768
  if (event.newValue === 'EXPANDED' && event.oldValue !== 'EXPANDED') {
13580
13769
  self.#checkMessageOpenState(event.currentClassList);
13581
13770
  }
13582
13771
  return event;
13583
- }).filter(function (event) {
13772
+ }).filter(event => {
13584
13773
  return event.newValue !== event.oldValue && !!event.oldValue && !!event.newValue;
13585
- }).map(function (event) {
13774
+ }).map(event => {
13586
13775
  return {
13587
13776
  eventName: 'viewStateChange',
13588
13777
  oldValue: event.oldValue,
@@ -13720,8 +13909,6 @@ function _extractContactInformation(span) {
13720
13909
  };
13721
13910
  }
13722
13911
  /* harmony default export */ const gmail_message_view = (GmailMessageView);
13723
- // EXTERNAL MODULE: ./src/platform-implementation-js/views/conversations/thread-view.ts
13724
- var thread_view = __webpack_require__(7422);
13725
13912
  // EXTERNAL MODULE: ./node_modules/pdelay/js/index.js
13726
13913
  var pdelay_js = __webpack_require__(443);
13727
13914
  // EXTERNAL MODULE: ./src/platform-implementation-js/lib/idMap.ts + 1 modules
@@ -13732,95 +13919,98 @@ var SimpleElementView = __webpack_require__(8989);
13732
13919
 
13733
13920
 
13734
13921
  class CustomMessageView extends safe_event_emitter/* default */.Z {
13735
- _destroyed = false;
13736
- _stopper = js_default()();
13737
- _isCollapsed = true;
13922
+ #el;
13923
+ #iconEl;
13924
+ #contentEl;
13925
+ #contentHeaderEl;
13926
+ #contentBodyEl;
13927
+ destroyed = false;
13928
+ #stopper = js_default()();
13929
+ #isCollapsed = true;
13930
+ #lastDescriptor;
13738
13931
  constructor(descriptorStream, onReady) {
13739
13932
  super();
13740
- this._setupElement();
13741
- descriptorStream.takeUntilBy(this._stopper).onValue(descriptor => {
13742
- this._el.setAttribute('data-inboxsdk-sortdate', String(descriptor.sortDate.getTime()));
13743
- const previousDescriptor = this._lastDescriptor;
13744
- this._lastDescriptor = descriptor;
13933
+ this.#el = document.createElement('div');
13934
+ this.#el.classList.add('inboxsdk__custom_message_view');
13935
+ this.#el.classList.add('inboxsdk__custom_message_view_collapsed');
13936
+ this.#iconEl = document.createElement('div');
13937
+ this.#iconEl.classList.add('inboxsdk__custom_message_view_icon');
13938
+ this.#contentEl = document.createElement('div');
13939
+ this.#contentEl.classList.add('inboxsdk__custom_message_view_content');
13940
+ this.#contentHeaderEl = document.createElement('div');
13941
+ this.#contentHeaderEl.classList.add('inboxsdk__custom_message_view_header');
13942
+ this.#contentBodyEl = document.createElement('div');
13943
+ this.#contentBodyEl.classList.add('inboxsdk__custom_message_view_body');
13944
+ this.#el.appendChild(this.#iconEl);
13945
+ this.#el.appendChild(this.#contentEl);
13946
+ this.#el.addEventListener('click', e => {
13947
+ if (this.#isCollapsed) {
13948
+ this.expand();
13949
+ e.preventDefault();
13950
+ e.stopPropagation();
13951
+ }
13952
+ });
13953
+ this.#contentHeaderEl.addEventListener('click', e => {
13954
+ this.collapse();
13955
+ e.preventDefault();
13956
+ e.stopPropagation();
13957
+ });
13958
+ descriptorStream.takeUntilBy(this.#stopper).onValue(descriptor => {
13959
+ this.#el.setAttribute('data-inboxsdk-sortdate', String(descriptor.sortDate.getTime()));
13960
+ const previousDescriptor = this.#lastDescriptor;
13961
+ this.#lastDescriptor = descriptor;
13745
13962
  if (!previousDescriptor || previousDescriptor.iconUrl !== descriptor.iconUrl) {
13746
13963
  const img = document.createElement('img');
13747
13964
  img.src = descriptor.iconUrl;
13748
- this._iconEl.innerHTML = '';
13749
- this._iconEl.appendChild(img);
13965
+ this.#iconEl.innerHTML = '';
13966
+ this.#iconEl.appendChild(img);
13750
13967
  }
13751
- if ((!previousDescriptor || previousDescriptor.collapsedEl !== descriptor.collapsedEl) && this._isCollapsed) {
13968
+ if ((!previousDescriptor || previousDescriptor.collapsedEl !== descriptor.collapsedEl) && this.#isCollapsed) {
13752
13969
  if (previousDescriptor) previousDescriptor.collapsedEl.remove();
13753
- this._contentEl.appendChild(descriptor.collapsedEl);
13970
+ this.#contentEl.appendChild(descriptor.collapsedEl);
13754
13971
  }
13755
13972
  if (!previousDescriptor || previousDescriptor.headerEl !== descriptor.headerEl) {
13756
13973
  if (previousDescriptor) previousDescriptor.headerEl.remove();
13757
- this._contentHeaderEl.appendChild(descriptor.headerEl);
13974
+ this.#contentHeaderEl.appendChild(descriptor.headerEl);
13758
13975
  }
13759
13976
  if (!previousDescriptor || previousDescriptor.bodyEl !== descriptor.bodyEl) {
13760
13977
  if (previousDescriptor) previousDescriptor.bodyEl.remove();
13761
- this._contentBodyEl.appendChild(descriptor.bodyEl);
13978
+ this.#contentBodyEl.appendChild(descriptor.bodyEl);
13762
13979
  }
13763
13980
  }).take(1).onValue(onReady);
13764
13981
  }
13765
13982
  destroy() {
13766
- if (this._destroyed) return;
13767
- this._destroyed = true;
13768
- this._stopper.destroy();
13983
+ if (this.destroyed) return;
13984
+ this.destroyed = true;
13985
+ this.#stopper.destroy();
13769
13986
  this.emit('destroy');
13770
- this._el.remove();
13987
+ this.#el.remove();
13771
13988
  }
13772
13989
  expand() {
13773
- this._isCollapsed = false;
13774
- const descriptor = this._lastDescriptor;
13990
+ this.#isCollapsed = false;
13991
+ const descriptor = this.#lastDescriptor;
13775
13992
  if (descriptor) descriptor.collapsedEl.remove();
13776
- this._contentEl.appendChild(this._contentHeaderEl);
13777
- this._contentEl.appendChild(this._contentBodyEl);
13778
- this._el.classList.remove('inboxsdk__custom_message_view_collapsed');
13993
+ this.#contentEl.appendChild(this.#contentHeaderEl);
13994
+ this.#contentEl.appendChild(this.#contentBodyEl);
13995
+ this.#el.classList.remove('inboxsdk__custom_message_view_collapsed');
13779
13996
  this.emit('expanded');
13780
13997
  }
13781
13998
  collapse() {
13782
- this._isCollapsed = true;
13783
- this._contentHeaderEl.remove();
13784
- this._contentBodyEl.remove();
13785
- const descriptor = this._lastDescriptor;
13999
+ this.#isCollapsed = true;
14000
+ this.#contentHeaderEl.remove();
14001
+ this.#contentBodyEl.remove();
14002
+ const descriptor = this.#lastDescriptor;
13786
14003
  if (descriptor) {
13787
- this._contentEl.appendChild(descriptor.collapsedEl);
14004
+ this.#contentEl.appendChild(descriptor.collapsedEl);
13788
14005
  }
13789
- this._el.classList.add('inboxsdk__custom_message_view_collapsed');
14006
+ this.#el.classList.add('inboxsdk__custom_message_view_collapsed');
13790
14007
  this.emit('collapsed');
13791
14008
  }
13792
14009
  getElement() {
13793
- return this._el;
14010
+ return this.#el;
13794
14011
  }
13795
14012
  getSortDate() {
13796
- if (this._lastDescriptor) return this._lastDescriptor.sortDate;else return null;
13797
- }
13798
- _setupElement() {
13799
- this._el = document.createElement('div');
13800
- this._el.classList.add('inboxsdk__custom_message_view');
13801
- this._el.classList.add('inboxsdk__custom_message_view_collapsed');
13802
- this._iconEl = document.createElement('div');
13803
- this._iconEl.classList.add('inboxsdk__custom_message_view_icon');
13804
- this._contentEl = document.createElement('div');
13805
- this._contentEl.classList.add('inboxsdk__custom_message_view_content');
13806
- this._contentHeaderEl = document.createElement('div');
13807
- this._contentHeaderEl.classList.add('inboxsdk__custom_message_view_header');
13808
- this._contentBodyEl = document.createElement('div');
13809
- this._contentBodyEl.classList.add('inboxsdk__custom_message_view_body');
13810
- this._el.appendChild(this._iconEl);
13811
- this._el.appendChild(this._contentEl);
13812
- this._el.addEventListener('click', e => {
13813
- if (this._isCollapsed) {
13814
- this.expand();
13815
- e.preventDefault();
13816
- e.stopPropagation();
13817
- }
13818
- });
13819
- this._contentHeaderEl.addEventListener('click', e => {
13820
- this.collapse();
13821
- e.preventDefault();
13822
- e.stopPropagation();
13823
- });
14013
+ if (this.#lastDescriptor) return this.#lastDescriptor.sortDate;else return null;
13824
14014
  }
13825
14015
  }
13826
14016
  // EXTERNAL MODULE: ./src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.ts + 2 modules
@@ -13828,9 +14018,6 @@ var gmail_element_getter = __webpack_require__(2851);
13828
14018
  // EXTERNAL MODULE: ./node_modules/lodash/escape.js
13829
14019
  var lodash_escape = __webpack_require__(1675);
13830
14020
  var escape_default = /*#__PURE__*/__webpack_require__.n(lodash_escape);
13831
- // EXTERNAL MODULE: ./node_modules/asap/browser-asap.js
13832
- var browser_asap = __webpack_require__(9272);
13833
- var browser_asap_default = /*#__PURE__*/__webpack_require__.n(browser_asap);
13834
14021
  // EXTERNAL MODULE: ./src/platform-implementation-js/lib/stream-wait-for.ts
13835
14022
  var stream_wait_for = __webpack_require__(3511);
13836
14023
  // EXTERNAL MODULE: ./src/platform-implementation-js/lib/dom/insert-element-in-order.ts
@@ -15309,7 +15496,7 @@ options.insert = htmlElement => {
15309
15496
  htmlElement.setAttribute('data-inboxsdk-version',
15310
15497
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- this is injected by webpack
15311
15498
  ///@ts-ignore
15312
- "2.1.36-1709734898365-8d7c09f56e6cda19-MODIFIED");
15499
+ "2.1.38-1712087227941-d4c8bfd8eba680c6");
15313
15500
  document.head.append(htmlElement);
15314
15501
  };
15315
15502
  options.domAPI = (styleDomAPI_default());
@@ -15926,8 +16113,8 @@ function _getLabelHTML(label) {
15926
16113
  // EXTERNAL MODULE: ./node_modules/page-parser-tree/js/index.js
15927
16114
  var page_parser_tree_js = __webpack_require__(6330);
15928
16115
  var page_parser_tree_js_default = /*#__PURE__*/__webpack_require__.n(page_parser_tree_js);
15929
- // EXTERNAL MODULE: ./src/platform-implementation-js/lib/isNotNil.ts
15930
- var isNotNil = __webpack_require__(8727);
16116
+ // EXTERNAL MODULE: ./src/common/isNotNil.ts
16117
+ var isNotNil = __webpack_require__(6230);
15931
16118
  ;// CONCATENATED MODULE: ./src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/page-parser.ts
15932
16119
 
15933
16120
 
@@ -16562,7 +16749,7 @@ const dummyPacket = Object.freeze({
16562
16749
  // do nothing
16563
16750
  })
16564
16751
  });
16565
- const memberMap = new WeakMap();
16752
+ const butter_bar_memberMap = new WeakMap();
16566
16753
  class ButterBar {
16567
16754
  constructor(appId, driver) {
16568
16755
  const members = {
@@ -16570,7 +16757,7 @@ class ButterBar {
16570
16757
  messagesByKey: new Map(),
16571
16758
  queuedPackets: []
16572
16759
  };
16573
- memberMap.set(this, members);
16760
+ butter_bar_memberMap.set(this, members);
16574
16761
  }
16575
16762
  showMessage(options) {
16576
16763
  defaults_default()(options, {
@@ -16580,7 +16767,7 @@ class ButterBar {
16580
16767
  persistent: false
16581
16768
  });
16582
16769
  this.hideMessage(options.messageKey);
16583
- const members = (0,get_or_fail/* default */.Z)(memberMap, this);
16770
+ const members = (0,get_or_fail/* default */.Z)(butter_bar_memberMap, this);
16584
16771
  const butterBarDriver = members.driver.getButterBarDriver();
16585
16772
  const messageId = Date.now() + '-' + Math.random();
16586
16773
  {
@@ -16694,7 +16881,7 @@ class ButterBar {
16694
16881
  }
16695
16882
  hideMessage(messageKey) {
16696
16883
  if (messageKey) {
16697
- const members = (0,get_or_fail/* default */.Z)(memberMap, this);
16884
+ const members = (0,get_or_fail/* default */.Z)(butter_bar_memberMap, this);
16698
16885
  const message = members.messagesByKey.get(messageKey);
16699
16886
  if (message) {
16700
16887
  message.destroy();
@@ -16702,15 +16889,13 @@ class ButterBar {
16702
16889
  }
16703
16890
  }
16704
16891
  hideGmailMessage() {
16705
- const members = (0,get_or_fail/* default */.Z)(memberMap, this);
16892
+ const members = (0,get_or_fail/* default */.Z)(butter_bar_memberMap, this);
16706
16893
  const butterBarDriver = members.driver.getButterBarDriver();
16707
16894
  butterBarDriver.hideGmailMessage();
16708
16895
  }
16709
16896
  }
16710
16897
  // EXTERNAL MODULE: ./src/platform-implementation-js/namespaces/compose.ts
16711
16898
  var compose = __webpack_require__(8731);
16712
- // EXTERNAL MODULE: ./src/platform-implementation-js/namespaces/conversations.ts
16713
- var conversations = __webpack_require__(5558);
16714
16899
  // EXTERNAL MODULE: ./src/platform-implementation-js/namespaces/keyboard.ts + 1 modules
16715
16900
  var keyboard = __webpack_require__(326);
16716
16901
  // EXTERNAL MODULE: ./src/platform-implementation-js/widgets/modal-view.ts
@@ -16905,8 +17090,6 @@ const widgets_memberMap = new Map();
16905
17090
  /* harmony default export */ const widgets = (Widgets);
16906
17091
  // EXTERNAL MODULE: ./src/platform-implementation-js/namespaces/modal.ts
16907
17092
  var modal = __webpack_require__(4198);
16908
- // EXTERNAL MODULE: ./src/platform-implementation-js/lib/handler-registry.ts
16909
- var handler_registry = __webpack_require__(3208);
16910
17093
  ;// CONCATENATED MODULE: ./src/platform-implementation-js/namespaces/lists.ts
16911
17094
 
16912
17095
 
@@ -19399,7 +19582,7 @@ mole_view_module_options.insert = htmlElement => {
19399
19582
  htmlElement.setAttribute('data-inboxsdk-version',
19400
19583
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- this is injected by webpack
19401
19584
  ///@ts-ignore
19402
- "2.1.36-1709734898365-8d7c09f56e6cda19-MODIFIED");
19585
+ "2.1.38-1712087227941-d4c8bfd8eba680c6");
19403
19586
  document.head.append(htmlElement);
19404
19587
  };
19405
19588
  mole_view_module_options.domAPI = (styleDomAPI_default());
@@ -20333,23 +20516,24 @@ var uniqBy_default = /*#__PURE__*/__webpack_require__.n(uniqBy);
20333
20516
  ;// CONCATENATED MODULE: ./src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.ts
20334
20517
 
20335
20518
 
20519
+
20336
20520
  class UserInfo {
20521
+ #userEmail;
20337
20522
  constructor(driver) {
20338
- this._failedWaitFor = false;
20339
- this._userEmail = driver.getUserEmailAddress();
20523
+ this.#userEmail = driver.getUserEmailAddress();
20340
20524
  }
20341
20525
 
20342
- // deprecated
20526
+ /** @deprecated */
20343
20527
  getUserName() {
20344
20528
  const nameEl = document.querySelector('div.gb_w div.gb_B .gb_D');
20345
20529
  if (nameEl) {
20346
20530
  return nameEl.textContent;
20347
20531
  }
20348
- const contact = find_default()(this.getAccountSwitcherContactList(), contact => contact.emailAddress === this._userEmail);
20532
+ const contact = find_default()(this.getAccountSwitcherContactList(), contact => contact.emailAddress === this.#userEmail);
20349
20533
  if (contact && contact.name != null) {
20350
20534
  return contact.name;
20351
20535
  }
20352
- return this._userEmail;
20536
+ return this.#userEmail;
20353
20537
  }
20354
20538
 
20355
20539
  /** @deprecated */
@@ -20363,7 +20547,7 @@ class UserInfo {
20363
20547
  name: nameEl.textContent,
20364
20548
  emailAddress: emailAddressEl.textContent
20365
20549
  };
20366
- }).filter(Boolean);
20550
+ }).filter(isNotNil/* default */.Z);
20367
20551
  const extras = Array.from(document.querySelectorAll('[role=banner] div[aria-label] div > a[target="_blank"] > img + div')).map(el => {
20368
20552
  const match = el.children[1].textContent.match(/\S+/);
20369
20553
  if (!match) {
@@ -21702,6 +21886,8 @@ var immutability_helper_default = /*#__PURE__*/__webpack_require__.n(immutabilit
21702
21886
 
21703
21887
 
21704
21888
 
21889
+
21890
+
21705
21891
  const threadListHandlersToSearchStrings = new Map();
21706
21892
  const MAX_THREADS_PER_PAGE = 50;
21707
21893
 
@@ -21868,8 +22054,8 @@ const setupSearchReplacing = (driver, customRouteID, onActivate, findIdFailure)
21868
22054
  total = 0;
21869
22055
  threadDescriptors = [];
21870
22056
  }
21871
- const initialIDPairs = threadDescriptors.map(threadDescriptorToInitialIDPair).filter(Boolean);
21872
- const idPairsWithRFC = (await Promise.all(initialIDPairs.map(pair => initialIDPairToIDPairWithRFC(driver, pair, findIdFailure)))).filter(Boolean);
22057
+ const initialIDPairs = threadDescriptors.map(threadDescriptorToInitialIDPair).filter(isNotNil/* default */.Z);
22058
+ const idPairsWithRFC = (await Promise.all(initialIDPairs.map(pair => initialIDPairToIDPairWithRFC(driver, pair, findIdFailure)))).filter(isNotNil/* default */.Z);
21873
22059
  const messageIDQuery = idPairsWithRFC.length > 0 ? idPairsWithRFC.map(_ref2 => {
21874
22060
  let {
21875
22061
  rfcId
@@ -21890,7 +22076,9 @@ const setupSearchReplacing = (driver, customRouteID, onActivate, findIdFailure)
21890
22076
  const searchResultsResponse_promise = driver.getPageCommunicator().ajaxInterceptStream.filter(e => e.type === 'searchResultsResponse' && e.query === newQuery && e.start === start).map(x => x.response).take(1).toPromise();
21891
22077
 
21892
22078
  // Figure out any gmail thread ids we don't know yet.
21893
- const completedIDPairs = (await Promise.all(idPairsWithRFC.map(pair => idPairWithRFCToCompletedIDPair(driver, pair, findIdFailure)))).filter(Boolean);
22079
+ // Use uniqBy to remove duplicates which cause issues with Gmail sometimes
22080
+ // https://github.com/InboxSDK/InboxSDK/issues/1130
22081
+ const completedIDPairs = uniqBy_default()((await Promise.all(idPairsWithRFC.map(pair => idPairWithRFCToCompletedIDPair(driver, pair, findIdFailure)))).filter(isNotNil/* default */.Z), p => p.gtid);
21894
22082
  const response = await searchResultsResponse_promise;
21895
22083
  driver.signalCustomThreadListActivity(customRouteID);
21896
22084
 
@@ -21904,7 +22092,7 @@ const setupSearchReplacing = (driver, customRouteID, onActivate, findIdFailure)
21904
22092
  gtid
21905
22093
  } = _ref3;
21906
22094
  return find_default()(extractedThreads, t => t.oldGmailThreadID === gtid);
21907
- }).filter(Boolean);
22095
+ }).filter(isNotNil/* default */.Z);
21908
22096
  const doesNeedReorder = extractedThreads.length !== extractedThreadsInCompletedIDPairsOrder.length || extractedThreads.some((extractedThread, index) => extractedThread !== extractedThreadsInCompletedIDPairsOrder[index]);
21909
22097
  let reorderedThreads;
21910
22098
  if (doesNeedReorder) {
@@ -22103,6 +22291,7 @@ function copyAndValidateAutocompleteResults(driver, results) {
22103
22291
 
22104
22292
 
22105
22293
 
22294
+
22106
22295
  function registerSearchSuggestionsProvider(driver, handler) {
22107
22296
  // We inject the app-provided suggestions into Gmail's AJAX response. Then we
22108
22297
  // watch the DOM for our injected suggestions to show up and attach click and
@@ -22145,10 +22334,10 @@ function registerSearchSuggestionsProvider(driver, handler) {
22145
22334
  }).map(event => event.suggestions);
22146
22335
 
22147
22336
  // Wait for the first routeViewDriver to happen before looking for the search box.
22148
- const searchBoxStream = driver.getRouteViewDriverStream().toProperty(() => null).map(() => gmail_element_getter/* default.getSearchInput */.Z.getSearchInput()).filter(Boolean).take(1);
22337
+ const searchBoxStream = driver.getRouteViewDriverStream().toProperty(() => null).map(() => gmail_element_getter/* default.getSearchInput */.Z.getSearchInput()).filter(isNotNil/* default */.Z).take(1);
22149
22338
 
22150
22339
  // Wait for the search box to be focused before looking for the suggestions box.
22151
- 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();
22340
+ 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();
22152
22341
 
22153
22342
  // This stream emits an event after every time Gmail changes the suggestions
22154
22343
  // list.
@@ -22684,6 +22873,7 @@ function routeIDmatchesHash(routeID, hash) {
22684
22873
 
22685
22874
 
22686
22875
 
22876
+
22687
22877
  function setupRouteViewDriverStream(gmailRouteProcessor, driver) {
22688
22878
  const customRouteIDs = driver.getCustomRouteIDs();
22689
22879
  const customListRouteIDs = driver.getCustomListRouteIDs();
@@ -22833,7 +23023,7 @@ function setupRouteViewDriverStream(gmailRouteProcessor, driver) {
22833
23023
  return;
22834
23024
  }
22835
23025
  return new gmail_route_view(options, gmailRouteProcessor, driver);
22836
- }).filter(Boolean).map(gmailRouteView => {
23026
+ }).filter(isNotNil/* default */.Z).map(gmailRouteView => {
22837
23027
  if (latestGmailRouteView) {
22838
23028
  latestGmailRouteView.destroy();
22839
23029
  }
@@ -22857,6 +23047,7 @@ function setupRouteViewDriverStream(gmailRouteProcessor, driver) {
22857
23047
 
22858
23048
 
22859
23049
 
23050
+
22860
23051
  class NativeGmailNavItemView {
22861
23052
  _activeMarkerElement = null;
22862
23053
  _isActive = false;
@@ -22875,7 +23066,7 @@ class NativeGmailNavItemView {
22875
23066
  if (parentElement) {
22876
23067
  (0,make_mutation_observer_chunked_stream/* default */.Z)(parentElement, {
22877
23068
  childList: true
22878
- }).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 => {
23069
+ }).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 => {
22879
23070
  if (newElement) {
22880
23071
  const currentContainerElement = this._itemContainerElement;
22881
23072
  if (currentContainerElement) {
@@ -24195,14 +24386,14 @@ class PlatformImplementation extends safe_event_emitter/* default */.Z {
24195
24386
  };
24196
24387
  platform_implementation_memberMap.set(this, members);
24197
24388
  if (false) {}
24198
- 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)]]);
24389
+ 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)]]);
24199
24390
  this.destroyed = false;
24200
24391
  this.LOADER_VERSION = LOADER_VERSION;
24201
24392
  this.IMPL_VERSION = version/* BUILD_VERSION */.b;
24202
24393
  this.ButterBar = new ButterBar(appId, driver);
24203
24394
  driver.setButterBar(this.ButterBar);
24204
24395
  this.Compose = new compose/* default */.Z(driver, membrane);
24205
- this.Conversations = new conversations/* default */.ZP(appId, driver, membrane);
24396
+ this.Conversations = new conversations(appId, driver, membrane);
24206
24397
  this.Keyboard = new keyboard/* default */.Z(appId, appName, appIconUrl, driver);
24207
24398
  this.User = new User(driver, piOpts);
24208
24399
  this.Lists = new Lists(appId, driver, membrane);
@@ -24767,227 +24958,6 @@ class ContentPanelView extends _lib_safe_event_emitter__WEBPACK_IMPORTED_MODULE_
24767
24958
 
24768
24959
  /***/ }),
24769
24960
 
24770
- /***/ 5052:
24771
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
24772
-
24773
- "use strict";
24774
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
24775
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
24776
- /* harmony export */ });
24777
- /* harmony import */ var ud__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1010);
24778
- /* harmony import */ var asap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9272);
24779
- /* harmony import */ var asap__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(asap__WEBPACK_IMPORTED_MODULE_0__);
24780
- /* harmony import */ var _lib_safe_event_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6666);
24781
- /* harmony import */ var _common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7791);
24782
- /* harmony import */ var _namespaces_conversations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5558);
24783
- /* module decorator */ module = __webpack_require__.hmd(module);
24784
-
24785
-
24786
-
24787
-
24788
-
24789
- const memberMap = (0,ud__WEBPACK_IMPORTED_MODULE_3__.defonce)(module, () => new WeakMap());
24790
- class MessageView extends _lib_safe_event_emitter__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z {
24791
- destroyed = false;
24792
- constructor(messageViewImplementation, appId, membrane, Conversations, driver) {
24793
- super();
24794
- const members = {
24795
- messageViewImplementation,
24796
- membrane,
24797
- Conversations,
24798
- driver,
24799
- linksInBody: null
24800
- };
24801
- memberMap.set(this, members);
24802
- _bindToEventStream(this, members, messageViewImplementation.getEventStream());
24803
- }
24804
- addAttachmentCardView(cardOptions) {
24805
- const {
24806
- messageViewImplementation,
24807
- membrane
24808
- } = (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this);
24809
- const attachmentCardViewDriver = messageViewImplementation.addAttachmentCard(cardOptions);
24810
- const attachmentCardView = membrane.get(attachmentCardViewDriver);
24811
- attachmentCardViewDriver.getPreviewClicks().onValue(e => {
24812
- if (cardOptions.previewOnClick) {
24813
- cardOptions.previewOnClick({
24814
- attachmentCardView,
24815
- preventDefault: () => e.preventDefault()
24816
- });
24817
- }
24818
- });
24819
- return attachmentCardView;
24820
- }
24821
-
24822
- // TODO why is this a separate method?
24823
- addAttachmentCardViewNoPreview(cardOptions) {
24824
- return this.addAttachmentCardView(cardOptions);
24825
- }
24826
- addAttachmentsToolbarButton(buttonOptions) {
24827
- const {
24828
- messageViewImplementation,
24829
- membrane
24830
- } = (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this);
24831
- messageViewImplementation.addButtonToDownloadAllArea({
24832
- tooltip: buttonOptions.tooltip,
24833
- iconUrl: buttonOptions.iconUrl,
24834
- onClick: () => {
24835
- const attachmentCardViews = messageViewImplementation.getAttachmentCardViewDrivers().map(cardDriver => membrane.get(cardDriver));
24836
- buttonOptions.onClick({
24837
- attachmentCardViews
24838
- });
24839
- }
24840
- });
24841
- }
24842
- addToolbarButton(buttonOptions) {
24843
- if (typeof buttonOptions.onClick !== 'function' || typeof buttonOptions.title !== 'string' || !Object.prototype.hasOwnProperty.call(_namespaces_conversations__WEBPACK_IMPORTED_MODULE_2__/* .MessageViewToolbarSectionNames */ .kI, buttonOptions.section)) {
24844
- throw new Error('Missing required properties on MessageViewToolbarButtonDescriptor object');
24845
- }
24846
- const {
24847
- messageViewImplementation
24848
- } = (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this);
24849
- messageViewImplementation.addMoreMenuItem(buttonOptions);
24850
- }
24851
- getBodyElement() {
24852
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.getContentsElement();
24853
- }
24854
- getMessageID() {
24855
- (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).driver.getLogger().deprecationWarning('messageView.getMessageID', 'messageView.getMessageIDAsync');
24856
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.getMessageID();
24857
- }
24858
- getMessageIDAsync() {
24859
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.getMessageIDAsync();
24860
- }
24861
-
24862
- // TODO non-file-attachment card views are asynchronously loaded. Add some sort of
24863
- // registerAttachmentCardViewHandler function to listen for other types of
24864
- // attachment cards if we want to continue support for them.
24865
- getFileAttachmentCardViews() {
24866
- const {
24867
- messageViewImplementation,
24868
- membrane
24869
- } = (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this);
24870
- return messageViewImplementation.getAttachmentCardViewDrivers().filter(cardDriver => cardDriver.getAttachmentType() === 'FILE').map(attachmentCardViewDriver => membrane.get(attachmentCardViewDriver));
24871
- }
24872
-
24873
- // Deprecated name
24874
- getAttachmentCardViews() {
24875
- const {
24876
- driver
24877
- } = (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this);
24878
- driver.getLogger().deprecationWarning('MessageView.getAttachmentCardViews', 'MessageView.getFileAttachmentCardViews');
24879
- if (driver.getOpts().REQUESTED_API_VERSION !== 1) {
24880
- throw new Error('This method was discontinued after API version 1');
24881
- }
24882
- return this.getFileAttachmentCardViews();
24883
- }
24884
- isElementInQuotedArea(element) {
24885
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.isElementInQuotedArea(element);
24886
- }
24887
- isLoaded() {
24888
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.isLoaded();
24889
- }
24890
- getLinksInBody() {
24891
- const members = (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this);
24892
- if (!members.linksInBody) {
24893
- const anchors = this.getBodyElement().querySelectorAll('a');
24894
- members.linksInBody = Array.from(anchors).map(anchor => ({
24895
- text: anchor.textContent,
24896
- html: anchor.innerHTML,
24897
- href: anchor.href,
24898
- element: anchor,
24899
- isInQuotedArea: this.isElementInQuotedArea(anchor)
24900
- }));
24901
- }
24902
- return members.linksInBody;
24903
- }
24904
- getSender() {
24905
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.getSender();
24906
- }
24907
- getRecipients() {
24908
- (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).driver.getLogger().deprecationWarning('MessageView.getRecipients', 'MessageView.getRecipientEmailAddresses() or MessageView.getRecipientsFull()');
24909
- return this.getRecipientEmailAddresses().map(emailAddress => ({
24910
- emailAddress,
24911
- name: null
24912
- }));
24913
- }
24914
- getRecipientEmailAddresses() {
24915
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.getRecipientEmailAddresses();
24916
- }
24917
- getRecipientsFull() {
24918
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.getRecipientsFull();
24919
- }
24920
- getThreadView() {
24921
- const {
24922
- messageViewImplementation,
24923
- membrane
24924
- } = (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this);
24925
- return membrane.get(messageViewImplementation.getThreadViewDriver());
24926
- }
24927
- getDateString() {
24928
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.getDateString();
24929
- }
24930
- addAttachmentIcon(iconDescriptor) {
24931
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.addAttachmentIcon(iconDescriptor);
24932
- }
24933
- getViewState() {
24934
- const members = (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this);
24935
- return members.Conversations.MessageViewViewStates[members.messageViewImplementation.getViewState()];
24936
- }
24937
- hasOpenReply() {
24938
- const {
24939
- driver
24940
- } = (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this);
24941
- driver.getLogger().deprecationWarning('MessageView.hasOpenReply');
24942
- if (driver.getOpts().REQUESTED_API_VERSION !== 1) {
24943
- throw new Error('This method was discontinued after API version 1');
24944
- }
24945
- return (0,_common_get_or_fail__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(memberMap, this).messageViewImplementation.hasOpenReply();
24946
- }
24947
- }
24948
- function _bindToEventStream(messageView, members, stream) {
24949
- stream.onEnd(function () {
24950
- messageView.destroyed = true;
24951
- messageView.emit('destroy');
24952
- messageView.removeAllListeners();
24953
- });
24954
- stream.filter(function (event) {
24955
- return event.type !== 'internal' && event.eventName === 'contactHover';
24956
- }).onValue(function (event) {
24957
- messageView.emit(event.eventName, {
24958
- contactType: event.contactType,
24959
- contact: event.contact,
24960
- messageView: messageView,
24961
- threadView: messageView.getThreadView()
24962
- });
24963
- });
24964
- if (messageView.isLoaded()) {
24965
- asap__WEBPACK_IMPORTED_MODULE_0___default()(() => {
24966
- messageView.emit('load', {
24967
- messageView
24968
- });
24969
- });
24970
- } else {
24971
- stream.filter(event => event.eventName === 'messageLoad').onValue(() => {
24972
- messageView.emit('load', {
24973
- messageView: messageView
24974
- });
24975
- });
24976
- }
24977
- stream.filter(function (event) {
24978
- return event.eventName === 'viewStateChange';
24979
- }).onValue(function (event) {
24980
- messageView.emit('viewStateChange', {
24981
- oldViewState: members.Conversations.MessageViewViewStates[event.oldValue],
24982
- newViewState: members.Conversations.MessageViewViewStates[event.newValue],
24983
- messageView: messageView
24984
- });
24985
- });
24986
- }
24987
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MessageView);
24988
-
24989
- /***/ }),
24990
-
24991
24961
  /***/ 7422:
24992
24962
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
24993
24963
 
@@ -25155,8 +25125,8 @@ const membersMap = (0,ud__WEBPACK_IMPORTED_MODULE_2__.defonce)(module, () => new
25155
25125
 
25156
25126
 
25157
25127
  class DummyRouteViewDriver {
25158
- _eventStream = kefir_bus__WEBPACK_IMPORTED_MODULE_0___default()();
25159
- _stopper = kefir_stopper__WEBPACK_IMPORTED_MODULE_1___default()();
25128
+ #eventStream = kefir_bus__WEBPACK_IMPORTED_MODULE_0___default()();
25129
+ #stopper = kefir_stopper__WEBPACK_IMPORTED_MODULE_1___default()();
25160
25130
  getRouteType() {
25161
25131
  return 'UNKNOWN';
25162
25132
  }
@@ -25167,14 +25137,14 @@ class DummyRouteViewDriver {
25167
25137
  return {};
25168
25138
  }
25169
25139
  getEventStream() {
25170
- return this._eventStream;
25140
+ return this.#eventStream;
25171
25141
  }
25172
25142
  getStopper() {
25173
- return this._stopper;
25143
+ return this.#stopper;
25174
25144
  }
25175
25145
  destroy() {
25176
- this._eventStream.end();
25177
- this._stopper.destroy();
25146
+ this.#eventStream.end();
25147
+ this.#stopper.destroy();
25178
25148
  }
25179
25149
  }
25180
25150
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DummyRouteViewDriver);