@inboxsdk/core 0.2.28-alpha.6 → 0.2.28

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 (669) hide show
  1. package/inboxsdk.js +28 -62
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +1 -5
  4. package/pageWorld.js.map +1 -1
  5. package/src/build/exec.d.ts +0 -1
  6. package/src/build/spawn.d.ts +0 -1
  7. package/src/common/ajax.d.ts +0 -1
  8. package/src/common/cachebust-url.d.ts +0 -1
  9. package/src/common/censorHTMLstring.d.ts +0 -1
  10. package/src/common/censorHTMLtree.d.ts +0 -1
  11. package/src/common/censorJSONTree.d.ts +0 -1
  12. package/src/common/connectivity-test.d.ts +0 -1
  13. package/src/common/defer.d.ts +0 -1
  14. package/src/common/find-parent.d.ts +0 -1
  15. package/src/common/get-extension-id.d.ts +0 -1
  16. package/src/common/get-or-fail.d.ts +0 -1
  17. package/src/common/get-session-id.d.ts +0 -1
  18. package/src/common/get-stack-trace.d.ts +0 -1
  19. package/src/common/html-to-text.d.ts +0 -1
  20. package/src/common/isElementVisible.d.ts +0 -1
  21. package/src/common/load-script.d.ts +0 -1
  22. package/src/common/log-error.d.ts +0 -1
  23. package/src/common/quoted-split.d.ts +0 -1
  24. package/src/common/rate-limit-queuer.d.ts +0 -1
  25. package/src/common/rate-limit.d.ts +0 -1
  26. package/src/common/version.d.ts +0 -1
  27. package/src/inboxsdk-js/check-requirements.js +3 -7
  28. package/src/inboxsdk-js/header.js +0 -1
  29. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +6 -5
  30. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +3 -4
  31. package/src/inboxsdk-js/inboxsdk-REMOTE.js +1 -3
  32. package/src/inboxsdk-js/inboxsdk-TEST.js +3 -4
  33. package/src/inboxsdk-js/inboxsdk.js +39 -33
  34. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +18 -15
  35. package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts +0 -1
  36. package/src/inboxsdk.d.ts +27 -12
  37. package/src/injected-js/gmail/constants.d.ts +0 -1
  38. package/src/injected-js/gmail/modify-suggestions.d.ts +0 -1
  39. package/src/injected-js/gmail/modify-suggestions.test.js +9 -8
  40. package/src/injected-js/gmail/setup-gmail-interceptor.js +579 -340
  41. package/src/injected-js/gmail/setup-gmonkey-handler.d.ts +0 -1
  42. package/src/injected-js/gmail/sync-compose-processor-20220909.d.ts +0 -1
  43. package/src/injected-js/gmail/sync-compose-processor.d.ts +0 -1
  44. package/src/injected-js/gmail/sync-compose-request-processor.d.ts +0 -1
  45. package/src/injected-js/gmail/sync-compose-request-processor.test.js +49 -39
  46. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +33 -20
  47. package/src/injected-js/gmail/thread-identifier/index.js +93 -57
  48. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +31 -22
  49. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +28 -12
  50. package/src/injected-js/inbox/setupAjaxInterceptor.js +121 -64
  51. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +66 -53
  52. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +36 -20
  53. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
  54. package/src/injected-js/injected-logger.d.ts +0 -1
  55. package/src/injected-js/main.js +24 -11
  56. package/src/injected-js/message-metadata-holder.js +82 -52
  57. package/src/injected-js/setup-data-exposer.js +148 -89
  58. package/src/injected-js/setup-error-silencer.js +21 -21
  59. package/src/injected-js/setup-event-reemitter.js +22 -30
  60. package/src/injected-js/setupCustomViewEventAssassin.d.ts +0 -1
  61. package/src/injected-js/setupInboxCustomViewLinkFixer.js +29 -24
  62. package/src/injected-js/setupPushStateListener.js +11 -18
  63. package/src/injected-js/xhr-helper.js +65 -62
  64. package/src/injected-js/xhr-proxy-factory.js +445 -195
  65. package/src/injected-js/xhr-proxy-factory.test.js +991 -824
  66. package/src/platform-implementation-js/constants/nav-item-types.d.ts +0 -1
  67. package/src/platform-implementation-js/constants/router.js +9 -17
  68. package/src/platform-implementation-js/constants/toolbars.js +3 -8
  69. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
  70. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +136 -115
  71. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts +2 -3
  72. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.d.ts +0 -1
  73. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +14 -13
  74. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +48 -27
  75. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.d.ts +0 -1
  76. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +42 -31
  77. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +40 -30
  78. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.d.ts +0 -1
  79. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.d.ts +0 -1
  80. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +18 -10
  81. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +28 -21
  82. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +45 -33
  83. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +49 -31
  84. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +65 -58
  85. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts +0 -1
  86. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +124 -40
  87. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +22 -17
  88. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.d.ts +0 -1
  89. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +11 -10
  90. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +80 -44
  91. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +26 -19
  92. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +147 -71
  93. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +148 -91
  94. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +166 -150
  95. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +120 -70
  96. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +15 -15
  97. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +67 -44
  98. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +379 -230
  99. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +307 -121
  100. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +24 -17
  101. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +49 -41
  102. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +40 -30
  103. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +60 -28
  104. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +133 -61
  105. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +110 -83
  106. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +42 -30
  107. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +46 -52
  108. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts +3 -13
  109. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +683 -355
  110. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.d.ts +0 -1
  111. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.d.ts +0 -1
  112. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts +0 -4
  113. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.d.ts +0 -1
  114. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.d.ts +0 -1
  115. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.d.ts +0 -1
  116. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.d.ts +0 -1
  117. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +93 -77
  118. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.d.ts +0 -1
  119. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.d.ts +0 -1
  120. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +82 -35
  121. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +94 -44
  122. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +19 -12
  123. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +29 -17
  124. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +26 -26
  125. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +797 -391
  126. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +9 -7
  127. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +109 -60
  128. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +135 -95
  129. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +211 -103
  130. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +61 -61
  131. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +17 -17
  132. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +541 -188
  133. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +135 -67
  134. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +49 -27
  135. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +13 -7
  136. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +22 -9
  137. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +63 -36
  138. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.d.ts +0 -1
  139. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +113 -38
  140. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.d.ts +0 -1
  141. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +16 -11
  142. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +17 -11
  143. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +11 -8
  144. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +47 -27
  145. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +24 -11
  146. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +111 -59
  147. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.d.ts +0 -1
  148. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +14 -15
  149. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +17 -11
  150. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +24 -18
  151. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.d.ts +0 -1
  152. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +23 -19
  153. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.d.ts +0 -1
  154. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +19 -11
  155. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +376 -141
  156. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +28 -17
  157. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +70 -34
  158. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.d.ts +0 -1
  159. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +17 -10
  160. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.d.ts +0 -1
  161. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.d.ts +0 -1
  162. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +137 -83
  163. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +19 -10
  164. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +1190 -632
  165. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.d.ts +0 -1
  166. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +38 -29
  167. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +617 -327
  168. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts +1 -34
  169. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +48 -29
  170. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +380 -188
  171. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +194 -104
  172. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.d.ts +0 -1
  173. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +811 -382
  174. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +58 -34
  175. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +581 -330
  176. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +277 -123
  177. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +35 -15
  178. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +571 -216
  179. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +336 -152
  180. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +211 -87
  181. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.d.ts +0 -1
  182. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.d.ts +0 -1
  183. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.d.ts +0 -1
  184. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.d.ts +0 -1
  185. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +11 -10
  186. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.d.ts +0 -1
  187. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.d.ts +0 -1
  188. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.d.ts +0 -1
  189. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +29 -20
  190. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.d.ts +0 -1
  191. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +76 -41
  192. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +99 -45
  193. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +128 -76
  194. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +319 -128
  195. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +78 -45
  196. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +4 -8
  197. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +54 -36
  198. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +53 -35
  199. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +15 -13
  200. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +18 -15
  201. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +13 -14
  202. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +20 -14
  203. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +13 -14
  204. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +67 -35
  205. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +18 -16
  206. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +185 -68
  207. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +56 -28
  208. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +10 -12
  209. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +16 -16
  210. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +35 -24
  211. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +89 -37
  212. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +78 -56
  213. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +32 -26
  214. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +109 -52
  215. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +8 -7
  216. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +20 -16
  217. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +16 -15
  218. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +83 -75
  219. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +823 -531
  220. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +61 -48
  221. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +12 -9
  222. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +19 -12
  223. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +33 -24
  224. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +388 -201
  225. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +265 -249
  226. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +152 -84
  227. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +67 -55
  228. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +65 -43
  229. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +56 -31
  230. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +294 -191
  231. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +45 -32
  232. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +39 -21
  233. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +240 -153
  234. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +150 -75
  235. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +37 -20
  236. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +114 -60
  237. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +65 -47
  238. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +52 -41
  239. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +36 -27
  240. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +80 -52
  241. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +649 -465
  242. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +58 -37
  243. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +26 -14
  244. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +235 -118
  245. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +11 -10
  246. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +46 -28
  247. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +202 -131
  248. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +80 -40
  249. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +61 -35
  250. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +221 -124
  251. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +213 -125
  252. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +126 -104
  253. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +51 -36
  254. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +297 -158
  255. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +35 -21
  256. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +43 -24
  257. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +68 -39
  258. package/src/platform-implementation-js/driver-common/getAccountUrlPart.d.ts +0 -1
  259. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +19 -14
  260. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +35 -27
  261. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.d.ts +0 -1
  262. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +22 -16
  263. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.d.ts +0 -1
  264. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
  265. package/src/platform-implementation-js/driver-common/gmailAjax.d.ts +0 -1
  266. package/src/platform-implementation-js/driver-common/inboxAjax.js +7 -12
  267. package/src/platform-implementation-js/driver-common/render-custom-icon.d.ts +0 -1
  268. package/src/platform-implementation-js/driver-common/requestGmailThread.js +20 -19
  269. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +306 -197
  270. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +161 -113
  271. package/src/platform-implementation-js/driver-common/update-icon.d.ts +0 -1
  272. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +114 -1
  273. package/src/platform-implementation-js/driver-interfaces/driver.d.ts +0 -5
  274. package/src/platform-implementation-js/driver-interfaces/driver.js +126 -1
  275. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +48 -4
  276. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +29 -1
  277. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +32 -1
  278. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +11 -1
  279. package/src/platform-implementation-js/lib/ErrorCollector.d.ts +0 -1
  280. package/src/platform-implementation-js/lib/Membrane.d.ts +0 -1
  281. package/src/platform-implementation-js/lib/ScrollableContainByScreen.d.ts +0 -1
  282. package/src/platform-implementation-js/lib/array-to-lifetimes.js +41 -43
  283. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +155 -139
  284. package/src/platform-implementation-js/lib/attemptWithRetries.d.ts +0 -1
  285. package/src/platform-implementation-js/lib/common-page-communicator.d.ts +0 -1
  286. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +38 -19
  287. package/src/platform-implementation-js/lib/css-selector-escape.js +3 -7
  288. package/src/platform-implementation-js/lib/delay-asap.d.ts +0 -1
  289. package/src/platform-implementation-js/lib/delay-idle.d.ts +0 -1
  290. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.d.ts +0 -1
  291. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +11 -8
  292. package/src/platform-implementation-js/lib/dom/generic-button-view.d.ts +0 -1
  293. package/src/platform-implementation-js/lib/dom/get-insert-before-element.d.ts +0 -1
  294. package/src/platform-implementation-js/lib/dom/get-selection.js +52 -23
  295. package/src/platform-implementation-js/lib/dom/insert-element-in-order.d.ts +0 -1
  296. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +101 -69
  297. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +10 -8
  298. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.d.ts +0 -1
  299. package/src/platform-implementation-js/lib/dom/make-element-child-stream.d.ts +0 -1
  300. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.d.ts +0 -1
  301. package/src/platform-implementation-js/lib/dom/make-element-view-stream.d.ts +0 -1
  302. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.d.ts +0 -1
  303. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.d.ts +0 -1
  304. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +17 -15
  305. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.d.ts +0 -1
  306. package/src/platform-implementation-js/lib/dom/parentNodes.d.ts +0 -1
  307. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +11 -8
  308. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.d.ts +0 -1
  309. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.d.ts +0 -1
  310. package/src/platform-implementation-js/lib/dom/set-css.js +3 -7
  311. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +11 -9
  312. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +33 -32
  313. package/src/platform-implementation-js/lib/dom/simulate-key.d.ts +0 -1
  314. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.d.ts +0 -1
  315. package/src/platform-implementation-js/lib/dom/trigger-relay-event.d.ts +0 -1
  316. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.d.ts +0 -1
  317. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +26 -23
  318. package/src/platform-implementation-js/lib/fake-window-resize.d.ts +0 -1
  319. package/src/platform-implementation-js/lib/from-event-target-capture.d.ts +0 -1
  320. package/src/platform-implementation-js/lib/fromEventsWithOptions.d.ts +0 -1
  321. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +149 -86
  322. package/src/platform-implementation-js/lib/handler-registry.d.ts +0 -1
  323. package/src/platform-implementation-js/lib/idMap.d.ts +0 -1
  324. package/src/platform-implementation-js/lib/imageRequest.d.ts +0 -1
  325. package/src/platform-implementation-js/lib/incrementName.d.ts +0 -1
  326. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts +0 -1
  327. package/src/platform-implementation-js/lib/inject-script.d.ts +0 -1
  328. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +57 -42
  329. package/src/platform-implementation-js/lib/is-valid-app-id.d.ts +0 -1
  330. package/src/platform-implementation-js/lib/is-valid-email.d.ts +0 -1
  331. package/src/platform-implementation-js/lib/isNotNil.d.ts +0 -1
  332. package/src/platform-implementation-js/lib/isStreakAppId.d.ts +0 -1
  333. package/src/platform-implementation-js/lib/logger.d.ts +0 -1
  334. package/src/platform-implementation-js/lib/make-revocable-function.js +21 -19
  335. package/src/platform-implementation-js/lib/make-revocable-function.test.js +22 -20
  336. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +17 -15
  337. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +18 -9
  338. package/src/platform-implementation-js/lib/persistent-queue.d.ts +0 -1
  339. package/src/platform-implementation-js/lib/populateRouteID.js +9 -8
  340. package/src/platform-implementation-js/lib/populateRouteID.test.js +19 -20
  341. package/src/platform-implementation-js/lib/react/ElementContainer.js +20 -23
  342. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +9 -10
  343. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +20 -13
  344. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +18 -13
  345. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +17 -11
  346. package/src/platform-implementation-js/lib/safe-event-emitter.d.ts +0 -1
  347. package/src/platform-implementation-js/lib/shared-style.js +13 -14
  348. package/src/platform-implementation-js/lib/stopper-pool.d.ts +0 -1
  349. package/src/platform-implementation-js/lib/stream-wait-for.d.ts +0 -1
  350. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +17 -18
  351. package/src/platform-implementation-js/lib/toLiveSet.js +15 -17
  352. package/src/platform-implementation-js/lib/wait-for.d.ts +1 -2
  353. package/src/platform-implementation-js/lib/waitForAsync.d.ts +0 -1
  354. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +5 -6
  355. package/src/platform-implementation-js/main.js +24 -9
  356. package/src/platform-implementation-js/namespaces/butter-bar.d.ts +0 -1
  357. package/src/platform-implementation-js/namespaces/compose.js +60 -37
  358. package/src/platform-implementation-js/namespaces/conversations.js +124 -52
  359. package/src/platform-implementation-js/namespaces/global.js +39 -27
  360. package/src/platform-implementation-js/namespaces/keyboard.js +33 -29
  361. package/src/platform-implementation-js/namespaces/lists.js +31 -25
  362. package/src/platform-implementation-js/namespaces/modal.js +28 -34
  363. package/src/platform-implementation-js/namespaces/nav-menu.js +45 -30
  364. package/src/platform-implementation-js/namespaces/router.js +137 -70
  365. package/src/platform-implementation-js/namespaces/search.js +17 -19
  366. package/src/platform-implementation-js/namespaces/toolbars.js +117 -71
  367. package/src/platform-implementation-js/namespaces/user.js +37 -36
  368. package/src/platform-implementation-js/namespaces/widgets.js +61 -54
  369. package/src/platform-implementation-js/platform-implementation.d.ts +0 -2
  370. package/src/platform-implementation-js/platform-implementation.js +226 -98
  371. package/src/platform-implementation-js/views/SimpleElementView.d.ts +0 -1
  372. package/src/platform-implementation-js/views/app-toolbar-button-view.js +47 -26
  373. package/src/platform-implementation-js/views/collapsible-section-view.js +63 -66
  374. package/src/platform-implementation-js/views/compose-button-view.d.ts +0 -1
  375. package/src/platform-implementation-js/views/compose-view.d.ts +0 -1
  376. package/src/platform-implementation-js/views/content-panel-view.js +30 -28
  377. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +44 -21
  378. package/src/platform-implementation-js/views/conversations/custom-message-view.js +104 -44
  379. package/src/platform-implementation-js/views/conversations/message-view.js +202 -131
  380. package/src/platform-implementation-js/views/conversations/thread-view.js +127 -75
  381. package/src/platform-implementation-js/views/keyboard-shortcut-handle.d.ts +0 -1
  382. package/src/platform-implementation-js/views/native-nav-item-view.js +65 -32
  383. package/src/platform-implementation-js/views/nav-item-view.js +115 -51
  384. package/src/platform-implementation-js/views/route-view/custom-route-view.js +20 -25
  385. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
  386. package/src/platform-implementation-js/views/route-view/list-route-view.js +52 -30
  387. package/src/platform-implementation-js/views/route-view/route-view.js +35 -24
  388. package/src/platform-implementation-js/views/section-view.js +52 -60
  389. package/src/platform-implementation-js/views/thread-row-view.js +74 -49
  390. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.d.ts +0 -1
  391. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.d.ts +0 -1
  392. package/src/platform-implementation-js/widgets/buttons/dropdown-view.d.ts +0 -1
  393. package/src/platform-implementation-js/widgets/drawer-view.js +36 -29
  394. package/src/platform-implementation-js/widgets/modal-view.js +68 -39
  395. package/src/platform-implementation-js/widgets/mole-view.js +22 -22
  396. package/src/platform-implementation-js/widgets/top-message-bar-view.js +10 -13
  397. package/src/build/exec.d.ts.map +0 -1
  398. package/src/build/exec.js +0 -26
  399. package/src/build/spawn.d.ts.map +0 -1
  400. package/src/build/spawn.js +0 -17
  401. package/src/common/ajax.d.ts.map +0 -1
  402. package/src/common/ajax.js +0 -90
  403. package/src/common/cachebust-url.d.ts.map +0 -1
  404. package/src/common/cachebust-url.js +0 -10
  405. package/src/common/censorHTMLstring.d.ts.map +0 -1
  406. package/src/common/censorHTMLstring.js +0 -37
  407. package/src/common/censorHTMLtree.d.ts.map +0 -1
  408. package/src/common/censorHTMLtree.js +0 -28
  409. package/src/common/censorJSONTree.d.ts.map +0 -1
  410. package/src/common/censorJSONTree.js +0 -15
  411. package/src/common/connectivity-test.d.ts.map +0 -1
  412. package/src/common/connectivity-test.js +0 -21
  413. package/src/common/defer.d.ts.map +0 -1
  414. package/src/common/defer.js +0 -11
  415. package/src/common/find-parent.d.ts.map +0 -1
  416. package/src/common/find-parent.js +0 -10
  417. package/src/common/get-extension-id.d.ts.map +0 -1
  418. package/src/common/get-extension-id.js +0 -7
  419. package/src/common/get-or-fail.d.ts.map +0 -1
  420. package/src/common/get-or-fail.js +0 -8
  421. package/src/common/get-session-id.d.ts.map +0 -1
  422. package/src/common/get-session-id.js +0 -14
  423. package/src/common/get-stack-trace.d.ts.map +0 -1
  424. package/src/common/get-stack-trace.js +0 -6
  425. package/src/common/html-to-text.d.ts.map +0 -1
  426. package/src/common/html-to-text.js +0 -7
  427. package/src/common/isElementVisible.d.ts.map +0 -1
  428. package/src/common/isElementVisible.js +0 -6
  429. package/src/common/load-script.d.ts.map +0 -1
  430. package/src/common/load-script.js +0 -127
  431. package/src/common/log-error.d.ts.map +0 -1
  432. package/src/common/log-error.js +0 -191
  433. package/src/common/quoted-split.d.ts.map +0 -1
  434. package/src/common/quoted-split.js +0 -18
  435. package/src/common/rate-limit-queuer.d.ts.map +0 -1
  436. package/src/common/rate-limit-queuer.js +0 -57
  437. package/src/common/rate-limit.d.ts.map +0 -1
  438. package/src/common/rate-limit.js +0 -14
  439. package/src/common/version.d.ts.map +0 -1
  440. package/src/common/version.js +0 -6
  441. package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts.map +0 -1
  442. package/src/inboxsdk-js/loading/platform-implementation-loader.js +0 -27
  443. package/src/injected-js/gmail/constants.d.ts.map +0 -1
  444. package/src/injected-js/gmail/constants.js +0 -2
  445. package/src/injected-js/gmail/modify-suggestions.d.ts.map +0 -1
  446. package/src/injected-js/gmail/modify-suggestions.js +0 -106
  447. package/src/injected-js/gmail/setup-gmonkey-handler.d.ts.map +0 -1
  448. package/src/injected-js/gmail/setup-gmonkey-handler.js +0 -49
  449. package/src/injected-js/gmail/sync-compose-processor-20220909.d.ts.map +0 -1
  450. package/src/injected-js/gmail/sync-compose-processor-20220909.js +0 -298
  451. package/src/injected-js/gmail/sync-compose-processor.d.ts.map +0 -1
  452. package/src/injected-js/gmail/sync-compose-processor.js +0 -55
  453. package/src/injected-js/gmail/sync-compose-request-processor.d.ts.map +0 -1
  454. package/src/injected-js/gmail/sync-compose-request-processor.js +0 -110
  455. package/src/injected-js/injected-logger.d.ts.map +0 -1
  456. package/src/injected-js/injected-logger.js +0 -50
  457. package/src/injected-js/setupCustomViewEventAssassin.d.ts.map +0 -1
  458. package/src/injected-js/setupCustomViewEventAssassin.js +0 -90
  459. package/src/platform-implementation-js/constants/nav-item-types.d.ts.map +0 -1
  460. package/src/platform-implementation-js/constants/nav-item-types.js +0 -19
  461. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.d.ts +0 -5
  462. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.d.ts.map +0 -1
  463. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +0 -21
  464. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.d.ts +0 -5
  465. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.d.ts.map +0 -1
  466. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +0 -28
  467. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts.map +0 -1
  468. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +0 -98
  469. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.d.ts.map +0 -1
  470. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +0 -4
  471. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.d.ts.map +0 -1
  472. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +0 -8
  473. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.d.ts.map +0 -1
  474. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +0 -12
  475. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.d.ts.map +0 -1
  476. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +0 -33
  477. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts.map +0 -1
  478. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +0 -4
  479. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.d.ts.map +0 -1
  480. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +0 -44
  481. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.d.ts +0 -2
  482. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.d.ts.map +0 -1
  483. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.d.ts.map +0 -1
  484. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +0 -38
  485. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.d.ts.map +0 -1
  486. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +0 -12
  487. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts.map +0 -1
  488. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +0 -253
  489. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.d.ts.map +0 -1
  490. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +0 -200
  491. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.d.ts.map +0 -1
  492. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +0 -533
  493. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.d.ts.map +0 -1
  494. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +0 -289
  495. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.d.ts.map +0 -1
  496. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +0 -21
  497. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.d.ts.map +0 -1
  498. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +0 -28
  499. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.d.ts.map +0 -1
  500. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +0 -19
  501. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.d.ts +0 -43
  502. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.d.ts.map +0 -1
  503. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +0 -126
  504. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.d.ts.map +0 -1
  505. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +0 -101
  506. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.d.ts.map +0 -1
  507. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +0 -38
  508. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.d.ts.map +0 -1
  509. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +0 -28
  510. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.d.ts.map +0 -1
  511. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +0 -22
  512. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.d.ts.map +0 -1
  513. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +0 -233
  514. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.d.ts.map +0 -1
  515. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +0 -223
  516. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.d.ts.map +0 -1
  517. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +0 -157
  518. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.d.ts.map +0 -1
  519. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +0 -109
  520. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.d.ts.map +0 -1
  521. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +0 -5
  522. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts.map +0 -1
  523. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +0 -759
  524. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.d.ts.map +0 -1
  525. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +0 -84
  526. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.d.ts.map +0 -1
  527. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +0 -33
  528. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.d.ts.map +0 -1
  529. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +0 -325
  530. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.d.ts.map +0 -1
  531. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +0 -58
  532. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.d.ts.map +0 -1
  533. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +0 -55
  534. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.d.ts.map +0 -1
  535. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +0 -96
  536. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.d.ts.map +0 -1
  537. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +0 -30
  538. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.d.ts.map +0 -1
  539. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +0 -10
  540. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.d.ts.map +0 -1
  541. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +0 -22
  542. package/src/platform-implementation-js/driver-common/getAccountUrlPart.d.ts.map +0 -1
  543. package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +0 -17
  544. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.d.ts.map +0 -1
  545. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +0 -33
  546. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.d.ts.map +0 -1
  547. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +0 -49
  548. package/src/platform-implementation-js/driver-common/gmailAjax.d.ts.map +0 -1
  549. package/src/platform-implementation-js/driver-common/gmailAjax.js +0 -65
  550. package/src/platform-implementation-js/driver-common/render-custom-icon.d.ts.map +0 -1
  551. package/src/platform-implementation-js/driver-common/render-custom-icon.js +0 -16
  552. package/src/platform-implementation-js/driver-common/update-icon.d.ts.map +0 -1
  553. package/src/platform-implementation-js/driver-common/update-icon.js +0 -90
  554. package/src/platform-implementation-js/lib/ErrorCollector.d.ts.map +0 -1
  555. package/src/platform-implementation-js/lib/ErrorCollector.js +0 -47
  556. package/src/platform-implementation-js/lib/Membrane.d.ts.map +0 -1
  557. package/src/platform-implementation-js/lib/Membrane.js +0 -22
  558. package/src/platform-implementation-js/lib/ScrollableContainByScreen.d.ts.map +0 -1
  559. package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +0 -30
  560. package/src/platform-implementation-js/lib/attemptWithRetries.d.ts.map +0 -1
  561. package/src/platform-implementation-js/lib/attemptWithRetries.js +0 -16
  562. package/src/platform-implementation-js/lib/common-page-communicator.d.ts.map +0 -1
  563. package/src/platform-implementation-js/lib/common-page-communicator.js +0 -137
  564. package/src/platform-implementation-js/lib/delay-asap.d.ts.map +0 -1
  565. package/src/platform-implementation-js/lib/delay-asap.js +0 -12
  566. package/src/platform-implementation-js/lib/delay-idle.d.ts.map +0 -1
  567. package/src/platform-implementation-js/lib/delay-idle.js +0 -16
  568. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.d.ts.map +0 -1
  569. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +0 -36
  570. package/src/platform-implementation-js/lib/dom/generic-button-view.d.ts.map +0 -1
  571. package/src/platform-implementation-js/lib/dom/generic-button-view.js +0 -39
  572. package/src/platform-implementation-js/lib/dom/get-insert-before-element.d.ts.map +0 -1
  573. package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +0 -39
  574. package/src/platform-implementation-js/lib/dom/insert-element-in-order.d.ts.map +0 -1
  575. package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +0 -38
  576. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.d.ts.map +0 -1
  577. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +0 -12
  578. package/src/platform-implementation-js/lib/dom/make-element-child-stream.d.ts.map +0 -1
  579. package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +0 -79
  580. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.d.ts.map +0 -1
  581. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +0 -28
  582. package/src/platform-implementation-js/lib/dom/make-element-view-stream.d.ts.map +0 -1
  583. package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +0 -15
  584. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.d.ts.map +0 -1
  585. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +0 -15
  586. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.d.ts.map +0 -1
  587. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +0 -5
  588. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.d.ts.map +0 -1
  589. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +0 -39
  590. package/src/platform-implementation-js/lib/dom/parentNodes.d.ts.map +0 -1
  591. package/src/platform-implementation-js/lib/dom/parentNodes.js +0 -8
  592. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.d.ts.map +0 -1
  593. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +0 -6
  594. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.d.ts.map +0 -1
  595. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +0 -22
  596. package/src/platform-implementation-js/lib/dom/simulate-key.d.ts.map +0 -1
  597. package/src/platform-implementation-js/lib/dom/simulate-key.js +0 -46
  598. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.d.ts.map +0 -1
  599. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +0 -16
  600. package/src/platform-implementation-js/lib/dom/trigger-relay-event.d.ts.map +0 -1
  601. package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +0 -7
  602. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.d.ts.map +0 -1
  603. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +0 -25
  604. package/src/platform-implementation-js/lib/fake-window-resize.d.ts.map +0 -1
  605. package/src/platform-implementation-js/lib/fake-window-resize.js +0 -5
  606. package/src/platform-implementation-js/lib/from-event-target-capture.d.ts.map +0 -1
  607. package/src/platform-implementation-js/lib/from-event-target-capture.js +0 -12
  608. package/src/platform-implementation-js/lib/fromEventsWithOptions.d.ts.map +0 -1
  609. package/src/platform-implementation-js/lib/fromEventsWithOptions.js +0 -10
  610. package/src/platform-implementation-js/lib/handler-registry.d.ts.map +0 -1
  611. package/src/platform-implementation-js/lib/handler-registry.js +0 -67
  612. package/src/platform-implementation-js/lib/idMap.d.ts.map +0 -1
  613. package/src/platform-implementation-js/lib/idMap.js +0 -45
  614. package/src/platform-implementation-js/lib/imageRequest.d.ts.map +0 -1
  615. package/src/platform-implementation-js/lib/imageRequest.js +0 -8
  616. package/src/platform-implementation-js/lib/incrementName.d.ts.map +0 -1
  617. package/src/platform-implementation-js/lib/incrementName.js +0 -7
  618. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts.map +0 -1
  619. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +0 -14
  620. package/src/platform-implementation-js/lib/inject-script.d.ts.map +0 -1
  621. package/src/platform-implementation-js/lib/inject-script.js +0 -33
  622. package/src/platform-implementation-js/lib/is-valid-app-id.d.ts.map +0 -1
  623. package/src/platform-implementation-js/lib/is-valid-app-id.js +0 -27
  624. package/src/platform-implementation-js/lib/is-valid-email.d.ts.map +0 -1
  625. package/src/platform-implementation-js/lib/is-valid-email.js +0 -14
  626. package/src/platform-implementation-js/lib/isNotNil.d.ts.map +0 -1
  627. package/src/platform-implementation-js/lib/isNotNil.js +0 -5
  628. package/src/platform-implementation-js/lib/isStreakAppId.d.ts.map +0 -1
  629. package/src/platform-implementation-js/lib/isStreakAppId.js +0 -11
  630. package/src/platform-implementation-js/lib/logger.d.ts.map +0 -1
  631. package/src/platform-implementation-js/lib/logger.js +0 -441
  632. package/src/platform-implementation-js/lib/persistent-queue.d.ts.map +0 -1
  633. package/src/platform-implementation-js/lib/persistent-queue.js +0 -107
  634. package/src/platform-implementation-js/lib/safe-event-emitter.d.ts.map +0 -1
  635. package/src/platform-implementation-js/lib/safe-event-emitter.js +0 -17
  636. package/src/platform-implementation-js/lib/stopper-pool.d.ts.map +0 -1
  637. package/src/platform-implementation-js/lib/stopper-pool.js +0 -41
  638. package/src/platform-implementation-js/lib/stream-wait-for.d.ts.map +0 -1
  639. package/src/platform-implementation-js/lib/stream-wait-for.js +0 -30
  640. package/src/platform-implementation-js/lib/wait-for.d.ts.map +0 -1
  641. package/src/platform-implementation-js/lib/wait-for.js +0 -28
  642. package/src/platform-implementation-js/lib/waitForAsync.d.ts.map +0 -1
  643. package/src/platform-implementation-js/lib/waitForAsync.js +0 -19
  644. package/src/platform-implementation-js/namespaces/app-menu.d.ts +0 -38
  645. package/src/platform-implementation-js/namespaces/app-menu.d.ts.map +0 -1
  646. package/src/platform-implementation-js/namespaces/app-menu.js +0 -31
  647. package/src/platform-implementation-js/namespaces/butter-bar.d.ts.map +0 -1
  648. package/src/platform-implementation-js/namespaces/butter-bar.js +0 -163
  649. package/src/platform-implementation-js/views/SimpleElementView.d.ts.map +0 -1
  650. package/src/platform-implementation-js/views/SimpleElementView.js +0 -16
  651. package/src/platform-implementation-js/views/app-menu-item-view.d.ts +0 -23
  652. package/src/platform-implementation-js/views/app-menu-item-view.d.ts.map +0 -1
  653. package/src/platform-implementation-js/views/app-menu-item-view.js +0 -257
  654. package/src/platform-implementation-js/views/collapsible-panel-view.d.ts +0 -50
  655. package/src/platform-implementation-js/views/collapsible-panel-view.d.ts.map +0 -1
  656. package/src/platform-implementation-js/views/collapsible-panel-view.js +0 -222
  657. package/src/platform-implementation-js/views/compose-button-view.d.ts.map +0 -1
  658. package/src/platform-implementation-js/views/compose-button-view.js +0 -45
  659. package/src/platform-implementation-js/views/compose-view.d.ts.map +0 -1
  660. package/src/platform-implementation-js/views/compose-view.js +0 -312
  661. package/src/platform-implementation-js/views/keyboard-shortcut-handle.d.ts.map +0 -1
  662. package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +0 -14
  663. package/src/platform-implementation-js/views/nav-item-view.d.ts +0 -24
  664. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.d.ts.map +0 -1
  665. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +0 -39
  666. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.d.ts.map +0 -1
  667. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +0 -98
  668. package/src/platform-implementation-js/widgets/buttons/dropdown-view.d.ts.map +0 -1
  669. package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +0 -122
