@inboxsdk/core 0.2.28-alpha.5 → 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 -10
  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,386 +1,512 @@
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 _once = _interopRequireDefault(require("lodash/once"));
10
- var _constant = _interopRequireDefault(require("lodash/constant"));
11
- var _includes = _interopRequireDefault(require("lodash/includes"));
12
- var _autoHtml = _interopRequireDefault(require("auto-html"));
13
- var _kefir = _interopRequireDefault(require("kefir"));
14
- var _kefirBus = _interopRequireDefault(require("kefir-bus"));
15
- var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
16
- var _ud = require("ud");
17
- var _liveSet = _interopRequireDefault(require("live-set"));
18
- var _filter = _interopRequireDefault(require("live-set/filter"));
19
- var _merge = _interopRequireDefault(require("live-set/merge"));
20
- var _flatMap = _interopRequireDefault(require("live-set/flatMap"));
21
- var _mapWithRemoval = _interopRequireDefault(require("live-set/mapWithRemoval"));
22
- var _toValueObservable = _interopRequireDefault(require("live-set/toValueObservable"));
23
- var _makePageParserTree = _interopRequireDefault(require("./makePageParserTree"));
24
- var _logger = _interopRequireDefault(require("../../lib/logger"));
25
- var _toItemWithLifetimeStream = _interopRequireDefault(require("../../lib/toItemWithLifetimeStream"));
26
- var _injectScript = require("../../lib/inject-script");
27
- var _fromEventTargetCapture = _interopRequireDefault(require("../../lib/from-event-target-capture"));
28
- var _bimapcache = _interopRequireDefault(require("bimapcache"));
29
- var _getInboxMessageIdForInboxThreadId = _interopRequireDefault(require("./getInboxMessageIdForInboxThreadId"));
30
- var _getGmailMessageIdForSyncMessageId = _interopRequireDefault(require("../../driver-common/getGmailMessageIdForSyncMessageId"));
31
- var _getThreadIdFromMessageId = _interopRequireDefault(require("../../driver-common/getThreadIdFromMessageId"));
32
- var _gmailAjax = _interopRequireDefault(require("../../driver-common/gmailAjax"));
33
- var _getAccountUrlPart = _interopRequireDefault(require("../../driver-common/getAccountUrlPart"));
34
- var _simulateKey = _interopRequireDefault(require("../../lib/dom/simulate-key"));
35
- var _setCss = _interopRequireDefault(require("../../lib/dom/set-css"));
36
- var _querySelectorOrFail = _interopRequireDefault(require("../../lib/dom/querySelectorOrFail"));
37
- var _customStyle = _interopRequireDefault(require("./custom-style"));
38
- var _censorHTMLstring = _interopRequireDefault(require("../../../common/censorHTMLstring"));
39
- var _censorHTMLtree = _interopRequireDefault(require("../../../common/censorHTMLtree"));
40
- var _getComposeViewDriverLiveSet = _interopRequireDefault(require("./getComposeViewDriverLiveSet"));
41
- var _addNavItem = _interopRequireDefault(require("./addNavItem"));
42
- var _querySelectorOne = _interopRequireDefault(require("../../lib/dom/querySelectorOne"));
43
- var _idMap = _interopRequireDefault(require("../../lib/idMap"));
44
- var _makeMutationObserverChunkedStream = _interopRequireDefault(require("../../lib/dom/make-mutation-observer-chunked-stream"));
45
- var _getSidebarClassnames = _interopRequireDefault(require("./getSidebarClassnames"));
46
- var _inboxButterBarDriver = _interopRequireDefault(require("./inbox-butter-bar-driver"));
47
- var _createLink = _interopRequireDefault(require("./createLink"));
48
- var _gotoView = _interopRequireDefault(require("./gotoView"));
49
- var _parser = _interopRequireDefault(require("./detection/thread/parser"));
50
- var _parser2 = _interopRequireDefault(require("./detection/thread-row/parser"));
51
- var _parser3 = _interopRequireDefault(require("./detection/message/parser"));
52
- var _parser4 = _interopRequireDefault(require("./detection/attachmentCard/parser"));
53
- var _parser5 = _interopRequireDefault(require("./detection/attachmentOverlay/parser"));
54
- var _parser6 = _interopRequireDefault(require("./detection/nativeDrawer/parser"));
55
- var _parser7 = _interopRequireDefault(require("./detection/searchBar/parser"));
56
- var _parser8 = _interopRequireDefault(require("./detection/chatSidebar/parser"));
57
- var _parser9 = _interopRequireDefault(require("./detection/appToolbarLocation/parser"));
58
- var _setupRouteViewDriverStream = _interopRequireDefault(require("./setupRouteViewDriverStream"));
59
- var _inboxThreadView = _interopRequireDefault(require("./views/inbox-thread-view"));
60
- var _inboxThreadRowView = _interopRequireDefault(require("./views/inbox-thread-row-view"));
61
- var _inboxMessageView = _interopRequireDefault(require("./views/inbox-message-view"));
62
- var _inboxAttachmentCardView = _interopRequireDefault(require("./views/inbox-attachment-card-view"));
63
- var _inboxAttachmentOverlayView = _interopRequireDefault(require("./views/inbox-attachment-overlay-view"));
64
- var _inboxChatSidebarView = _interopRequireDefault(require("./views/inbox-chat-sidebar-view"));
65
- var _InboxToolbarView = _interopRequireDefault(require("./views/InboxToolbarView"));
66
- var _InboxMoleViewDriver = _interopRequireDefault(require("./views/InboxMoleViewDriver"));
67
- var _inboxAppSidebarView = _interopRequireDefault(require("./views/inbox-app-sidebar-view"));
68
- var _registerSearchSuggestionsProvider = _interopRequireDefault(require("./registerSearchSuggestionsProvider"));
69
- var _inboxAppToolbarButtonView = _interopRequireDefault(require("./views/inbox-app-toolbar-button-view"));
70
- var _inboxPageCommunicator = _interopRequireDefault(require("./inbox-page-communicator"));
71
- var _inboxModalView = _interopRequireDefault(require("./views/inbox-modal-view"));
72
- var _inboxDrawerView = _interopRequireDefault(require("./views/inbox-drawer-view"));
73
- var _inboxBackdrop = _interopRequireDefault(require("./views/inbox-backdrop"));
74
- /* eslint-disable flowtype/require-valid-file-annotation -- flow support is deprecated and this file existed for a Google product that no longer exists */
1
+ /* @flow */
2
+
3
+ import once from 'lodash/once';
4
+ import constant from 'lodash/constant';
5
+ import includes from 'lodash/includes';
6
+ import autoHtml from 'auto-html';
7
+
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 type { Stopper } from 'kefir-stopper';
13
+ import { defn } from 'ud';
14
+
15
+ import type { TagTree } from 'tag-tree';
16
+ import LiveSet from 'live-set';
17
+ import lsFilter from 'live-set/filter';
18
+ import lsMerge from 'live-set/merge';
19
+ import lsFlatMap from 'live-set/flatMap';
20
+ import lsMapWithRemoval from 'live-set/mapWithRemoval';
21
+ import toValueObservable from 'live-set/toValueObservable';
22
+ import type PageParserTree from 'page-parser-tree';
23
+ import makePageParserTree from './makePageParserTree';
24
+
25
+ import Logger from '../../lib/logger';
26
+ import toItemWithLifetimeStream from '../../lib/toItemWithLifetimeStream';
27
+ import { injectScript } from '../../lib/inject-script';
28
+ import fromEventTargetCapture from '../../lib/from-event-target-capture';
29
+ import BiMapCache from 'bimapcache';
30
+ import getInboxMessageIdForInboxThreadId from './getInboxMessageIdForInboxThreadId';
31
+ import getGmailMessageIdForSyncMessageId from '../../driver-common/getGmailMessageIdForSyncMessageId';
32
+ import getThreadIdFromMessageId from '../../driver-common/getThreadIdFromMessageId';
33
+ import gmailAjax from '../../driver-common/gmailAjax';
34
+ import getAccountUrlPart from '../../driver-common/getAccountUrlPart';
35
+ import simulateKey from '../../lib/dom/simulate-key';
36
+ import setCss from '../../lib/dom/set-css';
37
+ import querySelector from '../../lib/dom/querySelectorOrFail';
38
+ import customStyle from './custom-style';
39
+ import censorHTMLstring from '../../../common/censorHTMLstring';
40
+ import censorHTMLtree from '../../../common/censorHTMLtree';
41
+ import type KeyboardShortcutHandle from '../../views/keyboard-shortcut-handle';
42
+ import getComposeViewDriverLiveSet from './getComposeViewDriverLiveSet';
43
+ import addNavItem from './addNavItem';
44
+
45
+ import type {
46
+ ItemWithLifetime,
47
+ ElementWithLifetime,
48
+ } from '../../lib/dom/make-element-child-stream';
49
+ import querySelectorOne from '../../lib/dom/querySelectorOne';
50
+ import idMap from '../../lib/idMap';
51
+ import makeMutationObserverChunkedStream from '../../lib/dom/make-mutation-observer-chunked-stream';
52
+ import getSidebarClassnames from './getSidebarClassnames';
53
+ import InboxButterBarDriver from './inbox-butter-bar-driver';
54
+ import createLink from './createLink';
55
+ import gotoView from './gotoView';
56
+
57
+ import threadParser from './detection/thread/parser';
58
+ import threadRowParser from './detection/thread-row/parser';
59
+ import messageParser from './detection/message/parser';
60
+ import attachmentCardParser from './detection/attachmentCard/parser';
61
+ import attachmentOverlayParser from './detection/attachmentOverlay/parser';
62
+ import nativeDrawerParser from './detection/nativeDrawer/parser';
63
+ import searchBarParser from './detection/searchBar/parser';
64
+ import chatSidebarParser from './detection/chatSidebar/parser';
65
+ import appToolbarLocationParser from './detection/appToolbarLocation/parser';
66
+
67
+ import setupRouteViewDriverStream from './setupRouteViewDriverStream';
68
+
69
+ import type InboxRouteView from './views/inbox-route-view';
70
+ import type InboxCustomRouteView from './views/inbox-custom-route-view';
71
+ import type InboxDummyRouteView from './views/inbox-dummy-route-view';
72
+ import type InboxComposeView from './views/inbox-compose-view';
73
+ import InboxThreadView from './views/inbox-thread-view';
74
+ import InboxThreadRowView from './views/inbox-thread-row-view';
75
+ import InboxMessageView from './views/inbox-message-view';
76
+ import InboxAttachmentCardView from './views/inbox-attachment-card-view';
77
+ import InboxAttachmentOverlayView from './views/inbox-attachment-overlay-view';
78
+ import InboxChatSidebarView from './views/inbox-chat-sidebar-view';
79
+ import InboxToolbarView from './views/InboxToolbarView';
80
+ import InboxMoleViewDriver from './views/InboxMoleViewDriver';
81
+
82
+ import InboxAppSidebarView from './views/inbox-app-sidebar-view';
83
+
84
+ import registerSearchSuggestionsProvider from './registerSearchSuggestionsProvider';
85
+
86
+ import InboxAppToolbarButtonView from './views/inbox-app-toolbar-button-view';
87
+ import InboxPageCommunicator from './inbox-page-communicator';
88
+ import InboxModalView from './views/inbox-modal-view';
89
+ import InboxDrawerView from './views/inbox-drawer-view';
90
+ import InboxBackdrop from './views/inbox-backdrop';
91
+ import type ButterBar from '../../namespaces/butter-bar';
92
+ import type { RouteParams } from '../../namespaces/router';
93
+ import type { Driver, DrawerViewOptions } from '../../driver-interfaces/driver';
94
+ import type { PiOpts, EnvData } from '../../platform-implementation';
75
95
 
