@inboxsdk/core 0.2.28-alpha.4 → 0.2.28-alpha.5

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 (263) hide show
  1. package/inboxsdk.js +1 -1
  2. package/package.json +5 -1
  3. package/src/inboxsdk-js/check-requirements.js +7 -3
  4. package/src/inboxsdk-js/header.js +1 -0
  5. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +5 -6
  6. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +4 -3
  7. package/src/inboxsdk-js/inboxsdk-REMOTE.js +3 -1
  8. package/src/inboxsdk-js/inboxsdk-TEST.js +4 -3
  9. package/src/inboxsdk-js/inboxsdk.js +33 -39
  10. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +15 -18
  11. package/src/injected-js/gmail/modify-suggestions.test.js +8 -9
  12. package/src/injected-js/gmail/setup-gmail-interceptor.js +340 -579
  13. package/src/injected-js/gmail/sync-compose-request-processor.test.js +39 -49
  14. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +20 -33
  15. package/src/injected-js/gmail/thread-identifier/index.js +57 -93
  16. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +22 -31
  17. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +12 -28
  18. package/src/injected-js/inbox/setupAjaxInterceptor.js +64 -121
  19. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +53 -66
  20. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +20 -36
  21. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
  22. package/src/injected-js/main.js +11 -24
  23. package/src/injected-js/message-metadata-holder.js +52 -82
  24. package/src/injected-js/setup-data-exposer.js +89 -148
  25. package/src/injected-js/setup-error-silencer.js +21 -21
  26. package/src/injected-js/setup-event-reemitter.js +30 -22
  27. package/src/injected-js/setupInboxCustomViewLinkFixer.js +24 -29
  28. package/src/injected-js/setupPushStateListener.js +18 -11
  29. package/src/injected-js/xhr-helper.js +62 -65
  30. package/src/injected-js/xhr-proxy-factory.js +195 -445
  31. package/src/injected-js/xhr-proxy-factory.test.js +824 -991
  32. package/src/platform-implementation-js/constants/router.js +14 -9
  33. package/src/platform-implementation-js/constants/toolbars.js +8 -3
  34. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
  35. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +115 -136
  36. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +13 -14
  37. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +27 -48
  38. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +31 -42
  39. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +30 -40
  40. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +10 -18
  41. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +21 -28
  42. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +33 -45
  43. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +31 -49
  44. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +58 -65
  45. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +40 -124
  46. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +17 -22
  47. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +10 -11
  48. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +44 -80
  49. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +19 -26
  50. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +71 -147
  51. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +91 -148
  52. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +150 -166
  53. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +70 -120
  54. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +15 -15
  55. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +44 -67
  56. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +230 -379
  57. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +121 -307
  58. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +17 -24
  59. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +41 -49
  60. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +30 -40
  61. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +28 -60
  62. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +61 -133
  63. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +30 -42
  64. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +52 -46
  65. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +354 -694
  66. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +77 -93
  67. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +35 -82
  68. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +44 -94
  69. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +12 -19
  70. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +17 -29
  71. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +26 -26
  72. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +391 -797
  73. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +7 -9
  74. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +60 -109
  75. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +95 -135
  76. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +103 -211
  77. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +61 -61
  78. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +17 -17
  79. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +188 -541
  80. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +67 -135
  81. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +27 -49
  82. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +7 -13
  83. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +9 -22
  84. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +36 -63
  85. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +38 -113
  86. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +11 -16
  87. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +11 -17
  88. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +8 -11
  89. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +27 -47
  90. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +11 -24
  91. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +59 -111
  92. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +15 -14
  93. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +11 -17
  94. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +18 -24
  95. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +19 -23
  96. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +11 -19
  97. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +141 -376
  98. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +17 -28
  99. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +34 -70
  100. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +10 -17
  101. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +83 -137
  102. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +10 -19
  103. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +632 -1190
  104. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +29 -38
  105. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +327 -617
  106. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +26 -49
  107. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +188 -380
  108. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +104 -194
  109. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +382 -811
  110. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +34 -58
  111. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +330 -581
  112. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +123 -277
  113. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +15 -35
  114. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +216 -571
  115. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +152 -336
  116. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +87 -211
  117. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +10 -11
  118. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +20 -29
  119. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +41 -76
  120. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +45 -99
  121. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +76 -128
  122. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +128 -319
  123. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +45 -78
  124. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +8 -4
  125. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +36 -54
  126. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +35 -53
  127. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +13 -15
  128. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +15 -18
  129. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +14 -13
  130. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +14 -20
  131. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +14 -13
  132. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +35 -67
  133. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +16 -18
  134. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +68 -185
  135. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +28 -56
  136. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +12 -10
  137. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +16 -16
  138. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +24 -35
  139. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +37 -89
  140. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +56 -78
  141. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +26 -32
  142. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +52 -109
  143. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +7 -8
  144. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +16 -20
  145. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +15 -16
  146. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +75 -83
  147. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +530 -822
  148. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +48 -61
  149. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +9 -12
  150. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +12 -19
  151. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +24 -33
  152. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +201 -388
  153. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +249 -265
  154. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +84 -152
  155. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +55 -67
  156. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +43 -65
  157. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +31 -56
  158. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +191 -294
  159. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +32 -45
  160. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +21 -39
  161. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +153 -240
  162. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +75 -150
  163. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +20 -37
  164. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +60 -114
  165. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +47 -65
  166. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +41 -52
  167. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +27 -36
  168. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +52 -80
  169. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +465 -649
  170. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +37 -58
  171. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +14 -26
  172. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +118 -235
  173. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +10 -11
  174. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +28 -46
  175. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +131 -202
  176. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +40 -80
  177. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +35 -61
  178. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +124 -221
  179. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +125 -213
  180. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +104 -126
  181. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +36 -51
  182. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +158 -297
  183. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +21 -35
  184. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +24 -43
  185. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +39 -68
  186. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +14 -19
  187. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +27 -35
  188. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +16 -22
  189. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
  190. package/src/platform-implementation-js/driver-common/inboxAjax.js +12 -7
  191. package/src/platform-implementation-js/driver-common/requestGmailThread.js +19 -20
  192. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +197 -306
  193. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +113 -161
  194. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +1 -114
  195. package/src/platform-implementation-js/driver-interfaces/driver.js +1 -131
  196. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +4 -48
  197. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +1 -29
  198. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +1 -32
  199. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +1 -11
  200. package/src/platform-implementation-js/lib/array-to-lifetimes.js +43 -41
  201. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +139 -155
  202. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +19 -38
  203. package/src/platform-implementation-js/lib/css-selector-escape.js +7 -3
  204. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +8 -11
  205. package/src/platform-implementation-js/lib/dom/get-selection.js +23 -52
  206. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +69 -101
  207. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +8 -10
  208. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +15 -17
  209. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +8 -11
  210. package/src/platform-implementation-js/lib/dom/set-css.js +7 -3
  211. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +9 -11
  212. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +32 -33
  213. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +23 -26
  214. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +86 -149
  215. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +42 -57
  216. package/src/platform-implementation-js/lib/make-revocable-function.js +19 -21
  217. package/src/platform-implementation-js/lib/make-revocable-function.test.js +20 -22
  218. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +15 -17
  219. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +9 -18
  220. package/src/platform-implementation-js/lib/populateRouteID.js +8 -9
  221. package/src/platform-implementation-js/lib/populateRouteID.test.js +20 -19
  222. package/src/platform-implementation-js/lib/react/ElementContainer.js +23 -20
  223. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +10 -9
  224. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +13 -20
  225. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +13 -18
  226. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +11 -17
  227. package/src/platform-implementation-js/lib/shared-style.js +14 -13
  228. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +18 -17
  229. package/src/platform-implementation-js/lib/toLiveSet.js +17 -15
  230. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +6 -5
  231. package/src/platform-implementation-js/main.js +9 -24
  232. package/src/platform-implementation-js/namespaces/compose.js +37 -60
  233. package/src/platform-implementation-js/namespaces/conversations.js +52 -124
  234. package/src/platform-implementation-js/namespaces/global.js +27 -39
  235. package/src/platform-implementation-js/namespaces/keyboard.js +29 -33
  236. package/src/platform-implementation-js/namespaces/lists.js +25 -31
  237. package/src/platform-implementation-js/namespaces/modal.js +34 -28
  238. package/src/platform-implementation-js/namespaces/nav-menu.js +30 -45
  239. package/src/platform-implementation-js/namespaces/router.js +70 -137
  240. package/src/platform-implementation-js/namespaces/search.js +19 -17
  241. package/src/platform-implementation-js/namespaces/toolbars.js +71 -117
  242. package/src/platform-implementation-js/namespaces/user.js +36 -37
  243. package/src/platform-implementation-js/namespaces/widgets.js +54 -61
  244. package/src/platform-implementation-js/platform-implementation.js +98 -229
  245. package/src/platform-implementation-js/views/app-toolbar-button-view.js +26 -47
  246. package/src/platform-implementation-js/views/collapsible-section-view.js +66 -63
  247. package/src/platform-implementation-js/views/content-panel-view.js +28 -30
  248. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +21 -44
  249. package/src/platform-implementation-js/views/conversations/custom-message-view.js +44 -104
  250. package/src/platform-implementation-js/views/conversations/message-view.js +131 -202
  251. package/src/platform-implementation-js/views/conversations/thread-view.js +75 -127
  252. package/src/platform-implementation-js/views/native-nav-item-view.js +32 -65
  253. package/src/platform-implementation-js/views/nav-item-view.js +51 -115
  254. package/src/platform-implementation-js/views/route-view/custom-route-view.js +25 -20
  255. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
  256. package/src/platform-implementation-js/views/route-view/list-route-view.js +30 -52
  257. package/src/platform-implementation-js/views/route-view/route-view.js +24 -35
  258. package/src/platform-implementation-js/views/section-view.js +60 -52
  259. package/src/platform-implementation-js/views/thread-row-view.js +49 -74
  260. package/src/platform-implementation-js/widgets/drawer-view.js +29 -36
  261. package/src/platform-implementation-js/widgets/modal-view.js +39 -68
  262. package/src/platform-implementation-js/widgets/mole-view.js +22 -22
  263. package/src/platform-implementation-js/widgets/top-message-bar-view.js +13 -10