@@ -1,44 +1,71 @@
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 _sortBy = _interopRequireDefault(require("lodash/sortBy"));
10
- var _once = _interopRequireDefault(require("lodash/once"));
11
- var _autoHtml = _interopRequireDefault(require("auto-html"));
12
- var _asap = _interopRequireDefault(require("asap"));
13
- var _ud = require("ud");
14
- var _kefir = _interopRequireDefault(require("kefir"));
15
- var _kefirBus = _interopRequireDefault(require("kefir-bus"));
16
- var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
17
- var _kefirCast = _interopRequireDefault(require("kefir-cast"));
18
- var _gmailAttachmentAreaView = _interopRequireDefault(require("./gmail-attachment-area-view"));
19
- var _gmailAttachmentCardView = _interopRequireDefault(require("./gmail-attachment-card-view"));
20
- var _getUpdatedContact = _interopRequireDefault(require("./gmail-message-view/get-updated-contact"));
21
- var _attachmentIcon = _interopRequireDefault(require("./gmail-message-view/attachment-icon"));
22
- var _delayAsap = _interopRequireDefault(require("../../../lib/delay-asap"));
23
- var _waitFor = _interopRequireDefault(require("../../../lib/wait-for"));
24
- var _makeMutationObserverStream = _interopRequireDefault(require("../../../lib/dom/make-mutation-observer-stream"));
25
- var _querySelectorOrFail = _interopRequireDefault(require("../../../lib/dom/querySelectorOrFail"));
26
- var _makeMutationObserverChunkedStream = _interopRequireDefault(require("../../../lib/dom/make-mutation-observer-chunked-stream"));
27
- var _simulateMouseEvent = require("../../../lib/dom/simulate-mouse-event");
28
- var _censorHTMLtree = _interopRequireDefault(require("../../../../common/censorHTMLtree"));
29
- var _findParent = _interopRequireDefault(require("../../../../common/find-parent"));
30
- var _reemitClickEventForReact = _interopRequireDefault(require("../../../lib/dom/reemitClickEventForReact"));
1
+ /* @flow */
2
+
3
+ import sortBy from 'lodash/sortBy';
4
+ import once from 'lodash/once';
5
+ import autoHtml from 'auto-html';
6
+ import asap from 'asap';
7
+ import { defn } from 'ud';
8
+ import Kefir from 'kefir';
9
+ import kefirBus from 'kefir-bus';
10
+ import type { Bus } from 'kefir-bus';
11
+ import kefirStopper from 'kefir-stopper';
12
+ import kefirCast from 'kefir-cast';
13
+
14
+ import GmailAttachmentAreaView from './gmail-attachment-area-view';
15
+ import GmailAttachmentCardView from './gmail-attachment-card-view';
16
+
17
+ import getUpdatedContact from './gmail-message-view/get-updated-contact';
18
+ import AttachmentIcon from './gmail-message-view/attachment-icon';
19
+
20
+ import delayAsap from '../../../lib/delay-asap';
21
+ import waitFor from '../../../lib/wait-for';
22
+ import makeMutationObserverStream from '../../../lib/dom/make-mutation-observer-stream';
23
+ import querySelector from '../../../lib/dom/querySelectorOrFail';
24
+ import makeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
25
+ import type { ElementWithLifetime } from '../../../lib/dom/make-element-child-stream';
26
+ import { simulateClick } from '../../../lib/dom/simulate-mouse-event';
27
+
28
+ import censorHTMLtree from '../../../../common/censorHTMLtree';
29
+ import findParent from '../../../../common/find-parent';
30
+ import reemitClickEvent from '../../../lib/dom/reemitClickEventForReact';
31
+
32
+ import type GmailDriver from '../gmail-driver';
33
+ import type GmailThreadView from './gmail-thread-view';
34
+ import type GmailToolbarView from './gmail-toolbar-view';
35
+
36
+ import type {
37
+ MessageViewDriver,
38
+ VIEW_STATE,
39
+ } from '../../../driver-interfaces/message-view-driver';
40
+
31
41
  let hasSeenOldElement = false;