76
96
  class InboxDriver {
77
- constructor(appId, LOADER_VERSION, IMPL_VERSION, logger, opts, envData) {
78
- (0, _defineProperty2.default)(this, "_threadViewElements", new WeakMap());
79
- (0, _defineProperty2.default)(this, "_messageViewElements", new WeakMap());
80
- (0, _defineProperty2.default)(this, "_butterBarDriver", new _inboxButterBarDriver.default());
81
- (0, _defineProperty2.default)(this, "_lastInteractedAttachmentCardView", null);
82
- (0, _defineProperty2.default)(this, "_lastInteractedAttachmentCardViewSet", (0, _kefirBus.default)());
83
- (0, _defineProperty2.default)(this, "_appSidebarView", null);
84
- (0, _defineProperty2.default)(this, "_customRouteIDs", new Set());
85
- (0, _defineProperty2.default)(this, "getGmailActionToken", (0, _once.default)(async () => {
86
- const response = await (0, _gmailAjax.default)({
87
- url: `https://mail.google.com/mail${(0, _getAccountUrlPart.default)()}/`,
88
- xhrFields: {
89
- withCredentials: true
90
- },
91
- canRetry: true
92
- });
93
- const tokenVarMatch = response.text.match(/var GM_ACTION_TOKEN=("[^"]+")/);
94
- if (!tokenVarMatch) {
95
- throw new Error('Could not find GM_ACTION_TOKEN');
96
- }
97
- return JSON.parse(tokenVarMatch[1]);
98
- }));
99
- this; // interface check
100
- (0, _customStyle.default)();
97
+ _appId: string;
98
+ _logger: Logger;
99
+ _opts: PiOpts;
100
+ _envData: EnvData;
101
+ _stopper: Stopper;
102
+ onready: Promise<void>;
103
+ _page: PageParserTree;
104
+ _routeViewDriverStream: Kefir.Observable<*>;
105
+ _rowListViewDriverStream: Kefir.Observable<any>;
106
+ _composeViewDriverLiveSet: LiveSet<InboxComposeView>;
107
+ _threadRowViewDriverLiveSet: LiveSet<InboxThreadRowView>;
108
+ _threadViewDriverLiveSet: LiveSet<InboxThreadView>;
109
+ _messageViewDriverLiveSet: LiveSet<InboxMessageView>;
110
+ _attachmentCardViewDriverLiveSet: LiveSet<InboxAttachmentCardView>;
111
+ _attachmentOverlayViewDriverLiveSet: LiveSet<InboxAttachmentOverlayView>;
112
+ _chatSidebarViewLiveSet: LiveSet<InboxChatSidebarView>;
113
+ _toolbarViewDriverLiveSet: LiveSet<InboxToolbarView>;
114
+ _currentRouteViewDriver:
115
+ | InboxRouteView
116
+ | InboxDummyRouteView
117
+ | InboxCustomRouteView;
118
+ _threadViewElements: WeakMap<HTMLElement, InboxThreadView> = new WeakMap();
119
+ _messageViewElements: WeakMap<HTMLElement, InboxMessageView> = new WeakMap();
120
+ _butterBarDriver = new InboxButterBarDriver();
121
+ _butterBar: ButterBar;
122
+ _pageCommunicator: InboxPageCommunicator;
123
+ _lastInteractedAttachmentCardView: ?InboxAttachmentCardView = null;
124
+ _lastInteractedAttachmentCardViewSet: Bus<any> = kefirBus();
125
+ _appSidebarView: ?InboxAppSidebarView = null;
126
+ _customRouteIDs: Set<string> = new Set();
127
+ _navMenuContainer: ?HTMLElement;
128
+ _threadIdStats: {
129
+ threadRows: {
130
+ totalThreads: Set<string>,
131
+ totalCalls: number,
132
+ threadsWithoutGmailId: Set<string>,
133
+ callsWithoutGmailId: number,
134
+ threadsWithFetch: number,
135
+ },
136
+ };
137
+
138
+ getGmailMessageIdForSyncMessageId: (
139
+ inboxMessageId: string
140
+ ) => Promise<string>;
141
+ getInboxMessageIdForInboxThreadId: (inboxThreadId: string) => Promise<string>;
142
+ getThreadIdFromMessageId: (messageId: string) => Promise<string>;
143
+
144
+ constructor(
145
+ appId: string,
146
+ LOADER_VERSION: string,
147
+ IMPL_VERSION: string,
148
+ logger: Logger,
149
+ opts: PiOpts,
150
+ envData: EnvData
151
+ ) {
152
+ (this: Driver); // interface check
153
+ customStyle();
101
154
  this._appId = appId;
102
155
  this._logger = logger;
103
156
  this._opts = opts;
104
157
  this._envData = envData;
105
- this._stopper = (0, _kefirStopper.default)();
106
- this._pageCommunicator = new _inboxPageCommunicator.default();
107
- this._page = (0, _makePageParserTree.default)(this, document);
158
+ this._stopper = kefirStopper();
159
+ this._pageCommunicator = new InboxPageCommunicator();
160
+
161
+ this._page = makePageParserTree(this, document);
108
162
  this._stopper.onValue(() => this._page.dump());
109
- this.onready = (0, _injectScript.injectScript)().then(() => {
163
+
164
+ this.onready = injectScript().then(() => {
110
165
  this._logger.setUserEmailAddress(this.getUserEmailAddress());
111
166
  });
167
+
112
168
  this._setupThreadIdStats();
169
+
113
170
  {
114
171
  if (global.localStorage) {
115
172
  // We used to not always identify the ids of messages correctly, so we
116
173
  // just drop the old cache and use a new one.
117
- global.localStorage.removeItem('inboxsdk__cached_gmail_and_inbox_message_ids');
174
+ global.localStorage.removeItem(
175
+ 'inboxsdk__cached_gmail_and_inbox_message_ids'
176
+ );
118
177
  }
119
- const gmailMessageIdForInboxMessageIdCache = new _bimapcache.default({
178
+ const gmailMessageIdForInboxMessageIdCache = new BiMapCache({
120
179
  key: 'inboxsdk__cached_gmail_and_inbox_message_ids_2',
121
- getAfromB: inboxMessageId => (0, _getGmailMessageIdForSyncMessageId.default)(this, inboxMessageId),
180
+ getAfromB: (inboxMessageId: string) =>
181
+ getGmailMessageIdForSyncMessageId(this, inboxMessageId),
122
182
  getBfromA() {
123
183
  throw new Error('should not happen');
124
- }
184
+ },
125
185
  });
126
- this.getGmailMessageIdForSyncMessageId = inboxMessageId => gmailMessageIdForInboxMessageIdCache.getAfromB(inboxMessageId);
186
+ this.getGmailMessageIdForSyncMessageId = (inboxMessageId) =>
187
+ gmailMessageIdForInboxMessageIdCache.getAfromB(inboxMessageId);
127
188
  }
189
+
128
190
  {
129
- const inboxMessageIdForInboxThreadIdCache = new _bimapcache.default({
191
+ const inboxMessageIdForInboxThreadIdCache = new BiMapCache({
130
192
  key: 'inboxsdk__cached_inbox_message_and_inbox_thread_ids',
131
- getAfromB: inboxThreadId => {
193
+ getAfromB: (inboxThreadId: string) => {
132
194
  this._threadIdStats.threadRows.threadsWithFetch += 1;
133
- return (0, _getInboxMessageIdForInboxThreadId.default)(this, inboxThreadId);
195
+ return getInboxMessageIdForInboxThreadId(this, inboxThreadId);
134
196
  },
135
197
  getBfromA() {
136
198
  throw new Error('should not happen');
137
- }
199
+ },
138
200
  });
139
- this.getInboxMessageIdForInboxThreadId = inboxThreadId => inboxMessageIdForInboxThreadIdCache.getAfromB(inboxThreadId);
201
+ this.getInboxMessageIdForInboxThreadId = (inboxThreadId) =>
202
+ inboxMessageIdForInboxThreadIdCache.getAfromB(inboxThreadId);
140
203
  }
204
+
141
205
  {
142
- const threadIdFromMessageIdCache = new _bimapcache.default({
206
+ const threadIdFromMessageIdCache = new BiMapCache({
143
207
  key: 'inboxsdk__cached_thread_and_message_ids',
144
- getAfromB: messageId => (0, _getThreadIdFromMessageId.default)(this, messageId),
208
+ getAfromB: (messageId: string) =>
209
+ getThreadIdFromMessageId(this, messageId),
145
210
  getBfromA() {
146
211
  throw new Error('should not happen');
147
- }
212
+ },
148
213
  });
149
- this.getThreadIdFromMessageId = messageId => threadIdFromMessageIdCache.getAfromB(messageId);
214
+ this.getThreadIdFromMessageId = (messageId) =>
215
+ threadIdFromMessageIdCache.getAfromB(messageId);
150
216
  }
151
- this._threadRowViewDriverLiveSet = (0, _mapWithRemoval.default)(this._page.tree.getAllByTag('collapsedThreadRow'), (node, removal) => {
152
- const el = node.getValue();
153
- const parsed = (0, _parser2.default)(el);
154
- if (parsed.errors.length) {
155
- this._logger.errorSite(new Error('parse errors (threadRow)'), {
156
- score: parsed.score,
157
- errors: parsed.errors,
158
- html: (0, _censorHTMLtree.default)(el)
217
+
218
+ this._threadRowViewDriverLiveSet = lsMapWithRemoval(
219
+ this._page.tree.getAllByTag('collapsedThreadRow'),
220
+ (node, removal) => {
221
+ const el = node.getValue();
222
+ const parsed = threadRowParser(el);
223
+ if (parsed.errors.length) {
224
+ this._logger.errorSite(new Error('parse errors (threadRow)'), {
225
+ score: parsed.score,
226
+ errors: parsed.errors,
227
+ html: censorHTMLtree(el),
228
+ });
229
+ }
230
+ const view = new InboxThreadRowView(el, this, parsed);
231
+ removal.then(() => {
232
+ view.destroy();
159
233
  });
234
+ return view;
160
235
  }
161
- const view = new _inboxThreadRowView.default(el, this, parsed);
162
- removal.then(() => {
163
- view.destroy();
164
- });
165
- return view;
166
- });
167
- this._threadViewDriverLiveSet = (0, _flatMap.default)(this._page.tree.getAllByTag('thread'), node => {
168
- const el = node.getValue();
169
- let parsed = (0, _parser.default)(el);
170
- if (parsed.errors.length) {
171
- this._logger.errorSite(new Error('parse errors (thread)'), {
172
- score: parsed.score,
173
- errors: parsed.errors,
174
- html: (0, _censorHTMLtree.default)(el)
236
+ );
237
+
238
+ this._threadViewDriverLiveSet = lsFlatMap(
239
+ this._page.tree.getAllByTag('thread'),
240
+ (node) => {
241
+ const el = node.getValue();
242
+ let parsed = threadParser(el);
243
+ if (parsed.errors.length) {
244
+ this._logger.errorSite(new Error('parse errors (thread)'), {
245
+ score: parsed.score,
246
+ errors: parsed.errors,
247
+ html: censorHTMLtree(el),
248
+ });
249
+ }
250
+ return new LiveSet({
251
+ read() {
252
+ throw new Error();
253
+ },
254
+ listen: (setValues, controller) => {
255
+ setValues(new Set());
256
+ const unsub = kefirStopper();
257
+
258
+ // If the InboxThreadView is destroyed before the element is removed,
259
+ // then make a new InboxThreadView out of the same element.
260
+ const newView = (firstRun) => {
261
+ if (!firstRun) {
262
+ parsed = threadParser(el);
263
+ if (parsed.errors.length > 0) {
264
+ this._logger.errorSite(new Error('thread reparse errors'), {
265
+ score: parsed.score,
266
+ errors: parsed.errors,
267
+ html: censorHTMLtree(el),
268
+ });
269
+ }
270
+ }
271
+ const view = new InboxThreadView(el, this, parsed);
272
+ view
273
+ .getStopper()
274
+ .takeUntilBy(unsub)
275
+ .onValue(() => {
276
+ controller.remove(view);
277
+ newView(false);
278
+ });
279
+ unsub.takeUntilBy(view.getStopper()).onValue(() => {
280
+ view.destroy();
281
+ });
282
+ controller.add(view);
283
+ };
284
+
285
+ newView(true);
286
+
287
+ return () => {
288
+ unsub.destroy();
289
+ };
290
+ },
175
291
  });
176
292
  }
177
- return new _liveSet.default({
178
- read() {
179
- throw new Error();
180
- },
181
- listen: (setValues, controller) => {
182
- setValues(new Set());
183
- const unsub = (0, _kefirStopper.default)();
184
-
185
- // If the InboxThreadView is destroyed before the element is removed,
186
- // then make a new InboxThreadView out of the same element.
187
- const newView = firstRun => {
188
- if (!firstRun) {
189
- parsed = (0, _parser.default)(el);
190
- if (parsed.errors.length > 0) {
191
- this._logger.errorSite(new Error('thread reparse errors'), {
192
- score: parsed.score,
193
- errors: parsed.errors,
194
- html: (0, _censorHTMLtree.default)(el)
195
- });
196
- }
197
- }
198
- const view = new _inboxThreadView.default(el, this, parsed);
199
- view.getStopper().takeUntilBy(unsub).onValue(() => {
200
- controller.remove(view);
201
- newView(false);
202
- });
203
- unsub.takeUntilBy(view.getStopper()).onValue(() => {
204
- view.destroy();
205
- });
206
- controller.add(view);
207
- };
208
- newView(true);
209
- return () => {
210
- unsub.destroy();
211
- };
293
+ );
294
+
295
+ this._messageViewDriverLiveSet = lsFlatMap(
296
+ this._page.tree.getAllByTag('message'),
297
+ (node) => {
298
+ const el = node.getValue();
299
+ let parsed = messageParser(el);
300
+ if (parsed.errors.length > 0) {
301
+ this._logger.errorSite(new Error('parse errors (message)'), {
302
+ score: parsed.score,
303
+ errors: parsed.errors,
304
+ html: censorHTMLtree(el),
305
+ });
212
306
  }
213
- });
214
- });
215
- this._messageViewDriverLiveSet = (0, _flatMap.default)(this._page.tree.getAllByTag('message'), node => {
216
- const el = node.getValue();
217
- let parsed = (0, _parser3.default)(el);
218
- if (parsed.errors.length > 0) {
219
- this._logger.errorSite(new Error('parse errors (message)'), {
220
- score: parsed.score,
221
- errors: parsed.errors,
222
- html: (0, _censorHTMLtree.default)(el)
307
+ if (parsed.attributes.isDraft) return LiveSet.constant(new Set());
308
+ return new LiveSet({
309
+ read() {
310
+ throw new Error();
311
+ },
312
+ listen: (setValues, controller) => {
313
+ setValues(new Set());
314
+ const unsub = kefirStopper();
315
+
316
+ // If the InboxMessageView is destroyed before the element is removed,
317
+ // then make a new InboxMessageView out of the same element. Inbox re-uses
318
+ // elements for different messages in some cases.
319
+ const newView = (firstRun) => {
320
+ if (!firstRun) {
321
+ parsed = messageParser(el);
322
+ if (parsed.errors.length > 0) {
323
+ this._logger.errorSite(new Error(`message reparse errors`), {
324
+ score: parsed.score,
325
+ errors: parsed.errors,
326
+ html: censorHTMLtree(el),
327
+ });
328
+ }
329
+ }
330
+ const view = new InboxMessageView(el, this, parsed);
331
+ view
332
+ .getStopper()
333
+ .takeUntilBy(unsub)
334
+ .onValue(() => {
335
+ controller.remove(view);
336
+ newView(false);
337
+ });
338
+ unsub.takeUntilBy(view.getStopper()).onValue(() => {
339
+ view.destroy();
340
+ });
341
+ controller.add(view);
342
+ };
343
+
344
+ newView(true);
345
+
346
+ return () => {
347
+ unsub.destroy();
348
+ };
349
+ },
223
350
  });
224
351
  }
225
- if (parsed.attributes.isDraft) return _liveSet.default.constant(new Set());
226
- return new _liveSet.default({
227
- read() {
228
- throw new Error();
229
- },
230
- listen: (setValues, controller) => {
231
- setValues(new Set());
232
- const unsub = (0, _kefirStopper.default)();
233
-
234
- // If the InboxMessageView is destroyed before the element is removed,
235
- // then make a new InboxMessageView out of the same element. Inbox re-uses
236
- // elements for different messages in some cases.
237
- const newView = firstRun => {
238
- if (!firstRun) {
239
- parsed = (0, _parser3.default)(el);
240
- if (parsed.errors.length > 0) {
241
- this._logger.errorSite(new Error(`message reparse errors`), {
242
- score: parsed.score,
243
- errors: parsed.errors,
244
- html: (0, _censorHTMLtree.default)(el)
245
- });
246
- }
247
- }
248
- const view = new _inboxMessageView.default(el, this, parsed);
249
- view.getStopper().takeUntilBy(unsub).onValue(() => {
250
- controller.remove(view);
251
- newView(false);
252
- });
253
- unsub.takeUntilBy(view.getStopper()).onValue(() => {
254
- view.destroy();
255
- });
256
- controller.add(view);
257
- };
258
- newView(true);
259
- return () => {
260
- unsub.destroy();
261
- };
352
+ );
353
+
354
+ this._attachmentCardViewDriverLiveSet = lsMapWithRemoval(
355
+ this._page.tree.getAllByTag('attachmentCard'),
356
+ (node, removal) => {
357
+ const el = node.getValue();
358
+ const parsed = attachmentCardParser(el);
359
+ if (parsed.errors.length) {
360
+ this._logger.errorSite(new Error('parse errors (attachmentCard)'), {
361
+ score: parsed.score,
362
+ errors: parsed.errors,
363
+ html: censorHTMLtree(el),
364
+ });
262
365
  }
263
- });
264
- });
265
- this._attachmentCardViewDriverLiveSet = (0, _mapWithRemoval.default)(this._page.tree.getAllByTag('attachmentCard'), (node, removal) => {
266
- const el = node.getValue();
267
- const parsed = (0, _parser4.default)(el);
268
- if (parsed.errors.length) {
269
- this._logger.errorSite(new Error('parse errors (attachmentCard)'), {
270
- score: parsed.score,
271
- errors: parsed.errors,
272
- html: (0, _censorHTMLtree.default)(el)
366
+ const view = new InboxAttachmentCardView({ element: el, parsed }, this);
367
+ removal.then(() => {
368
+ view.destroy();
273
369
  });
370
+ return view;
274
371
  }
275
- const view = new _inboxAttachmentCardView.default({
276
- element: el,
277
- parsed
278
- }, this);
279
- removal.then(() => {
280
- view.destroy();
281
- });
282
- return view;
283
- });
284
- this._attachmentOverlayViewDriverLiveSet = (0, _flatMap.default)(this._page.tree.getAllByTag('attachmentOverlay'), node => {
285
- const el = node.getValue();
286
- const parsed = (0, _parser5.default)(el);
287
- if (parsed.errors.length) {
288
- this._logger.errorSite(new Error('parse errors (attachmentOverlay)'), {
289
- score: parsed.score,
290
- errors: parsed.errors,
291
- html: (0, _censorHTMLtree.default)(el)
372
+ );
373
+
374
+ this._attachmentOverlayViewDriverLiveSet = lsFlatMap(
375
+ this._page.tree.getAllByTag('attachmentOverlay'),
376
+ (node) => {
377
+ const el = node.getValue();
378
+ const parsed = attachmentOverlayParser(el);
379
+ if (parsed.errors.length) {
380
+ this._logger.errorSite(
381
+ new Error('parse errors (attachmentOverlay)'),
382
+ {
383
+ score: parsed.score,
384
+ errors: parsed.errors,
385
+ html: censorHTMLtree(el),
386
+ }
387
+ );
388
+ }
389
+ const cardView = this.getLastInteractedAttachmentCardView();
390
+ if (!cardView) {
391
+ this._logger.error(
392
+ new Error('Encountered overlay without knowing cardView')
393
+ );
394
+ return LiveSet.constant(new Set());
395
+ }
396
+
397
+ return new LiveSet({
398
+ read() {
399
+ throw new Error();
400
+ },
401
+ listen: (setValues) => {
402
+ const view = new InboxAttachmentOverlayView(
403
+ this,
404
+ el,
405
+ parsed,
406
+ cardView
407
+ );
408
+ setValues(new Set([view]));
409
+ return () => {
410
+ view.destroy();
411
+ };
412
+ },
292
413
  });
293
414
  }
294
- const cardView = this.getLastInteractedAttachmentCardView();
295
- if (!cardView) {
296
- this._logger.error(new Error('Encountered overlay without knowing cardView'));
297
- return _liveSet.default.constant(new Set());
298
- }
299
- return new _liveSet.default({
300
- read() {
301
- throw new Error();
302
- },
303
- listen: setValues => {
304
- const view = new _inboxAttachmentOverlayView.default(this, el, parsed, cardView);
305
- setValues(new Set([view]));
306
- return () => {
307
- view.destroy();
308
- };
309
- }
310
- });
311
- });
415
+ );
312
416
  this._attachmentOverlayViewDriverLiveSet.subscribe({});
313
417
  // force activation because nothing outside of the driver is going to
314
418
  // subscribe to this, unlike some of the other livesets.
315
419
 
316
- this._composeViewDriverLiveSet = (0, _getComposeViewDriverLiveSet.default)(this, this._page.tree);
317
- this._chatSidebarViewLiveSet = (0, _mapWithRemoval.default)(this._page.tree.getAllByTag('chatSidebar'), (node, removal) => {
318
- const el = node.getValue();
319
- const parsed = (0, _parser8.default)(el);
320
- if (parsed.errors.length) {
321
- this._logger.errorSite(new Error('parse errors (chatSidebar)'), {
322
- score: parsed.score,
323
- errors: parsed.errors,
324
- html: (0, _censorHTMLtree.default)(el)
420
+ this._composeViewDriverLiveSet = getComposeViewDriverLiveSet(
421
+ this,
422
+ this._page.tree
423
+ );
424
+
425
+ this._chatSidebarViewLiveSet = lsMapWithRemoval(
426
+ this._page.tree.getAllByTag('chatSidebar'),
427
+ (node, removal) => {
428
+ const el = node.getValue();
429
+ const parsed = chatSidebarParser(el);
430
+ if (parsed.errors.length) {
431
+ this._logger.errorSite(new Error('parse errors (chatSidebar)'), {
432
+ score: parsed.score,
433
+ errors: parsed.errors,
434
+ html: censorHTMLtree(el),
435
+ });
436
+ }
437
+ const view = new InboxChatSidebarView(el, parsed);
438
+ removal.then(() => {
439
+ view.destroy();
325
440
  });
441
+ return view;
326
442
  }
327
- const view = new _inboxChatSidebarView.default(el, parsed);
328
- removal.then(() => {
329
- view.destroy();
330
- });
331
- return view;
332
- });
443
+ );
333
444
  this._chatSidebarViewLiveSet.subscribe({});
334
445
  // force activation because nothing outside of the driver is going to
335
446
  // subscribe to this, unlike some of the other livesets.
336
447
 
337
- this._routeViewDriverStream = (0, _setupRouteViewDriverStream.default)(this);
338
- this._routeViewDriverStream.takeUntilBy(this._stopper).onValue(routeViewDriver => {
339
- this._currentRouteViewDriver = routeViewDriver;
340
- });
341
- this._rowListViewDriverStream = _kefir.default.never();
342
- _kefir.default.later(30 * 1000).takeUntilBy((0, _toItemWithLifetimeStream.default)(this._page.tree.getAllByTag('appToolbarLocation'))).onValue(() => {
343
- this._logger.errorSite(new Error('Failed to find appToolbarLocation'));
344
- });
345
- (0, _toValueObservable.default)(this._page.tree.getAllByTag('searchBar')).subscribe(_ref => {
346
- let {
347
- value: node
348
- } = _ref;
349
- const el = node.getValue();
350
- const parsed = (0, _parser7.default)(el);
351
- if (parsed.errors.length) {
352
- this._logger.errorSite(new Error('parse errors (searchBar)'), {
353
- score: parsed.score,
354
- errors: parsed.errors,
355
- html: (0, _censorHTMLtree.default)(el)
356
- });
448
+ this._routeViewDriverStream = setupRouteViewDriverStream(this);
449
+ this._routeViewDriverStream
450
+ .takeUntilBy(this._stopper)
451
+ .onValue((routeViewDriver) => {
452
+ this._currentRouteViewDriver = routeViewDriver;
453
+ });
454
+
455
+ this._rowListViewDriverStream = Kefir.never();
456
+
457
+ Kefir.later(30 * 1000)
458
+ .takeUntilBy(
459
+ toItemWithLifetimeStream(
460
+ this._page.tree.getAllByTag('appToolbarLocation')
461
+ )
462
+ )
463
+ .onValue(() => {
464
+ this._logger.errorSite(new Error('Failed to find appToolbarLocation'));
465
+ });
466
+
467
+ toValueObservable(this._page.tree.getAllByTag('searchBar')).subscribe(
468
+ ({ value: node }) => {
469
+ const el = node.getValue();
470
+ const parsed = searchBarParser(el);
471
+ if (parsed.errors.length) {
472
+ this._logger.errorSite(new Error('parse errors (searchBar)'), {
473
+ score: parsed.score,
474
+ errors: parsed.errors,
475
+ html: censorHTMLtree(el),
476
+ });
477
+ }
357
478
  }
358
- });
359
- _kefir.default.later(30 * 1000).takeUntilBy((0, _toItemWithLifetimeStream.default)(this._page.tree.getAllByTag('searchBar'))).onValue(() => {
360
- this._logger.errorSite(new Error('Failed to find searchBar'));
361
- });
362
- (0, _toValueObservable.default)(this._page.tree.getAllByTag('nativeDrawer')).subscribe(_ref2 => {
363
- let {
364
- value: node
365
- } = _ref2;
366
- const el = node.getValue();
367
- const parsed = (0, _parser6.default)(el);
368
- if (parsed.errors.length) {
369
- this._logger.errorSite(new Error('parse errors (nativeDrawer)'), {
370
- score: parsed.score,
371
- errors: parsed.errors,
372
- html: (0, _censorHTMLtree.default)(el)
373
- });
479
+ );
480
+
481
+ Kefir.later(30 * 1000)
482
+ .takeUntilBy(
483
+ toItemWithLifetimeStream(this._page.tree.getAllByTag('searchBar'))
484
+ )
485
+ .onValue(() => {
486
+ this._logger.errorSite(new Error('Failed to find searchBar'));
487
+ });
488
+
489
+ toValueObservable(this._page.tree.getAllByTag('nativeDrawer')).subscribe(
490
+ ({ value: node }) => {
491
+ const el = node.getValue();
492
+ const parsed = nativeDrawerParser(el);
493
+ if (parsed.errors.length) {
494
+ this._logger.errorSite(new Error('parse errors (nativeDrawer)'), {
495
+ score: parsed.score,
496
+ errors: parsed.errors,
497
+ html: censorHTMLtree(el),
498
+ });
499
+ }
374
500
  }
375
- });
501
+ );
376
502
 
377
503
  // When a user goes from one thread to another, a new thread view is made
378
504
  // but the old thread view doesn't get destroyed until it finishes
379
505
  // animating out. We need to clear the old thread view's sidebar
380
506
  // immediately when a new thread view comes in.
381
507
  let _currentThreadView = null;
382
- this._threadViewDriverLiveSet.subscribe(changes => {
383
- changes.forEach(change => {
508
+ this._threadViewDriverLiveSet.subscribe((changes) => {
509
+ changes.forEach((change) => {
384
510
  if (change.type === 'add') {
385
511
  const threadView = change.value;
386
512
  if (_currentThreadView) {
@@ -390,38 +516,52 @@ class InboxDriver {
390
516
  }
391
517
  });
392
518
  });
393
- this._toolbarViewDriverLiveSet = (0, _merge.default)([(0, _mapWithRemoval.default)(this._page.tree.getAllByTag('listToolBar'), (node, removal) => {
394
- const el = node.getValue();
395
- const view = new _InboxToolbarView.default(el, this, null);
396
- removal.then(() => {
397
- view.destroy();
398
- });
399
- return view;
400
- }), (0, _mapWithRemoval.default)(this._threadViewDriverLiveSet, (inboxThreadView, removal) => {
401
- const el = inboxThreadView.getToolbarElement();
402
- const view = new _InboxToolbarView.default(el, this, inboxThreadView);
403
- removal.then(() => {
404
- view.destroy();
405
- });
406
- return view;
407
- })]);
519
+
520
+ this._toolbarViewDriverLiveSet = lsMerge([
521
+ lsMapWithRemoval(
522
+ this._page.tree.getAllByTag('listToolBar'),
523
+ (node, removal) => {
524
+ const el = node.getValue();
525
+ const view = new InboxToolbarView(el, this, null);
526
+ removal.then(() => {
527
+ view.destroy();
528
+ });
529
+ return view;
530
+ }
531
+ ),
532
+ lsMapWithRemoval(
533
+ this._threadViewDriverLiveSet,
534
+ (inboxThreadView, removal) => {
535
+ const el = inboxThreadView.getToolbarElement();
536
+ const view = new InboxToolbarView(el, this, inboxThreadView);
537
+ removal.then(() => {
538
+ view.destroy();
539
+ });
540
+ return view;
541
+ }
542
+ ),
543
+ ]);
408
544
  }
545
+
409
546
  _setupThreadIdStats() {
410
547
  this._resetThreadIdStats();
548
+
411
549
  setInterval(() => {
412
550
  if (this._threadIdStats.threadRows.totalCalls === 0) return;
413
- const {
414
- threadRows
415
- } = this._threadIdStats;
551
+
552
+ const { threadRows } = this._threadIdStats;
416
553
  const stats = {};
417
554
  stats.threadRows = Object.assign({}, threadRows, {
418
555
  totalThreads: threadRows.totalThreads.size,
419
- threadsWithoutGmailId: threadRows.threadsWithoutGmailId.size
556
+ threadsWithoutGmailId: threadRows.threadsWithoutGmailId.size,
420
557
  });
558
+
421
559
  this._logger.eventSdkPassive('inboxThreadIdStats', stats);
560
+
422
561
  this._resetThreadIdStats();
423
562
  }, 1000 * 60 * 60);
424
563
  }
564
+
425
565
  _resetThreadIdStats() {
426
566
  this._threadIdStats = {
427
567
  threadRows: {
@@ -429,31 +569,35 @@ class InboxDriver {
429
569
  totalCalls: 0,
430
570
  threadsWithoutGmailId: new Set(),
431
571
  callsWithoutGmailId: 0,
432
- threadsWithFetch: 0
433
- }
572
+ threadsWithFetch: 0,
573
+ },
434
574
  };
435
575
  }
436
- trackThreadRowIdCall(hasGmailId, inboxThreadId) {
576
+
577
+ trackThreadRowIdCall(hasGmailId: boolean, inboxThreadId: string) {
437
578
  this._threadIdStats.threadRows.totalCalls += 1;
438
579
  this._threadIdStats.threadRows.totalThreads.add(inboxThreadId);
580
+
439
581
  if (!hasGmailId) {
440
582
  this._threadIdStats.threadRows.callsWithoutGmailId += 1;
441
583
  this._threadIdStats.threadRows.threadsWithoutGmailId.add(inboxThreadId);
442
584
  }
443
585
  }
586
+
444
587
  destroy() {
445
588
  this._stopper.destroy();
446
589
  }
590
+
447
591
  getAppId() {
448
592
  return this._appId;
449
593
  }
450
- getOpts() {
594
+ getOpts(): PiOpts {
451
595
  return this._opts;
452
596
  }
453
- getLogger() {
597
+ getLogger(): Logger {
454
598
  return this._logger;
455
599
  }
456
- getStopper() {
600
+ getStopper(): Kefir.Observable<null> {
457
601
  return this._stopper;
458
602
  }
459
603
  getRouteViewDriverStream() {
@@ -463,321 +607,437 @@ class InboxDriver {
463
607
  return this._currentRouteViewDriver;
464
608
  }
465
609
  getRowListViewDriverStream() {
466
- return _kefir.default.never();
610
+ return Kefir.never();
467
611
  }
468
612
  getComposeViewDriverLiveSet() {
469
613
  return this._composeViewDriverLiveSet;
470
614
  }
471
615
  getComposeViewDriverStream() {
472
- return (0, _toItemWithLifetimeStream.default)(this._composeViewDriverLiveSet).map(_ref3 => {
473
- let {
474
- el
475
- } = _ref3;
476
- return el;
477
- });
616
+ return toItemWithLifetimeStream(this._composeViewDriverLiveSet).map(
617
+ ({ el }) => el
618
+ );
478
619
  }
479
620
  getThreadRowViewDriverLiveSet() {
480
621
  return this._threadRowViewDriverLiveSet;
481
622
  }
482
623
  getThreadRowViewDriverStream() {
483
- return (0, _toItemWithLifetimeStream.default)(this._threadRowViewDriverLiveSet).map(_ref4 => {
484
- let {
485
- el
486
- } = _ref4;
487
- return el;
488
- });
624
+ return toItemWithLifetimeStream(this._threadRowViewDriverLiveSet).map(
625
+ ({ el }) => el
626
+ );
489
627
  }
490
628
  getThreadViewDriverStream() {
491
- return (0, _toItemWithLifetimeStream.default)(this._threadViewDriverLiveSet).map(_ref5 => {
492
- let {
493
- el
494
- } = _ref5;
495
- return el;
496
- });
629
+ return toItemWithLifetimeStream(this._threadViewDriverLiveSet).map(
630
+ ({ el }) => el
631
+ );
497
632
  }
498
633
  getMessageViewDriverStream() {
499
- return (0, _toItemWithLifetimeStream.default)(this._messageViewDriverLiveSet).map(_ref6 => {
500
- let {
501
- el
502
- } = _ref6;
503
- return el;
504
- });
634
+ return toItemWithLifetimeStream(this._messageViewDriverLiveSet).map(
635
+ ({ el }) => el
636
+ );
505
637
  }
506
638
  getAttachmentCardViewDriverStream() {
507
- return (0, _toItemWithLifetimeStream.default)(this._attachmentCardViewDriverLiveSet).map(_ref7 => {
508
- let {
509
- el
510
- } = _ref7;
511
- return el;
512
- });
639
+ return toItemWithLifetimeStream(this._attachmentCardViewDriverLiveSet).map(
640
+ ({ el }) => el
641
+ );
513
642
  }
514
- getButterBarDriver() {
643
+ getButterBarDriver(): Object {
515
644
  return this._butterBarDriver;
516
645
  }
517
- getButterBar() {
646
+ getButterBar(): ButterBar {
518
647
  return this._butterBar;
519
648
  }
520
- setButterBar(bb) {
649
+ setButterBar(bb: ButterBar) {
521
650
  this._butterBar = bb;
522
651
  }
523
- getPageCommunicator() {
652
+ getPageCommunicator(): InboxPageCommunicator {
524
653
  return this._pageCommunicator;
525
654
  }
655
+
526
656
  getThreadViewElementsMap() {
527
657
  return this._threadViewElements;
528
658
  }
529
659
  getMessageViewElementsMap() {
530
660
  return this._messageViewElements;
531
661
  }
532
- getTagTree() {
662
+
663
+ getTagTree(): TagTree<HTMLElement> {
533
664
  return this._page.tree;
534
665
  }
535
- getCustomRouteIDs() {
666
+
667
+ getCustomRouteIDs(): Set<string> {
536
668
  return this._customRouteIDs;
537
669
  }
538
- getCurrentChatSidebarView() {
670
+
671
+ getCurrentChatSidebarView(): InboxChatSidebarView {
539
672
  const view = Array.from(this._chatSidebarViewLiveSet.values())[0];
540
673
  if (!view) throw new Error('No chat sidebar found');
541
674
  return view;
542
675
  }
543
- getAppSidebarView() {
676
+
677
+ getAppSidebarView(): InboxAppSidebarView {
544
678
  if (!this._appSidebarView) {
545
- this._appSidebarView = new _inboxAppSidebarView.default(this);
679
+ this._appSidebarView = new InboxAppSidebarView(this);
546
680
  }
547
681
  return this._appSidebarView;
548
682
  }
549
- getChatSidebarButton() {
550
- const appToolbarLocationNode = Array.from(this._page.tree.getAllByTag('appToolbarLocation').values())[0];
551
- const parsed = appToolbarLocationNode ? (0, _parser9.default)(appToolbarLocationNode.getValue()) : null;
683
+
684
+ getChatSidebarButton(): HTMLElement {
685
+ const appToolbarLocationNode = Array.from(
686
+ this._page.tree.getAllByTag('appToolbarLocation').values()
687
+ )[0];
688
+ const parsed = appToolbarLocationNode
689
+ ? appToolbarLocationParser(appToolbarLocationNode.getValue())
690
+ : null;
552
691
  const el = parsed ? parsed.elements.chatSidebarButton : null;
553
692
  if (!el) throw new Error('No chat sidebar button found');
554
693
  return el;
555
694
  }
695
+
556
696
  getLastInteractedAttachmentCardView() {
557
697
  return this._lastInteractedAttachmentCardView;
558
698
  }
559
- setLastInteractedAttachmentCardView(card) {
699
+ setLastInteractedAttachmentCardView(card: InboxAttachmentCardView) {
560
700
  this._lastInteractedAttachmentCardViewSet.emit();
561
701
  this._lastInteractedAttachmentCardView = card;
562
702
  if (card) {
563
- card.getStopper().merge((0, _fromEventTargetCapture.default)(document.body, 'click')).take(1).takeUntilBy(this._lastInteractedAttachmentCardViewSet).takeUntilBy(this._stopper).onValue(() => {
564
- this._lastInteractedAttachmentCardView = null;
565
- });
703
+ card
704
+ .getStopper()
705
+ .merge(fromEventTargetCapture((document.body: any), 'click'))
706
+ .take(1)
707
+ .takeUntilBy(this._lastInteractedAttachmentCardViewSet)
708
+ .takeUntilBy(this._stopper)
709
+ .onValue(() => {
710
+ this._lastInteractedAttachmentCardView = null;
711
+ });
566
712
  }
567
713
  }
568
- openNewComposeViewDriver() {
714
+
715
+ openNewComposeViewDriver(): Promise<InboxComposeView> {
569
716
  const composeViewDriverPromise = this.getNextComposeViewDriver();
570
- const fabButton = (0, _querySelectorOne.default)(document.body, 'nav[role=banner] ~ div[aria-expanded] button:not([tabindex="-1"])');
717
+ const fabButton = querySelectorOne(
718
+ (document.body: any),
719
+ 'nav[role=banner] ~ div[aria-expanded] button:not([tabindex="-1"])'
720
+ );
571
721
  fabButton.click();
572
722
  return composeViewDriverPromise;
573
723
  }
574
- getNextComposeViewDriver() {
575
- let timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10 * 1000;
576
- const s = _kefir.default.stream(em => {
724
+
725
+ getNextComposeViewDriver(
726
+ timeout: number = 10 * 1000
727
+ ): Promise<InboxComposeView> {
728
+ const s = Kefir.stream((em) => {
577
729
  const subscription = this._composeViewDriverLiveSet.subscribe({
578
- next: changes => {
579
- const newComposeChange = changes.filter(change => change.type === 'add')[0];
730
+ next: (changes) => {
731
+ const newComposeChange = changes.filter(
732
+ (change) => change.type === 'add'
733
+ )[0];
580
734
  if (newComposeChange) {
581
735
  // make flow happy
582
- if (newComposeChange.type !== 'add') throw new Error('should not happen');
736
+ if (newComposeChange.type !== 'add')
737
+ throw new Error('should not happen');
738
+
583
739
  em.value(newComposeChange.value);
584
740
  }
585
741
  },
586
- complete: em.end
742
+ complete: em.end,
587
743
  });
588
744
  return () => subscription.unsubscribe();
589
745
  });
590
- return s.merge(_kefir.default.later(timeout, new Error('Reached timeout while waiting for getNextComposeViewDriver'))).beforeEnd(() => new Error('Driver was shut down before a new compose was found')).flatMap(x => x instanceof Error ? _kefir.default.constantError(x) : _kefir.default.constant(x)).take(1).takeErrors(1).toPromise();
746
+
747
+ return s
748
+ .merge(
749
+ Kefir.later(
750
+ timeout,
751
+ new Error(
752
+ 'Reached timeout while waiting for getNextComposeViewDriver'
753
+ )
754
+ )
755
+ )
756
+ .beforeEnd(
757
+ () => new Error('Driver was shut down before a new compose was found')
758
+ )
759
+ .flatMap((x) =>
760
+ x instanceof Error ? Kefir.constantError(x) : Kefir.constant(x)
761
+ )
762
+ .take(1)
763
+ .takeErrors(1)
764
+ .toPromise();
591
765
  }
592
- activateShortcut(keyboardShortcutHandle, appName, appIconUrl) {
766
+
767
+ activateShortcut(
768
+ keyboardShortcutHandle: KeyboardShortcutHandle,
769
+ appName: ?string,
770
+ appIconUrl: ?string
771
+ ): void {
593
772
  // eslint-disable-next-line no-console
594
773
  console.warn('activateShortcut not implemented');
595
774
  }
596
- getUserEmailAddress() {
597
- const s = document.head.getAttribute('data-inboxsdk-user-email-address');
775
+
776
+ getGmailActionToken = once(async () => {
777
+ const response = await gmailAjax({
778
+ url: `https://mail.google.com/mail${getAccountUrlPart()}/`,
779
+ xhrFields: {
780
+ withCredentials: true,
781
+ },
782
+ canRetry: true,
783
+ });
784
+ const tokenVarMatch = response.text.match(/var GM_ACTION_TOKEN=("[^"]+")/);
785
+ if (!tokenVarMatch) {
786
+ throw new Error('Could not find GM_ACTION_TOKEN');
787
+ }
788
+ return JSON.parse(tokenVarMatch[1]);
789
+ });
790
+
791
+ getUserEmailAddress(): string {
792
+ const s = (document.head: any).getAttribute(
793
+ 'data-inboxsdk-user-email-address'
794
+ );
598
795
  if (s == null) throw new Error('should not happen');
599
796
  return s;
600
797
  }
601
- isConversationViewDisabled() {
798
+
799
+ isConversationViewDisabled(): Promise<boolean> {
602
800
  return Promise.resolve(false);
603
801
  }
604
- getUserLanguage() {
802
+
803
+ getUserLanguage(): string {
605
804
  return this._pageCommunicator.getUserLanguage();
606
805
  }
607
- getUserContact() {
806
+
807
+ getUserContact(): Contact {
608
808
  return {
609
809
  emailAddress: this.getUserEmailAddress(),
610
- name: this.getUserEmailAddress()
810
+ name: this.getUserEmailAddress(),
611
811
  };
612
812
  }
613
- getAccountSwitcherContactList() {
813
+
814
+ getAccountSwitcherContactList(): Contact[] {
614
815
  // eslint-disable-next-line no-console
615
816
  console.log('getAccountSwitcherContactList not implemented');
616
817
  return [this.getUserContact()];
617
818
  }
618
- registerThreadButton(options) {
619
- const unregister = (0, _kefirStopper.default)();
620
- const removeButtonOnUnregister = button => {
819
+
820
+ registerThreadButton(options: Object) {
821
+ const unregister = kefirStopper();
822
+
823
+ const removeButtonOnUnregister = (button) => {
621
824
  unregister.takeUntilBy(button.getStopper()).onValue(() => {
622
825
  button.destroy();
623
826
  });
624
827
  };
625
- const toolbarViewSub = (0, _toValueObservable.default)(this._toolbarViewDriverLiveSet).subscribe(_ref8 => {
626
- let {
627
- value: inboxToolbarView
628
- } = _ref8;
828
+
829
+ const toolbarViewSub = toValueObservable(
830
+ this._toolbarViewDriverLiveSet
831
+ ).subscribe(({ value: inboxToolbarView }: { value: InboxToolbarView }) => {
629
832
  if (inboxToolbarView.isForThread()) {
630
- if (!options.positions || (0, _includes.default)(options.positions, 'THREAD')) {
833
+ if (!options.positions || includes(options.positions, 'THREAD')) {
631
834
  if (options.threadSection === 'OTHER') {
632
835
  // eslint-disable-next-line no-console
633
- console.warn('registerThreadButton does not support OTHER section items in Inbox yet.');
836
+ console.warn(
837
+ 'registerThreadButton does not support OTHER section items in Inbox yet.'
838
+ );
634
839
  return;
635
840
  }
636
- removeButtonOnUnregister(inboxToolbarView.addButton({
637
- ...options,
638
- onClick: event => {
639
- options.onClick({
640
- position: 'THREAD',
641
- dropdown: event.dropdown,
642
- selectedThreadViewDrivers: [inboxToolbarView.getThreadViewDriver()],
643
- selectedThreadRowViewDrivers: []
644
- });
645
- }
646
- }));
841
+ removeButtonOnUnregister(
842
+ inboxToolbarView.addButton({
843
+ ...options,
844
+ onClick: (event) => {
845
+ options.onClick({
846
+ position: 'THREAD',
847
+ dropdown: event.dropdown,
848
+ selectedThreadViewDrivers: [
849
+ inboxToolbarView.getThreadViewDriver(),
850
+ ],
851
+ selectedThreadRowViewDrivers: [],
852
+ });
853
+ },
854
+ })
855
+ );
647
856
  }
648
857
  } else if (inboxToolbarView.isForRowList()) {
649
- if (!options.positions || (0, _includes.default)(options.positions, 'LIST')) {
858
+ if (!options.positions || includes(options.positions, 'LIST')) {
650
859
  if (options.listSection === 'OTHER') {
651
860
  // eslint-disable-next-line no-console
652
- console.warn('registerThreadButton does not support OTHER section items in Inbox yet.');
861
+ console.warn(
862
+ 'registerThreadButton does not support OTHER section items in Inbox yet.'
863
+ );
653
864
  return;
654
865
  }
655
- removeButtonOnUnregister(inboxToolbarView.addButton({
656
- ...options,
657
- onClick: event => {
658
- options.onClick({
659
- position: 'LIST',
660
- dropdown: event.dropdown,
661
- selectedThreadViewDrivers: [],
662
- selectedThreadRowViewDrivers: this.getSelectedThreadRowViewDrivers()
663
- });
664
- }
665
- }));
866
+ removeButtonOnUnregister(
867
+ inboxToolbarView.addButton({
868
+ ...options,
869
+ onClick: (event) => {
870
+ options.onClick({
871
+ position: 'LIST',
872
+ dropdown: event.dropdown,
873
+ selectedThreadViewDrivers: [],
874
+ selectedThreadRowViewDrivers:
875
+ this.getSelectedThreadRowViewDrivers(),
876
+ });
877
+ },
878
+ })
879
+ );
666
880
  }
667
881
  }
668
882
  });
669
883
  unregister.onValue(() => {
670
884
  toolbarViewSub.unsubscribe();
671
885
  });
672
- if (!options.positions || (0, _includes.default)(options.positions, 'ROW')) {
673
- const threadRowViewSub = (0, _toValueObservable.default)(this._threadRowViewDriverLiveSet).subscribe(_ref9 => {
674
- let {
675
- value: inboxThreadRowView
676
- } = _ref9;
677
- removeButtonOnUnregister(inboxThreadRowView.addToolbarButton({
678
- ...options,
679
- onClick: event => {
680
- options.onClick({
681
- position: 'ROW',
682
- dropdown: event.dropdown,
683
- selectedThreadViewDrivers: [],
684
- selectedThreadRowViewDrivers: [inboxThreadRowView]
685
- });
686
- }
687
- }));
688
- });
886
+
887
+ if (!options.positions || includes(options.positions, 'ROW')) {
888
+ const threadRowViewSub = toValueObservable(
889
+ this._threadRowViewDriverLiveSet
890
+ ).subscribe(
891
+ ({ value: inboxThreadRowView }: { value: InboxThreadRowView }) => {
892
+ removeButtonOnUnregister(
893
+ inboxThreadRowView.addToolbarButton({
894
+ ...options,
895
+ onClick: (event) => {
896
+ options.onClick({
897
+ position: 'ROW',
898
+ dropdown: event.dropdown,
899
+ selectedThreadViewDrivers: [],
900
+ selectedThreadRowViewDrivers: [inboxThreadRowView],
901
+ });
902
+ },
903
+ })
904
+ );
905
+ }
906
+ );
689
907
  unregister.onValue(() => {
690
908
  threadRowViewSub.unsubscribe();
691
909
  });
692
910
  }
911
+
693
912
  return () => {
694
913
  unregister.destroy();
695
914
  };
696
915
  }
697
- getSelectedThreadRowViewDrivers() {
698
- return Array.from(this.getThreadRowViewDriverLiveSet().values()).filter(threadRowViewDriver => threadRowViewDriver.isSelected());
916
+
917
+ getSelectedThreadRowViewDrivers(): Array<InboxThreadRowView> {
918
+ return Array.from(this.getThreadRowViewDriverLiveSet().values()).filter(
919
+ (threadRowViewDriver) => threadRowViewDriver.isSelected()
920
+ );
699
921
  }
700
- async addNavItem(appId, navItemDescriptor) {
922
+
923
+ async addNavItem(
924
+ appId: string,
925
+ navItemDescriptor: Kefir.Observable<Object>
926
+ ): Promise<any> {
701
927
  if (!this._navMenuContainer) {
702
928
  this._navMenuContainer = document.createElement('div');
703
929
  this._navMenuContainer.classList.add('inboxsdk__navItem_appContainer');
704
930
  }
705
- return (0, _addNavItem.default)(navItemDescriptor, this._page.tree.getAllByTag('leftNav'), this._navMenuContainer);
931
+
932
+ return addNavItem(
933
+ navItemDescriptor,
934
+ this._page.tree.getAllByTag('leftNav'),
935
+ (this._navMenuContainer: any)
936
+ );
706
937
  }
707
- addSupportItem(supportItemDescriptor) {}
708
- getSentMailNativeNavItem() {
938
+
939
+ addSupportItem(supportItemDescriptor: Object): Object {}
940
+
941
+ getSentMailNativeNavItem(): Promise<Object> {
709
942
  // stub, never resolve
710
943
  // console.log('getSentMailNativeNavItem not implemented');
711
944
  return new Promise((resolve, reject) => {});
712
945
  }
713
- createLink(routeID, params) {
714
- return (0, _createLink.default)(this, routeID, params);
946
+
947
+ createLink(routeID: string, params: ?RouteParams): string {
948
+ return createLink(this, routeID, params);
715
949
  }
716
- async goto(routeID, params) {
717
- (0, _gotoView.default)(this, routeID, params);
950
+
951
+ async goto(routeID: string, params: ?RouteParams): Promise<void> {
952
+ gotoView(this, routeID, params);
718
953
  }
719
- addCustomRouteID(routeID) {
954
+
955
+ addCustomRouteID(routeID: string): () => void {
720
956
  this._customRouteIDs.add(routeID);
721
- this._pageCommunicator.registerAllowedHashLinkStartTerm(routeID.split('/')[0]);
957
+ this._pageCommunicator.registerAllowedHashLinkStartTerm(
958
+ routeID.split('/')[0]
959
+ );
722
960
  return () => {
723
961
  this._customRouteIDs.delete(routeID);
724
962
  };
725
963
  }
726
- addCustomListRouteID(routeID, handler) {
964
+
965
+ addCustomListRouteID(routeID: string, handler: Function): () => void {
727
966
  // eslint-disable-next-line no-console
728
967
  console.log('addCustomListRouteID not implemented');
729
968
  return () => {};
730
969
  }
731
- showCustomRouteView(el) {
732
- let customViewBase = document.querySelector('body > .inboxsdk__custom_view');
970
+
971
+ showCustomRouteView(el: HTMLElement): void {
972
+ let customViewBase = document.querySelector(
973
+ 'body > .inboxsdk__custom_view'
974
+ );
733
975
  if (!customViewBase) {
734
- const _customViewBase = customViewBase = document.createElement('div');
976
+ const _customViewBase = (customViewBase = document.createElement('div'));
735
977
  customViewBase.className = 'inboxsdk__custom_view';
736
- const {
737
- chat,
738
- nav
739
- } = (0, _getSidebarClassnames.default)();
740
- (0, _setCss.default)('custom_view_base_margins', `
978
+
979
+ const { chat, nav } = getSidebarClassnames();
980
+
981
+ setCss(
982
+ 'custom_view_base_margins',
983
+ `
741
984
  .inboxsdk__custom_view.${nav || 'nav_sidebar'} >
742
- .${(0, _idMap.default)('custom_view_container')}.${(0, _idMap.default)('custom_view_min_margins')} {
985
+ .${idMap('custom_view_container')}.${idMap('custom_view_min_margins')} {
743
986
  margin-left: 232px;
744
987
  }
745
988
  .inboxsdk__custom_view.${chat || 'chat_sidebar'} >
746
- .${(0, _idMap.default)('custom_view_container')}.${(0, _idMap.default)('custom_view_min_margins')} {
989
+ .${idMap('custom_view_container')}.${idMap('custom_view_min_margins')} {
747
990
  margin-right: 232px;
748
991
  }
749
- `);
992
+ `
993
+ );
750
994
 
751
995
  // Mirror the nav and chat sidebar classnames onto the inboxsdk__custom_view
752
996
  // element so that if the custom_view_container element also has the centerList
753
997
  // classname, then Inbox's margin rules for centerList will apply to it.
754
- const main = (0, _querySelectorOrFail.default)(document, 'body > div[class][id][jsaction][jslog]');
755
- (0, _makeMutationObserverChunkedStream.default)(main, {
998
+ const main = querySelector(
999
+ document,
1000
+ 'body > div[class][id][jsaction][jslog]'
1001
+ );
1002
+ makeMutationObserverChunkedStream(main, {
756
1003
  attributes: true,
757
- attributeFilter: ['class']
758
- }).toProperty(() => null).onValue(() => {
759
- [chat, nav].filter(Boolean).forEach(className => {
760
- if (main.classList.contains(className)) {
761
- _customViewBase.classList.add(className);
762
- } else {
763
- _customViewBase.classList.remove(className);
764
- }
1004
+ attributeFilter: ['class'],
1005
+ })
1006
+ .toProperty(() => null)
1007
+ .onValue(() => {
1008
+ [chat, nav].filter(Boolean).forEach((className) => {
1009
+ if (main.classList.contains(className)) {
1010
+ _customViewBase.classList.add(className);
1011
+ } else {
1012
+ _customViewBase.classList.remove(className);
1013
+ }
1014
+ });
765
1015
  });
766
- });
767
- document.body.appendChild(customViewBase);
1016
+
1017
+ ((document.body: any): HTMLElement).appendChild(customViewBase);
768
1018
  }
1019
+
769
1020
  customViewBase.innerHTML = '';
770
1021
  customViewBase.appendChild(el);
771
1022
  customViewBase.style.display = '';
772
- document.body.classList.add('inboxsdk__custom_view_active');
1023
+
1024
+ ((document.body: any): HTMLElement).classList.add(
1025
+ 'inboxsdk__custom_view_active'
1026
+ );
1027
+
773
1028
  const main = document.querySelector('[id][jsaction] > div[token][class]');
774
1029
  if (main) {
775
1030
  main.style.display = 'none';
776
1031
  }
777
1032
  }
778
- showNativeRouteView() {
779
- document.body.classList.remove('inboxsdk__custom_view_active');
780
- const customViewBase = document.querySelector('body > .inboxsdk__custom_view');
1033
+
1034
+ showNativeRouteView(): void {
1035
+ ((document.body: any): HTMLElement).classList.remove(
1036
+ 'inboxsdk__custom_view_active'
1037
+ );
1038
+ const customViewBase = document.querySelector(
1039
+ 'body > .inboxsdk__custom_view'
1040
+ );
781
1041
  if (customViewBase) {
782
1042
  customViewBase.style.display = 'none';
783
1043
  customViewBase.innerHTML = '';
@@ -787,30 +1047,46 @@ class InboxDriver {
787
1047
  main.style.display = '';
788
1048
  }
789
1049
  }
790
- setShowNativeNavMarker(isNative) {
1050
+
1051
+ setShowNativeNavMarker(isNative: boolean) {
791
1052
  // stub
792
1053
  }
793
- setShowNativeAddonSidebar(isNative) {
1054
+
1055
+ setShowNativeAddonSidebar(isNative: boolean) {
794
1056
  // stub
795
1057
  }
796
- registerSearchSuggestionsProvider(handler) {
797
- (0, _registerSearchSuggestionsProvider.default)(this, handler);
1058
+
1059
+ registerSearchSuggestionsProvider(handler: Function) {
1060
+ registerSearchSuggestionsProvider(this, handler);
798
1061
  }
799
- registerSearchQueryRewriter(obj) {
1062
+
1063
+ registerSearchQueryRewriter(obj: Object) {
800
1064
  // eslint-disable-next-line no-console
801
1065
  console.log('registerSearchQueryRewriter not implemented');
802
1066
  }
803
- addToolbarButtonForApp(buttonDescriptor) {
804
- const view = new _inboxAppToolbarButtonView.default(buttonDescriptor, this._page.tree.getAllByTag('appToolbarLocation'), this._page.tree.getAllByTag('searchBar'));
1067
+
1068
+ addToolbarButtonForApp(
1069
+ buttonDescriptor: Kefir.Observable<Object>
1070
+ ): Promise<InboxAppToolbarButtonView> {
1071
+ const view = new InboxAppToolbarButtonView(
1072
+ buttonDescriptor,
1073
+ this._page.tree.getAllByTag('appToolbarLocation'),
1074
+ this._page.tree.getAllByTag('searchBar')
1075
+ );
805
1076
  return view.waitForReady();
806
1077
  }
807
- addGlobalSidebarContentPanel(buttonDescriptor) {
1078
+
1079
+ addGlobalSidebarContentPanel(
1080
+ buttonDescriptor: Kefir.Observable<Object>
1081
+ ): Promise<?Object> {
808
1082
  // stub
809
1083
  return Promise.resolve(null);
810
1084
  }
811
- isRunningInPageContext() {
1085
+
1086
+ isRunningInPageContext(): boolean {
812
1087
  return !!(global.gbar && global.gbar._CONFIG);
813
1088
  }
1089
+
814
1090
  showAppIdWarning() {
815
1091
  const topDiv = document.createElement('div');
816
1092
  topDiv.className = 'inboxsdk__appid_warning';
@@ -822,51 +1098,67 @@ class InboxDriver {
822
1098
  </div>
823
1099
  <a class="inboxsdk__appid_register" target="_blank" href="https://www.inboxsdk.com/register">Register Your App</a>
824
1100
  `;
825
- document.body.insertBefore(topDiv, document.body.firstChild);
1101
+
1102
+ ((document.body: any): HTMLElement).insertBefore(
1103
+ topDiv,
1104
+ ((document.body: any): HTMLElement).firstChild
1105
+ );
1106
+
826
1107
  const closeBtn = topDiv.querySelector('.inboxsdk__close_button');
827
1108
  if (!closeBtn) throw new Error('Should not happen');
828
- closeBtn.addEventListener('click', function (e) {
1109
+ closeBtn.addEventListener('click', function (e: MouseEvent) {
829
1110
  topDiv.remove();
830
1111
  });
831
1112
  }
832
- openDraftByMessageID(messageID) {
1113
+
1114
+ openDraftByMessageID(messageID: string): Promise<void> {
833
1115
  throw new Error('Not implemented');
834
1116
  }
835
- createMoleViewDriver(options) {
836
- return new _InboxMoleViewDriver.default(options, this);
1117
+
1118
+ createMoleViewDriver(options: Object): InboxMoleViewDriver {
1119
+ return new InboxMoleViewDriver(options, this);
837
1120
  }
838
- createModalViewDriver(options) {
839
- return new _inboxModalView.default(options);
1121
+
1122
+ createModalViewDriver(options: Object): InboxModalView {
1123
+ return new InboxModalView(options);
840
1124
  }
841
- createTopMessageBarDriver(options) {
1125
+
1126
+ createTopMessageBarDriver(options: Object): Object {
842
1127
  throw new Error('Not implemented');
843
1128
  }
844
- createDrawerViewDriver(options) {
845
- const drawerView = new _inboxDrawerView.default(options);
1129
+
1130
+ createDrawerViewDriver(options: DrawerViewOptions) {
1131
+ const drawerView = new InboxDrawerView(options);
846
1132
  // TODO if a native drawer was already open, we should close the native
847
1133
  // drawer istead of the new one.
848
1134
 
849
1135
  // If a nativeDrawer is opened while the new SDK drawer is open, then close
850
1136
  // the SDK drawer.
851
- _kefir.default.fromESObservable(this._page.tree.getAllByTag('nativeDrawer')).takeUntilBy(drawerView.getClosingStream()).onValue(changes => {
852
- for (let change of changes) {
853
- if (change.type === 'add') {
854
- drawerView.close();
855
- break;
1137
+ Kefir.fromESObservable(this._page.tree.getAllByTag('nativeDrawer'))
1138
+ .takeUntilBy(drawerView.getClosingStream())
1139
+ .onValue((changes) => {
1140
+ for (let change of changes) {
1141
+ if (change.type === 'add') {
1142
+ drawerView.close();
1143
+ break;
1144
+ }
856
1145
  }
857
- }
858
- });
1146
+ });
1147
+
859
1148
  return drawerView;
860
1149
  }
861
- createBackdrop(zIndex, target) {
862
- return new _inboxBackdrop.default(zIndex, target);
1150
+
1151
+ createBackdrop(zIndex?: number, target?: HTMLElement) {
1152
+ return new InboxBackdrop(zIndex, target);
863
1153
  }
1154
+
864
1155
  closeOpenThread() {
865
- (0, _simulateKey.default)(document.body, 27, 27);
1156
+ simulateKey((document.body: any), 27, 27);
866
1157
  }
867
- registerThreadRowViewSelectionHandler(handler) {
1158
+
1159
+ registerThreadRowViewSelectionHandler(handler: () => any): () => void {
868
1160
  return () => {};
869
1161
  }
870
1162
  }
871
- var _default = (0, _ud.defn)(module, InboxDriver);
872
- exports.default = _default;
1163
+
1164
+ export default defn(module, InboxDriver);