@@ -1,121 +1,69 @@
1
- /* @flow */
2
- import constant from 'lodash/constant';
3
- import asap from 'asap';
4
- import delay from 'pdelay';
5
- import { defn } from 'ud';
6
- import util from 'util';
7
- import Kefir from 'kefir';
8
- import { parse } from 'querystring';
9
- import kefirBus from 'kefir-bus';
10
- import kefirStopper from 'kefir-stopper';
11
- import type { Bus } from 'kefir-bus';
12
-
13
- import findParent from '../../../../common/find-parent';
14
- import makeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
15
- import querySelector from '../../../lib/dom/querySelectorOrFail';
16
- import idMap from '../../../lib/idMap';
17
- import SimpleElementView from '../../../views/SimpleElementView';
18
- import CustomMessageView from '../../../views/conversations/custom-message-view';
19
-
20
- import delayAsap from '../../../lib/delay-asap';
21
- import type GmailDriver from '../gmail-driver';
22
- import GmailElementGetter from '../gmail-element-getter';
23
- import GmailMessageView from './gmail-message-view';
24
- import GmailToolbarView from './gmail-toolbar-view';
25
- import type GmailAppSidebarView from './gmail-app-sidebar-view';
26
- import GmailThreadSidebarView from './gmail-thread-sidebar-view';
27
- import WidthManager from './gmail-thread-view/width-manager';
28
-
29
- import type { CustomMessageDescriptor } from '../../../views/conversations/custom-message-view';
30
-
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _constant = _interopRequireDefault(require("lodash/constant"));
10
+ var _asap = _interopRequireDefault(require("asap"));
11
+ var _pdelay = _interopRequireDefault(require("pdelay"));
12
+ var _ud = require("ud");
13
+ var _util = _interopRequireDefault(require("util"));
14
+ var _kefir = _interopRequireDefault(require("kefir"));
15
+ var _querystring = require("querystring");
16
+ var _kefirBus = _interopRequireDefault(require("kefir-bus"));
17
+ var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
18
+ var _findParent = _interopRequireDefault(require("../../../../common/find-parent"));
19
+ var _makeMutationObserverChunkedStream = _interopRequireDefault(require("../../../lib/dom/make-mutation-observer-chunked-stream"));
20
+ var _querySelectorOrFail = _interopRequireDefault(require("../../../lib/dom/querySelectorOrFail"));
21
+ var _idMap = _interopRequireDefault(require("../../../lib/idMap"));
22
+ var _SimpleElementView = _interopRequireDefault(require("../../../views/SimpleElementView"));
23
+ var _customMessageView = _interopRequireDefault(require("../../../views/conversations/custom-message-view"));
24
+ var _delayAsap = _interopRequireDefault(require("../../../lib/delay-asap"));
25
+ var _gmailElementGetter = _interopRequireDefault(require("../gmail-element-getter"));
26
+ var _gmailMessageView = _interopRequireDefault(require("./gmail-message-view"));
27
+ var _gmailToolbarView = _interopRequireDefault(require("./gmail-toolbar-view"));
28
+ var _gmailThreadSidebarView = _interopRequireDefault(require("./gmail-thread-sidebar-view"));
29
+ var _widthManager = _interopRequireDefault(require("./gmail-thread-view/width-manager"));
31
30
  let hasLoggedAddonInfo = false;