42
+
32
43
  class GmailMessageView {
33
- constructor(element, gmailThreadView, driver) {
34
- (0, _defineProperty2.default)(this, "_eventStream", (0, _kefirBus.default)());
35
- (0, _defineProperty2.default)(this, "_stopper", (0, _kefirStopper.default)());
36
- (0, _defineProperty2.default)(this, "_messageLoaded", false);
37
- (0, _defineProperty2.default)(this, "_sender", null);
38
- (0, _defineProperty2.default)(this, "_recipients", null);
39
- (0, _defineProperty2.default)(this, "_recipientEmailAddresses", null);
40
- (0, _defineProperty2.default)(this, "_recipientsFull", null);
44
+ _element: HTMLElement;
45
+ _driver: GmailDriver;
46
+ _eventStream: Bus<any> = kefirBus();
47
+ _stopper = kefirStopper();
48
+ _threadViewDriver: GmailThreadView;
49
+ _moreMenuItemDescriptors: Array<Object>;
50
+ _moreMenuAddedElements: Array<HTMLElement>;
51
+ _replyElementStream: Kefir.Observable<ElementWithLifetime>;
52
+ _readyStream: Kefir.Observable<null>;
53
+ _replyElement: ?HTMLElement;
54
+ _gmailAttachmentAreaView: ?GmailAttachmentAreaView;
55
+ _messageLoaded: boolean = false;
56
+ _openMoreMenu: ?HTMLElement;
57
+ _sender: ?Contact = null;
58
+ _recipients: ?(Contact[]) = null;
59
+ _recipientEmailAddresses: ?(string[]) = null;
60
+ _recipientsFull: ?(Contact[]) = null;
61
+
62
+ constructor(
63
+ element: HTMLElement,
64
+ gmailThreadView: GmailThreadView,
65
+ driver: GmailDriver
66
+ ) {
41
67
  this._element = element;
68
+
42
69
  this._threadViewDriver = gmailThreadView;
43
70
  this._driver = driver;
44
71
  this._moreMenuItemDescriptors = [];
@@ -46,12 +73,16 @@ class GmailMessageView {
46
73
  this._replyElement = null;
47
74
 
48
75
  // Outputs the same type of stream as makeElementChildStream does.
49
- this._replyElementStream = this._eventStream.filter(function (event) {
50
- return event.eventName === 'replyElement';
51
- }).map(event => event.change);
76
+ this._replyElementStream = this._eventStream
77
+ .filter(function (event) {
78
+ return event.eventName === 'replyElement';
79
+ })
80
+ .map((event) => event.change);
81
+
52
82
  this._setupMessageStateStream();
53
83
  this._monitorEmailAddressHovering();
54
84
  this._setupMoreMenuWatching();
85
+
55
86
  let partialReadyStream;
56
87
  if (driver.isUsingSyncAPI()) {
57
88
  // handle the case that the data-message-id is available, but the data-legacy-message-id is not
@@ -62,231 +93,335 @@ class GmailMessageView {
62
93
  const messageIdElement = this._element.querySelector('[data-message-id]');
63
94
  if (messageIdElement) {
64
95
  const syncMessageId = messageIdElement.getAttribute('data-message-id');
65
- if (!syncMessageId) throw new Error('data-message-id attribute has no value');
96
+ if (!syncMessageId)
97
+ throw new Error('data-message-id attribute has no value');
66
98
 
67
99
  // Only respect data-legacy-message-id if data-message-id is not the id
68
100
  // of a draft we've seen recently, in order to work around a Gmail bug.
69
101
  // https://github.com/StreakYC/GmailSDK/issues/515#issuecomment-457420619
70
- if (messageIdElement.hasAttribute('data-legacy-message-id') && !this._driver.isRecentSyncDraftId(syncMessageId.replace('#', ''))) {
71
- partialReadyStream = _kefir.default.constant(null);
102
+ if (
103
+ messageIdElement.hasAttribute('data-legacy-message-id') &&
104
+ !this._driver.isRecentSyncDraftId(syncMessageId.replace('#', ''))
105
+ ) {
106
+ partialReadyStream = Kefir.constant(null);
72
107
  } else {
73
108
  // we have a data message id, but not the legacy message id. So now we have to poll for the gmail message id
74
- partialReadyStream = _kefir.default.fromPromise((async () => {
75
- for (let ii = 0; ii < 10; ii++) {
76
- try {
77
- const gmailMessageId = await this._driver.getGmailMessageIdForSyncMessageId(syncMessageId.replace('#', ''));
78
- // set the legacy message id attribute so subsequent calls to getMessageId find the legacy message id in the dom
79
- messageIdElement.setAttribute('data-legacy-message-id', gmailMessageId);
80
- return null;
81
- } catch (e) {
82
- await new Promise(resolve => setTimeout(resolve, ii * 200));
109
+ partialReadyStream = Kefir.fromPromise(
110
+ (async () => {
111
+ for (let ii = 0; ii < 10; ii++) {
112
+ try {
113
+ const gmailMessageId =
114
+ await this._driver.getGmailMessageIdForSyncMessageId(
115
+ syncMessageId.replace('#', '')
116
+ );
117
+ // set the legacy message id attribute so subsequent calls to getMessageId find the legacy message id in the dom
118
+ messageIdElement.setAttribute(
119
+ 'data-legacy-message-id',
120
+ gmailMessageId
121
+ );
122
+ return null;
123
+ } catch (e) {
124
+ await new Promise((resolve) => setTimeout(resolve, ii * 200));
125
+ }
83
126
  }
84
- }
85
- throw new Error('gmail message id never became available');
86
- })());
127
+
128
+ throw new Error('gmail message id never became available');
129
+ })()
130
+ );
87
131
  }
88
132
  } else {
89
- partialReadyStream = _kefir.default.constant(null);
133
+ partialReadyStream = Kefir.constant(null);
90
134
  }
91
135
  } else {
92
- partialReadyStream = _kefir.default.constant(null);
136
+ partialReadyStream = Kefir.constant(null);
93
137
  }
94
- this._readyStream = partialReadyStream.takeUntilBy(this._stopper).onValue(() => this._processInitialState());
138
+
139
+ this._readyStream = partialReadyStream
140
+ .takeUntilBy(this._stopper)
141
+ .onValue(() => this._processInitialState());
95
142
  }
143
+
96
144
  destroy() {
97
145
  this._stopper.destroy();
98
146
  this._eventStream.end();
99
147
  if (this._gmailAttachmentAreaView) this._gmailAttachmentAreaView.destroy();
100
- this._moreMenuAddedElements.forEach(el => {
148
+
149
+ this._moreMenuAddedElements.forEach((el) => {
101
150
  el.remove();
102
151
  });
103
152
  }
104
- getEventStream() {
153
+
154
+ getEventStream(): Kefir.Observable<Object> {
105
155
  return this._eventStream;
106
156
  }
107
- getReplyElementStream() {
157
+
158
+ getReplyElementStream(): Kefir.Observable<ElementWithLifetime> {
108
159
  return this._replyElementStream;
109
160
  }
110
- getElement() {
161
+
162
+ getElement(): HTMLElement {
111
163
  return this._element;
112
164
  }
113
- getThreadViewDriver() {
165
+
166
+ getThreadViewDriver(): GmailThreadView {
114
167
  return this._threadViewDriver;
115
168
  }
116
- isLoaded() {
169
+
170
+ isLoaded(): boolean {
117
171
  return this._messageLoaded;
118
172
  }
119
- getContentsElement() {
173
+
174
+ getContentsElement(): HTMLElement {
120
175
  if (!this._messageLoaded) {
121
176
  throw new Error('tried to get message contents before message is loaded');
122
177
  }
178
+
123
179
  try {
124
- return (0, _querySelectorOrFail.default)(this._element, 'div.ii.gt');
180
+ return querySelector(this._element, 'div.ii.gt');
125
181
  } catch (err) {
126
182
  // Keep old fallback selector until we're confident of the new one.
127
183
  this._driver.getLogger().error(err);
128
- return (0, _querySelectorOrFail.default)(this._element, '.adP');
184
+ return querySelector(this._element, '.adP');
129
185
  }
130
186
  }
131
- isElementInQuotedArea(element) {
132
- return (0, _findParent.default)(element, el => el.nodeName === 'BLOCKQUOTE') != null;
187
+
188
+ isElementInQuotedArea(element: HTMLElement): boolean {
189
+ return findParent(element, (el) => el.nodeName === 'BLOCKQUOTE') != null;
133
190
  }
134
- getSender() {
191
+
192
+ getSender(): Contact {
135
193
  let sender = this._sender;
136
194
  if (sender) return sender;
137
- const senderSpan = (0, _querySelectorOrFail.default)(this._element, 'td.gF span[email]');
195
+
196
+ const senderSpan = querySelector(this._element, 'td.gF span[email]');
197
+
138
198
  const emailAddress = senderSpan.getAttribute('email');
139
199
  if (!emailAddress) throw new Error('Could not find email address');
200
+
140
201
  sender = this._sender = {
141
202
  name: senderSpan.getAttribute('name'),
142
- emailAddress
203
+ emailAddress,
143
204
  };
205
+
144
206
  return sender;
145
207
  }
146
- getRecipients() {
208
+
209
+ getRecipients(): Array<Contact> {
147
210
  let recipients = this._recipients;
148
211
  if (recipients) return recipients;
149
- const receipientSpans = Array.from(this._element.querySelectorAll('.hb span[email]'));
150
- recipients = this._recipients = receipientSpans.map(span => {
212
+ const receipientSpans = Array.from(
213
+ this._element.querySelectorAll('.hb span[email]')
214
+ );
215
+ recipients = this._recipients = receipientSpans.map((span) => {
151
216
  return this._getUpdatedContact({
152
217
  name: span.getAttribute('name'),
153
- emailAddress: span.getAttribute('email') || ''
218
+ emailAddress: span.getAttribute('email') || '',
154
219
  });
155
220
  });
221
+
156
222
  return recipients;
157
223
  }
158
- getRecipientEmailAddresses() {
224
+
225
+ getRecipientEmailAddresses(): Array<string> {
159
226
  let recipients = this._recipientEmailAddresses;
160
227
  if (recipients) return recipients;
161
- const receipientSpans = Array.from(this._element.querySelectorAll('.hb span[email]'));
162
- recipients = this._recipientEmailAddresses = receipientSpans.map(span => span.getAttribute('email') || '');
228
+ const receipientSpans = Array.from(
229
+ this._element.querySelectorAll('.hb span[email]')
230
+ );
231
+ recipients = this._recipientEmailAddresses = receipientSpans.map(
232
+ (span) => span.getAttribute('email') || ''
233
+ );
163
234
  return recipients;
164
235
  }
165
- async getRecipientsFull() {
236
+
237
+ async getRecipientsFull(): Promise<Array<Contact>> {
166
238
  let recipients = this._recipientsFull;
167
239
  if (recipients) return recipients;
240
+
168
241
  if (this._driver.isUsingSyncAPI()) {
169
242
  const threadID = this._threadViewDriver.getInternalID();
170
- recipients = this._recipientsFull = await this._driver.getPageCommunicator().getMessageRecipients(threadID, this._element);
243
+ recipients = this._recipientsFull = await this._driver
244
+ .getPageCommunicator()
245
+ .getMessageRecipients(threadID, this._element);
171
246
  if (!recipients) {
172
- this._driver.getLogger().error(new Error('Failed to find message recipients from response'), {
173
- threadID
174
- });
247
+ this._driver
248
+ .getLogger()
249
+ .error(new Error('Failed to find message recipients from response'), {
250
+ threadID,
251
+ });
175
252
  recipients = this._recipientsFull = this.getRecipients();
176
253
  }
177
254
  } else {
178
- const receipientSpans = Array.from(this._element.querySelectorAll('.hb span[email]'));
179
- recipients = this._recipientsFull = receipientSpans.map(span => {
255
+ const receipientSpans = Array.from(
256
+ this._element.querySelectorAll('.hb span[email]')
257
+ );
258
+ recipients = this._recipientsFull = receipientSpans.map((span) => {
180
259
  return this._getUpdatedContact({
181
260
  name: span.getAttribute('name'),
182
- emailAddress: span.getAttribute('email') || ''
261
+ emailAddress: span.getAttribute('email') || '',
183
262
  });
184
263
  });
185
264
  }
265
+
186
266
  return recipients;
187
267
  }
188
- getDateString() {
189
- return (0, _querySelectorOrFail.default)(this._element, '.ads .gK .g3').title;
268
+
269
+ getDateString(): string {
270
+ return querySelector(this._element, '.ads .gK .g3').title;
190
271
  }
191
- async getDate() {
272
+
273
+ async getDate(): Promise<?number> {
192
274
  const threadID = this._threadViewDriver.getInternalID();
193
- return await this._driver.getPageCommunicator().getMessageDate(threadID, this._element);
275
+ return await this._driver
276
+ .getPageCommunicator()
277
+ .getMessageDate(threadID, this._element);
194
278
  }
279
+
195
280
  getAttachmentCardViewDrivers() {
196
281
  if (!this._gmailAttachmentAreaView) {
197
282
  return [];
198
283
  }
284
+
199
285
  return this._gmailAttachmentAreaView.getAttachmentCardViews();
200
286
  }
201
- addButtonToDownloadAllArea(options) {
287
+
288
+ addButtonToDownloadAllArea(options: Object) {
202
289
  var gmailAttachmentAreaView = this._getAttachmentArea();
290
+
203
291
  if (!gmailAttachmentAreaView) {
204
292
  return;
205
293
  }
294
+
206
295
  gmailAttachmentAreaView.addButtonToDownloadAllArea(options);
207
296
  }
208
- addMoreMenuItem(options) {
209
- this._moreMenuItemDescriptors = (0, _sortBy.default)(this._moreMenuItemDescriptors.concat([options]), o => o.orderHint);
297
+
298
+ addMoreMenuItem(options: Object) {
299
+ this._moreMenuItemDescriptors = sortBy(
300
+ this._moreMenuItemDescriptors.concat([options]),
301
+ (o) => o.orderHint
302
+ );
210
303
  this._updateMoreMenu();
211
304
  }
305
+
212
306
  _setupMoreMenuWatching() {
213
307
  // At the start, and whenever the view state changes, watch the
214
308
  // 'aria-expanded' property of the more button, and when that changes,
215
309
  // update the _openMoreMenu property.
216
310
  this._openMoreMenu = null;
217
- this._eventStream.filter(e => e.eventName === 'viewStateChange').toProperty(() => null).flatMapLatest(() => {
218
- const moreButton = this._getMoreButton();
219
- if (!moreButton) {
220
- return _kefir.default.constant(null);
221
- }
222
- return (0, _makeMutationObserverChunkedStream.default)(moreButton, {
223
- attributes: true,
224
- attributeFilter: ['aria-expanded']
225
- }).map(() => moreButton.getAttribute('aria-expanded') === 'true' ? this._getOpenMoreMenu() : null);
226
- }).takeUntilBy(this._stopper).onValue(openMoreMenu => {
227
- this._openMoreMenu = openMoreMenu;
228
- this._updateMoreMenu();
229
- });
311
+ this._eventStream
312
+ .filter((e) => e.eventName === 'viewStateChange')
313
+ .toProperty(() => null)
314
+ .flatMapLatest(() => {
315
+ const moreButton = this._getMoreButton();
316
+ if (!moreButton) {
317
+ return Kefir.constant(null);
318
+ }
319
+ return makeMutationObserverChunkedStream(moreButton, {
320
+ attributes: true,
321
+ attributeFilter: ['aria-expanded'],
322
+ }).map(() =>
323
+ moreButton.getAttribute('aria-expanded') === 'true'
324
+ ? this._getOpenMoreMenu()
325
+ : null
326
+ );
327
+ })
328
+ .takeUntilBy(this._stopper)
329
+ .onValue((openMoreMenu) => {
330
+ this._openMoreMenu = openMoreMenu;
331
+ this._updateMoreMenu();
332
+ });
230
333
  }
231
- _getMoreButton() {
334
+
335
+ _getMoreButton(): ?HTMLElement {
232
336
  if (this.getViewState() !== 'EXPANDED') {
233
337
  return null;
234
338
  }
235
- return this._element.querySelector('tr.acZ div.T-I.J-J5-Ji.aap.L3[role=button][aria-haspopup]');
339
+ return this._element.querySelector(
340
+ 'tr.acZ div.T-I.J-J5-Ji.aap.L3[role=button][aria-haspopup]'
341
+ );
236
342
  }
237
- _getOpenMoreMenu() {
238
- const selector_2022_11_23 = 'td > div.nH.a98.iY > div.nH.aHU .b7.J-M[aria-haspopup=true]';
239
- const maybeMoreMenu = document.body.querySelector(selector_2022_11_23);
343
+
344
+ _getOpenMoreMenu(): ?HTMLElement {
345
+ const selector_2022_11_23 =
346
+ 'td > div.nH.a98.iY > div.nH.aHU .b7.J-M[aria-haspopup=true]';
347
+
348
+ const maybeMoreMenu = ((document.body: any): HTMLElement).querySelector(
349
+ selector_2022_11_23
350
+ );
240
351
 
241
352
  // This will find any message's open more menu! The caller needs to make
242
353
  // sure it belongs to this message!
243
- return maybeMoreMenu || document.body.querySelector('td > div.nH.if > div.nH.aHU div.b7.J-M[aria-haspopup=true]');
354
+ return (
355
+ maybeMoreMenu ||
356
+ ((document.body: any): HTMLElement).querySelector(
357
+ 'td > div.nH.if > div.nH.aHU div.b7.J-M[aria-haspopup=true]'
358
+ )
359
+ );
244
360
  }
361
+
245
362
  _closeActiveEmailMenu() {
246
363
  const moreButton = this._getMoreButton();
247
364
  if (moreButton) {
248
- (0, _simulateMouseEvent.simulateClick)(moreButton);
365
+ simulateClick(moreButton);
249
366
  }
250
367
  }
368
+
251
369
  _updateMoreMenu() {
252
- this._moreMenuAddedElements.forEach(el => {
370
+ this._moreMenuAddedElements.forEach((el) => {
253
371
  el.remove();
254
372
  });
255
373
  this._moreMenuAddedElements.length = 0;
374
+
256
375
  const openMoreMenu = this._openMoreMenu;
257
376
  if (openMoreMenu && this._moreMenuItemDescriptors.length) {
258
377
  const originalHeight = openMoreMenu.offsetHeight;
259
378
  const originalWidth = openMoreMenu.offsetWidth;
379
+
260
380
  const dividerEl = document.createElement('div');
261
381
  dividerEl.className = 'J-Kh';
262
382
  this._moreMenuAddedElements.push(dividerEl);
263
383
  openMoreMenu.appendChild(dividerEl);
264
- this._moreMenuItemDescriptors.forEach(options => {
384
+
385
+ this._moreMenuItemDescriptors.forEach((options) => {
265
386
  const itemEl = document.createElement('div');
266
387
  itemEl.className = 'J-N';
267
388
  itemEl.setAttribute('role', 'menuitem');
268
- itemEl.innerHTML = (0, _autoHtml.default)`<div class="J-N-Jz">${options.title}</div>`;
269
- itemEl.addEventListener('mouseenter', event => itemEl.classList.add('J-N-JT'));
270
- itemEl.addEventListener('mouseleave', event => itemEl.classList.remove('J-N-JT'));
271
- itemEl.addEventListener('click', event => {
389
+ itemEl.innerHTML = autoHtml`<div class="J-N-Jz">${options.title}</div>`;
390
+
391
+ itemEl.addEventListener('mouseenter', (event: MouseEvent) =>
392
+ itemEl.classList.add('J-N-JT')
393
+ );
394
+ itemEl.addEventListener('mouseleave', (event: MouseEvent) =>
395
+ itemEl.classList.remove('J-N-JT')
396
+ );
397
+ itemEl.addEventListener('click', (event: MouseEvent) => {
272
398
  this._closeActiveEmailMenu();
273
399
  options.onClick();
274
400
  });
401
+
275
402
  if (options.iconUrl || options.iconClass) {
276
403
  const iconEl = document.createElement('img');
277
- iconEl.className = `f4 J-N-JX inboxsdk__message_more_icon ${options.iconClass || ''}`;
404
+ iconEl.className = `f4 J-N-JX inboxsdk__message_more_icon ${
405
+ options.iconClass || ''
406
+ }`;
278
407
  iconEl.src = options.iconUrl || 'images/cleardot.gif';
408
+
279
409
  const insertionPoint = itemEl.firstElementChild;
280
410
  if (insertionPoint) insertionPoint.appendChild(iconEl);
281
411
  }
412
+
282
413
  this._moreMenuAddedElements.push(itemEl);
283
414
  openMoreMenu.appendChild(itemEl);
284
415
  });
416
+
285
417
  const menuRect = openMoreMenu.getBoundingClientRect();
418
+
286
419
  const addedWidth = menuRect.width - originalWidth;
287
420
  if (addedWidth > 0) {
288
- openMoreMenu.style.left = Math.max(0, parseInt(openMoreMenu.style.left) - addedWidth) + 'px';
421
+ openMoreMenu.style.left =
422
+ Math.max(0, parseInt(openMoreMenu.style.left) - addedWidth) + 'px';
289
423
  }
424
+
290
425
  const moreButton = this._getMoreButton();
291
426
  if (moreButton) {
292
427
  const moreButtonRect = moreButton.getBoundingClientRect();
@@ -295,30 +430,37 @@ class GmailMessageView {
295
430
  // upwards to compensate for the buttons we added.
296
431
  if (menuRect.top < moreButtonRect.top) {
297
432
  const addedHeight = menuRect.height - originalHeight;
298
- openMoreMenu.style.top = Math.max(0, parseInt(openMoreMenu.style.top) - addedHeight) + 'px';
433
+ openMoreMenu.style.top =
434
+ Math.max(0, parseInt(openMoreMenu.style.top) - addedHeight) + 'px';
299
435
  }
300
436
  }
301
437
  }
302
438
  }
303
- getMessageID() {
304
- let ignoreLoadStatus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
439
+
440
+ getMessageID(ignoreLoadStatus: boolean = false): string {
305
441
  if (!ignoreLoadStatus && !this._messageLoaded) {
306
442
  throw new Error('tried to get message id before message is loaded');
307
443
  }
308
- const messageIdElement = this._element.querySelector('[data-legacy-message-id]');
444
+
445
+ const messageIdElement = this._element.querySelector(
446
+ '[data-legacy-message-id]'
447
+ );
309
448
  if (messageIdElement) {
310
449
  const messageId = messageIdElement.getAttribute('data-legacy-message-id');
311
- if (!messageId) throw new Error('message id attribute with no value, wtf?');
450
+ if (!messageId)
451
+ throw new Error('message id attribute with no value, wtf?');
312
452
  return messageId;
313
453
  }
454
+
314
455
  const messageEl = this._element.querySelector('div.ii.gt');
315
456
  if (!messageEl) {
316
457
  const err = new Error('Could not find message id element');
317
458
  this._driver.getLogger().error(err, {
318
- elementHtml: (0, _censorHTMLtree.default)(this._element)
459
+ elementHtml: censorHTMLtree(this._element),
319
460
  });
320
461
  throw err;
321
462
  }
463
+
322
464
  let m = messageEl.className.match(/\bm([0-9a-f]+)\b/);
323
465
  if (m) {
324
466
  if (!hasSeenOldElement) {
@@ -332,7 +474,7 @@ class GmailMessageView {
332
474
  const err = new Error('Could not find message id value');
333
475
  this._driver.getLogger().error(err, {
334
476
  reason: 'Could not find element',
335
- messageHtml: (0, _censorHTMLtree.default)(messageEl)
477
+ messageHtml: censorHTMLtree(messageEl),
336
478
  });
337
479
  throw err;
338
480
  }
@@ -341,38 +483,50 @@ class GmailMessageView {
341
483
  const err = new Error('Could not find message id value');
342
484
  this._driver.getLogger().error(err, {
343
485
  reason: 'Element was missing message className',
344
- messageHtml: (0, _censorHTMLtree.default)(messageEl)
486
+ messageHtml: censorHTMLtree(messageEl),
345
487
  });
346
488
  throw err;
347
489
  }
348
490
  return m[1];
349
491
  }
350
492
  }
351
- async getMessageIDAsync() {
493
+
494
+ async getMessageIDAsync(): Promise<string> {
352
495
  return this.getMessageID();
353
496
  }
354
- addAttachmentIcon(iconDescriptor) {
355
- const attachmentIcon = new _attachmentIcon.default();
497
+
498
+ addAttachmentIcon(iconDescriptor: Object) {
499
+ const attachmentIcon = new AttachmentIcon();
500
+
356
501
  if (!this._element) {
357
502
  console.warn('addDateIcon called on destroyed message'); //eslint-disable-line no-console
358
503
  return attachmentIcon;
359
504
  }
360
- this._element.setAttribute('inboxsdk__message_added_attachment_icon', 'true');
361
- const getImgElement = (0, _once.default)(() => {
505
+
506
+ this._element.setAttribute(
507
+ 'inboxsdk__message_added_attachment_icon',
508
+ 'true'
509
+ );
510
+
511
+ const getImgElement = once(() => {
362
512
  const img = document.createElement('img');
363
513
  img.src = 'images/cleardot.gif';
364
514
  return img;
365
515
  });
366
- const getCustomIconWrapper = (0, _once.default)(() => {
516
+
517
+ const getCustomIconWrapper = once(() => {
367
518
  const div = document.createElement('div');
368
519
  return div;
369
520
  });
370
- const getTooltipNodeWrapper = (0, _once.default)(() => {
521
+
522
+ const getTooltipNodeWrapper = once(() => {
371
523
  const div = document.createElement('div');
372
524
  return div;
373
525
  });
526
+
374
527
  let added = false;
375
528
  let currentIconUrl = null;
529
+
376
530
  this._stopper.onValue(() => {
377
531
  if (added) {
378
532
  getCustomIconWrapper().remove();
@@ -381,83 +535,123 @@ class GmailMessageView {
381
535
  added = false;
382
536
  }
383
537
  });
384
- (0, _kefirCast.default)(_kefir.default, iconDescriptor).combine(this._eventStream.filter(event => event.eventName === 'viewStateChange').toProperty(() => null), opts => opts).takeUntilBy(this._stopper).onValue(opts => {
385
- if (!opts) {
386
- if (added) {
387
- getCustomIconWrapper().remove();
388
- getImgElement().remove();
389
- getTooltipNodeWrapper().remove();
390
- added = false;
391
- }
392
- } else {
393
- let attachmentDiv;
394
- if (this.getViewState() === 'COLLAPSED') {
395
- attachmentDiv = (0, _querySelectorOrFail.default)(this._element, '.adf.ads td.gH span');
396
- } else {
397
- attachmentDiv = (0, _querySelectorOrFail.default)(this._element, 'td.gH div.gK span');
398
- }
399
- const img = opts.iconHtml != null ? getCustomIconWrapper() : getImgElement();
400
- const onClick = opts.onClick;
401
- if (onClick) {
402
- img.onclick = function (event) {
403
- event.preventDefault();
404
- event.stopPropagation();
405
- onClick();
406
- };
407
- img.style.cursor = 'pointer';
408
- } else {
409
- img.onclick = null;
410
- img.style.cursor = '';
411
- }
412
- if (opts.tooltip && typeof opts.tooltip == 'object' && opts.tooltip instanceof HTMLElement) {
413
- const tooltipWrapper = getTooltipNodeWrapper();
414
- tooltipWrapper.className = 'inboxsdk__message_attachment_tooltipWrapper';
415
- tooltipWrapper.onclick = function (event) {
416
- event.stopPropagation();
417
- (0, _reemitClickEventForReact.default)(event);
418
- };
419
- tooltipWrapper.appendChild(opts.tooltip);
420
- img.onmouseenter = function (event) {
421
- event.preventDefault();
422
- event.stopPropagation();
423
- img.appendChild(tooltipWrapper);
424
- attachmentIcon.emit('tooltipShown');
425
- };
426
- img.onmouseleave = function (event) {
427
- event.preventDefault();
428
- event.stopPropagation();
429
- img.removeChild(tooltipWrapper);
430
- attachmentIcon.emit('tooltipHidden');
431
- };
432
- img.removeAttribute('data-tooltip');
433
- } else if (opts.tooltip && typeof opts.tooltip == 'string') {
434
- img.setAttribute('data-tooltip', opts.tooltip);
435
- } else {
436
- img.removeAttribute('data-tooltip');
437
- }
438
- img.className = opts.iconHtml != null ? `inboxsdk__message_attachment_iconWrapper ${opts.iconClass || ''}` : 'inboxsdk__message_attachment_icon ' + (opts.iconClass || '');
439
- if (opts.iconHtml != null) {
440
- if (attachmentDiv.contains(getImgElement())) {
538
+
539
+ kefirCast((Kefir: any), iconDescriptor)
540
+ .combine(
541
+ this._eventStream
542
+ .filter((event) => event.eventName === 'viewStateChange')
543
+ .toProperty(() => null),
544
+ (opts) => opts
545
+ )
546
+ .takeUntilBy(this._stopper)
547
+ .onValue((opts) => {
548
+ if (!opts) {
549
+ if (added) {
550
+ getCustomIconWrapper().remove();
441
551
  getImgElement().remove();
552
+ getTooltipNodeWrapper().remove();
553
+ added = false;
442
554
  }
443
- img.innerHTML = opts.iconHtml;
444
- } else if (currentIconUrl != opts.iconUrl) {
445
- if (attachmentDiv.contains(getCustomIconWrapper())) {
446
- getCustomIconWrapper().remove();
555
+ } else {
556
+ let attachmentDiv;
557
+
558
+ if (this.getViewState() === 'COLLAPSED') {
559
+ attachmentDiv = querySelector(this._element, '.adf.ads td.gH span');
560
+ } else {
561
+ attachmentDiv = querySelector(this._element, 'td.gH div.gK span');
562
+ }
563
+
564
+ const img =
565
+ opts.iconHtml != null ? getCustomIconWrapper() : getImgElement();
566
+
567
+ const onClick = opts.onClick;
568
+ if (onClick) {
569
+ img.onclick = function (event) {
570
+ event.preventDefault();
571
+ event.stopPropagation();
572
+ onClick();
573
+ };
574
+ img.style.cursor = 'pointer';
575
+ } else {
576
+ img.onclick = null;
577
+ img.style.cursor = '';
578
+ }
579
+
580
+ if (
581
+ opts.tooltip &&
582
+ typeof opts.tooltip == 'object' &&
583
+ opts.tooltip instanceof HTMLElement
584
+ ) {
585
+ const tooltipWrapper = getTooltipNodeWrapper();
586
+ tooltipWrapper.className =
587
+ 'inboxsdk__message_attachment_tooltipWrapper';
588
+ tooltipWrapper.onclick = function (event) {
589
+ event.stopPropagation();
590
+ reemitClickEvent(event);
591
+ };
592
+ tooltipWrapper.appendChild(opts.tooltip);
593
+
594
+ img.onmouseenter = function (event) {
595
+ event.preventDefault();
596
+ event.stopPropagation();
597
+ img.appendChild(tooltipWrapper);
598
+ attachmentIcon.emit('tooltipShown');
599
+ };
600
+
601
+ img.onmouseleave = function (event) {
602
+ event.preventDefault();
603
+ event.stopPropagation();
604
+ img.removeChild(tooltipWrapper);
605
+ attachmentIcon.emit('tooltipHidden');
606
+ };
607
+
608
+ img.removeAttribute('data-tooltip');
609
+ } else if (opts.tooltip && typeof opts.tooltip == 'string') {
610
+ img.setAttribute('data-tooltip', opts.tooltip);
611
+ } else {
612
+ img.removeAttribute('data-tooltip');
613
+ }
614
+
615
+ img.className =
616
+ opts.iconHtml != null
617
+ ? `inboxsdk__message_attachment_iconWrapper ${
618
+ opts.iconClass || ''
619
+ }`
620
+ : 'inboxsdk__message_attachment_icon ' + (opts.iconClass || '');
621
+
622
+ if (opts.iconHtml != null) {
623
+ if (attachmentDiv.contains(getImgElement())) {
624
+ getImgElement().remove();
625
+ }
626
+
627
+ img.innerHTML = opts.iconHtml;
628
+ } else if (currentIconUrl != opts.iconUrl) {
629
+ if (attachmentDiv.contains(getCustomIconWrapper())) {
630
+ getCustomIconWrapper().remove();
631
+ }
632
+
633
+ img.style.background = opts.iconUrl
634
+ ? 'url(' + opts.iconUrl + ') no-repeat 0 0'
635
+ : '';
636
+
637
+ currentIconUrl = opts.iconUrl;
638
+ }
639
+
640
+ if (!attachmentDiv.contains(img)) {
641
+ attachmentDiv.appendChild(img);
642
+ added = true;
447
643
  }
448
- img.style.background = opts.iconUrl ? 'url(' + opts.iconUrl + ') no-repeat 0 0' : '';
449
- currentIconUrl = opts.iconUrl;
450
- }
451
- if (!attachmentDiv.contains(img)) {
452
- attachmentDiv.appendChild(img);
453
- added = true;
454
644
  }
455
- }
456
- });
645
+ });
646
+
457
647
  return attachmentIcon;
458
648
  }
459
- getViewState() {
460
- if (this._element.classList.contains('kQ') || this._element.classList.contains('kx')) {
649
+
650
+ getViewState(): VIEW_STATE {
651
+ if (
652
+ this._element.classList.contains('kQ') ||
653
+ this._element.classList.contains('kx')
654
+ ) {
461
655
  return 'HIDDEN';
462
656
  } else if (this._element.classList.contains('kv')) {
463
657
  return 'COLLAPSED';
@@ -465,75 +659,117 @@ class GmailMessageView {
465
659
  return 'EXPANDED';
466
660
  }
467
661
  }
468
- hasOpenReply() {
662
+
663
+ hasOpenReply(): boolean {
469
664
  return Boolean(this._replyElement);
470
665
  }
471
- addAttachmentCard(options) {
472
- var gmailAttachmentCardView = new _gmailAttachmentCardView.default(options, this._driver, this);
666
+
667
+ addAttachmentCard(options: Object) {
668
+ var gmailAttachmentCardView = new GmailAttachmentCardView(
669
+ options,
670
+ this._driver,
671
+ this
672
+ );
673
+
473
674
  if (!this._gmailAttachmentAreaView) {
474
675
  this._gmailAttachmentAreaView = this._getAttachmentArea();
475
676
  }
677
+
476
678
  if (!this._gmailAttachmentAreaView) {
477
679
  this._gmailAttachmentAreaView = this._createAttachmentArea();
478
680
  }
479
- this._gmailAttachmentAreaView.addGmailAttachmentCardView(gmailAttachmentCardView);
681
+
682
+ this._gmailAttachmentAreaView.addGmailAttachmentCardView(
683
+ gmailAttachmentCardView
684
+ );
685
+
480
686
  return gmailAttachmentCardView;
481
687
  }
688
+
482
689
  _setupMessageStateStream() {
483
690
  var self = this;
484
- this._eventStream.plug((0, _makeMutationObserverStream.default)(this._element, {
485
- attributes: true,
486
- attributeFilter: ['class'],
487
- attributeOldValue: true
488
- }).takeUntilBy(this._stopper).map(function (mutation) {
489
- const currentClassList = mutation.target.classList;
490
- const mutationOldValue = mutation.oldValue;
491
- let oldValue;
492
- let newValue;
493
- if (mutationOldValue.indexOf('kQ') > -1 || mutationOldValue.indexOf('kx') > -1) {
494
- oldValue = 'HIDDEN';
495
- } else if (mutationOldValue.indexOf('kv') > -1 || mutationOldValue.indexOf('ky') > -1) {
496
- oldValue = 'COLLAPSED';
497
- } else if (mutationOldValue.indexOf('h7') > -1) {
498
- oldValue = 'EXPANDED';
499
- }
500
- if (currentClassList.contains('kQ') || currentClassList.contains('kx')) {
501
- newValue = 'HIDDEN';
502
- } else if (currentClassList.contains('kv') || currentClassList.contains('ky')) {
503
- newValue = 'COLLAPSED';
504
- } else if (currentClassList.contains('h7')) {
505
- newValue = 'EXPANDED';
506
- }
507
- return {
508
- oldValue,
509
- newValue,
510
- currentClassList
511
- };
512
- }).map(function (event) {
513
- if (event.newValue === 'EXPANDED' && event.oldValue !== 'EXPANDED') {
514
- self._checkMessageOpenState(event.currentClassList);
515
- }
516
- return event;
517
- }).filter(function (event) {
518
- return event.newValue !== event.oldValue && !!event.oldValue && !!event.newValue;
519
- }).map(function (event) {
520
- return {
521
- eventName: 'viewStateChange',
522
- oldValue: event.oldValue,
523
- newValue: event.newValue
524
- };
525
- }));
691
+
692
+ this._eventStream.plug(
693
+ makeMutationObserverStream(this._element, {
694
+ attributes: true,
695
+ attributeFilter: ['class'],
696
+ attributeOldValue: true,
697
+ })
698
+ .takeUntilBy(this._stopper)
699
+ .map(function (mutation) {
700
+ const currentClassList = (mutation.target: any).classList;
701
+ const mutationOldValue: string = (mutation.oldValue: any);
702
+
703
+ let oldValue;
704
+ let newValue;
705
+
706
+ if (
707
+ mutationOldValue.indexOf('kQ') > -1 ||
708
+ mutationOldValue.indexOf('kx') > -1
709
+ ) {
710
+ oldValue = 'HIDDEN';
711
+ } else if (
712
+ mutationOldValue.indexOf('kv') > -1 ||
713
+ mutationOldValue.indexOf('ky') > -1
714
+ ) {
715
+ oldValue = 'COLLAPSED';
716
+ } else if (mutationOldValue.indexOf('h7') > -1) {
717
+ oldValue = 'EXPANDED';
718
+ }
719
+
720
+ if (
721
+ currentClassList.contains('kQ') ||
722
+ currentClassList.contains('kx')
723
+ ) {
724
+ newValue = 'HIDDEN';
725
+ } else if (
726
+ currentClassList.contains('kv') ||
727
+ currentClassList.contains('ky')
728
+ ) {
729
+ newValue = 'COLLAPSED';
730
+ } else if (currentClassList.contains('h7')) {
731
+ newValue = 'EXPANDED';
732
+ }
733
+
734
+ return { oldValue, newValue, currentClassList };
735
+ })
736
+ .map(function (event) {
737
+ if (event.newValue === 'EXPANDED' && event.oldValue !== 'EXPANDED') {
738
+ self._checkMessageOpenState(event.currentClassList);
739
+ }
740
+
741
+ return event;
742
+ })
743
+ .filter(function (event) {
744
+ return (
745
+ event.newValue !== event.oldValue &&
746
+ !!event.oldValue &&
747
+ !!event.newValue
748
+ );
749
+ })
750
+ .map(function (event) {
751
+ return {
752
+ eventName: 'viewStateChange',
753
+ oldValue: event.oldValue,
754
+ newValue: event.newValue,
755
+ };
756
+ })
757
+ );
526
758
  }
759
+
527
760
  _processInitialState() {
528
761
  this._checkMessageOpenState(this._element.classList);
529
762
  }
530
- _checkMessageOpenState(classList) {
763
+
764
+ _checkMessageOpenState(classList: Object) {
531
765
  if (!classList.contains('h7')) {
532
766
  return;
533
767
  }
768
+
534
769
  if (this._messageLoaded) {
535
770
  return;
536
771
  }
772
+
537
773
  let messageId;
538
774
  try {
539
775
  messageId = this.getMessageID(true);
@@ -541,120 +777,174 @@ class GmailMessageView {
541
777
  this._driver.getLogger().error(err);
542
778
  return;
543
779
  }
780
+
544
781
  this._messageLoaded = true;
782
+
545
783
  try {
546
- this._driver.associateThreadAndMessageIDs(this._threadViewDriver.getThreadID(), messageId);
784
+ this._driver.associateThreadAndMessageIDs(
785
+ this._threadViewDriver.getThreadID(),
786
+ messageId
787
+ );
547
788
  } catch (err) {
548
789
  this._driver.getLogger().error(err);
549
790
  }
550
791
  this._gmailAttachmentAreaView = this._getAttachmentArea();
792
+
551
793
  this._eventStream.emit({
552
794
  type: 'internal',
553
- eventName: 'messageLoad'
795
+ eventName: 'messageLoad',
554
796
  });
797
+
555
798
  this._setupReplyStream();
556
799
  }
800
+
557
801
  _setupReplyStream() {
558
802
  const replyContainer = this._element.querySelector('.ip');
803
+
559
804
  if (!replyContainer) {
560
805
  return;
561
806
  }
807
+
562
808
  var self = this;
563
809
  var currentReplyElementRemovalStream = null;
564
810
 
565
811
  // hold off on emitting the mutation for a millisecond so
566
812
  // that compose-view-driver-stream is listening to reply stream
567
- _kefir.default.combine([(0, _makeMutationObserverChunkedStream.default)(replyContainer, {
568
- attributes: true,
569
- attributeFilter: ['class']
570
- }), _kefir.default.later(1, null)]).merge(_kefir.default.later(1)).takeUntilBy(this._stopper).beforeEnd(() => 'END').onValue(mutation => {
571
- if (mutation !== 'END' && replyContainer.classList.contains('adB')) {
572
- if (!currentReplyElementRemovalStream) {
573
- const replyElement = replyContainer.firstElementChild;
574
- self._replyElement = replyElement;
575
- if (replyElement) {
576
- currentReplyElementRemovalStream = (0, _kefirBus.default)();
577
- self._eventStream.emit({
578
- type: 'internal',
579
- eventName: 'replyElement',
580
- change: {
581
- el: replyElement,
582
- removalStream: currentReplyElementRemovalStream
583
- }
584
- });
813
+ Kefir.combine([
814
+ makeMutationObserverChunkedStream(replyContainer, {
815
+ attributes: true,
816
+ attributeFilter: ['class'],
817
+ }),
818
+ Kefir.later(1, null),
819
+ ])
820
+ .merge(Kefir.later(1))
821
+ .takeUntilBy(this._stopper)
822
+ .beforeEnd(() => 'END')
823
+ .onValue((mutation) => {
824
+ if (mutation !== 'END' && replyContainer.classList.contains('adB')) {
825
+ if (!currentReplyElementRemovalStream) {
826
+ const replyElement = replyContainer.firstElementChild;
827
+ self._replyElement = (replyElement: any);
828
+
829
+ if (replyElement) {
830
+ currentReplyElementRemovalStream = kefirBus();
831
+ self._eventStream.emit({
832
+ type: 'internal',
833
+ eventName: 'replyElement',
834
+ change: {
835
+ el: replyElement,
836
+ removalStream: currentReplyElementRemovalStream,
837
+ },
838
+ });
839
+ }
840
+ }
841
+ } else {
842
+ if (currentReplyElementRemovalStream) {
843
+ // Ending the currentReplyElementRemovalStream can trigger something
844
+ // that triggers the mutation observer stream which will call back into
845
+ // this function before we've unset currentReplyElementRemovalStream,
846
+ // so we need to copy the bus to a temporary variable and unset
847
+ // currentReplyElementRemovalStream first.
848
+ var temp = currentReplyElementRemovalStream;
849
+ currentReplyElementRemovalStream = null;
850
+ temp.emit(null);
851
+ temp.end();
852
+
853
+ self._replyElement = null;
585
854
  }
586
855
  }
587
- } else {
588
- if (currentReplyElementRemovalStream) {
589
- // Ending the currentReplyElementRemovalStream can trigger something
590
- // that triggers the mutation observer stream which will call back into
591
- // this function before we've unset currentReplyElementRemovalStream,
592
- // so we need to copy the bus to a temporary variable and unset
593
- // currentReplyElementRemovalStream first.
594
- var temp = currentReplyElementRemovalStream;
595
- currentReplyElementRemovalStream = null;
596
- temp.emit(null);
597
- temp.end();
598
- self._replyElement = null;
599
- }
600
- }
601
- });
856
+ });
602
857
  }
858
+
603
859
  _monitorEmailAddressHovering() {
604
860
  var self = this;
605
- this._eventStream.plug(_kefir.default.fromEvents(this._element, 'mouseover').map(e => e.target).filter(function (element) {
606
- return element && element.getAttribute('email');
607
- }).map(function (element) {
608
- let contactType = null;
609
- if (!self._element.classList.contains('h7')) {
610
- contactType = 'sender';
611
- } else {
612
- if (self._element.querySelector('h3.iw').contains(element)) {
613
- contactType = 'sender';
614
- } else {
615
- contactType = 'recipient';
616
- }
617
- }
618
- return {
619
- get contact() {
620
- return self._getUpdatedContact(_extractContactInformation(element));
621
- },
622
- contactType: contactType,
623
- eventName: 'contactHover',
624
- messageViewDriver: self
625
- };
626
- }));
627
- }
628
- _getAttachmentArea() {
861
+ this._eventStream.plug(
862
+ Kefir.fromEvents(this._element, 'mouseover')
863
+ .map((e) => e.target)
864
+ .filter(function (element) {
865
+ return element && element.getAttribute('email');
866
+ })
867
+ .map(function (element) {
868
+ let contactType = null;
869
+
870
+ if (!self._element.classList.contains('h7')) {
871
+ contactType = 'sender';
872
+ } else {
873
+ if ((self._element.querySelector('h3.iw'): any).contains(element)) {
874
+ contactType = 'sender';
875
+ } else {
876
+ contactType = 'recipient';
877
+ }
878
+ }
879
+
880
+ return {
881
+ get contact() {
882
+ return self._getUpdatedContact(
883
+ _extractContactInformation(element)
884
+ );
885
+ },
886
+ contactType: contactType,
887
+ eventName: 'contactHover',
888
+ messageViewDriver: self,
889
+ };
890
+ })
891
+ );
892
+ }
893
+
894
+ _getAttachmentArea(): ?GmailAttachmentAreaView {
629
895
  if (this._element.querySelector('.hq')) {
630
- return new _gmailAttachmentAreaView.default(this._element.querySelector('.hq'), this._driver, this);
896
+ return new GmailAttachmentAreaView(
897
+ this._element.querySelector('.hq'),
898
+ this._driver,
899
+ this
900
+ );
631
901
  }
902
+
632
903
  return null;
633
904
  }
634
- _createAttachmentArea() {
635
- const gmailAttachmentAreaView = new _gmailAttachmentAreaView.default(null, this._driver, this);
636
- const beforeElement = (0, _querySelectorOrFail.default)(this._element, '.hi');
905
+
906
+ _createAttachmentArea(): GmailAttachmentAreaView {
907
+ const gmailAttachmentAreaView = new GmailAttachmentAreaView(
908
+ null,
909
+ this._driver,
910
+ this
911
+ );
912
+
913
+ const beforeElement = querySelector(this._element, '.hi');
637
914
  const parentNode = beforeElement.parentNode;
638
915
  if (!parentNode) throw new Error('parentNode not found');
639
- parentNode.insertBefore(gmailAttachmentAreaView.getElement(), beforeElement);
916
+ parentNode.insertBefore(
917
+ gmailAttachmentAreaView.getElement(),
918
+ beforeElement
919
+ );
920
+
640
921
  return gmailAttachmentAreaView;
641
922
  }
642
- _getUpdatedContact(inContact) {
643
- return (0, _getUpdatedContact.default)(inContact, this._element);
923
+
924
+ _getUpdatedContact(inContact: Contact): Contact {
925
+ return getUpdatedContact(inContact, this._element);
644
926
  }
927
+
645
928
  getReadyStream() {
646
929
  return this._readyStream;
647
930
  }
648
931
  }
932
+
649
933
  function _extractContactInformation(span) {
650
934
  return {
651
935
  name: span.getAttribute('name'),
652
- emailAddress: span.getAttribute('email')
936
+ emailAddress: span.getAttribute('email'),
653
937
  };
654
938
  }
655
- var _default = (0, _ud.defn)(module, GmailMessageView); // This function does not get executed. It's only checked by Flow to make sure
939
+
940
+ export default defn(module, GmailMessageView);
941
+
942
+ // This function does not get executed. It's only checked by Flow to make sure
656
943
  // this class successfully implements the type interface.
657
- exports.default = _default;
658
944
  function __interfaceCheck() {
659
- const test = new GmailMessageView({}, {}, {});
660
- }
945
+ const test: MessageViewDriver = new GmailMessageView(
946
+ ({}: any),
947
+ ({}: any),
948
+ ({}: any)
949
+ );
950
+ }