32
-
33
31
  class GmailThreadView {
34
- _element: HTMLElement;
35
- _routeViewDriver: any;
36
- _driver: GmailDriver;
37
- _isPreviewedThread: boolean;
38
- _eventStream: Bus<any>;
39
- _stopper = kefirStopper();
40
- _threadSidebar: ?GmailThreadSidebarView = null;
41
- _widthManager: ?WidthManager = null;
42
-
43
- _toolbarView: any;
44
- _messageViewDrivers: any[];
45
- _newMessageMutationObserver: ?MutationObserver;
46
- _readyStream: Kefir.Observable<any>;
47
- _threadID: ?string;
48
- _syncThreadID: ?string;
49
- _customMessageViews: Set<CustomMessageView> = new Set();
50
- _hiddenCustomMessageViews: Set<CustomMessageView> = new Set();
51
- _hiddenCustomMessageNoticeProvider: ?(
52
- numberCustomMessagesHidden: number,
53
- numberNativeMessagesHidden: ?number,
54
- unmountPromise: Promise<void>
55
- ) => ?HTMLElement;
56
- _hiddenCustomMessageNoticeElement: ?HTMLElement;
57
- _resolveUnmountHiddenNoticePromise: ?() => void;
58
-
59
- constructor(
60
- element: HTMLElement,
61
- routeViewDriver: any,
62
- driver: GmailDriver,
63
- isPreviewedThread: boolean = false
64
- ) {
32
+ constructor(element, routeViewDriver, driver) {
33
+ let isPreviewedThread = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
34
+ (0, _defineProperty2.default)(this, "_stopper", (0, _kefirStopper.default)());
35
+ (0, _defineProperty2.default)(this, "_threadSidebar", null);
36
+ (0, _defineProperty2.default)(this, "_widthManager", null);
37
+ (0, _defineProperty2.default)(this, "_customMessageViews", new Set());
38
+ (0, _defineProperty2.default)(this, "_hiddenCustomMessageViews", new Set());
39
+ (0, _defineProperty2.default)(this, "_subjectContainerSelectors", {
40
+ '2022_10_21': '.a98.iY > .nH',
41
+ '2022_10_12': '.PeIF1d > .nH',
42
+ [2018]: '.if > .nH'
43
+ });
65
44
  this._element = element;
66
45
  this._routeViewDriver = routeViewDriver;
67
46
  this._driver = driver;
68
47
  this._isPreviewedThread = isPreviewedThread;
69
-
70
- this._eventStream = kefirBus();
48
+ this._eventStream = (0, _kefirBus.default)();
71
49
  this._messageViewDrivers = [];
72
-
73
- this._logAddonElementInfo().catch((err) =>
74
- this._driver.getLogger().error(err)
75
- );
76
-
77
- const waitForSidebarReady = this._driver
78
- .waitForGlobalSidebarReady()
79
- .merge(
80
- this._driver
81
- .delayToTimeAfterReady(15 * 1000)
82
- .flatMap(() =>
83
- Kefir.constantError(
84
- new Error('15 second timeout while waiting for sidebar fired')
85
- )
86
- )
87
- )
88
- .take(1)
89
- .takeErrors(1)
90
- .flatMapErrors((err) => {
91
- this._driver.getLogger().error(err);
92
- return Kefir.constant(null);
93
- })
94
- .toProperty();
95
-
50
+ this._logAddonElementInfo().catch(err => this._driver.getLogger().error(err));
51
+ const waitForSidebarReady = this._driver.waitForGlobalSidebarReady().merge(this._driver.delayToTimeAfterReady(15 * 1000).flatMap(() => _kefir.default.constantError(new Error('15 second timeout while waiting for sidebar fired')))).take(1).takeErrors(1).flatMapErrors(err => {
52
+ this._driver.getLogger().error(err);
53
+ return _kefir.default.constant(null);
54
+ }).toProperty();
96
55
  let combinedReadyStream;
97
- if (
98
- driver.getOpts().REQUESTED_API_VERSION === 1 &&
99
- driver.isUsingSyncAPI()
100
- ) {
101
- combinedReadyStream = Kefir.combine([
102
- waitForSidebarReady,
103
- Kefir.fromPromise(this.getThreadIDAsync()),
104
- ]);
56
+ if (driver.getOpts().REQUESTED_API_VERSION === 1 && driver.isUsingSyncAPI()) {
57
+ combinedReadyStream = _kefir.default.combine([waitForSidebarReady, _kefir.default.fromPromise(this.getThreadIDAsync())]);
105
58
  } else {
106
59
  combinedReadyStream = waitForSidebarReady;
107
60
  }
108
- this._readyStream = combinedReadyStream
109
- .map(() => {
110
- this._setupToolbarView();
111
- this._setupMessageViewStream();
112
- return null;
113
- })
114
- .takeUntilBy(this._stopper)
115
- .toProperty();
116
-
61
+ this._readyStream = combinedReadyStream.map(() => {
62
+ this._setupToolbarView();
63
+ this._setupMessageViewStream();
64
+ return null;
65
+ }).takeUntilBy(this._stopper).toProperty();
117
66
  this._listenToExpandCollapseAll();
118
-
119
67
  this._stopper.take(1).onValue(() => {
120
68
  if (this._resolveUnmountHiddenNoticePromise) {
121
69
  this._resolveUnmountHiddenNoticePromise();
@@ -124,396 +72,231 @@ class GmailThreadView {
124
72
  }
125
73
 
126
74
  // TODO use livesets eventually
127
- getMessageViewDriverStream(): Kefir.Observable<GmailMessageView> {
128
- return Kefir.constant(this._messageViewDrivers)
129
- .flatten()
130
- .merge(
131
- this._eventStream
132
- .filter(
133
- (event) =>
134
- event.type === 'internal' && event.eventName === 'messageCreated'
135
- )
136
- .map((event) => event.view)
137
- );
75
+ getMessageViewDriverStream() {
76
+ return _kefir.default.constant(this._messageViewDrivers).flatten().merge(this._eventStream.filter(event => event.type === 'internal' && event.eventName === 'messageCreated').map(event => event.view));
138
77
  }
139
-
140
78
  isLoadingStub() {
141
79
  return false;
142
80
  }
143
81
  getStopper() {
144
82
  return this._stopper;
145
83
  }
146
- getEventStream(): Kefir.Observable<Object> {
84
+ getEventStream() {
147
85
  return this._eventStream;
148
86
  }
149
- getElement(): HTMLElement {
87
+ getElement() {
150
88
  return this._element;
151
89
  }
152
- getRouteViewDriver(): any {
90
+ getRouteViewDriver() {
153
91
  return this._routeViewDriver;
154
92
  }
155
- getIsPreviewedThread(): boolean {
93
+ getIsPreviewedThread() {
156
94
  return this._isPreviewedThread;
157
95
  }
158
- getToolbarView(): any {
96
+ getToolbarView() {
159
97
  return this._toolbarView;
160
98
  }
161
- getMessageViewDrivers(): GmailMessageView[] {
99
+ getMessageViewDrivers() {
162
100
  return this._messageViewDrivers;
163
101
  }
164
-
165
102
  destroy() {
166
103
  this._eventStream.end();
167
104
  this._stopper.destroy();
168
105
  if (this._toolbarView) this._toolbarView.destroy();
169
106
  if (this._threadSidebar) this._threadSidebar.destroy();
170
-
171
- this._messageViewDrivers.forEach((messageView) => {
107
+ this._messageViewDrivers.forEach(messageView => {
172
108
  messageView.destroy();
173
109
  });
174
110
  this._messageViewDrivers.length = 0;
175
111
  if (this._newMessageMutationObserver) {
176
112
  this._newMessageMutationObserver.disconnect();
177
113
  }
178
-
179
114
  for (let customMessageView of this._customMessageViews) {
180
115
  customMessageView.destroy();
181
116
  }
182
117
  }
183
-
184
- addSidebarContentPanel(descriptor: Kefir.Observable<Object>) {
118
+ addSidebarContentPanel(descriptor) {
185
119
  const sidebar = this._driver.getGlobalSidebar();
186
120
  return sidebar.addThreadSidebarContentPanel(descriptor, this);
187
121
  }
188
-
189
- _subjectContainerSelectors = {
190
- '2022_10_21': '.a98.iY > .nH',
191
- '2022_10_12': '.PeIF1d > .nH',
192
- [2018]: '.if > .nH',
193
- };
194
-
195
- addNoticeBar(): SimpleElementView {
122
+ addNoticeBar() {
196
123
  const el = document.createElement('div');
197
- el.className = idMap('thread_noticeBar');
124
+ el.className = (0, _idMap.default)('thread_noticeBar');
198
125
  let version;
199
126
  let subjectContainer;
200
-
201
- for (const [currentVersion, selector] of Object.entries(
202
- this._subjectContainerSelectors
203
- )) {
127
+ for (const [currentVersion, selector] of Object.entries(this._subjectContainerSelectors)) {
204
128
  // Flow should be able to infer selector to be a string,
205
129
  // Typescript can. Remove this when ported.
206
- const el = this._element.querySelector((selector: any));
130
+ const el = this._element.querySelector(selector);
207
131
  if (!el) {
208
132
  continue;
209
133
  }
210
-
211
134
  version = currentVersion;
212
135
  subjectContainer = el;
213
136
  break;
214
137
  }
215
-
216
138
  if (!subjectContainer) throw new Error('Failed to find subject container');
217
139
  this._driver.getLogger().eventSdkPassive('addNoticeBar subjectContainer', {
218
- version,
140
+ version
219
141
  });
220
142
  subjectContainer.insertAdjacentElement('afterend', el);
221
- const view = new SimpleElementView(el);
222
-
223
- this._stopper
224
- .takeUntilBy(Kefir.fromEvents(view, 'destroy'))
225
- .onValue(() => view.destroy());
226
-
143
+ const view = new _SimpleElementView.default(el);
144
+ this._stopper.takeUntilBy(_kefir.default.fromEvents(view, 'destroy')).onValue(() => view.destroy());
227
145
  return view;
228
146
  }
229
-
230
- registerHiddenCustomMessageNoticeProvider(
231
- provider: (
232
- numberCustomMessagesHidden: number,
233
- numberNativeMessagesHidden: ?number,
234
- unmountPromise: Promise<void>
235
- ) => HTMLElement
236
- ) {
147
+ registerHiddenCustomMessageNoticeProvider(provider) {
237
148
  this._hiddenCustomMessageNoticeProvider = provider;
238
149
  }
239
-
240
- addCustomMessage(
241
- descriptorStream: Kefir.Observable<CustomMessageDescriptor>
242
- ): CustomMessageView {
150
+ addCustomMessage(descriptorStream) {
243
151
  const parentElement = this._element.parentElement;
244
152
  if (!parentElement) throw new Error('missing parent element');
245
- const customMessageView = new CustomMessageView(descriptorStream, () => {
246
- this._readyStream.onValue(async (): any => {
153
+ const customMessageView = new _customMessageView.default(descriptorStream, () => {
154
+ this._readyStream.onValue(async () => {
247
155
  const messageContainer = this._element.querySelector('[role=list]');
248
156
  if (!messageContainer) return;
249
-
250
157
  let mostRecentDate = Number.MIN_SAFE_INTEGER;
251
158
  let insertBeforeMessage;
252
-
253
159
  let isInHidden = false;
254
-
255
- const messages = [
256
- ...(await Promise.all(
257
- this._messageViewDrivers.map(async (messageView) => ({
258
- sortDatetime: (await messageView.getDate()) || 0,
259
- isHidden: messageView.getViewState() === 'HIDDEN',
260
- element: messageView.getElement(),
261
- }))
262
- )),
263
- ...Array.from(this._customMessageViews)
264
- .filter(
265
- (cmv) =>
266
- cmv !== customMessageView &&
267
- cmv.getElement()
268
- .parentElement /* it has been inserted into dom */
269
- )
270
- .map((cmv) => {
271
- const date = cmv.getSortDate();
272
- const datetime = date ? date.getTime() : null;
273
-
274
- return {
275
- sortDatetime: datetime || 0,
276
- isHidden: cmv
277
- .getElement()
278
- .classList.contains('inboxsdk__custom_message_view_hidden'),
279
- element: cmv.getElement(),
280
- };
281
- }),
282
- ].sort((a, b) => a.sortDatetime - b.sortDatetime);
283
-
160
+ const messages = [...(await Promise.all(this._messageViewDrivers.map(async messageView => ({
161
+ sortDatetime: (await messageView.getDate()) || 0,
162
+ isHidden: messageView.getViewState() === 'HIDDEN',
163
+ element: messageView.getElement()
164
+ })))), ...Array.from(this._customMessageViews).filter(cmv => cmv !== customMessageView && cmv.getElement().parentElement /* it has been inserted into dom */).map(cmv => {
165
+ const date = cmv.getSortDate();
166
+ const datetime = date ? date.getTime() : null;
167
+ return {
168
+ sortDatetime: datetime || 0,
169
+ isHidden: cmv.getElement().classList.contains('inboxsdk__custom_message_view_hidden'),
170
+ element: cmv.getElement()
171
+ };
172
+ })].sort((a, b) => a.sortDatetime - b.sortDatetime);
284
173
  const messageDate = customMessageView.getSortDate();
285
174
  if (!messageDate) return;
286
-
287
175
  for (let message of messages) {
288
176
  isInHidden = message.isHidden;
289
-
290
- if (
291
- messageDate.getTime() >= mostRecentDate &&
292
- messageDate.getTime() <= message.sortDatetime
293
- ) {
177
+ if (messageDate.getTime() >= mostRecentDate && messageDate.getTime() <= message.sortDatetime) {
294
178
  insertBeforeMessage = message.element;
295
179
  break;
296
180
  }
297
-
298
181
  mostRecentDate = message.sortDatetime;
299
182
  }
300
-
301
- if (insertBeforeMessage)
302
- insertBeforeMessage.insertAdjacentElement(
303
- 'beforebegin',
304
- customMessageView.getElement()
305
- );
306
- else
307
- messageContainer.insertAdjacentElement(
308
- 'beforeend',
309
- customMessageView.getElement()
310
- );
311
-
183
+ if (insertBeforeMessage) insertBeforeMessage.insertAdjacentElement('beforebegin', customMessageView.getElement());else messageContainer.insertAdjacentElement('beforeend', customMessageView.getElement());
312
184
  if (isInHidden) {
313
185
  this._setupHiddenCustomMessage(customMessageView);
314
186
  }
315
-
316
187
  parentElement.classList.add('inboxsdk__thread_view_with_custom_view');
317
188
  });
318
189
  });
319
-
320
190
  this._customMessageViews.add(customMessageView);
321
191
  customMessageView.on('destroy', () => {
322
192
  this._customMessageViews.delete(customMessageView);
323
- if (this._customMessageViews.size > 0)
324
- parentElement.classList.add('inboxsdk__thread_view_with_custom_view');
325
- else
326
- parentElement.classList.remove(
327
- 'inboxsdk__thread_view_with_custom_view'
328
- );
193
+ if (this._customMessageViews.size > 0) parentElement.classList.add('inboxsdk__thread_view_with_custom_view');else parentElement.classList.remove('inboxsdk__thread_view_with_custom_view');
329
194
  });
330
-
331
195
  return customMessageView;
332
196
  }
333
-
334
- _setupHiddenCustomMessage(customMessageView: CustomMessageView) {
197
+ _setupHiddenCustomMessage(customMessageView) {
335
198
  this._hiddenCustomMessageViews.add(customMessageView);
336
199
 
337
200
  // hide the element
338
- customMessageView
339
- .getElement()
340
- .classList.add('inboxsdk__custom_message_view_hidden');
201
+ customMessageView.getElement().classList.add('inboxsdk__custom_message_view_hidden');
341
202
 
342
203
  // get the message element that contains the hidden messages notice
343
204
  let hiddenNoticeMessageElement = this._element.querySelector('.adv');
344
205
  let nativeHiddenNoticePresent = true;
345
206
  if (!hiddenNoticeMessageElement) {
346
207
  nativeHiddenNoticePresent = false;
347
- const superCollapsedMessageElements = Array.from(
348
- this._element.querySelectorAll('.kQ')
349
- );
208
+ const superCollapsedMessageElements = Array.from(this._element.querySelectorAll('.kQ'));
350
209
  if (superCollapsedMessageElements.length < 2) return;
351
-
352
210
  hiddenNoticeMessageElement = superCollapsedMessageElements[1];
353
211
  }
354
212
 
355
213
  // listen for a class change on that message which occurs when it becomes visible
356
- makeMutationObserverChunkedStream(hiddenNoticeMessageElement, {
214
+ (0, _makeMutationObserverChunkedStream.default)(hiddenNoticeMessageElement, {
357
215
  attributes: true,
358
- attributeFilter: ['class'],
359
- })
360
- .takeUntilBy(
361
- Kefir.merge([
362
- this._stopper,
363
- Kefir.fromEvents(customMessageView, 'destroy'),
364
- ])
365
- )
366
- .filter(
367
- () =>
368
- hiddenNoticeMessageElement &&
369
- !hiddenNoticeMessageElement.classList.contains('kQ')
370
- ) //when kQ is gone, message is visible
371
- .onValue(() => {
372
- customMessageView
373
- .getElement()
374
- .classList.remove('inboxsdk__custom_message_view_hidden');
375
- if (this._hiddenCustomMessageNoticeElement)
376
- this._hiddenCustomMessageNoticeElement.remove();
377
- this._hiddenCustomMessageNoticeElement = null;
378
- });
379
-
380
- this._updateHiddenNotice(
381
- hiddenNoticeMessageElement,
382
- nativeHiddenNoticePresent
383
- );
384
-
385
- Kefir.fromEvents(customMessageView, 'destroy')
386
- .takeUntilBy(this._stopper)
387
- .take(1)
388
- .onValue(() => {
389
- this._hiddenCustomMessageViews.delete(customMessageView);
390
- if (hiddenNoticeMessageElement)
391
- this._updateHiddenNotice(
392
- hiddenNoticeMessageElement,
393
- nativeHiddenNoticePresent
394
- );
395
- });
216
+ attributeFilter: ['class']
217
+ }).takeUntilBy(_kefir.default.merge([this._stopper, _kefir.default.fromEvents(customMessageView, 'destroy')])).filter(() => hiddenNoticeMessageElement && !hiddenNoticeMessageElement.classList.contains('kQ')) //when kQ is gone, message is visible
218
+ .onValue(() => {
219
+ customMessageView.getElement().classList.remove('inboxsdk__custom_message_view_hidden');
220
+ if (this._hiddenCustomMessageNoticeElement) this._hiddenCustomMessageNoticeElement.remove();
221
+ this._hiddenCustomMessageNoticeElement = null;
222
+ });
223
+ this._updateHiddenNotice(hiddenNoticeMessageElement, nativeHiddenNoticePresent);
224
+ _kefir.default.fromEvents(customMessageView, 'destroy').takeUntilBy(this._stopper).take(1).onValue(() => {
225
+ this._hiddenCustomMessageViews.delete(customMessageView);
226
+ if (hiddenNoticeMessageElement) this._updateHiddenNotice(hiddenNoticeMessageElement, nativeHiddenNoticePresent);
227
+ });
396
228
  }
397
-
398
- _updateHiddenNotice(
399
- hiddenNoticeMessageElement: HTMLElement,
400
- nativeHiddenNoticePresent: boolean
401
- ) {
229
+ _updateHiddenNotice(hiddenNoticeMessageElement, nativeHiddenNoticePresent) {
402
230
  const existingAppNoticeElement = this._hiddenCustomMessageNoticeElement;
403
231
  if (existingAppNoticeElement) {
404
232
  existingAppNoticeElement.remove();
405
233
  this._hiddenCustomMessageNoticeElement = null;
406
-
407
- if (this._resolveUnmountHiddenNoticePromise)
408
- this._resolveUnmountHiddenNoticePromise();
234
+ if (this._resolveUnmountHiddenNoticePromise) this._resolveUnmountHiddenNoticePromise();
409
235
  }
410
-
411
236
  const noticeProvider = this._hiddenCustomMessageNoticeProvider;
412
237
  if (!noticeProvider) return;
413
-
414
- const appNoticeContainerElement = (this._hiddenCustomMessageNoticeElement =
415
- document.createElement('span'));
416
- appNoticeContainerElement.classList.add(
417
- 'inboxsdk__custom_message_view_app_notice_content'
418
- );
419
-
238
+ const appNoticeContainerElement = this._hiddenCustomMessageNoticeElement = document.createElement('span');
239
+ appNoticeContainerElement.classList.add('inboxsdk__custom_message_view_app_notice_content');
420
240
  const numberCustomHiddenMessages = this._hiddenCustomMessageViews.size;
421
-
422
241
  let numberNativeHiddenMessages = null;
423
242
  if (nativeHiddenNoticePresent) {
424
- const nativeHiddenNoticeCountSpan = querySelector(
425
- hiddenNoticeMessageElement,
426
- '.adx span'
427
- );
428
- numberNativeHiddenMessages = Number(
429
- nativeHiddenNoticeCountSpan.innerHTML
430
- );
243
+ const nativeHiddenNoticeCountSpan = (0, _querySelectorOrFail.default)(hiddenNoticeMessageElement, '.adx span');
244
+ numberNativeHiddenMessages = Number(nativeHiddenNoticeCountSpan.innerHTML);
431
245
  if (isNaN(numberNativeHiddenMessages)) {
432
- throw new Error(
433
- "Couldn't find number of native hidden messages in dom structure"
434
- );
246
+ throw new Error("Couldn't find number of native hidden messages in dom structure");
435
247
  }
436
248
  }
437
-
438
- const appNoticeElement = noticeProvider(
439
- numberCustomHiddenMessages,
440
- numberNativeHiddenMessages,
441
- new Promise((resolve) => {
442
- this._resolveUnmountHiddenNoticePromise = resolve;
443
- })
444
- );
249
+ const appNoticeElement = noticeProvider(numberCustomHiddenMessages, numberNativeHiddenMessages, new Promise(resolve => {
250
+ this._resolveUnmountHiddenNoticePromise = resolve;
251
+ }));
445
252
  if (!appNoticeElement) {
446
253
  return;
447
254
  }
448
255
  appNoticeContainerElement.appendChild(appNoticeElement);
449
-
450
256
  if (!nativeHiddenNoticePresent) {
451
257
  const fakeAppNoticeElement = document.createElement('span');
452
258
  fakeAppNoticeElement.classList.add('adx');
453
-
454
- const insertionPoint = querySelector(hiddenNoticeMessageElement, '.G3');
259
+ const insertionPoint = (0, _querySelectorOrFail.default)(hiddenNoticeMessageElement, '.G3');
455
260
  insertionPoint.appendChild(fakeAppNoticeElement);
456
261
  }
457
-
458
- const hiddenNoticeElement = querySelector(
459
- hiddenNoticeMessageElement,
460
- '.adx'
461
- );
462
- hiddenNoticeElement.classList.add(
463
- 'inboxsdk__custom_message_view_app_notice_container'
464
- );
262
+ const hiddenNoticeElement = (0, _querySelectorOrFail.default)(hiddenNoticeMessageElement, '.adx');
263
+ hiddenNoticeElement.classList.add('inboxsdk__custom_message_view_app_notice_container');
465
264
  hiddenNoticeElement.appendChild(appNoticeContainerElement);
466
265
  }
467
-
468
- getSubject(): string {
266
+ getSubject() {
469
267
  var subjectElement = this._element.querySelector('.ha h2');
470
268
  if (!subjectElement) {
471
269
  return '';
472
270
  }
473
-
474
271
  if (subjectElement.querySelector('img[data-emoji]')) {
475
- return Array.from(subjectElement.childNodes)
476
- .map((c) => {
477
- if (c instanceof HTMLElement && c.nodeName === 'IMG') {
478
- const maybeEmoji = c.getAttribute('data-emoji');
479
- return maybeEmoji;
480
- }
481
-
482
- if (c.nodeName === '#text') {
483
- return (c: any).wholeText;
484
- }
485
- })
486
- .filter((x) => x != null)
487
- .join('');
272
+ return Array.from(subjectElement.childNodes).map(c => {
273
+ if (c instanceof HTMLElement && c.nodeName === 'IMG') {
274
+ const maybeEmoji = c.getAttribute('data-emoji');
275
+ return maybeEmoji;
276
+ }
277
+ if (c.nodeName === '#text') {
278
+ return c.wholeText;
279
+ }
280
+ }).filter(x => x != null).join('');
488
281
  }
489
-
490
282
  return subjectElement.textContent;
491
283
  }
492
-
493
- getInternalID(): string {
284
+ getInternalID() {
494
285
  return this._syncThreadID || this.getThreadID();
495
286
  }
496
287
 
497
288
  // Follows a similar structure to getThreadIDAsync, but gives up if async work is needed
498
- getThreadID(): string {
289
+ getThreadID() {
499
290
  if (this._threadID) return this._threadID;
500
-
501
291
  let threadID;
502
292
  if (this._driver.isUsingSyncAPI()) {
503
293
  const idElement = this._element.querySelector('[data-thread-perm-id]');
504
294
  if (!idElement) throw new Error('threadID element not found');
505
-
506
- const syncThreadID = (this._syncThreadID = idElement.getAttribute(
507
- 'data-thread-perm-id'
508
- ));
509
- if (!syncThreadID)
510
- throw new Error('syncThreadID attribute with no value');
511
-
295
+ const syncThreadID = this._syncThreadID = idElement.getAttribute('data-thread-perm-id');
296
+ if (!syncThreadID) throw new Error('syncThreadID attribute with no value');
512
297
  threadID = idElement.getAttribute('data-legacy-thread-id');
513
298
  if (!threadID) {
514
- const err = new Error(
515
- 'Failed to get id for thread: data-legacy-thread-id attribute missing'
516
- );
299
+ const err = new Error('Failed to get id for thread: data-legacy-thread-id attribute missing');
517
300
  this._driver.getLogger().error(err);
518
301
  // throw err;
519
302
  // Fall back to old behavior instead of throwing. Probably not super sensible, but
@@ -521,16 +304,12 @@ class GmailThreadView {
521
304
  // probably an okay choice.
522
305
  }
523
306
  }
307
+
524
308
  if (!threadID) {
525
309
  if (this._isPreviewedThread) {
526
- threadID = this._driver
527
- .getPageCommunicator()
528
- .getCurrentThreadID(this._element, true);
310
+ threadID = this._driver.getPageCommunicator().getCurrentThreadID(this._element, true);
529
311
  } else {
530
- const params = this._routeViewDriver
531
- ? this._routeViewDriver.getParams()
532
- : null;
533
-
312
+ const params = this._routeViewDriver ? this._routeViewDriver.getParams() : null;
534
313
  if (params && params.threadID) {
535
314
  threadID = params.threadID;
536
315
  } else {
@@ -540,40 +319,25 @@ class GmailThreadView {
540
319
  }
541
320
  }
542
321
  }
543
-
544
322
  this._threadID = threadID;
545
323
  return threadID;
546
324
  }
547
-
548
- async getThreadIDAsync(): Promise<string> {
325
+ async getThreadIDAsync() {
549
326
  let threadID;
550
327
  if (this._driver.isUsingSyncAPI()) {
551
328
  const idElement = this._element.querySelector('[data-thread-perm-id]');
552
329
  if (!idElement) throw new Error('threadID element not found');
553
-
554
- const syncThreadID = (this._syncThreadID = idElement.getAttribute(
555
- 'data-thread-perm-id'
556
- ));
557
- if (!syncThreadID)
558
- throw new Error('syncThreadID attribute with no value');
559
-
560
- this._threadID = threadID = idElement.getAttribute(
561
- 'data-legacy-thread-id'
562
- );
330
+ const syncThreadID = this._syncThreadID = idElement.getAttribute('data-thread-perm-id');
331
+ if (!syncThreadID) throw new Error('syncThreadID attribute with no value');
332
+ this._threadID = threadID = idElement.getAttribute('data-legacy-thread-id');
563
333
  if (!threadID) {
564
- this._threadID = threadID =
565
- await this._driver.getOldGmailThreadIdFromSyncThreadId(syncThreadID);
334
+ this._threadID = threadID = await this._driver.getOldGmailThreadIdFromSyncThreadId(syncThreadID);
566
335
  }
567
336
  } else {
568
337
  if (this._isPreviewedThread) {
569
- threadID = this._driver
570
- .getPageCommunicator()
571
- .getCurrentThreadID(this._element, true);
338
+ threadID = this._driver.getPageCommunicator().getCurrentThreadID(this._element, true);
572
339
  } else {
573
- const params = this._routeViewDriver
574
- ? this._routeViewDriver.getParams()
575
- : null;
576
-
340
+ const params = this._routeViewDriver ? this._routeViewDriver.getParams() : null;
577
341
  if (params && params.threadID) {
578
342
  threadID = params.threadID;
579
343
  } else {
@@ -582,133 +346,73 @@ class GmailThreadView {
582
346
  throw err;
583
347
  }
584
348
  }
585
-
586
349
  this._threadID = threadID;
587
350
  }
588
-
589
- if (this._threadID) return this._threadID;
590
- else throw new Error('Failed to get id for thread');
351
+ if (this._threadID) return this._threadID;else throw new Error('Failed to get id for thread');
591
352
  }
592
-
593
- addLabel(): SimpleElementView {
353
+ addLabel() {
594
354
  const labelContainer = this._element.querySelector('.ha .J-J5-Ji');
595
355
  if (!labelContainer) {
596
356
  throw new Error('Thread view label container not found');
597
357
  }
598
358
  const el = document.createElement('span');
599
-
600
359
  labelContainer.appendChild(el);
601
- const view = new SimpleElementView(el);
602
-
603
- const observer = new MutationObserver((mutationsList) => {
604
- if (
605
- mutationsList.some(
606
- (mutation) =>
607
- mutation.type === 'childList' &&
608
- mutation.removedNodes &&
609
- mutation.removedNodes.length &&
610
- mutation.removedNodes.length > 0
611
- )
612
- ) {
360
+ const view = new _SimpleElementView.default(el);
361
+ const observer = new MutationObserver(mutationsList => {
362
+ if (mutationsList.some(mutation => mutation.type === 'childList' && mutation.removedNodes && mutation.removedNodes.length && mutation.removedNodes.length > 0)) {
613
363
  if (!labelContainer.contains(el)) {
614
364
  labelContainer.appendChild(el);
615
365
  }
616
366
  }
617
367
  });
618
- observer.observe(labelContainer, { childList: true });
619
-
620
- this._stopper
621
- .takeUntilBy(Kefir.fromEvents(view, 'destroy'))
622
- .onValue(() => view.destroy());
623
-
624
- Kefir.fromEvents(view, 'destroy')
625
- .take(1)
626
- .onValue(() => {
627
- observer.disconnect();
628
- });
629
-
368
+ observer.observe(labelContainer, {
369
+ childList: true
370
+ });
371
+ this._stopper.takeUntilBy(_kefir.default.fromEvents(view, 'destroy')).onValue(() => view.destroy());
372
+ _kefir.default.fromEvents(view, 'destroy').take(1).onValue(() => {
373
+ observer.disconnect();
374
+ });
630
375
  return view;
631
376
  }
632
-
633
377
  _setupToolbarView() {
634
378
  const toolbarElement = this._findToolbarElement();
635
379
  if (!toolbarElement) throw new Error('No toolbar element found');
636
380
  const toolbarParent = toolbarElement.parentElement;
637
- if (toolbarParent)
638
- toolbarParent.classList.add('inboxsdk__thread_toolbar_parent');
639
-
640
- this._toolbarView = new GmailToolbarView(
641
- toolbarElement,
642
- this._driver,
643
- this._routeViewDriver,
644
- this
645
- );
381
+ if (toolbarParent) toolbarParent.classList.add('inboxsdk__thread_toolbar_parent');
382
+ this._toolbarView = new _gmailToolbarView.default(toolbarElement, this._driver, this._routeViewDriver, this);
646
383
  }
647
-
648
- _findToolbarElement(): ?HTMLElement {
384
+ _findToolbarElement() {
649
385
  var toolbarContainerElements = document.querySelectorAll('[gh=tm]');
650
386
  for (var ii = 0; ii < toolbarContainerElements.length; ii++) {
651
387
  if (this._isToolbarContainerRelevant(toolbarContainerElements[ii])) {
652
388
  return toolbarContainerElements[ii].querySelector('[gh=mtb]');
653
389
  }
654
390
  }
655
-
656
391
  return null;
657
392
  }
658
-
659
- _isToolbarContainerRelevant(toolbarContainerElement: HTMLElement): boolean {
660
- if (
661
- (toolbarContainerElement: any).parentElement.parentElement ===
662
- (this._element: any).parentElement.parentElement
663
- ) {
393
+ _isToolbarContainerRelevant(toolbarContainerElement) {
394
+ if (toolbarContainerElement.parentElement.parentElement === this._element.parentElement.parentElement) {
664
395
  return true;
665
396
  }
666
-
667
- if (
668
- (toolbarContainerElement: any).parentElement.getAttribute('role') !==
669
- 'main' &&
670
- (this._element: any).parentElement.getAttribute('role') !== 'main'
671
- ) {
397
+ if (toolbarContainerElement.parentElement.getAttribute('role') !== 'main' && this._element.parentElement.getAttribute('role') !== 'main') {
672
398
  return true;
673
399
  }
674
-
675
- if (
676
- (toolbarContainerElement: any).parentElement.getAttribute('role') ===
677
- 'main' &&
678
- (toolbarContainerElement: any).parentElement.querySelector(
679
- '.if, .PeIF1d, .a98.iY'
680
- ) &&
681
- (toolbarContainerElement: any).parentElement.querySelector(
682
- '.if, .PeIF1d, .a98.iY'
683
- ).parentElement === this._element
684
- ) {
400
+ if (toolbarContainerElement.parentElement.getAttribute('role') === 'main' && toolbarContainerElement.parentElement.querySelector('.if, .PeIF1d, .a98.iY') && toolbarContainerElement.parentElement.querySelector('.if, .PeIF1d, .a98.iY').parentElement === this._element) {
685
401
  let version = '2018';
686
-
687
- if (
688
- (toolbarContainerElement: any).parentElement.querySelector('.a98.iY')
689
- ) {
402
+ if (toolbarContainerElement.parentElement.querySelector('.a98.iY')) {
690
403
  version = '2022-10-20';
691
- } else if (
692
- (toolbarContainerElement: any).parentElement.querySelector('.PeIF1d')
693
- ) {
404
+ } else if (toolbarContainerElement.parentElement.querySelector('.PeIF1d')) {
694
405
  version = '2022-10-12';
695
406
  }
696
-
697
- this._driver
698
- .getLogger()
699
- .eventSdkPassive('gmailThreadView_isToolbarContainerRelevant', {
700
- version,
701
- });
702
-
407
+ this._driver.getLogger().eventSdkPassive('gmailThreadView_isToolbarContainerRelevant', {
408
+ version
409
+ });
703
410
  return true;
704
411
  }
705
-
706
412
  return false;
707
413
  }
708
-
709
414
  _setupMessageViewStream() {
710
415
  var openMessage = this._element.querySelector('.h7');
711
-
712
416
  if (!openMessage) {
713
417
  var self = this;
714
418
  setTimeout(function () {
@@ -718,176 +422,117 @@ class GmailThreadView {
718
422
  }, 500);
719
423
  return;
720
424
  }
721
-
722
- var messageContainer: HTMLElement = (openMessage.parentElement: any);
723
-
425
+ var messageContainer = openMessage.parentElement;
724
426
  this._initializeExistingMessages(messageContainer);
725
427
  this._observeNewMessages(messageContainer);
726
428
  }
727
-
728
- _initializeExistingMessages(messageContainer: any) {
429
+ _initializeExistingMessages(messageContainer) {
729
430
  var self = this;
730
431
  var children = messageContainer.children;
731
432
  Array.prototype.forEach.call(children, function (childElement) {
732
433
  self._createMessageView(childElement);
733
434
  });
734
435
  }
735
-
736
- _observeNewMessages(messageContainer: any) {
737
- this._newMessageMutationObserver = (new MutationObserver(
738
- this._handleNewMessageMutations.bind(this)
739
- ): any);
436
+ _observeNewMessages(messageContainer) {
437
+ this._newMessageMutationObserver = new MutationObserver(this._handleNewMessageMutations.bind(this));
740
438
  this._newMessageMutationObserver.observe(messageContainer, {
741
- childList: true,
439
+ childList: true
742
440
  });
743
441
  }
744
-
745
- _handleNewMessageMutations(mutations: MutationRecord[]) {
442
+ _handleNewMessageMutations(mutations) {
746
443
  var self = this;
747
444
  mutations.forEach(function (mutation) {
748
445
  Array.prototype.forEach.call(mutation.addedNodes, function (addedNode) {
749
- if (!addedNode.classList.contains('inboxsdk__custom_message_view'))
750
- self._createMessageView(addedNode);
446
+ if (!addedNode.classList.contains('inboxsdk__custom_message_view')) self._createMessageView(addedNode);
751
447
  });
752
448
  });
753
449
  }
754
-
755
- _createMessageView(messageElement: HTMLElement) {
756
- var messageView = new GmailMessageView(messageElement, this, this._driver);
757
-
450
+ _createMessageView(messageElement) {
451
+ var messageView = new _gmailMessageView.default(messageElement, this, this._driver);
758
452
  this._eventStream.plug(messageView.getEventStream());
759
-
760
453
  this._messageViewDrivers.push(messageView);
761
454
  this._eventStream.emit({
762
455
  type: 'internal',
763
456
  eventName: 'messageCreated',
764
- view: messageView,
457
+ view: messageView
765
458
  });
766
459
  }
767
-
768
460
  _setupWidthManager() {
769
461
  let widthManager = this._widthManager;
770
462
  if (!widthManager) {
771
- const addonSidebarElement =
772
- GmailElementGetter.getAddonSidebarContainerElement();
773
- if (!addonSidebarElement)
774
- throw new Error('addonSidebarElement not found');
775
-
776
- const mainContentBodyContainerElement =
777
- GmailElementGetter.getMainContentBodyContainerElement();
778
- if (!mainContentBodyContainerElement)
779
- throw new Error('mainContentBodyContainerElement not found');
463
+ const addonSidebarElement = _gmailElementGetter.default.getAddonSidebarContainerElement();
464
+ if (!addonSidebarElement) throw new Error('addonSidebarElement not found');
465
+ const mainContentBodyContainerElement = _gmailElementGetter.default.getMainContentBodyContainerElement();
466
+ if (!mainContentBodyContainerElement) throw new Error('mainContentBodyContainerElement not found');
780
467
  const contentContainer = mainContentBodyContainerElement.parentElement;
781
- if (!contentContainer)
782
- throw new Error(
783
- 'mainContentBodyContainerElement has no parent element'
784
- );
785
-
786
- this._widthManager = widthManager = new WidthManager(
787
- (contentContainer: any),
788
- addonSidebarElement
789
- );
468
+ if (!contentContainer) throw new Error('mainContentBodyContainerElement has no parent element');
469
+ this._widthManager = widthManager = new _widthManager.default(contentContainer, addonSidebarElement);
790
470
  }
791
-
792
471
  return widthManager;
793
472
  }
794
-
795
473
  getReadyStream() {
796
474
  return this._readyStream;
797
475
  }
798
-
799
476
  async _logAddonElementInfo() {
800
477
  if (hasLoggedAddonInfo) return;
801
-
802
478
  function readInfo() {
803
- const container = GmailElementGetter.getAddonSidebarContainerElement();
479
+ const container = _gmailElementGetter.default.getAddonSidebarContainerElement();
804
480
  if (!container) return null;
805
-
806
481
  const isDisplayNone = {
807
- parent: container.parentElement
808
- ? (container.parentElement: any).style.display === 'none'
809
- : null,
482
+ parent: container.parentElement ? container.parentElement.style.display === 'none' : null,
810
483
  self: container.style.display === 'none',
811
- children: Array.from(container.children).map((el) =>
812
- el.style ? el.style.display === 'none' : null
813
- ),
484
+ children: Array.from(container.children).map(el => el.style ? el.style.display === 'none' : null)
814
485
  };
815
-
816
486
  const rect = container.getBoundingClientRect();
817
487
  const size = {
818
488
  width: rect.width,
819
- height: rect.height,
489
+ height: rect.height
490
+ };
491
+ return {
492
+ isDisplayNone,
493
+ size
820
494
  };
821
- return { isDisplayNone, size };
822
495
  }
823
-
824
- const eventData = { time: {} };
496
+ const eventData = {
497
+ time: {}
498
+ };
825
499
  eventData.time[0] = readInfo();
826
-
827
- await Promise.all(
828
- [30, 5000].map(async (time) => {
829
- await delay(time);
830
- if (this._stopper.stopped) return;
831
- eventData.time[time] = readInfo();
832
- })
833
- );
500
+ await Promise.all([30, 5000].map(async time => {
501
+ await (0, _pdelay.default)(time);
502
+ if (this._stopper.stopped) return;
503
+ eventData.time[time] = readInfo();
504
+ }));
834
505
  if (this._stopper.stopped) return;
835
-
836
- this._driver
837
- .getLogger()
838
- .eventSdkPassive('gmailSidebarElementInfo', eventData);
839
-
506
+ this._driver.getLogger().eventSdkPassive('gmailSidebarElementInfo', eventData);
840
507
  hasLoggedAddonInfo = true;
841
508
  }
842
-
843
509
  _listenToExpandCollapseAll() {
844
510
  //expand all
845
511
  const expandAllElementImg = this._element.querySelector('img.gx');
846
512
  if (expandAllElementImg) {
847
- const expandAllElement = findParent(
848
- expandAllElementImg,
849
- (el) => el.getAttribute('role') === 'button'
850
- );
851
-
513
+ const expandAllElement = (0, _findParent.default)(expandAllElementImg, el => el.getAttribute('role') === 'button');
852
514
  if (expandAllElement) {
853
- Kefir.merge([
854
- Kefir.fromEvents(expandAllElement, 'click'),
855
- Kefir.fromEvents(expandAllElement, 'keydown').filter(
856
- (e) => e.which === 13 /* enter */
857
- ),
858
- ])
859
- .takeUntilBy(this._stopper)
860
- .onValue(() => {
861
- for (let customMessageView of this._customMessageViews) {
862
- customMessageView.expand();
863
- }
864
- });
515
+ _kefir.default.merge([_kefir.default.fromEvents(expandAllElement, 'click'), _kefir.default.fromEvents(expandAllElement, 'keydown').filter(e => e.which === 13 /* enter */)]).takeUntilBy(this._stopper).onValue(() => {
516
+ for (let customMessageView of this._customMessageViews) {
517
+ customMessageView.expand();
518
+ }
519
+ });
865
520
  }
866
521
  }
867
522
 
868
523
  //collapse all
869
524
  const collapseAllElementImg = this._element.querySelector('img.gq');
870
525
  if (collapseAllElementImg) {
871
- const collapseAllElement = findParent(
872
- collapseAllElementImg,
873
- (el) => el.getAttribute('role') === 'button'
874
- );
526
+ const collapseAllElement = (0, _findParent.default)(collapseAllElementImg, el => el.getAttribute('role') === 'button');
875
527
  if (collapseAllElement) {
876
- Kefir.merge([
877
- Kefir.fromEvents(collapseAllElement, 'click'),
878
- Kefir.fromEvents(collapseAllElement, 'keydown').filter(
879
- (e) => e.which === 13 /* enter */
880
- ),
881
- ])
882
- .takeUntilBy(this._stopper)
883
- .onValue(() => {
884
- for (let customMessageView of this._customMessageViews) {
885
- customMessageView.collapse();
886
- }
887
- });
528
+ _kefir.default.merge([_kefir.default.fromEvents(collapseAllElement, 'click'), _kefir.default.fromEvents(collapseAllElement, 'keydown').filter(e => e.which === 13 /* enter */)]).takeUntilBy(this._stopper).onValue(() => {
529
+ for (let customMessageView of this._customMessageViews) {
530
+ customMessageView.collapse();
531
+ }
532
+ });
888
533
  }
889
534
  }
890
535
  }
891
536
  }
892
-
893
- export default defn(module, GmailThreadView);
537
+ var _default = (0, _ud.defn)(module, GmailThreadView);
538
+ exports.default = _default;