@inboxsdk/core 0.2.28 → 0.2.29-alpha.1

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 +62 -28
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +5 -1
  4. package/pageWorld.js.map +1 -1
  5. package/src/build/exec.d.ts +1 -0
  6. package/src/build/exec.d.ts.map +1 -0
  7. package/src/build/exec.js +26 -0
  8. package/src/build/spawn.d.ts +1 -0
  9. package/src/build/spawn.d.ts.map +1 -0
  10. package/src/build/spawn.js +17 -0
  11. package/src/common/ajax.d.ts +1 -0
  12. package/src/common/ajax.d.ts.map +1 -0
  13. package/src/common/ajax.js +90 -0
  14. package/src/common/cachebust-url.d.ts +1 -0
  15. package/src/common/cachebust-url.d.ts.map +1 -0
  16. package/src/common/cachebust-url.js +10 -0
  17. package/src/common/censorHTMLstring.d.ts +1 -0
  18. package/src/common/censorHTMLstring.d.ts.map +1 -0
  19. package/src/common/censorHTMLstring.js +37 -0
  20. package/src/common/censorHTMLtree.d.ts +1 -0
  21. package/src/common/censorHTMLtree.d.ts.map +1 -0
  22. package/src/common/censorHTMLtree.js +28 -0
  23. package/src/common/censorJSONTree.d.ts +1 -0
  24. package/src/common/censorJSONTree.d.ts.map +1 -0
  25. package/src/common/censorJSONTree.js +15 -0
  26. package/src/common/connectivity-test.d.ts +1 -0
  27. package/src/common/connectivity-test.d.ts.map +1 -0
  28. package/src/common/connectivity-test.js +21 -0
  29. package/src/common/defer.d.ts +1 -0
  30. package/src/common/defer.d.ts.map +1 -0
  31. package/src/common/defer.js +11 -0
  32. package/src/common/find-parent.d.ts +1 -0
  33. package/src/common/find-parent.d.ts.map +1 -0
  34. package/src/common/find-parent.js +10 -0
  35. package/src/common/get-extension-id.d.ts +1 -0
  36. package/src/common/get-extension-id.d.ts.map +1 -0
  37. package/src/common/get-extension-id.js +7 -0
  38. package/src/common/get-or-fail.d.ts +1 -0
  39. package/src/common/get-or-fail.d.ts.map +1 -0
  40. package/src/common/get-or-fail.js +8 -0
  41. package/src/common/get-session-id.d.ts +1 -0
  42. package/src/common/get-session-id.d.ts.map +1 -0
  43. package/src/common/get-session-id.js +14 -0
  44. package/src/common/get-stack-trace.d.ts +1 -0
  45. package/src/common/get-stack-trace.d.ts.map +1 -0
  46. package/src/common/get-stack-trace.js +6 -0
  47. package/src/common/html-to-text.d.ts +1 -0
  48. package/src/common/html-to-text.d.ts.map +1 -0
  49. package/src/common/html-to-text.js +7 -0
  50. package/src/common/isElementVisible.d.ts +1 -0
  51. package/src/common/isElementVisible.d.ts.map +1 -0
  52. package/src/common/isElementVisible.js +6 -0
  53. package/src/common/load-script.d.ts +1 -0
  54. package/src/common/load-script.d.ts.map +1 -0
  55. package/src/common/load-script.js +127 -0
  56. package/src/common/log-error.d.ts +1 -0
  57. package/src/common/log-error.d.ts.map +1 -0
  58. package/src/common/log-error.js +191 -0
  59. package/src/common/quoted-split.d.ts +1 -0
  60. package/src/common/quoted-split.d.ts.map +1 -0
  61. package/src/common/quoted-split.js +18 -0
  62. package/src/common/rate-limit-queuer.d.ts +1 -0
  63. package/src/common/rate-limit-queuer.d.ts.map +1 -0
  64. package/src/common/rate-limit-queuer.js +57 -0
  65. package/src/common/rate-limit.d.ts +1 -0
  66. package/src/common/rate-limit.d.ts.map +1 -0
  67. package/src/common/rate-limit.js +14 -0
  68. package/src/common/version.d.ts +1 -0
  69. package/src/common/version.d.ts.map +1 -0
  70. package/src/common/version.js +6 -0
  71. package/src/inboxsdk-js/check-requirements.js +7 -3
  72. package/src/inboxsdk-js/header.js +1 -0
  73. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +5 -6
  74. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +4 -3
  75. package/src/inboxsdk-js/inboxsdk-REMOTE.js +3 -1
  76. package/src/inboxsdk-js/inboxsdk-TEST.js +4 -3
  77. package/src/inboxsdk-js/inboxsdk.js +33 -39
  78. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +15 -18
  79. package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts +1 -0
  80. package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts.map +1 -0
  81. package/src/inboxsdk-js/loading/platform-implementation-loader.js +27 -0
  82. package/src/inboxsdk.d.ts +12 -27
  83. package/src/injected-js/gmail/constants.d.ts +1 -0
  84. package/src/injected-js/gmail/constants.d.ts.map +1 -0
  85. package/src/injected-js/gmail/constants.js +2 -0
  86. package/src/injected-js/gmail/modify-suggestions.d.ts +1 -0
  87. package/src/injected-js/gmail/modify-suggestions.d.ts.map +1 -0
  88. package/src/injected-js/gmail/modify-suggestions.js +106 -0
  89. package/src/injected-js/gmail/modify-suggestions.test.js +8 -9
  90. package/src/injected-js/gmail/setup-gmail-interceptor.js +340 -579
  91. package/src/injected-js/gmail/setup-gmonkey-handler.d.ts +1 -0
  92. package/src/injected-js/gmail/setup-gmonkey-handler.d.ts.map +1 -0
  93. package/src/injected-js/gmail/setup-gmonkey-handler.js +49 -0
  94. package/src/injected-js/gmail/sync-compose-processor-20220909.d.ts +1 -0
  95. package/src/injected-js/gmail/sync-compose-processor-20220909.d.ts.map +1 -0
  96. package/src/injected-js/gmail/sync-compose-processor-20220909.js +298 -0
  97. package/src/injected-js/gmail/sync-compose-processor.d.ts +1 -0
  98. package/src/injected-js/gmail/sync-compose-processor.d.ts.map +1 -0
  99. package/src/injected-js/gmail/sync-compose-processor.js +55 -0
  100. package/src/injected-js/gmail/sync-compose-request-processor.d.ts +1 -0
  101. package/src/injected-js/gmail/sync-compose-request-processor.d.ts.map +1 -0
  102. package/src/injected-js/gmail/sync-compose-request-processor.js +110 -0
  103. package/src/injected-js/gmail/sync-compose-request-processor.test.js +39 -49
  104. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +20 -33
  105. package/src/injected-js/gmail/thread-identifier/index.js +57 -93
  106. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +22 -31
  107. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +12 -28
  108. package/src/injected-js/inbox/setupAjaxInterceptor.js +64 -121
  109. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +53 -66
  110. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +20 -36
  111. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
  112. package/src/injected-js/injected-logger.d.ts +1 -0
  113. package/src/injected-js/injected-logger.d.ts.map +1 -0
  114. package/src/injected-js/injected-logger.js +50 -0
  115. package/src/injected-js/main.js +11 -24
  116. package/src/injected-js/message-metadata-holder.js +52 -82
  117. package/src/injected-js/setup-data-exposer.js +89 -148
  118. package/src/injected-js/setup-error-silencer.js +21 -21
  119. package/src/injected-js/setup-event-reemitter.js +30 -22
  120. package/src/injected-js/setupCustomViewEventAssassin.d.ts +1 -0
  121. package/src/injected-js/setupCustomViewEventAssassin.d.ts.map +1 -0
  122. package/src/injected-js/setupCustomViewEventAssassin.js +90 -0
  123. package/src/injected-js/setupInboxCustomViewLinkFixer.js +24 -29
  124. package/src/injected-js/setupPushStateListener.js +18 -11
  125. package/src/injected-js/xhr-helper.js +62 -65
  126. package/src/injected-js/xhr-proxy-factory.js +195 -445
  127. package/src/injected-js/xhr-proxy-factory.test.js +824 -991
  128. package/src/platform-implementation-js/constants/nav-item-types.d.ts +1 -0
  129. package/src/platform-implementation-js/constants/nav-item-types.d.ts.map +1 -0
  130. package/src/platform-implementation-js/constants/nav-item-types.js +19 -0
  131. package/src/platform-implementation-js/constants/router.js +22 -9
  132. package/src/platform-implementation-js/constants/toolbars.js +8 -3
  133. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
  134. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +115 -136
  135. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.d.ts +5 -0
  136. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.d.ts.map +1 -0
  137. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +21 -0
  138. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.d.ts +5 -0
  139. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.d.ts.map +1 -0
  140. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +28 -0
  141. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts +3 -2
  142. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts.map +1 -0
  143. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +98 -0
  144. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.d.ts +1 -0
  145. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.d.ts.map +1 -0
  146. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +4 -0
  147. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +13 -14
  148. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +27 -48
  149. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.d.ts +1 -0
  150. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.d.ts.map +1 -0
  151. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +8 -0
  152. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +31 -42
  153. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +30 -40
  154. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.d.ts +1 -0
  155. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.d.ts.map +1 -0
  156. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +12 -0
  157. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.d.ts +1 -0
  158. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.d.ts.map +1 -0
  159. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +33 -0
  160. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +10 -18
  161. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +21 -28
  162. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +33 -45
  163. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +31 -49
  164. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +58 -65
  165. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts +1 -0
  166. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts.map +1 -0
  167. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +4 -0
  168. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +40 -124
  169. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +17 -22
  170. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.d.ts +1 -0
  171. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.d.ts.map +1 -0
  172. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +44 -0
  173. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +10 -11
  174. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +44 -80
  175. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +19 -26
  176. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +71 -147
  177. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +91 -148
  178. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +150 -166
  179. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +70 -120
  180. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +15 -15
  181. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +44 -67
  182. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +230 -379
  183. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +121 -307
  184. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +17 -24
  185. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +41 -49
  186. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +30 -40
  187. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +28 -60
  188. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +61 -133
  189. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.d.ts +2 -0
  190. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.d.ts.map +1 -0
  191. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +83 -110
  192. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +30 -42
  193. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +52 -46
  194. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts +13 -3
  195. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +355 -683
  196. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.d.ts +1 -0
  197. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.d.ts.map +1 -0
  198. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +38 -0
  199. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.d.ts +1 -0
  200. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.d.ts.map +1 -0
  201. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +12 -0
  202. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts +4 -0
  203. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts.map +1 -0
  204. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +253 -0
  205. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.d.ts +1 -0
  206. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.d.ts.map +1 -0
  207. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +200 -0
  208. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.d.ts +1 -0
  209. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.d.ts.map +1 -0
  210. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +533 -0
  211. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.d.ts +1 -0
  212. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.d.ts.map +1 -0
  213. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +289 -0
  214. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.d.ts +1 -0
  215. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.d.ts.map +1 -0
  216. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +21 -0
  217. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +77 -93
  218. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.d.ts +1 -0
  219. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.d.ts.map +1 -0
  220. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +28 -0
  221. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.d.ts +1 -0
  222. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.d.ts.map +1 -0
  223. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +19 -0
  224. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.d.ts +39 -0
  225. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.d.ts.map +1 -0
  226. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +126 -0
  227. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +35 -82
  228. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +44 -94
  229. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +12 -19
  230. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +17 -29
  231. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +26 -26
  232. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +391 -797
  233. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +7 -9
  234. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +60 -109
  235. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +95 -135
  236. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +103 -211
  237. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +61 -61
  238. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +17 -17
  239. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +188 -541
  240. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +67 -135
  241. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +27 -49
  242. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +7 -13
  243. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +9 -22
  244. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +36 -63
  245. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.d.ts +1 -0
  246. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.d.ts.map +1 -0
  247. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +101 -0
  248. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +38 -113
  249. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.d.ts +1 -0
  250. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.d.ts.map +1 -0
  251. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +38 -0
  252. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +11 -16
  253. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +11 -17
  254. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +8 -11
  255. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +27 -47
  256. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +11 -24
  257. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +59 -111
  258. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.d.ts +1 -0
  259. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.d.ts.map +1 -0
  260. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +28 -0
  261. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +15 -14
  262. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +11 -17
  263. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +18 -24
  264. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.d.ts +1 -0
  265. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.d.ts.map +1 -0
  266. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +22 -0
  267. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +19 -23
  268. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.d.ts +1 -0
  269. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.d.ts.map +1 -0
  270. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +233 -0
  271. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +11 -19
  272. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +141 -376
  273. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +17 -28
  274. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +34 -70
  275. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.d.ts +1 -0
  276. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.d.ts.map +1 -0
  277. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +223 -0
  278. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +10 -17
  279. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.d.ts +1 -0
  280. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.d.ts.map +1 -0
  281. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +157 -0
  282. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.d.ts +1 -0
  283. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.d.ts.map +1 -0
  284. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +109 -0
  285. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +83 -137
  286. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +10 -19
  287. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +632 -1190
  288. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.d.ts +1 -0
  289. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.d.ts.map +1 -0
  290. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +5 -0
  291. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +29 -38
  292. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +327 -617
  293. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts +34 -1
  294. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts.map +1 -0
  295. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +759 -0
  296. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +31 -48
  297. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +221 -378
  298. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +104 -194
  299. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.d.ts +1 -0
  300. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.d.ts.map +1 -0
  301. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +84 -0
  302. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +382 -811
  303. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +34 -58
  304. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +330 -581
  305. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +123 -277
  306. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +15 -35
  307. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +216 -571
  308. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +152 -336
  309. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +87 -211
  310. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.d.ts +1 -0
  311. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.d.ts.map +1 -0
  312. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +33 -0
  313. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.d.ts +1 -0
  314. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.d.ts.map +1 -0
  315. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +325 -0
  316. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.d.ts +1 -0
  317. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.d.ts.map +1 -0
  318. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +58 -0
  319. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.d.ts +1 -0
  320. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.d.ts.map +1 -0
  321. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +55 -0
  322. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +10 -11
  323. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.d.ts +1 -0
  324. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.d.ts.map +1 -0
  325. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +96 -0
  326. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.d.ts +1 -0
  327. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.d.ts.map +1 -0
  328. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +30 -0
  329. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.d.ts +1 -0
  330. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.d.ts.map +1 -0
  331. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +10 -0
  332. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +20 -29
  333. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.d.ts +1 -0
  334. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.d.ts.map +1 -0
  335. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +22 -0
  336. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +41 -76
  337. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +45 -99
  338. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +76 -128
  339. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +128 -319
  340. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +45 -78
  341. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +8 -4
  342. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +36 -54
  343. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +35 -53
  344. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +13 -15
  345. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +15 -18
  346. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +14 -13
  347. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +14 -20
  348. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +14 -13
  349. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +35 -67
  350. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +16 -18
  351. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +68 -185
  352. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +28 -56
  353. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +12 -10
  354. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +16 -16
  355. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +24 -35
  356. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +37 -89
  357. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +56 -78
  358. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +26 -32
  359. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +52 -109
  360. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +7 -8
  361. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +16 -20
  362. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +15 -16
  363. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +75 -83
  364. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +531 -823
  365. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +48 -61
  366. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +9 -12
  367. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +12 -19
  368. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +24 -33
  369. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +201 -388
  370. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +249 -265
  371. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +84 -152
  372. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +55 -67
  373. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +43 -65
  374. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +31 -56
  375. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +191 -294
  376. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +32 -45
  377. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +21 -39
  378. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +153 -240
  379. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +75 -150
  380. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +20 -37
  381. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +60 -114
  382. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +47 -65
  383. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +41 -52
  384. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +27 -36
  385. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +52 -80
  386. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +465 -649
  387. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +37 -58
  388. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +14 -26
  389. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +118 -235
  390. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +10 -11
  391. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +28 -46
  392. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +131 -202
  393. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +40 -80
  394. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +35 -61
  395. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +124 -221
  396. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +125 -213
  397. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +104 -126
  398. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +36 -51
  399. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +158 -297
  400. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +21 -35
  401. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +24 -43
  402. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +39 -68
  403. package/src/platform-implementation-js/driver-common/getAccountUrlPart.d.ts +1 -0
  404. package/src/platform-implementation-js/driver-common/getAccountUrlPart.d.ts.map +1 -0
  405. package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +17 -0
  406. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +14 -19
  407. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +27 -35
  408. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.d.ts +1 -0
  409. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.d.ts.map +1 -0
  410. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +33 -0
  411. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +16 -22
  412. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.d.ts +1 -0
  413. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.d.ts.map +1 -0
  414. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +49 -0
  415. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
  416. package/src/platform-implementation-js/driver-common/gmailAjax.d.ts +1 -0
  417. package/src/platform-implementation-js/driver-common/gmailAjax.d.ts.map +1 -0
  418. package/src/platform-implementation-js/driver-common/gmailAjax.js +65 -0
  419. package/src/platform-implementation-js/driver-common/inboxAjax.js +12 -7
  420. package/src/platform-implementation-js/driver-common/render-custom-icon.d.ts +1 -0
  421. package/src/platform-implementation-js/driver-common/render-custom-icon.d.ts.map +1 -0
  422. package/src/platform-implementation-js/driver-common/render-custom-icon.js +16 -0
  423. package/src/platform-implementation-js/driver-common/requestGmailThread.js +19 -20
  424. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +197 -306
  425. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +113 -161
  426. package/src/platform-implementation-js/driver-common/update-icon.d.ts +1 -0
  427. package/src/platform-implementation-js/driver-common/update-icon.d.ts.map +1 -0
  428. package/src/platform-implementation-js/driver-common/update-icon.js +90 -0
  429. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +1 -114
  430. package/src/platform-implementation-js/driver-interfaces/driver.d.ts +5 -0
  431. package/src/platform-implementation-js/driver-interfaces/driver.js +1 -126
  432. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +4 -48
  433. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +1 -29
  434. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +1 -32
  435. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +1 -11
  436. package/src/platform-implementation-js/lib/ErrorCollector.d.ts +1 -0
  437. package/src/platform-implementation-js/lib/ErrorCollector.d.ts.map +1 -0
  438. package/src/platform-implementation-js/lib/ErrorCollector.js +47 -0
  439. package/src/platform-implementation-js/lib/Membrane.d.ts +1 -0
  440. package/src/platform-implementation-js/lib/Membrane.d.ts.map +1 -0
  441. package/src/platform-implementation-js/lib/Membrane.js +22 -0
  442. package/src/platform-implementation-js/lib/ScrollableContainByScreen.d.ts +1 -0
  443. package/src/platform-implementation-js/lib/ScrollableContainByScreen.d.ts.map +1 -0
  444. package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +30 -0
  445. package/src/platform-implementation-js/lib/array-to-lifetimes.js +43 -41
  446. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +139 -155
  447. package/src/platform-implementation-js/lib/attemptWithRetries.d.ts +1 -0
  448. package/src/platform-implementation-js/lib/attemptWithRetries.d.ts.map +1 -0
  449. package/src/platform-implementation-js/lib/attemptWithRetries.js +16 -0
  450. package/src/platform-implementation-js/lib/common-page-communicator.d.ts +1 -0
  451. package/src/platform-implementation-js/lib/common-page-communicator.d.ts.map +1 -0
  452. package/src/platform-implementation-js/lib/common-page-communicator.js +137 -0
  453. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +19 -38
  454. package/src/platform-implementation-js/lib/css-selector-escape.js +7 -3
  455. package/src/platform-implementation-js/lib/delay-asap.d.ts +1 -0
  456. package/src/platform-implementation-js/lib/delay-asap.d.ts.map +1 -0
  457. package/src/platform-implementation-js/lib/delay-asap.js +12 -0
  458. package/src/platform-implementation-js/lib/delay-idle.d.ts +1 -0
  459. package/src/platform-implementation-js/lib/delay-idle.d.ts.map +1 -0
  460. package/src/platform-implementation-js/lib/delay-idle.js +16 -0
  461. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.d.ts +1 -0
  462. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.d.ts.map +1 -0
  463. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +36 -0
  464. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +8 -11
  465. package/src/platform-implementation-js/lib/dom/generic-button-view.d.ts +1 -0
  466. package/src/platform-implementation-js/lib/dom/generic-button-view.d.ts.map +1 -0
  467. package/src/platform-implementation-js/lib/dom/generic-button-view.js +39 -0
  468. package/src/platform-implementation-js/lib/dom/get-insert-before-element.d.ts +1 -0
  469. package/src/platform-implementation-js/lib/dom/get-insert-before-element.d.ts.map +1 -0
  470. package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +39 -0
  471. package/src/platform-implementation-js/lib/dom/get-selection.js +23 -52
  472. package/src/platform-implementation-js/lib/dom/insert-element-in-order.d.ts +1 -0
  473. package/src/platform-implementation-js/lib/dom/insert-element-in-order.d.ts.map +1 -0
  474. package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +38 -0
  475. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +69 -101
  476. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +8 -10
  477. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.d.ts +1 -0
  478. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.d.ts.map +1 -0
  479. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +12 -0
  480. package/src/platform-implementation-js/lib/dom/make-element-child-stream.d.ts +1 -0
  481. package/src/platform-implementation-js/lib/dom/make-element-child-stream.d.ts.map +1 -0
  482. package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +79 -0
  483. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.d.ts +1 -0
  484. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.d.ts.map +1 -0
  485. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +28 -0
  486. package/src/platform-implementation-js/lib/dom/make-element-view-stream.d.ts +1 -0
  487. package/src/platform-implementation-js/lib/dom/make-element-view-stream.d.ts.map +1 -0
  488. package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +15 -0
  489. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.d.ts +1 -0
  490. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.d.ts.map +1 -0
  491. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +15 -0
  492. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.d.ts +1 -0
  493. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.d.ts.map +1 -0
  494. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +5 -0
  495. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +15 -17
  496. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.d.ts +1 -0
  497. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.d.ts.map +1 -0
  498. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +39 -0
  499. package/src/platform-implementation-js/lib/dom/parentNodes.d.ts +1 -0
  500. package/src/platform-implementation-js/lib/dom/parentNodes.d.ts.map +1 -0
  501. package/src/platform-implementation-js/lib/dom/parentNodes.js +8 -0
  502. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +8 -11
  503. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.d.ts +1 -0
  504. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.d.ts.map +1 -0
  505. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +6 -0
  506. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.d.ts +1 -0
  507. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.d.ts.map +1 -0
  508. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +22 -0
  509. package/src/platform-implementation-js/lib/dom/set-css.js +7 -3
  510. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +9 -11
  511. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +32 -33
  512. package/src/platform-implementation-js/lib/dom/simulate-key.d.ts +1 -0
  513. package/src/platform-implementation-js/lib/dom/simulate-key.d.ts.map +1 -0
  514. package/src/platform-implementation-js/lib/dom/simulate-key.js +46 -0
  515. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.d.ts +1 -0
  516. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.d.ts.map +1 -0
  517. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +16 -0
  518. package/src/platform-implementation-js/lib/dom/trigger-relay-event.d.ts +1 -0
  519. package/src/platform-implementation-js/lib/dom/trigger-relay-event.d.ts.map +1 -0
  520. package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +7 -0
  521. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.d.ts +1 -0
  522. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.d.ts.map +1 -0
  523. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +25 -0
  524. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +23 -26
  525. package/src/platform-implementation-js/lib/fake-window-resize.d.ts +1 -0
  526. package/src/platform-implementation-js/lib/fake-window-resize.d.ts.map +1 -0
  527. package/src/platform-implementation-js/lib/fake-window-resize.js +5 -0
  528. package/src/platform-implementation-js/lib/from-event-target-capture.d.ts +1 -0
  529. package/src/platform-implementation-js/lib/from-event-target-capture.d.ts.map +1 -0
  530. package/src/platform-implementation-js/lib/from-event-target-capture.js +12 -0
  531. package/src/platform-implementation-js/lib/fromEventsWithOptions.d.ts +1 -0
  532. package/src/platform-implementation-js/lib/fromEventsWithOptions.d.ts.map +1 -0
  533. package/src/platform-implementation-js/lib/fromEventsWithOptions.js +10 -0
  534. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +86 -149
  535. package/src/platform-implementation-js/lib/handler-registry.d.ts +1 -0
  536. package/src/platform-implementation-js/lib/handler-registry.d.ts.map +1 -0
  537. package/src/platform-implementation-js/lib/handler-registry.js +67 -0
  538. package/src/platform-implementation-js/lib/idMap.d.ts +1 -0
  539. package/src/platform-implementation-js/lib/idMap.d.ts.map +1 -0
  540. package/src/platform-implementation-js/lib/idMap.js +45 -0
  541. package/src/platform-implementation-js/lib/imageRequest.d.ts +1 -0
  542. package/src/platform-implementation-js/lib/imageRequest.d.ts.map +1 -0
  543. package/src/platform-implementation-js/lib/imageRequest.js +8 -0
  544. package/src/platform-implementation-js/lib/incrementName.d.ts +1 -0
  545. package/src/platform-implementation-js/lib/incrementName.d.ts.map +1 -0
  546. package/src/platform-implementation-js/lib/incrementName.js +7 -0
  547. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts +1 -0
  548. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts.map +1 -0
  549. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +14 -0
  550. package/src/platform-implementation-js/lib/inject-script.d.ts +1 -0
  551. package/src/platform-implementation-js/lib/inject-script.d.ts.map +1 -0
  552. package/src/platform-implementation-js/lib/inject-script.js +33 -0
  553. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +42 -57
  554. package/src/platform-implementation-js/lib/is-valid-app-id.d.ts +1 -0
  555. package/src/platform-implementation-js/lib/is-valid-app-id.d.ts.map +1 -0
  556. package/src/platform-implementation-js/lib/is-valid-app-id.js +27 -0
  557. package/src/platform-implementation-js/lib/is-valid-email.d.ts +1 -0
  558. package/src/platform-implementation-js/lib/is-valid-email.d.ts.map +1 -0
  559. package/src/platform-implementation-js/lib/is-valid-email.js +14 -0
  560. package/src/platform-implementation-js/lib/isNotNil.d.ts +1 -0
  561. package/src/platform-implementation-js/lib/isNotNil.d.ts.map +1 -0
  562. package/src/platform-implementation-js/lib/isNotNil.js +5 -0
  563. package/src/platform-implementation-js/lib/isStreakAppId.d.ts +1 -0
  564. package/src/platform-implementation-js/lib/isStreakAppId.d.ts.map +1 -0
  565. package/src/platform-implementation-js/lib/isStreakAppId.js +11 -0
  566. package/src/platform-implementation-js/lib/logger.d.ts +1 -0
  567. package/src/platform-implementation-js/lib/logger.d.ts.map +1 -0
  568. package/src/platform-implementation-js/lib/logger.js +441 -0
  569. package/src/platform-implementation-js/lib/make-revocable-function.js +19 -21
  570. package/src/platform-implementation-js/lib/make-revocable-function.test.js +20 -22
  571. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +15 -17
  572. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +9 -18
  573. package/src/platform-implementation-js/lib/persistent-queue.d.ts +1 -0
  574. package/src/platform-implementation-js/lib/persistent-queue.d.ts.map +1 -0
  575. package/src/platform-implementation-js/lib/persistent-queue.js +107 -0
  576. package/src/platform-implementation-js/lib/populateRouteID.js +8 -9
  577. package/src/platform-implementation-js/lib/populateRouteID.test.js +20 -19
  578. package/src/platform-implementation-js/lib/react/ElementContainer.js +23 -20
  579. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +10 -9
  580. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +13 -20
  581. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +13 -18
  582. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +11 -17
  583. package/src/platform-implementation-js/lib/safe-event-emitter.d.ts +1 -0
  584. package/src/platform-implementation-js/lib/safe-event-emitter.d.ts.map +1 -0
  585. package/src/platform-implementation-js/lib/safe-event-emitter.js +17 -0
  586. package/src/platform-implementation-js/lib/shared-style.js +14 -13
  587. package/src/platform-implementation-js/lib/stopper-pool.d.ts +1 -0
  588. package/src/platform-implementation-js/lib/stopper-pool.d.ts.map +1 -0
  589. package/src/platform-implementation-js/lib/stopper-pool.js +41 -0
  590. package/src/platform-implementation-js/lib/stream-wait-for.d.ts +1 -0
  591. package/src/platform-implementation-js/lib/stream-wait-for.d.ts.map +1 -0
  592. package/src/platform-implementation-js/lib/stream-wait-for.js +30 -0
  593. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +18 -17
  594. package/src/platform-implementation-js/lib/toLiveSet.js +17 -15
  595. package/src/platform-implementation-js/lib/wait-for.d.ts +2 -1
  596. package/src/platform-implementation-js/lib/wait-for.d.ts.map +1 -0
  597. package/src/platform-implementation-js/lib/wait-for.js +28 -0
  598. package/src/platform-implementation-js/lib/waitForAsync.d.ts +1 -0
  599. package/src/platform-implementation-js/lib/waitForAsync.d.ts.map +1 -0
  600. package/src/platform-implementation-js/lib/waitForAsync.js +19 -0
  601. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +6 -5
  602. package/src/platform-implementation-js/main.js +9 -24
  603. package/src/platform-implementation-js/namespaces/app-menu.d.ts +40 -0
  604. package/src/platform-implementation-js/namespaces/app-menu.d.ts.map +1 -0
  605. package/src/platform-implementation-js/namespaces/app-menu.js +19 -0
  606. package/src/platform-implementation-js/namespaces/butter-bar.d.ts +1 -0
  607. package/src/platform-implementation-js/namespaces/butter-bar.d.ts.map +1 -0
  608. package/src/platform-implementation-js/namespaces/butter-bar.js +163 -0
  609. package/src/platform-implementation-js/namespaces/compose.js +37 -60
  610. package/src/platform-implementation-js/namespaces/conversations.js +52 -124
  611. package/src/platform-implementation-js/namespaces/global.js +27 -39
  612. package/src/platform-implementation-js/namespaces/keyboard.js +29 -33
  613. package/src/platform-implementation-js/namespaces/lists.js +25 -31
  614. package/src/platform-implementation-js/namespaces/modal.js +34 -28
  615. package/src/platform-implementation-js/namespaces/nav-menu.js +30 -45
  616. package/src/platform-implementation-js/namespaces/router.js +70 -137
  617. package/src/platform-implementation-js/namespaces/search.js +19 -17
  618. package/src/platform-implementation-js/namespaces/toolbars.js +71 -117
  619. package/src/platform-implementation-js/namespaces/user.js +36 -37
  620. package/src/platform-implementation-js/namespaces/widgets.js +54 -61
  621. package/src/platform-implementation-js/platform-implementation.d.ts +2 -0
  622. package/src/platform-implementation-js/platform-implementation.js +98 -226
  623. package/src/platform-implementation-js/views/SimpleElementView.d.ts +1 -0
  624. package/src/platform-implementation-js/views/SimpleElementView.d.ts.map +1 -0
  625. package/src/platform-implementation-js/views/SimpleElementView.js +16 -0
  626. package/src/platform-implementation-js/views/app-menu-item-view.d.ts +23 -0
  627. package/src/platform-implementation-js/views/app-menu-item-view.d.ts.map +1 -0
  628. package/src/platform-implementation-js/views/app-menu-item-view.js +324 -0
  629. package/src/platform-implementation-js/views/app-toolbar-button-view.js +26 -47
  630. package/src/platform-implementation-js/views/collapsible-panel-view.d.ts +37 -0
  631. package/src/platform-implementation-js/views/collapsible-panel-view.d.ts.map +1 -0
  632. package/src/platform-implementation-js/views/collapsible-panel-view.js +167 -0
  633. package/src/platform-implementation-js/views/collapsible-section-view.js +66 -63
  634. package/src/platform-implementation-js/views/compose-button-view.d.ts +1 -0
  635. package/src/platform-implementation-js/views/compose-button-view.d.ts.map +1 -0
  636. package/src/platform-implementation-js/views/compose-button-view.js +45 -0
  637. package/src/platform-implementation-js/views/compose-view.d.ts +1 -0
  638. package/src/platform-implementation-js/views/compose-view.d.ts.map +1 -0
  639. package/src/platform-implementation-js/views/compose-view.js +312 -0
  640. package/src/platform-implementation-js/views/content-panel-view.js +28 -30
  641. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +21 -44
  642. package/src/platform-implementation-js/views/conversations/custom-message-view.js +44 -104
  643. package/src/platform-implementation-js/views/conversations/message-view.js +131 -202
  644. package/src/platform-implementation-js/views/conversations/thread-view.js +75 -127
  645. package/src/platform-implementation-js/views/keyboard-shortcut-handle.d.ts +1 -0
  646. package/src/platform-implementation-js/views/keyboard-shortcut-handle.d.ts.map +1 -0
  647. package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +14 -0
  648. package/src/platform-implementation-js/views/native-nav-item-view.js +32 -65
  649. package/src/platform-implementation-js/views/nav-item-view.d.ts +24 -0
  650. package/src/platform-implementation-js/views/nav-item-view.js +51 -115
  651. package/src/platform-implementation-js/views/route-view/custom-route-view.js +25 -20
  652. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
  653. package/src/platform-implementation-js/views/route-view/list-route-view.js +30 -52
  654. package/src/platform-implementation-js/views/route-view/route-view.js +24 -35
  655. package/src/platform-implementation-js/views/section-view.js +60 -52
  656. package/src/platform-implementation-js/views/thread-row-view.js +49 -74
  657. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.d.ts +1 -0
  658. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.d.ts.map +1 -0
  659. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +39 -0
  660. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.d.ts +1 -0
  661. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.d.ts.map +1 -0
  662. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +98 -0
  663. package/src/platform-implementation-js/widgets/buttons/dropdown-view.d.ts +1 -0
  664. package/src/platform-implementation-js/widgets/buttons/dropdown-view.d.ts.map +1 -0
  665. package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +122 -0
  666. package/src/platform-implementation-js/widgets/drawer-view.js +29 -36
  667. package/src/platform-implementation-js/widgets/modal-view.js +39 -68
  668. package/src/platform-implementation-js/widgets/mole-view.js +22 -22
  669. package/src/platform-implementation-js/widgets/top-message-bar-view.js +13 -10
@@ -1,151 +1,90 @@
1
- /* @flow */
2
-
3
- import autoHtml from 'auto-html';
4
- import t from 'transducers.js';
5
- import once from 'lodash/once';
6
- import escape from 'lodash/escape';
7
- import includes from 'lodash/includes';
8
- import constant from 'lodash/constant';
9
- import find from 'lodash/find';
10
- import asap from 'asap';
11
- import delay from 'pdelay';
12
- import * as Kefir from 'kefir';
13
- import * as ud from 'ud';
14
- import closest from 'closest-ng';
15
- import kefirBus from 'kefir-bus';
16
- import type { Bus } from 'kefir-bus';
17
- import kefirStopper from 'kefir-stopper';
18
- import type { Stopper } from 'kefir-stopper';
19
-
20
- import delayAsap from '../../../lib/delay-asap';
21
- import { simulateClick } from '../../../lib/dom/simulate-mouse-event';
22
- import simulateKey from '../../../lib/dom/simulate-key';
23
- import querySelector from '../../../lib/dom/querySelectorOrFail';
24
- import isElementVisible from '../../../../common/isElementVisible';
25
- import makeElementChildStream from '../../../lib/dom/make-element-child-stream';
26
- import {
27
- simulateDragOver,
28
- simulateDrop,
29
- simulateDragEnd,
30
- } from '../../../lib/dom/simulate-drag-and-drop';
31
- import * as GmailResponseProcessor from '../gmail-response-processor';
32
- import GmailElementGetter from '../gmail-element-getter';
33
- import setCss from '../../../lib/dom/set-css';
34
-
35
- import waitFor from '../../../lib/wait-for';
36
- import streamWaitFor from '../../../lib/stream-wait-for';
37
- import makeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
38
- import handleComposeLinkChips from '../../../lib/handle-compose-link-chips';
39
- import insertLinkChipIntoBody from '../../../lib/insert-link-chip-into-body';
40
- import addComposeNotice from './gmail-compose-view/add-compose-notice';
41
- import addStatusBar from './gmail-compose-view/add-status-bar';
42
- import insertHTMLatCursor from '../../../lib/dom/insert-html-at-cursor';
43
- import ensureGroupingIsOpen from './gmail-compose-view/ensure-grouping-is-open';
44
- import ensureAppButtonToolbarsAreClosed from './gmail-compose-view/ensure-app-button-toolbars-are-closed';
45
- import sizeFixer from './gmail-compose-view/size-fixer';
46
- import addTooltipToButton from './gmail-compose-view/add-tooltip-to-button';
47
- import addRecipientRow from './gmail-compose-view/add-recipient-row';
48
- import addButton from './gmail-compose-view/add-button';
49
- import setRecipients from './gmail-compose-view/set-recipients';
50
- import focus from './gmail-compose-view/focus';
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 _autoHtml = _interopRequireDefault(require("auto-html"));
10
+ var _transducers = _interopRequireDefault(require("transducers.js"));
11
+ var _once = _interopRequireDefault(require("lodash/once"));
12
+ var _escape = _interopRequireDefault(require("lodash/escape"));
13
+ var _includes = _interopRequireDefault(require("lodash/includes"));
14
+ var _constant = _interopRequireDefault(require("lodash/constant"));
15
+ var _find = _interopRequireDefault(require("lodash/find"));
16
+ var _asap = _interopRequireDefault(require("asap"));
17
+ var _pdelay = _interopRequireDefault(require("pdelay"));
18
+ var Kefir = _interopRequireWildcard(require("kefir"));
19
+ var ud = _interopRequireWildcard(require("ud"));
20
+ var _closestNg = _interopRequireDefault(require("closest-ng"));
21
+ var _kefirBus = _interopRequireDefault(require("kefir-bus"));
22
+ var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
23
+ var _delayAsap = _interopRequireDefault(require("../../../lib/delay-asap"));
24
+ var _simulateMouseEvent = require("../../../lib/dom/simulate-mouse-event");
25
+ var _simulateKey = _interopRequireDefault(require("../../../lib/dom/simulate-key"));
26
+ var _querySelectorOrFail = _interopRequireDefault(require("../../../lib/dom/querySelectorOrFail"));
27
+ var _isElementVisible = _interopRequireDefault(require("../../../../common/isElementVisible"));
28
+ var _makeElementChildStream = _interopRequireDefault(require("../../../lib/dom/make-element-child-stream"));
29
+ var _simulateDragAndDrop = require("../../../lib/dom/simulate-drag-and-drop");
30
+ var GmailResponseProcessor = _interopRequireWildcard(require("../gmail-response-processor"));
31
+ var _gmailElementGetter = _interopRequireDefault(require("../gmail-element-getter"));
32
+ var _setCss = _interopRequireDefault(require("../../../lib/dom/set-css"));
33
+ var _waitFor = _interopRequireDefault(require("../../../lib/wait-for"));
34
+ var _streamWaitFor = _interopRequireDefault(require("../../../lib/stream-wait-for"));
35
+ var _makeMutationObserverChunkedStream = _interopRequireDefault(require("../../../lib/dom/make-mutation-observer-chunked-stream"));
36
+ var _handleComposeLinkChips = _interopRequireDefault(require("../../../lib/handle-compose-link-chips"));
37
+ var _insertLinkChipIntoBody = _interopRequireDefault(require("../../../lib/insert-link-chip-into-body"));
38
+ var _addComposeNotice = _interopRequireDefault(require("./gmail-compose-view/add-compose-notice"));
39
+ var _addStatusBar = _interopRequireDefault(require("./gmail-compose-view/add-status-bar"));
40
+ var _insertHtmlAtCursor = _interopRequireDefault(require("../../../lib/dom/insert-html-at-cursor"));
41
+ var _ensureGroupingIsOpen = _interopRequireDefault(require("./gmail-compose-view/ensure-grouping-is-open"));
42
+ var _ensureAppButtonToolbarsAreClosed = _interopRequireDefault(require("./gmail-compose-view/ensure-app-button-toolbars-are-closed"));
43
+ var _sizeFixer = _interopRequireDefault(require("./gmail-compose-view/size-fixer"));
44
+ var _addTooltipToButton = _interopRequireDefault(require("./gmail-compose-view/add-tooltip-to-button"));
45
+ var _addRecipientRow = _interopRequireDefault(require("./gmail-compose-view/add-recipient-row"));
46
+ var _addButton = _interopRequireDefault(require("./gmail-compose-view/add-button"));
47
+ var _setRecipients = _interopRequireDefault(require("./gmail-compose-view/set-recipients"));
48
+ var _focus = _interopRequireDefault(require("./gmail-compose-view/focus"));
49
+ var _monitorSelectionRange = _interopRequireDefault(require("./gmail-compose-view/monitor-selection-range"));
50
+ var _manageButtonGrouping = _interopRequireDefault(require("./gmail-compose-view/manage-button-grouping"));
51
+ var _getSelection = require("../../../lib/dom/get-selection");
52
+ var _getMinimizedStream = _interopRequireDefault(require("./gmail-compose-view/get-minimized-stream"));
53
+ var _censorHTMLstring = _interopRequireDefault(require("../../../../common/censorHTMLstring"));
54
+ var _insertLinkIntoBody = _interopRequireDefault(require("./gmail-compose-view/insert-link-into-body"));
55
+ var _getAddressChangesStream = _interopRequireDefault(require("./gmail-compose-view/get-address-changes-stream"));
56
+ var _getBodyChangesStream = _interopRequireDefault(require("./gmail-compose-view/get-body-changes-stream"));
57
+ var _getRecipients = _interopRequireDefault(require("./gmail-compose-view/get-recipients"));
58
+ var _getResponseTypeChangesStream = _interopRequireDefault(require("./gmail-compose-view/get-response-type-changes-stream"));
59
+ var _getPresendingStream = _interopRequireDefault(require("../../../driver-common/compose/getPresendingStream"));
60
+ var _getDiscardStream = _interopRequireDefault(require("../../../driver-common/compose/getDiscardStream"));
61
+ var _updateInsertMoreAreaLeft = _interopRequireDefault(require("./gmail-compose-view/update-insert-more-area-left"));
62
+ var _setupLinkPopovers = _interopRequireDefault(require("./gmail-compose-view/setupLinkPopovers"));
63
+ var _getFormattingAreaOffsetLeft = _interopRequireDefault(require("./gmail-compose-view/get-formatting-area-offset-left"));
64
+ var _overrideEditSubject = _interopRequireDefault(require("./gmail-compose-view/override-edit-subject"));
65
+ var _detectClassicRecipientsArea = _interopRequireDefault(require("./gmail-compose-view/detectClassicRecipientsArea"));
66
+ var _censorHTMLtree = _interopRequireDefault(require("../../../../common/censorHTMLtree"));
67
+ var _pageParser = require("./gmail-compose-view/page-parser");
68
+ var _pageParserTree = _interopRequireDefault(require("page-parser-tree"));
69
+ var _tagTree = require("tag-tree");
70
+ var fromManager = _interopRequireWildcard(require("./gmail-compose-view/from-manager"));
71
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
72
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
51
73
  // import addOuterSidebar from './gmail-compose-view/add-outer-sidebar';
52
- import monitorSelectionRange from './gmail-compose-view/monitor-selection-range';
53
- import manageButtonGrouping from './gmail-compose-view/manage-button-grouping';
54
- import type { TooltipDescriptor } from '../../../views/compose-button-view';
55
- import {
56
- getSelectedHTMLInElement,
57
- getSelectedTextInElement,
58
- } from '../../../lib/dom/get-selection';
59
- import getMinimizedStream from './gmail-compose-view/get-minimized-stream';
60
- import censorHTMLstring from '../../../../common/censorHTMLstring';
61
-
62
- import insertLinkIntoBody from './gmail-compose-view/insert-link-into-body';
63
- import getAddressChangesStream from './gmail-compose-view/get-address-changes-stream';
64
- import getBodyChangesStream from './gmail-compose-view/get-body-changes-stream';
65
- import getRecipients from './gmail-compose-view/get-recipients';
66
- import getResponseTypeChangesStream from './gmail-compose-view/get-response-type-changes-stream';
67
- import getPresendingStream from '../../../driver-common/compose/getPresendingStream';
68
- import getDiscardStream from '../../../driver-common/compose/getDiscardStream';
69
- import updateInsertMoreAreaLeft from './gmail-compose-view/update-insert-more-area-left';
70
- import setupLinkPopOvers from './gmail-compose-view/setupLinkPopovers';
71
- import getFormattingAreaOffsetLeft from './gmail-compose-view/get-formatting-area-offset-left';
72
- import overrideEditSubject from './gmail-compose-view/override-edit-subject';
73
- import detectClassicRecipientsArea from './gmail-compose-view/detectClassicRecipientsArea';
74
- import censorHTMLtree from '../../../../common/censorHTMLtree';
75
- import {
76
- makePageParser,
77
- getRecipientRowElements,
78
- } from './gmail-compose-view/page-parser';
79
- import PageParserTree from 'page-parser-tree';
80
- import { TagTree } from 'tag-tree';
81
-
82
- import * as fromManager from './gmail-compose-view/from-manager';
83
-
84
- import type {
85
- ComposeNotice,
86
- ComposeViewDriver,
87
- StatusBar,
88
- } from '../../../driver-interfaces/compose-view-driver';
89
- import type Logger from '../../../lib/logger';
90
- import type GmailDriver from '../gmail-driver';
91
-
92
74
  let hasReportedMissingBody = false;
93
-
94
75
  class GmailComposeView {
95
- _element: HTMLElement;
96
- _seenBodyElement: HTMLElement;
97
- _isInlineReplyForm: boolean;
98
- _isFullscreen: boolean;
99
- _isStandalone: boolean;
100
- _emailWasSent: boolean;
101
- _driver: GmailDriver;
102
- _managedViewControllers: Array<{ destroy(): void }>;
103
- _eventStream: Bus<any>;
104
- _isTriggeringADraftSavePending: boolean;
105
- _buttonViewControllerTooltipMap: WeakMap<Object, Object>;
106
- _composeID: string;
107
- _messageIDElement: HTMLInputElement;
108
- _messageId: ?string;
109
- _finalMessageId: ?string; // Set only after the message is sent.
110
- _initialMessageId: ?string;
111
- _targetMessageID: ?string;
112
- _draftSaving: boolean;
113
- _draftIDpromise: ?Promise<?string>;
114
- _threadID: ?string;
115
- _stopper: Stopper;
116
- _lastSelectionRange: ?Range;
117
- _requestModifiers: {
118
- [key: string]: (composeParams: { body: string }) =>
119
- | { body: string }
120
- | Promise<{ body: string }>,
121
- };
122
- _isListeningToAjaxInterceptStream: boolean;
123
- _formattingArea: ?HTMLElement;
124
- _closedProgrammatically: boolean = false;
125
- _destroyed: boolean = false;
126
- _removedFromDOMStopper: Stopper;
127
- _hasSetupLinkPopOvers: boolean = false;
128
- _page: PageParserTree;
129
- tagTree: TagTree<HTMLElement>;
130
- ready: () => Kefir.Observable<GmailComposeView>;
76
+ // Set only after the message is sent.
131
77
 
132
- constructor(
133
- element: HTMLElement,
134
- xhrInterceptorStream: Kefir.Observable<*>,
135
- driver: GmailDriver,
136
- options: {
137
- isInlineReplyForm: boolean,
138
- isStandalone: boolean,
139
- }
140
- ) {
141
- (this: ComposeViewDriver);
78
+ constructor(element, xhrInterceptorStream, driver, options) {
79
+ (0, _defineProperty2.default)(this, "_closedProgrammatically", false);
80
+ (0, _defineProperty2.default)(this, "_destroyed", false);
81
+ (0, _defineProperty2.default)(this, "_hasSetupLinkPopOvers", false);
82
+ this;
142
83
  this._element = element;
143
84
  this._element.classList.add('inboxsdk__compose');
144
-
145
85
  if (options.isInlineReplyForm) {
146
86
  this._element.classList.add('inboxsdk__compose_inlineReply');
147
87
  }
148
-
149
88
  this._isInlineReplyForm = options.isInlineReplyForm;
150
89
  this._isStandalone = options.isStandalone;
151
90
  this._isFullscreen = false;
@@ -155,69 +94,64 @@ class GmailComposeView {
155
94
  this._draftSaving = false;
156
95
  this._draftIDpromise = null;
157
96
  this._driver = driver;
158
- this._stopper = kefirStopper();
97
+ this._stopper = (0, _kefirStopper.default)();
159
98
  this._managedViewControllers = [];
160
99
  this._requestModifiers = {};
161
100
  this._isListeningToAjaxInterceptStream = false;
162
-
163
- this._eventStream = kefirBus();
164
- this._removedFromDOMStopper = kefirStopper();
165
-
101
+ this._eventStream = (0, _kefirBus.default)();
102
+ this._removedFromDOMStopper = (0, _kefirStopper.default)();
166
103
  this._isTriggeringADraftSavePending = false;
167
-
168
- this._page = makePageParser(element, driver.getLogger());
104
+ this._page = (0, _pageParser.makePageParser)(element, driver.getLogger());
169
105
  this.tagTree = this._page.tree;
170
-
171
106
  let saveAndSendStream;
172
107
  if (this._driver.isUsingSyncAPI()) {
173
108
  saveAndSendStream = xhrInterceptorStream
174
- // we know _getDraftIDfromForm will work because by the time we're
175
- // getting an ajax event Gmail's JS has generated an ID and added it to the DOM.
176
- .filter((event) => event.draftID === this._getDraftIDfromForm())
177
- .map((event) => {
178
- switch (event.type) {
179
- case 'emailSending': {
180
- return { eventName: 'sending' };
109
+ // we know _getDraftIDfromForm will work because by the time we're
110
+ // getting an ajax event Gmail's JS has generated an ID and added it to the DOM.
111
+ .filter(event => event.draftID === this._getDraftIDfromForm()).map(event => {
112
+ switch (event.type) {
113
+ case 'emailSending':
114
+ {
115
+ return {
116
+ eventName: 'sending'
117
+ };
181
118
  }
182
- case 'emailSent': {
119
+ case 'emailSent':
120
+ {
183
121
  let syncThreadID = event.threadID;
184
122
  let syncMessageID = event.messageID;
185
-
186
123
  if (event.oldMessageID) this._messageId = event.oldMessageID;
187
124
  if (event.oldThreadID) this._threadID = event.oldThreadID;
188
-
189
125
  driver.removeCachedGmailMessageIdForSyncMessageId(syncMessageID);
190
126
  driver.removeCachedOldGmailThreadIdFromSyncThreadId(syncThreadID);
191
-
192
127
  return {
193
128
  eventName: 'sent',
194
129
  data: {
195
- getThreadID: once(async (): Promise<string> => {
130
+ getThreadID: (0, _once.default)(async () => {
196
131
  if (event.oldThreadID) {
197
132
  return event.oldThreadID;
198
133
  }
199
- return await driver.getOldGmailThreadIdFromSyncThreadId(
200
- syncThreadID
201
- );
134
+ return await driver.getOldGmailThreadIdFromSyncThreadId(syncThreadID);
202
135
  }),
203
- getMessageID: once(async (): Promise<string> => {
136
+ getMessageID: (0, _once.default)(async () => {
204
137
  if (event.oldMessageID) {
205
138
  return event.oldMessageID;
206
139
  }
207
- return await driver.getGmailMessageIdForSyncMessageId(
208
- syncMessageID
209
- );
210
- }),
211
- },
140
+ return await driver.getGmailMessageIdForSyncMessageId(syncMessageID);
141
+ })
142
+ }
212
143
  };
213
144
  }
214
- case 'emailSendFailed': {
215
- return { eventName: 'sendCanceled' };
145
+ case 'emailSendFailed':
146
+ {
147
+ return {
148
+ eventName: 'sendCanceled'
149
+ };
216
150
  }
217
- case 'emailDraftReceived': {
151
+ case 'emailDraftReceived':
152
+ {
218
153
  this._messageId = event.oldMessageID;
219
154
  this._threadID = event.oldThreadID;
220
-
221
155
  return {
222
156
  eventName: 'draftSaved',
223
157
  data: {
@@ -226,31 +160,32 @@ class GmailComposeView {
226
160
  },
227
161
  getMessageID() {
228
162
  return Promise.resolve(event.oldMessageID);
229
- },
230
- },
163
+ }
164
+ }
231
165
  };
232
166
  }
233
- default: {
167
+ default:
168
+ {
234
169
  return null;
235
170
  }
236
- }
237
- })
238
- .filter(Boolean);
171
+ }
172
+ }).filter(Boolean);
239
173
  } else {
240
- saveAndSendStream = xhrInterceptorStream
241
- .filter((event) => event.composeId === this.getComposeID())
242
- .map((event) => {
243
- switch (event.type) {
244
- case 'emailSending': {
245
- return [{ eventName: 'sending' }];
174
+ saveAndSendStream = xhrInterceptorStream.filter(event => event.composeId === this.getComposeID()).map(event => {
175
+ switch (event.type) {
176
+ case 'emailSending':
177
+ {
178
+ return [{
179
+ eventName: 'sending'
180
+ }];
246
181
  }
247
- case 'emailSent': {
248
- const response =
249
- GmailResponseProcessor.interpretSentEmailResponse(
250
- event.response
251
- );
252
- if (includes(['tr', 'eu'], response.messageID)) {
253
- return [{ eventName: 'sendCanceled' }];
182
+ case 'emailSent':
183
+ {
184
+ const response = GmailResponseProcessor.interpretSentEmailResponse(event.response);
185
+ if ((0, _includes.default)(['tr', 'eu'], response.messageID)) {
186
+ return [{
187
+ eventName: 'sendCanceled'
188
+ }];
254
189
  }
255
190
  this._emailWasSent = true;
256
191
  if (response.messageID) {
@@ -258,56 +193,49 @@ class GmailComposeView {
258
193
  }
259
194
  this._messageId = null;
260
195
  const data = {
261
- getThreadID: (): Promise<string> =>
262
- Promise.resolve(response.threadID),
263
- getMessageID: (): Promise<string> =>
264
- Promise.resolve(response.messageID),
196
+ getThreadID: () => Promise.resolve(response.threadID),
197
+ getMessageID: () => Promise.resolve(response.messageID)
265
198
  };
266
- ['threadID', 'gmailThreadId'].forEach((prop) => {
199
+ ['threadID', 'gmailThreadId'].forEach(prop => {
267
200
  // These properties are nonenumerable.
268
- Object.defineProperty((data: any), prop, {
201
+ Object.defineProperty(data, prop, {
269
202
  get: () => {
270
- this._driver
271
- .getLogger()
272
- .deprecationWarning(
273
- `composeView sent event.${prop}`,
274
- 'composeView sent event.getThreadID()'
275
- );
203
+ this._driver.getLogger().deprecationWarning(`composeView sent event.${prop}`, 'composeView sent event.getThreadID()');
276
204
  return response.threadID;
277
- },
205
+ }
278
206
  });
279
207
  });
280
- ['messageID', 'gmailMessageId'].forEach((prop) => {
281
- Object.defineProperty((data: any), prop, {
208
+ ['messageID', 'gmailMessageId'].forEach(prop => {
209
+ Object.defineProperty(data, prop, {
282
210
  get: () => {
283
- this._driver
284
- .getLogger()
285
- .deprecationWarning(
286
- `composeView sent event.${prop}`,
287
- 'composeView sent event.getMessageID()'
288
- );
211
+ this._driver.getLogger().deprecationWarning(`composeView sent event.${prop}`, 'composeView sent event.getMessageID()');
289
212
  return response.messageID;
290
- },
213
+ }
291
214
  });
292
215
  });
293
- return [{ eventName: 'sent', data }];
216
+ return [{
217
+ eventName: 'sent',
218
+ data
219
+ }];
294
220
  }
295
- case 'emailDraftSaveSending': {
221
+ case 'emailDraftSaveSending':
222
+ {
296
223
  this._draftSaving = true;
297
- return [{ eventName: 'draftSaving' }];
224
+ return [{
225
+ eventName: 'draftSaving'
226
+ }];
298
227
  }
299
- case 'emailDraftReceived': {
228
+ case 'emailDraftReceived':
229
+ {
300
230
  this._draftSaving = false;
301
231
  let response;
302
232
  try {
303
- response = GmailResponseProcessor.interpretSentEmailResponse(
304
- event.response
305
- );
233
+ response = GmailResponseProcessor.interpretSentEmailResponse(event.response);
306
234
  } catch (err) {
307
235
  if (this._driver.getAppId() === 'sdk_streak_21e9788951') {
308
236
  this._driver.getLogger().error(err, {
309
237
  connectionDetails: event.connectionDetails,
310
- response: event.response,
238
+ response: event.response
311
239
  });
312
240
  throw err;
313
241
  } else {
@@ -317,158 +245,102 @@ class GmailComposeView {
317
245
  if (response.messageID === 'eu') {
318
246
  return []; // save was canceled
319
247
  }
320
- const events = [{ eventName: 'draftSaved', data: response }];
248
+
249
+ const events = [{
250
+ eventName: 'draftSaved',
251
+ data: response
252
+ }];
321
253
  if (!response.messageID) {
322
- this._driver
323
- .getLogger()
324
- .error(
325
- new Error('Missing message id from emailDraftReceived')
326
- );
327
- } else if (
328
- response.messageID &&
329
- this._messageId !== response.messageID
330
- ) {
254
+ this._driver.getLogger().error(new Error('Missing message id from emailDraftReceived'));
255
+ } else if (response.messageID && this._messageId !== response.messageID) {
331
256
  if (/^[0-9a-f]+$/i.test(response.messageID)) {
332
257
  this._messageId = response.messageID;
333
258
  events.push({
334
259
  eventName: 'messageIDChange',
335
- data: this._messageId,
260
+ data: this._messageId
336
261
  });
337
262
  } else {
338
- this._driver
339
- .getLogger()
340
- .error(
341
- new Error('Invalid message id from emailDraftReceived'),
342
- {
343
- value: response.messageID,
344
- }
345
- );
263
+ this._driver.getLogger().error(new Error('Invalid message id from emailDraftReceived'), {
264
+ value: response.messageID
265
+ });
346
266
  }
347
267
  }
348
268
  return events;
349
269
  }
350
- default:
351
- return [];
352
- }
353
- })
354
- .flatten()
355
- .map((event) => {
356
- if (this._driver.getLogger().shouldTrackEverything()) {
357
- driver
358
- .getLogger()
359
- .eventSite('compose.debug.xhr', { eventName: event.eventName });
360
- }
361
-
362
- return event;
363
- });
364
- }
365
-
366
- this._eventStream.plug(
367
- Kefir.merge([
368
- saveAndSendStream,
369
-
370
- Kefir.fromEvents(this._element, 'buttonAdded').map(() => {
371
- return {
372
- eventName: 'buttonAdded',
373
- };
374
- }),
375
-
376
- Kefir.fromEvents(this._element, 'resize').map(() => ({
377
- eventName: 'resize',
378
- })),
379
-
380
- Kefir.fromEvents(this._element, 'composeFullscreenStateChanged').map(
381
- () => {
382
- this._updateComposeFullscreenState();
383
- return {
384
- eventName: 'fullscreenChanged',
385
- data: { fullscreen: this._isFullscreen },
386
- };
387
- }
388
- ),
389
- ])
390
- );
391
-
392
- Kefir.fromEvents(this._element, 'closedProgrammatically')
393
- .takeUntilBy(this._stopper)
394
- .onValue(() => {
395
- this._closedProgrammatically = true;
270
+ default:
271
+ return [];
272
+ }
273
+ }).flatten().map(event => {
274
+ if (this._driver.getLogger().shouldTrackEverything()) {
275
+ driver.getLogger().eventSite('compose.debug.xhr', {
276
+ eventName: event.eventName
277
+ });
278
+ }
279
+ return event;
396
280
  });
397
-
281
+ }
282
+ this._eventStream.plug(Kefir.merge([saveAndSendStream, Kefir.fromEvents(this._element, 'buttonAdded').map(() => {
283
+ return {
284
+ eventName: 'buttonAdded'
285
+ };
286
+ }), Kefir.fromEvents(this._element, 'resize').map(() => ({
287
+ eventName: 'resize'
288
+ })), Kefir.fromEvents(this._element, 'composeFullscreenStateChanged').map(() => {
289
+ this._updateComposeFullscreenState();
290
+ return {
291
+ eventName: 'fullscreenChanged',
292
+ data: {
293
+ fullscreen: this._isFullscreen
294
+ }
295
+ };
296
+ })]));
297
+ Kefir.fromEvents(this._element, 'closedProgrammatically').takeUntilBy(this._stopper).onValue(() => {
298
+ this._closedProgrammatically = true;
299
+ });
398
300
  this._buttonViewControllerTooltipMap = new WeakMap();
399
-
400
301
  const initialBodyElement = this.getMaybeBodyElement();
401
- this.ready = constant(
402
- (initialBodyElement
403
- ? Kefir.constant(initialBodyElement)
404
- : streamWaitFor(
405
- () => this.getMaybeBodyElement(),
406
- 3 * 60 * 1000 //timeout
407
- )
408
- )
409
- .takeUntilBy(this._stopper)
410
- .map((bodyElement) => {
411
- this._seenBodyElement = bodyElement;
412
-
413
- this._composeID = ((this._element.querySelector(
414
- 'input[name="composeid"]'
415
- ): any): HTMLInputElement).value;
416
- this._messageIDElement = (this._element.querySelector(
417
- 'input[name="draft"]'
418
- ): any);
419
- if (!this._messageIDElement) {
420
- driver
421
- .getLogger()
422
- .error(new Error('Could not find compose message id field'));
423
- // stub so other things don't fail
424
- this._messageIDElement = document.createElement('input');
425
- }
426
-
427
- this._setupIDs();
428
- this._setupStreams();
429
- this._setupConsistencyCheckers();
430
- this._updateComposeFullscreenState();
431
-
432
- {
433
- // try and handle the case where the user types in a bad email address
434
- // we get the presending event but then no other events will pass because
435
- // a modal comes up informing the user of the bad email address
436
- this.getEventStream()
437
- .filter(({ eventName }) => eventName === 'presending')
438
- .takeUntilBy(this._stopper)
439
- .onValue(() => {
440
- makeElementChildStream(((document.body: any): HTMLElement))
441
- .map((event) => event.el)
442
- .filter(
443
- (node) =>
444
- node.getAttribute &&
445
- node.getAttribute('role') === 'alertdialog'
446
- )
447
- .takeUntilBy(
448
- Kefir.merge([
449
- this.getEventStream().filter(
450
- ({ eventName }) =>
451
- eventName === 'sendCanceled' ||
452
- eventName === 'sending'
453
- ),
454
- Kefir.later(15),
455
- ])
456
- )
457
- .onValue(() => {
458
- this._eventStream.emit({ eventName: 'sendCanceled' });
459
- });
460
- });
461
- }
462
-
463
- return this;
464
- })
465
- .toProperty()
466
- );
467
-
468
- this.ready().onError((errorObject) => {
302
+ this.ready = (0, _constant.default)((initialBodyElement ? Kefir.constant(initialBodyElement) : (0, _streamWaitFor.default)(() => this.getMaybeBodyElement(), 3 * 60 * 1000 //timeout
303
+ )).takeUntilBy(this._stopper).map(bodyElement => {
304
+ this._seenBodyElement = bodyElement;
305
+ this._composeID = this._element.querySelector('input[name="composeid"]').value;
306
+ this._messageIDElement = this._element.querySelector('input[name="draft"]');
307
+ if (!this._messageIDElement) {
308
+ driver.getLogger().error(new Error('Could not find compose message id field'));
309
+ // stub so other things don't fail
310
+ this._messageIDElement = document.createElement('input');
311
+ }
312
+ this._setupIDs();
313
+ this._setupStreams();
314
+ this._setupConsistencyCheckers();
315
+ this._updateComposeFullscreenState();
316
+ {
317
+ // try and handle the case where the user types in a bad email address
318
+ // we get the presending event but then no other events will pass because
319
+ // a modal comes up informing the user of the bad email address
320
+ this.getEventStream().filter(_ref => {
321
+ let {
322
+ eventName
323
+ } = _ref;
324
+ return eventName === 'presending';
325
+ }).takeUntilBy(this._stopper).onValue(() => {
326
+ (0, _makeElementChildStream.default)(document.body).map(event => event.el).filter(node => node.getAttribute && node.getAttribute('role') === 'alertdialog').takeUntilBy(Kefir.merge([this.getEventStream().filter(_ref2 => {
327
+ let {
328
+ eventName
329
+ } = _ref2;
330
+ return eventName === 'sendCanceled' || eventName === 'sending';
331
+ }), Kefir.later(15)])).onValue(() => {
332
+ this._eventStream.emit({
333
+ eventName: 'sendCanceled'
334
+ });
335
+ });
336
+ });
337
+ }
338
+ return this;
339
+ }).toProperty());
340
+ this.ready().onError(errorObject => {
469
341
  driver.getLogger().error(errorObject, {
470
342
  hasForm: !!this.getElement().querySelector('form'),
471
- class: this.getElement().getAttribute('class'),
343
+ class: this.getElement().getAttribute('class')
472
344
  });
473
345
  });
474
346
 
@@ -477,52 +349,48 @@ class GmailComposeView {
477
349
  // send to come back, so we have to handle that difference
478
350
  if (this._driver.isUsingSyncAPI()) {
479
351
  Kefir.merge([
480
- // if we get a presending then we let the other stream wait for
481
- // sent. But if we get a sendCanceled, then a regular destroy can
482
- // pass through
483
- this._removedFromDOMStopper.filterBy(
484
- this._eventStream
485
- .filter(
486
- ({ eventName }) =>
487
- eventName === 'presending' || eventName === 'sendCanceled'
488
- )
489
- .map(({ eventName }) => eventName === 'sendCanceled')
490
- .toProperty(() => true)
491
- ),
492
-
493
- Kefir.combine([
494
- this._removedFromDOMStopper,
495
- this._eventStream.filter(({ eventName }) => eventName === 'sent'),
496
- ]),
497
- ])
498
- .take(1)
499
- // we delay asap here so that the event stream is not destroyed before listeners here the sent event
500
- .flatMap(() => delayAsap(null))
501
- .onValue(() => this._destroy());
352
+ // if we get a presending then we let the other stream wait for
353
+ // sent. But if we get a sendCanceled, then a regular destroy can
354
+ // pass through
355
+ this._removedFromDOMStopper.filterBy(this._eventStream.filter(_ref3 => {
356
+ let {
357
+ eventName
358
+ } = _ref3;
359
+ return eventName === 'presending' || eventName === 'sendCanceled';
360
+ }).map(_ref4 => {
361
+ let {
362
+ eventName
363
+ } = _ref4;
364
+ return eventName === 'sendCanceled';
365
+ }).toProperty(() => true)), Kefir.combine([this._removedFromDOMStopper, this._eventStream.filter(_ref5 => {
366
+ let {
367
+ eventName
368
+ } = _ref5;
369
+ return eventName === 'sent';
370
+ })])]).take(1)
371
+ // we delay asap here so that the event stream is not destroyed before listeners here the sent event
372
+ .flatMap(() => (0, _delayAsap.default)(null)).onValue(() => this._destroy());
502
373
  } else {
503
374
  this._removedFromDOMStopper.onValue(() => this._destroy());
504
375
  }
505
-
506
- detectClassicRecipientsArea();
376
+ (0, _detectClassicRecipientsArea.default)();
507
377
  }
508
-
509
378
  destroy() {
510
379
  // this gets called when the element gets removed from the DOM
511
380
  // however we don't want to pass through that destroy event right away
512
381
  this._removedFromDOMStopper.destroy();
513
382
  this._page.dump();
514
383
  }
515
-
516
384
  _destroy() {
517
385
  this._eventStream.emit({
518
386
  eventName: 'destroy',
519
387
  data: {
520
388
  messageID: this.getMessageID(),
521
- closedByInboxSDK: this._closedProgrammatically,
522
- },
389
+ closedByInboxSDK: this._closedProgrammatically
390
+ }
523
391
  });
524
392
  this._eventStream.end();
525
- this._managedViewControllers.forEach((vc) => {
393
+ this._managedViewControllers.forEach(vc => {
526
394
  vc.destroy();
527
395
  });
528
396
  this._requestModifiers = {};
@@ -530,155 +398,103 @@ class GmailComposeView {
530
398
  this._stopper.destroy();
531
399
  this._destroyed = true;
532
400
  }
533
-
534
- getStopper(): Kefir.Observable<null> {
401
+ getStopper() {
535
402
  return this._stopper;
536
403
  }
537
-
538
- getEventStream(): Kefir.Observable<Object> {
404
+ getEventStream() {
539
405
  return this._eventStream;
540
406
  }
541
-
542
- getGmailDriver(): GmailDriver {
407
+ getGmailDriver() {
543
408
  return this._driver;
544
409
  }
545
-
546
- isDestroyed(): boolean {
410
+ isDestroyed() {
547
411
  return this._destroyed;
548
412
  }
549
-
550
413
  _setupStreams() {
551
- this._eventStream.plug(getAddressChangesStream(this));
552
- this._eventStream.plug(getBodyChangesStream(this));
553
- this._eventStream.plug(getResponseTypeChangesStream(this));
554
- this._eventStream.plug(
555
- getPresendingStream({
556
- element: this.getElement(),
557
- sendButton: this.getSendButton(),
558
- sendAndArchive: this.getSendAndArchiveButton(),
559
- })
560
- );
561
-
414
+ this._eventStream.plug((0, _getAddressChangesStream.default)(this));
415
+ this._eventStream.plug((0, _getBodyChangesStream.default)(this));
416
+ this._eventStream.plug((0, _getResponseTypeChangesStream.default)(this));
417
+ this._eventStream.plug((0, _getPresendingStream.default)({
418
+ element: this.getElement(),
419
+ sendButton: this.getSendButton(),
420
+ sendAndArchive: this.getSendAndArchiveButton()
421
+ }));
562
422
  let discardButton;
563
423
  try {
564
424
  discardButton = this.getDiscardButton();
565
425
  } catch (err) {
566
426
  // handle failures of this.getDiscardButton()
567
- this._driver
568
- .getLogger()
569
- .errorSite(new Error('Failed to find discard button'), {
570
- html: censorHTMLstring(this._element.outerHTML),
571
- });
427
+ this._driver.getLogger().errorSite(new Error('Failed to find discard button'), {
428
+ html: (0, _censorHTMLstring.default)(this._element.outerHTML)
429
+ });
572
430
  }
573
431
  if (discardButton) {
574
- this._eventStream.plug(
575
- getDiscardStream({
576
- element: this.getElement(),
577
- discardButton,
578
- })
579
- );
432
+ this._eventStream.plug((0, _getDiscardStream.default)({
433
+ element: this.getElement(),
434
+ discardButton
435
+ }));
580
436
  }
581
-
582
- this._eventStream.plug(
583
- Kefir.fromEvents(this.getElement(), 'inboxSDKsendCanceled').map(() => ({
584
- eventName: 'sendCanceled',
585
- }))
586
- );
587
-
588
- this._eventStream.plug(
589
- Kefir.fromEvents(this.getElement(), 'inboxSDKdiscardCanceled').map(
590
- () => ({ eventName: 'discardCanceled' })
591
- )
592
- );
593
-
594
- this._eventStream.plug(
595
- Kefir.later(10)
596
- .flatMap(() => getMinimizedStream(this))
597
- .changes()
598
- .map((minimized) => ({
599
- eventName: minimized ? 'minimized' : 'restored',
600
- }))
601
- );
602
-
437
+ this._eventStream.plug(Kefir.fromEvents(this.getElement(), 'inboxSDKsendCanceled').map(() => ({
438
+ eventName: 'sendCanceled'
439
+ })));
440
+ this._eventStream.plug(Kefir.fromEvents(this.getElement(), 'inboxSDKdiscardCanceled').map(() => ({
441
+ eventName: 'discardCanceled'
442
+ })));
443
+ this._eventStream.plug(Kefir.later(10).flatMap(() => (0, _getMinimizedStream.default)(this)).changes().map(minimized => ({
444
+ eventName: minimized ? 'minimized' : 'restored'
445
+ })));
603
446
  if (!this._driver.isUsingSyncAPI()) {
604
- makeMutationObserverChunkedStream(this._messageIDElement, {
447
+ (0, _makeMutationObserverChunkedStream.default)(this._messageIDElement, {
605
448
  attributes: true,
606
- attributeFilter: ['value'],
607
- })
608
- .takeUntilBy(
609
- this._eventStream.filter(() => false).beforeEnd(() => null)
610
- )
611
- .map(() => this._getMessageIDfromForm())
612
- .filter(
613
- (messageID) =>
614
- messageID && !this._emailWasSent && this._messageId !== messageID
615
- )
616
- .onValue((messageID) => {
617
- this._messageId = messageID;
618
- this._eventStream.emit({
619
- eventName: 'messageIDChange',
620
- data: this._messageId,
621
- });
449
+ attributeFilter: ['value']
450
+ }).takeUntilBy(this._eventStream.filter(() => false).beforeEnd(() => null)).map(() => this._getMessageIDfromForm()).filter(messageID => messageID && !this._emailWasSent && this._messageId !== messageID).onValue(messageID => {
451
+ this._messageId = messageID;
452
+ this._eventStream.emit({
453
+ eventName: 'messageIDChange',
454
+ data: this._messageId
622
455
  });
456
+ });
623
457
  }
624
458
  }
625
-
626
459
  _setupConsistencyCheckers() {
627
460
  try {
628
- handleComposeLinkChips(this);
629
- monitorSelectionRange(this);
630
- manageButtonGrouping(this);
631
- sizeFixer(this._driver, this);
461
+ (0, _handleComposeLinkChips.default)(this);
462
+ (0, _monitorSelectionRange.default)(this);
463
+ (0, _manageButtonGrouping.default)(this);
464
+ (0, _sizeFixer.default)(this._driver, this);
632
465
  } catch (err) {
633
466
  this._driver.getLogger().error(err);
634
467
  }
635
468
  }
636
-
637
469
  _setupIDs() {
638
470
  if (this._driver.isUsingSyncAPI()) {
639
471
  const syncTargetMessageID = this._getTargetMessageID();
640
472
  if (syncTargetMessageID) {
641
- this._driver
642
- .getGmailMessageIdForSyncMessageId(syncTargetMessageID)
643
- .then((gmailMessageId) => (this._targetMessageID = gmailMessageId));
473
+ this._driver.getGmailMessageIdForSyncMessageId(syncTargetMessageID).then(gmailMessageId => this._targetMessageID = gmailMessageId);
644
474
  }
645
-
646
475
  const syncMessageId = this._getMessageIDfromForm();
647
476
  if (syncMessageId) {
648
- this._driver
649
- .getGmailMessageIdForSyncDraftId(syncMessageId)
650
- .then((gmailMessageId) => {
651
- this._initialMessageId = gmailMessageId;
652
- this._messageId = gmailMessageId;
653
- })
654
- .catch(() => {
655
- //do nothing because this means the message hasn't been saved yet
656
- });
657
-
477
+ this._driver.getGmailMessageIdForSyncDraftId(syncMessageId).then(gmailMessageId => {
478
+ this._initialMessageId = gmailMessageId;
479
+ this._messageId = gmailMessageId;
480
+ }).catch(() => {
481
+ //do nothing because this means the message hasn't been saved yet
482
+ });
658
483
  this._driver.reportRecentSyncDraftId(syncMessageId);
659
484
  this._stopper.onValue(() => {
660
485
  this._driver.reportDraftClosed(syncMessageId);
661
486
  });
662
487
  } else {
663
- this._driver
664
- .getLogger()
665
- .error(new Error('Draft is missing sync draft id'));
488
+ this._driver.getLogger().error(new Error('Draft is missing sync draft id'));
666
489
  }
667
-
668
- const legacyThreadIdElement: ?HTMLInputElement =
669
- (this._element.querySelector('input[name="lts"]'): any);
670
- if (
671
- legacyThreadIdElement &&
672
- typeof legacyThreadIdElement.value === 'string'
673
- )
674
- this._threadID = legacyThreadIdElement.value;
490
+ const legacyThreadIdElement = this._element.querySelector('input[name="lts"]');
491
+ if (legacyThreadIdElement && typeof legacyThreadIdElement.value === 'string') this._threadID = legacyThreadIdElement.value;
675
492
  } else {
676
493
  this._targetMessageID = this._getTargetMessageID();
677
494
  this._messageId = this._initialMessageId = this._getMessageIDfromForm();
678
495
  this._threadID = this._getThreadID();
679
496
  }
680
497
  }
681
-
682
498
  _updateComposeFullscreenState() {
683
499
  if (this._isInlineReplyForm) {
684
500
  this._isFullscreen = false;
@@ -686,8 +502,7 @@ class GmailComposeView {
686
502
  if (this._isStandalone) {
687
503
  this._isFullscreen = true;
688
504
  } else {
689
- const fullScreenContainer =
690
- GmailElementGetter.getFullscreenComposeWindowContainer();
505
+ const fullScreenContainer = _gmailElementGetter.default.getFullscreenComposeWindowContainer();
691
506
  if (!fullScreenContainer) {
692
507
  this._isFullscreen = false;
693
508
  } else {
@@ -696,465 +511,305 @@ class GmailComposeView {
696
511
  }
697
512
  }
698
513
  }
699
-
700
514
  focus() {
701
- focus(this);
515
+ (0, _focus.default)(this);
702
516
  }
703
-
704
- insertBodyTextAtCursor(text: string): ?HTMLElement {
705
- return this.insertBodyHTMLAtCursor(escape(text).replace(/\n/g, '<br>'));
517
+ insertBodyTextAtCursor(text) {
518
+ return this.insertBodyHTMLAtCursor((0, _escape.default)(text).replace(/\n/g, '<br>'));
706
519
  }
707
-
708
- insertBodyHTMLAtCursor(html: string): ?HTMLElement {
709
- var retVal = insertHTMLatCursor(
710
- this.getBodyElement(),
711
- html,
712
- this.getLastSelectionRange()
713
- );
520
+ insertBodyHTMLAtCursor(html) {
521
+ var retVal = (0, _insertHtmlAtCursor.default)(this.getBodyElement(), html, this.getLastSelectionRange());
714
522
  this._triggerDraftSave();
715
523
 
716
524
  // sometimes the html inserted can be quite large, so we need ot make sure that GMail resizes the compose window
717
525
  // triggering an enter press forces Gmail to resize compose
718
- simulateKey(this.getBodyElement(), 13, 13);
719
-
526
+ (0, _simulateKey.default)(this.getBodyElement(), 13, 13);
720
527
  return retVal;
721
528
  }
722
-
723
- insertLinkIntoBody(text: string, href: string): ?HTMLElement {
724
- var retVal = insertLinkIntoBody(this, text, href);
725
-
529
+ insertLinkIntoBody(text, href) {
530
+ var retVal = (0, _insertLinkIntoBody.default)(this, text, href);
726
531
  this._triggerDraftSave();
727
532
  return retVal;
728
533
  }
729
-
730
- insertLinkChipIntoBody(options: {
731
- iconUrl?: string,
732
- url: string,
733
- text: string,
734
- }): HTMLElement {
735
- var retVal = insertLinkChipIntoBody(this, options);
534
+ insertLinkChipIntoBody(options) {
535
+ var retVal = (0, _insertLinkChipIntoBody.default)(this, options);
736
536
  this._triggerDraftSave();
737
537
  return retVal;
738
538
  }
739
-
740
- setSubject(text: string) {
741
- (this._element.querySelector('input[name=subjectbox]'): any).value = text;
742
-
539
+ setSubject(text) {
540
+ this._element.querySelector('input[name=subjectbox]').value = text;
743
541
  this._triggerDraftSave();
744
542
  }
745
-
746
- setBodyHTML(html: string) {
543
+ setBodyHTML(html) {
747
544
  this.getBodyElement().innerHTML = html;
748
-
749
545
  this._triggerDraftSave();
750
546
  }
751
-
752
- setBodyText(text: string) {
547
+ setBodyText(text) {
753
548
  this.getBodyElement().textContent = text;
754
-
755
549
  this._triggerDraftSave();
756
550
  }
757
-
758
- setToRecipients(emails: string[]) {
759
- setRecipients(this, 'to', emails);
760
-
551
+ setToRecipients(emails) {
552
+ (0, _setRecipients.default)(this, 'to', emails);
761
553
  this._triggerDraftSave();
762
554
  }
763
-
764
- setCcRecipients(emails: string[]) {
765
- setRecipients(this, 'cc', emails);
766
-
555
+ setCcRecipients(emails) {
556
+ (0, _setRecipients.default)(this, 'cc', emails);
767
557
  this._triggerDraftSave();
768
558
  }
769
-
770
- setBccRecipients(emails: string[]) {
771
- setRecipients(this, 'bcc', emails);
772
-
559
+ setBccRecipients(emails) {
560
+ (0, _setRecipients.default)(this, 'bcc', emails);
773
561
  this._triggerDraftSave();
774
562
  }
775
-
776
- addRecipientRow(options: Kefir.Observable<?Object>): () => void {
777
- return addRecipientRow(this, options);
563
+ addRecipientRow(options) {
564
+ return (0, _addRecipientRow.default)(this, options);
778
565
  }
779
-
780
- forceRecipientRowsOpen(): () => void {
566
+ forceRecipientRowsOpen() {
781
567
  this._element.classList.add('inboxsdk__compose_forceRecipientsOpen');
782
-
783
568
  return () => {
784
569
  this._element.classList.remove('inboxsdk__compose_forceRecipientsOpen');
785
570
  };
786
571
  }
787
-
788
- hideNativeRecipientRows(): () => void {
789
- const nativeRecipientRows = getRecipientRowElements(this._element);
790
-
791
- nativeRecipientRows.forEach((row) => {
572
+ hideNativeRecipientRows() {
573
+ const nativeRecipientRows = (0, _pageParser.getRecipientRowElements)(this._element);
574
+ nativeRecipientRows.forEach(row => {
792
575
  row.classList.add('inboxsdk__compose_forceRecipientRowHidden');
793
576
  });
794
-
795
577
  return () => {
796
- nativeRecipientRows.forEach((row) => {
578
+ nativeRecipientRows.forEach(row => {
797
579
  row.classList.remove('inboxsdk__compose_forceRecipientRowHidden');
798
580
  });
799
581
  };
800
582
  }
801
-
802
- hideRecipientArea(): () => void {
583
+ hideRecipientArea() {
803
584
  this._element.classList.add('inboxsdk__compose_hideRecipientArea');
804
-
805
585
  return () => {
806
586
  this._element.classList.remove('inboxsdk__compose_hideRecipientArea');
807
587
  };
808
588
  }
809
-
810
589
  getFromContact() {
811
590
  return fromManager.getFromContact(this._driver, this);
812
591
  }
813
-
814
592
  getFromContactChoices() {
815
593
  return fromManager.getFromContactChoices(this._driver, this);
816
594
  }
817
-
818
- setFromEmail(email: string) {
595
+ setFromEmail(email) {
819
596
  fromManager.setFromEmail(this._driver, this, email);
820
597
  }
821
-
822
- addButton(
823
- buttonDescriptor: Kefir.Observable<?Object>,
824
- groupOrderHint: string,
825
- extraOnClickOptions: Object
826
- ): Promise<?Object> {
827
- return addButton(
828
- this,
829
- buttonDescriptor,
830
- groupOrderHint,
831
- extraOnClickOptions
832
- );
598
+ addButton(buttonDescriptor, groupOrderHint, extraOnClickOptions) {
599
+ return (0, _addButton.default)(this, buttonDescriptor, groupOrderHint, extraOnClickOptions);
833
600
  }
834
-
835
- addTooltipToButton(
836
- buttonViewController: Object,
837
- buttonDescriptor: Object,
838
- tooltipDescriptor: TooltipDescriptor
839
- ) {
840
- var tooltip = addTooltipToButton(
841
- this,
842
- buttonViewController,
843
- buttonDescriptor,
844
- tooltipDescriptor
845
- );
601
+ addTooltipToButton(buttonViewController, buttonDescriptor, tooltipDescriptor) {
602
+ var tooltip = (0, _addTooltipToButton.default)(this, buttonViewController, buttonDescriptor, tooltipDescriptor);
846
603
  this._buttonViewControllerTooltipMap.set(buttonViewController, tooltip);
847
604
  }
848
-
849
- closeButtonTooltip(buttonViewController: Object) {
605
+ closeButtonTooltip(buttonViewController) {
850
606
  if (!this._buttonViewControllerTooltipMap) {
851
607
  return;
852
608
  }
853
-
854
- var tooltip =
855
- this._buttonViewControllerTooltipMap.get(buttonViewController);
609
+ var tooltip = this._buttonViewControllerTooltipMap.get(buttonViewController);
856
610
  if (tooltip) {
857
611
  tooltip.destroy();
858
612
  this._buttonViewControllerTooltipMap.delete(buttonViewController);
859
613
  }
860
614
  }
861
-
862
- addComposeNotice(
863
- options: {
864
- orderHint?: number,
865
- } = {}
866
- ): ComposeNotice {
867
- const composeNotice = addComposeNotice(this, options);
868
-
869
- this._element.dispatchEvent(
870
- new CustomEvent('resize', {
615
+ addComposeNotice() {
616
+ let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
617
+ const composeNotice = (0, _addComposeNotice.default)(this, options);
618
+ this._element.dispatchEvent(new CustomEvent('resize', {
619
+ bubbles: false,
620
+ cancelable: false,
621
+ detail: null
622
+ }));
623
+ Kefir.fromEvents(composeNotice, 'destroy').flatMap(_delayAsap.default).takeUntilBy(this._stopper).onValue(() => {
624
+ this._element.dispatchEvent(new CustomEvent('resize', {
871
625
  bubbles: false,
872
626
  cancelable: false,
873
- detail: null,
874
- })
875
- );
876
-
877
- Kefir.fromEvents(composeNotice, 'destroy')
878
- .flatMap(delayAsap)
879
- .takeUntilBy(this._stopper)
880
- .onValue(() => {
881
- this._element.dispatchEvent(
882
- new CustomEvent('resize', {
883
- bubbles: false,
884
- cancelable: false,
885
- detail: null,
886
- })
887
- );
888
- });
889
-
627
+ detail: null
628
+ }));
629
+ });
890
630
  return composeNotice;
891
631
  }
892
-
893
- addStatusBar(
894
- options: {
895
- height?: number,
896
- orderHint?: number,
897
- addAboveNativeStatusBar?: boolean,
898
- } = {}
899
- ): StatusBar {
900
- const statusBar = addStatusBar(this, options);
901
-
902
- this._element.dispatchEvent(
903
- new CustomEvent('resize', {
632
+ addStatusBar() {
633
+ let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
634
+ const statusBar = (0, _addStatusBar.default)(this, options);
635
+ this._element.dispatchEvent(new CustomEvent('resize', {
636
+ bubbles: false,
637
+ cancelable: false,
638
+ detail: null
639
+ }));
640
+ Kefir.fromEvents(statusBar, 'destroy').flatMap(_delayAsap.default).takeUntilBy(this._stopper).onValue(() => {
641
+ this._element.dispatchEvent(new CustomEvent('resize', {
904
642
  bubbles: false,
905
643
  cancelable: false,
906
- detail: null,
907
- })
908
- );
909
-
910
- Kefir.fromEvents(statusBar, 'destroy')
911
- .flatMap(delayAsap)
912
- .takeUntilBy(this._stopper)
913
- .onValue(() => {
914
- this._element.dispatchEvent(
915
- new CustomEvent('resize', {
916
- bubbles: false,
917
- cancelable: false,
918
- detail: null,
919
- })
920
- );
921
- });
922
-
644
+ detail: null
645
+ }));
646
+ });
923
647
  return statusBar;
924
648
  }
925
-
926
- hideNativeStatusBar(): () => void {
649
+ hideNativeStatusBar() {
927
650
  const statusArea = this.getStatusArea();
928
- const nativeStatusBar = querySelector(statusArea, 'table');
651
+ const nativeStatusBar = (0, _querySelectorOrFail.default)(statusArea, 'table');
929
652
  const formattingToolbar = this.getFormattingToolbar();
930
- const isFormattingToolbarOpen =
931
- formattingToolbar && formattingToolbar.style.display !== 'none';
932
-
653
+ const isFormattingToolbarOpen = formattingToolbar && formattingToolbar.style.display !== 'none';
933
654
  nativeStatusBar.style.display = 'none';
934
-
935
655
  if (formattingToolbar && isFormattingToolbarOpen) {
936
656
  formattingToolbar.style.display = 'none';
937
657
  }
938
-
939
658
  return () => {
940
659
  nativeStatusBar.style.display = '';
941
-
942
660
  if (formattingToolbar && isFormattingToolbarOpen) {
943
661
  formattingToolbar.style.display = '';
944
662
  }
945
663
  };
946
664
  }
947
-
948
- replaceSendButton(el: HTMLElement): () => void {
665
+ replaceSendButton(el) {
949
666
  const sendButton = this.getSendButtonGroup();
950
667
  const sendAndArchive = this.getSendAndArchiveButton();
951
-
952
668
  sendButton.style.display = 'none';
953
-
954
669
  const sendAndArchiveParent = sendAndArchive && sendAndArchive.parentElement;
955
670
  if (sendAndArchiveParent instanceof HTMLElement) {
956
671
  sendAndArchiveParent.style.display = 'none';
957
672
  }
958
-
959
673
  const container = document.createElement('div');
960
674
  container.classList.add('inboxsdk__compose_customSendContainer');
961
675
  container.appendChild(el);
962
-
963
676
  sendButton.insertAdjacentElement('afterend', container);
964
677
  this._element.setAttribute('data-inboxsdk-send-replaced', '');
965
-
966
- const removalStopper = kefirStopper();
967
-
968
- Kefir.fromEvents(this.getBodyElement(), 'keydown')
969
- .takeUntilBy(this._stopper)
970
- .takeUntilBy(removalStopper)
971
- .filter(
972
- (domEvent) =>
973
- (domEvent.which === 9 || domEvent.keyCode === 9) && !domEvent.shiftKey
974
- )
975
- .onValue((domEvent) => {
976
- // Because of the way the compose DOM is structured, the natural
977
- // tab order does not flow from the compose body to the status bar.
978
- // Gmail modifies this flow programatically by focusing the send button,
979
- // so we have replicate this behavior when the native send button isn't
980
- // visible.
981
- const statusArea = this.getStatusArea();
982
- const focusableEls = statusArea.querySelectorAll('[tabindex]');
983
- if (focusableEls.length === 0) return;
984
-
985
- const firstVisibleEl = Array.from(focusableEls).find(
986
- (el) => el.offsetParent !== null
987
- );
988
- if (!firstVisibleEl) return;
989
-
990
- domEvent.preventDefault();
991
- domEvent.stopPropagation();
992
- domEvent.stopImmediatePropagation();
993
-
994
- firstVisibleEl.focus();
995
- });
996
-
678
+ const removalStopper = (0, _kefirStopper.default)();
679
+ Kefir.fromEvents(this.getBodyElement(), 'keydown').takeUntilBy(this._stopper).takeUntilBy(removalStopper).filter(domEvent => (domEvent.which === 9 || domEvent.keyCode === 9) && !domEvent.shiftKey).onValue(domEvent => {
680
+ // Because of the way the compose DOM is structured, the natural
681
+ // tab order does not flow from the compose body to the status bar.
682
+ // Gmail modifies this flow programatically by focusing the send button,
683
+ // so we have replicate this behavior when the native send button isn't
684
+ // visible.
685
+ const statusArea = this.getStatusArea();
686
+ const focusableEls = statusArea.querySelectorAll('[tabindex]');
687
+ if (focusableEls.length === 0) return;
688
+ const firstVisibleEl = Array.from(focusableEls).find(el => el.offsetParent !== null);
689
+ if (!firstVisibleEl) return;
690
+ domEvent.preventDefault();
691
+ domEvent.stopPropagation();
692
+ domEvent.stopImmediatePropagation();
693
+ firstVisibleEl.focus();
694
+ });
997
695
  return () => {
998
696
  removalStopper.destroy();
999
697
  container.remove();
1000
698
  this._element.removeAttribute('data-inboxsdk-send-replaced');
1001
-
1002
699
  sendButton.style.display = '';
1003
700
  if (sendAndArchiveParent instanceof HTMLElement) {
1004
701
  sendAndArchiveParent.style.display = '';
1005
702
  }
1006
703
  };
1007
704
  }
1008
-
1009
- hideDiscardButton(): () => void {
705
+ hideDiscardButton() {
1010
706
  const discardBtn = this.getDiscardButton();
1011
-
1012
707
  discardBtn.style.display = 'none';
1013
-
1014
708
  return () => {
1015
709
  discardBtn.style.display = '';
1016
710
  };
1017
711
  }
1018
-
1019
712
  ensureFormattingToolbarIsHidden() {
1020
713
  const formattingToggleButton = this.getFormattingToolbarToggleButton();
1021
714
  const formattingToolbar = this.getFormattingToolbar();
1022
-
1023
- if (
1024
- formattingToggleButton &&
1025
- formattingToolbar &&
1026
- formattingToolbar.style.display === ''
1027
- ) {
1028
- simulateClick(formattingToggleButton);
715
+ if (formattingToggleButton && formattingToolbar && formattingToolbar.style.display === '') {
716
+ (0, _simulateMouseEvent.simulateClick)(formattingToggleButton);
1029
717
  }
1030
718
  }
1031
-
1032
719
  close() {
1033
720
  if (this.isInlineReplyForm()) {
1034
721
  // eslint-disable-next-line no-console
1035
722
  console.warn("Trying to close an inline reply which doesn't work.");
1036
723
  return;
1037
724
  }
1038
-
1039
- this._element.dispatchEvent(
1040
- new CustomEvent('closedProgrammatically', {
1041
- bubbles: false,
1042
- cancelable: false,
1043
- detail: null,
1044
- })
1045
- );
1046
-
725
+ this._element.dispatchEvent(new CustomEvent('closedProgrammatically', {
726
+ bubbles: false,
727
+ cancelable: false,
728
+ detail: null
729
+ }));
1047
730
  if (this._isFullscreen) {
1048
- this._eventStream
1049
- .filter(({ eventName }) => eventName === 'fullscreenChanged')
1050
- .onValue(() => simulateClick(this.getCloseButton()));
1051
-
1052
- simulateClick(this.getMoleSwitchButton());
731
+ this._eventStream.filter(_ref6 => {
732
+ let {
733
+ eventName
734
+ } = _ref6;
735
+ return eventName === 'fullscreenChanged';
736
+ }).onValue(() => (0, _simulateMouseEvent.simulateClick)(this.getCloseButton()));
737
+ (0, _simulateMouseEvent.simulateClick)(this.getMoleSwitchButton());
1053
738
  } else {
1054
- simulateClick(this.getCloseButton());
739
+ (0, _simulateMouseEvent.simulateClick)(this.getCloseButton());
1055
740
  }
1056
741
  }
1057
-
1058
- send({ sendAndArchive }: { sendAndArchive: boolean }) {
742
+ send(_ref7) {
743
+ let {
744
+ sendAndArchive
745
+ } = _ref7;
1059
746
  // asap necessary so if send() is called after presending event.cancel(), the new presending event
1060
747
  // must happen after the sendCanceled event (which is also delayed by asap).
1061
- asap(() => {
748
+ (0, _asap.default)(() => {
1062
749
  const sendAndArchiveButton = this.getSendAndArchiveButton();
1063
-
1064
750
  if (sendAndArchive && sendAndArchiveButton) {
1065
- simulateClick(sendAndArchiveButton);
751
+ (0, _simulateMouseEvent.simulateClick)(sendAndArchiveButton);
1066
752
  } else {
1067
- simulateClick(this.getSendButton());
753
+ (0, _simulateMouseEvent.simulateClick)(this.getSendButton());
1068
754
  }
1069
755
  });
1070
756
  }
1071
-
1072
757
  discard() {
1073
- simulateClick(this.getDiscardButton());
758
+ (0, _simulateMouseEvent.simulateClick)(this.getDiscardButton());
1074
759
  }
1075
-
1076
760
  popOut() {
1077
761
  if (!this.isInlineReplyForm()) {
1078
762
  throw new Error('Can only pop out inline reply compose views');
1079
763
  }
1080
- const popOutBtn = querySelector(
1081
- this._element,
1082
- '.M9 > [role=menu]:first-child > .SK > [role=menuitem]:last-child'
1083
- );
1084
- simulateClick(popOutBtn);
764
+ const popOutBtn = (0, _querySelectorOrFail.default)(this._element, '.M9 > [role=menu]:first-child > .SK > [role=menuitem]:last-child');
765
+ (0, _simulateMouseEvent.simulateClick)(popOutBtn);
1085
766
  }
1086
-
1087
767
  overrideEditSubject() {
1088
- overrideEditSubject(this._driver, this);
768
+ (0, _overrideEditSubject.default)(this._driver, this);
1089
769
  }
1090
-
1091
770
  _hideDropzones() {
1092
- setCss('compose dropzone hider', 'body > .aC7 .aC9 {visibility: hidden;}');
771
+ (0, _setCss.default)('compose dropzone hider', 'body > .aC7 .aC9 {visibility: hidden;}');
1093
772
  }
1094
-
1095
773
  _reenableDropzones() {
1096
- setCss('compose dropzone hider', null);
774
+ (0, _setCss.default)('compose dropzone hider', null);
1097
775
  }
1098
-
1099
- _dropzonesVisible(): boolean {
1100
- return (
1101
- find(
1102
- document.querySelectorAll('body > .aC7:not(.aWP)'),
1103
- isElementVisible
1104
- ) != null
1105
- );
776
+ _dropzonesVisible() {
777
+ return (0, _find.default)(document.querySelectorAll('body > .aC7:not(.aWP)'), _isElementVisible.default) != null;
1106
778
  }
1107
-
1108
- _findDropzoneForThisCompose(inline: boolean): HTMLElement {
779
+ _findDropzoneForThisCompose(inline) {
1109
780
  // Iterate through all the dropzones and find the one visually contained by
1110
781
  // this compose.
1111
782
  const rect = this._element.getBoundingClientRect();
1112
- const dropzoneSelector = inline
1113
- ? 'body > .aC7:not(.aWP)'
1114
- : 'body > .aC7.aWP';
1115
- const el: ?HTMLElement = t.toArray(
1116
- Array.prototype.slice.call(document.querySelectorAll(dropzoneSelector)),
1117
- t.compose(
1118
- t.filter(isElementVisible),
1119
- t.filter((dropzone) => {
1120
- const top = parseInt(dropzone.style.top, 10);
1121
- const bottom = top + parseInt(dropzone.style.height, 10);
1122
- const left = parseInt(dropzone.style.left, 10);
1123
- const right = left + parseInt(dropzone.style.width, 10);
1124
- return (
1125
- top >= rect.top &&
1126
- left >= rect.left &&
1127
- right <= rect.right &&
1128
- bottom <= rect.bottom
1129
- );
1130
- }),
1131
- t.take(1)
1132
- )
1133
- )[0];
783
+ const dropzoneSelector = inline ? 'body > .aC7:not(.aWP)' : 'body > .aC7.aWP';
784
+ const el = _transducers.default.toArray(Array.prototype.slice.call(document.querySelectorAll(dropzoneSelector)), _transducers.default.compose(_transducers.default.filter(_isElementVisible.default), _transducers.default.filter(dropzone => {
785
+ const top = parseInt(dropzone.style.top, 10);
786
+ const bottom = top + parseInt(dropzone.style.height, 10);
787
+ const left = parseInt(dropzone.style.left, 10);
788
+ const right = left + parseInt(dropzone.style.width, 10);
789
+ return top >= rect.top && left >= rect.left && right <= rect.right && bottom <= rect.bottom;
790
+ }), _transducers.default.take(1)))[0];
1134
791
  if (!el) {
1135
792
  throw new Error('Failed to find dropzone');
1136
793
  }
1137
794
  return el;
1138
795
  }
1139
-
1140
- async _attachFiles(files: Blob[], inline: boolean): Promise<void> {
796
+ async _attachFiles(files, inline) {
1141
797
  this._hideDropzones();
1142
- const endDrag = once(() => simulateDragEnd(this._element, files));
798
+ const endDrag = (0, _once.default)(() => (0, _simulateDragAndDrop.simulateDragEnd)(this._element, files));
1143
799
  try {
1144
800
  let firstLoop = true;
1145
- for (let partitionedFiles of t.partition(files, 3)) {
801
+ for (let partitionedFiles of _transducers.default.partition(files, 3)) {
1146
802
  if (firstLoop) {
1147
803
  firstLoop = false;
1148
804
  } else {
1149
- await delay(500);
805
+ await (0, _pdelay.default)(500);
1150
806
  }
1151
-
1152
- simulateDragOver(this._element, partitionedFiles);
1153
- await waitFor(() => this._dropzonesVisible(), 20 * 1000);
807
+ (0, _simulateDragAndDrop.simulateDragOver)(this._element, partitionedFiles);
808
+ await (0, _waitFor.default)(() => this._dropzonesVisible(), 20 * 1000);
1154
809
  const dropzone = this._findDropzoneForThisCompose(inline);
1155
- simulateDrop(dropzone, partitionedFiles);
810
+ (0, _simulateDragAndDrop.simulateDrop)(dropzone, partitionedFiles);
1156
811
  endDrag();
1157
- await waitFor(() => !this._dropzonesVisible(), 20 * 1000);
812
+ await (0, _waitFor.default)(() => !this._dropzonesVisible(), 20 * 1000);
1158
813
  }
1159
814
  } catch (err) {
1160
815
  this._driver.getLogger().error(err);
@@ -1163,185 +818,134 @@ class GmailComposeView {
1163
818
  this._reenableDropzones();
1164
819
  }
1165
820
  }
1166
-
1167
- attachFiles(files: Blob[]): Promise<void> {
821
+ attachFiles(files) {
1168
822
  return this._attachFiles(files, false);
1169
823
  }
1170
-
1171
- attachInlineFiles(files: Blob[]): Promise<void> {
824
+ attachInlineFiles(files) {
1172
825
  return this._attachFiles(files, true);
1173
826
  }
1174
-
1175
- isForward(): boolean {
827
+ isForward() {
1176
828
  return Boolean(this._element.querySelector('.Un.J-JN-M-I .mI'));
1177
829
  }
1178
-
1179
- isReply(): boolean {
830
+ isReply() {
1180
831
  return this._isInlineReplyForm || !!this._element.querySelector('.HQ');
1181
832
  }
1182
-
1183
- isInlineReplyForm(): boolean {
833
+ isInlineReplyForm() {
1184
834
  return this._isInlineReplyForm;
1185
835
  }
1186
-
1187
- getBodyElement(): HTMLElement {
836
+ getBodyElement() {
1188
837
  const el = this.getMaybeBodyElement();
1189
838
  if (!el) throw new Error('Could not find body element');
1190
839
  return el;
1191
840
  }
1192
-
1193
- getMaybeBodyElement(): ?HTMLElement {
841
+ getMaybeBodyElement() {
1194
842
  return this._element.querySelector('.Ap [g_editable=true]');
1195
843
  }
1196
-
1197
- getTopFormElement(): HTMLElement {
1198
- return querySelector(this._element, 'td > form');
844
+ getTopFormElement() {
845
+ return (0, _querySelectorOrFail.default)(this._element, 'td > form');
1199
846
  }
1200
-
1201
- getHTMLContent(): string {
847
+ getHTMLContent() {
1202
848
  return this.getBodyElement().innerHTML;
1203
849
  }
1204
-
1205
- getTextContent(): string {
850
+ getTextContent() {
1206
851
  return this.getBodyElement().textContent;
1207
852
  }
1208
-
1209
- getSelectedBodyHTML(): ?string {
1210
- return getSelectedHTMLInElement(
1211
- this.getBodyElement(),
1212
- this.getLastSelectionRange()
1213
- );
853
+ getSelectedBodyHTML() {
854
+ return (0, _getSelection.getSelectedHTMLInElement)(this.getBodyElement(), this.getLastSelectionRange());
1214
855
  }
1215
-
1216
- getSelectedBodyText(): ?string {
1217
- return getSelectedTextInElement(
1218
- this.getBodyElement(),
1219
- this.getLastSelectionRange()
1220
- );
856
+ getSelectedBodyText() {
857
+ return (0, _getSelection.getSelectedTextInElement)(this.getBodyElement(), this.getLastSelectionRange());
1221
858
  }
1222
-
1223
- getSubject(): string {
859
+ getSubject() {
1224
860
  return this.getSubjectInput().value;
1225
861
  }
1226
-
1227
- getSubjectInput(): HTMLInputElement {
1228
- return (this._element: any).querySelector('input[name=subjectbox]');
862
+ getSubjectInput() {
863
+ return this._element.querySelector('input[name=subjectbox]');
1229
864
  }
1230
-
1231
- getMetadataFormElement(): HTMLElement {
865
+ getMetadataFormElement() {
1232
866
  const container = this.getBodyElement().closest('.aoP');
1233
867
  if (!container) {
1234
868
  throw new Error('Could not find compose container');
1235
869
  }
1236
- return querySelector(container, 'form.bAs');
870
+ return (0, _querySelectorOrFail.default)(container, 'form.bAs');
1237
871
  }
1238
-
1239
- getToRecipients(): Contact[] {
1240
- return getRecipients(this, 'to');
872
+ getToRecipients() {
873
+ return (0, _getRecipients.default)(this, 'to');
1241
874
  }
1242
-
1243
- getCcRecipients(): Contact[] {
1244
- return getRecipients(this, 'cc');
875
+ getCcRecipients() {
876
+ return (0, _getRecipients.default)(this, 'cc');
1245
877
  }
1246
-
1247
- getBccRecipients(): Contact[] {
1248
- return getRecipients(this, 'bcc');
878
+ getBccRecipients() {
879
+ return (0, _getRecipients.default)(this, 'bcc');
1249
880
  }
1250
-
1251
- getAdditionalActionToolbar(): HTMLElement {
1252
- return require('./gmail-compose-view/get-additional-action-toolbar').default(
1253
- this
1254
- );
881
+ getAdditionalActionToolbar() {
882
+ return require('./gmail-compose-view/get-additional-action-toolbar').default(this);
1255
883
  }
1256
-
1257
- updateInsertMoreAreaLeft(oldFormattingAreaOffsetLeft: number) {
1258
- updateInsertMoreAreaLeft(this, oldFormattingAreaOffsetLeft);
884
+ updateInsertMoreAreaLeft(oldFormattingAreaOffsetLeft) {
885
+ (0, _updateInsertMoreAreaLeft.default)(this, oldFormattingAreaOffsetLeft);
1259
886
  }
1260
-
1261
- _getFormattingAreaOffsetLeft(): number {
1262
- return getFormattingAreaOffsetLeft(this);
887
+ _getFormattingAreaOffsetLeft() {
888
+ return (0, _getFormattingAreaOffsetLeft.default)(this);
1263
889
  }
1264
-
1265
- getFormattingArea(): ?HTMLElement {
890
+ getFormattingArea() {
1266
891
  let formattingArea = this._formattingArea;
1267
892
  if (!formattingArea) {
1268
- formattingArea = this._formattingArea =
1269
- this._element.querySelector('.oc');
893
+ formattingArea = this._formattingArea = this._element.querySelector('.oc');
1270
894
  }
1271
895
  return formattingArea;
1272
896
  }
1273
-
1274
- getFormattingToolbar(): ?HTMLElement {
897
+ getFormattingToolbar() {
1275
898
  return this._element.querySelector('.aX');
1276
899
  }
1277
-
1278
- getFormattingToolbarArrow(): HTMLElement {
900
+ getFormattingToolbarArrow() {
1279
901
  const el = this.getFormattingToolbar();
1280
902
  if (!el) throw new Error('Failed to find formatting toolbar');
1281
- return querySelector(el, '.aA4');
903
+ return (0, _querySelectorOrFail.default)(el, '.aA4');
1282
904
  }
1283
-
1284
- getFormattingToolbarToggleButton(): HTMLElement {
1285
- const innerElement = querySelector(this._element, '[role=button] .dv');
1286
- const btn = closest(innerElement, '[role=button]');
905
+ getFormattingToolbarToggleButton() {
906
+ const innerElement = (0, _querySelectorOrFail.default)(this._element, '[role=button] .dv');
907
+ const btn = (0, _closestNg.default)(innerElement, '[role=button]');
1287
908
  if (!btn) throw new Error('failed to find button');
1288
909
  return btn;
1289
910
  }
1290
-
1291
- getStatusBarPrependContainer(): ?HTMLElement {
1292
- return this._element.querySelector(
1293
- '.inboxsdk__compose_statusBarPrependContainer'
1294
- );
911
+ getStatusBarPrependContainer() {
912
+ return this._element.querySelector('.inboxsdk__compose_statusBarPrependContainer');
1295
913
  }
1296
-
1297
- getScrollBody(): HTMLElement {
914
+ getScrollBody() {
1298
915
  var scrollBody = this._element.querySelector('table .GP');
1299
916
  if (!scrollBody) {
1300
917
  throw new Error('Failed to find scroll body');
1301
918
  }
1302
919
  return scrollBody;
1303
920
  }
1304
-
1305
- getStatusArea(): HTMLElement {
921
+ getStatusArea() {
1306
922
  let statusArea = this._element.querySelector('.aDg .aDj > .aDh');
1307
923
  if (!statusArea) throw new Error('Failed to find status area');
1308
924
  return statusArea;
1309
925
  }
1310
-
1311
- getInsertMoreArea(): HTMLElement {
1312
- return querySelector(this._element, '.eq');
926
+ getInsertMoreArea() {
927
+ return (0, _querySelectorOrFail.default)(this._element, '.eq');
1313
928
  }
1314
-
1315
- getInsertLinkButton(): HTMLElement {
1316
- return querySelector(this._element, '.e5.aaA.aMZ');
929
+ getInsertLinkButton() {
930
+ return (0, _querySelectorOrFail.default)(this._element, '.e5.aaA.aMZ');
1317
931
  }
1318
-
1319
- getSendButton(): HTMLElement {
1320
- return querySelector(
1321
- this._element,
1322
- '.IZ .Up div > div[role=button]:not(.Uo):not([aria-haspopup=true]):not([class^=inboxsdk_])'
1323
- );
932
+ getSendButton() {
933
+ return (0, _querySelectorOrFail.default)(this._element, '.IZ .Up div > div[role=button]:not(.Uo):not([aria-haspopup=true]):not([class^=inboxsdk_])');
1324
934
  }
1325
935
 
1326
936
  // When schedule send is available, this returns the element that contains both buttons.
1327
- getSendButtonGroup(): HTMLElement {
1328
- const scheduleSend = this._element.querySelector(
1329
- '.IZ .Up div > [role=button][aria-haspopup=true]:not([class^=inboxsdk_])'
1330
- );
937
+ getSendButtonGroup() {
938
+ const scheduleSend = this._element.querySelector('.IZ .Up div > [role=button][aria-haspopup=true]:not([class^=inboxsdk_])');
1331
939
  if (scheduleSend) {
1332
- return (scheduleSend: any).parentElement;
940
+ return scheduleSend.parentElement;
1333
941
  }
1334
942
  return this.getSendButton();
1335
943
  }
1336
-
1337
- getSendAndArchiveButton(): ?HTMLElement {
944
+ getSendAndArchiveButton() {
1338
945
  if (!this.isReply()) {
1339
946
  return null;
1340
947
  }
1341
-
1342
- const sendAndArchiveButton = this._element.querySelector(
1343
- '.IZ .Up div > div[role=button].Uo:not([aria-haspopup=true]):not([class^=inboxsdk_])'
1344
- );
948
+ const sendAndArchiveButton = this._element.querySelector('.IZ .Up div > div[role=button].Uo:not([aria-haspopup=true]):not([class^=inboxsdk_])');
1345
949
  if (sendAndArchiveButton) {
1346
950
  return sendAndArchiveButton;
1347
951
  }
@@ -1352,125 +956,83 @@ class GmailComposeView {
1352
956
  const parent = sendButton.parentElement;
1353
957
  if (!(parent instanceof HTMLElement)) throw new Error('should not happen');
1354
958
  if (parent.childElementCount <= 1) {
1355
- this._driver
1356
- .getLogger()
1357
- .eventSdkPassive(
1358
- 'getSendAndArchiveButton - old method - failed to find, childElementCount <= 1'
1359
- );
959
+ this._driver.getLogger().eventSdkPassive('getSendAndArchiveButton - old method - failed to find, childElementCount <= 1');
1360
960
  return null;
1361
961
  }
1362
-
1363
- const firstNotSendElement =
1364
- parent.children[0] !== sendButton
1365
- ? parent.children[0]
1366
- : parent.children[1];
1367
- const result = !firstNotSendElement
1368
- ? null
1369
- : firstNotSendElement.querySelector('[role=button]');
962
+ const firstNotSendElement = parent.children[0] !== sendButton ? parent.children[0] : parent.children[1];
963
+ const result = !firstNotSendElement ? null : firstNotSendElement.querySelector('[role=button]');
1370
964
  if (result) {
1371
- this._driver
1372
- .getLogger()
1373
- .eventSdkPassive('getSendAndArchiveButton - old method - found');
965
+ this._driver.getLogger().eventSdkPassive('getSendAndArchiveButton - old method - found');
1374
966
  } else {
1375
- this._driver
1376
- .getLogger()
1377
- .eventSdkPassive(
1378
- 'getSendAndArchiveButton - old method - failed to find'
1379
- );
967
+ this._driver.getLogger().eventSdkPassive('getSendAndArchiveButton - old method - failed to find');
1380
968
  }
1381
969
  return result;
1382
970
  }
1383
-
1384
- getCloseButton(): HTMLElement {
971
+ getCloseButton() {
1385
972
  return this._element.querySelectorAll('.Hm > img')[2];
1386
973
  }
1387
-
1388
- getMoleSwitchButton(): HTMLElement {
974
+ getMoleSwitchButton() {
1389
975
  return this._element.querySelectorAll('.Hm > img')[1];
1390
976
  }
1391
-
1392
- getBottomBarTable(): HTMLElement {
1393
- return querySelector(this._element, '.aoP .aDh > table');
977
+ getBottomBarTable() {
978
+ return (0, _querySelectorOrFail.default)(this._element, '.aoP .aDh > table');
1394
979
  }
1395
-
1396
- getBottomToolbarContainer(): HTMLElement {
1397
- return querySelector(this._element, '.aoP .aDj');
980
+ getBottomToolbarContainer() {
981
+ return (0, _querySelectorOrFail.default)(this._element, '.aoP .aDj');
1398
982
  }
1399
-
1400
- getDiscardButton(): HTMLElement {
1401
- return querySelector(this._element, '.gU .oh');
983
+ getDiscardButton() {
984
+ return (0, _querySelectorOrFail.default)(this._element, '.gU .oh');
1402
985
  }
1403
-
1404
- getComposeID(): string {
986
+ getComposeID() {
1405
987
  return this._composeID;
1406
988
  }
1407
-
1408
- getInitialMessageID(): ?string {
989
+ getInitialMessageID() {
1409
990
  return this._initialMessageId;
1410
991
  }
1411
992
 
1412
993
  // For use only when isUsingSyncAPI() is true — gets the draft ID
1413
994
  // from the input that used to hold the hex message ID. Still does not
1414
995
  // populate until first save.
1415
- _getDraftIDfromForm(): ?string {
1416
- const value =
1417
- (this._messageIDElement && this._messageIDElement.value) || null;
1418
- if (
1419
- typeof value === 'string' &&
1420
- value !== 'undefined' &&
1421
- value !== 'null'
1422
- ) {
996
+ _getDraftIDfromForm() {
997
+ const value = this._messageIDElement && this._messageIDElement.value || null;
998
+ if (typeof value === 'string' && value !== 'undefined' && value !== 'null') {
1423
999
  if (this._driver.isUsingSyncAPI()) {
1424
1000
  return value.replace('#', '').replace('msg-a:', '');
1425
1001
  } else {
1426
- this._driver
1427
- .getLogger()
1428
- .error(new Error('Invalid draft id in element'), {
1429
- value,
1430
- });
1002
+ this._driver.getLogger().error(new Error('Invalid draft id in element'), {
1003
+ value
1004
+ });
1431
1005
  }
1432
1006
  }
1433
1007
  return null;
1434
1008
  }
1435
-
1436
- _getMessageIDfromForm(): ?string {
1437
- const value =
1438
- (this._messageIDElement && this._messageIDElement.value) || null;
1439
- if (
1440
- typeof value === 'string' &&
1441
- value !== 'undefined' &&
1442
- value !== 'null'
1443
- ) {
1009
+ _getMessageIDfromForm() {
1010
+ const value = this._messageIDElement && this._messageIDElement.value || null;
1011
+ if (typeof value === 'string' && value !== 'undefined' && value !== 'null') {
1444
1012
  if (this._driver.isUsingSyncAPI()) {
1445
1013
  return value.replace('#', ''); //annoyingly the hash is included
1446
1014
  } else {
1447
1015
  if (/^[0-9a-f]+$/i.test(value)) {
1448
1016
  return value;
1449
1017
  } else {
1450
- this._driver
1451
- .getLogger()
1452
- .error(new Error('Invalid message id in element'), {
1453
- value,
1454
- });
1018
+ this._driver.getLogger().error(new Error('Invalid message id in element'), {
1019
+ value
1020
+ });
1455
1021
  }
1456
1022
  }
1457
1023
  }
1458
1024
  return null;
1459
1025
  }
1460
-
1461
- getMessageID(): ?string {
1026
+ getMessageID() {
1462
1027
  return this._messageId;
1463
1028
  }
1464
-
1465
- getTargetMessageID(): ?string {
1029
+ getTargetMessageID() {
1466
1030
  return this._targetMessageID;
1467
1031
  }
1468
-
1469
- getThreadID(): ?string {
1032
+ getThreadID() {
1470
1033
  return this._threadID;
1471
1034
  }
1472
-
1473
- async getCurrentDraftID(): Promise<?string> {
1035
+ async getCurrentDraftID() {
1474
1036
  if (this._driver.isUsingSyncAPI()) {
1475
1037
  // This function is mostly a mirror of _getDraftIDimplementation, but
1476
1038
  // instead of waiting when finding out it's not saved, just returns null.
@@ -1484,13 +1046,11 @@ class GmailComposeView {
1484
1046
  try {
1485
1047
  // If this succeeds, then the draft must exist on the server and we
1486
1048
  // can safely return the draft id we know.
1487
- const gmailMessageId =
1488
- await this._driver.getGmailMessageIdForSyncDraftId(syncMessageId);
1049
+ const gmailMessageId = await this._driver.getGmailMessageIdForSyncDraftId(syncMessageId);
1489
1050
  } catch (e) {
1490
1051
  // ignore error, it's probably that the draft isn't saved yet.
1491
1052
  return null;
1492
1053
  }
1493
-
1494
1054
  return draftID;
1495
1055
  }
1496
1056
  }
@@ -1502,16 +1062,14 @@ class GmailComposeView {
1502
1062
  }
1503
1063
  }
1504
1064
  }
1505
-
1506
- getDraftID(): Promise<?string> {
1065
+ getDraftID() {
1507
1066
  let draftIDpromise = this._draftIDpromise;
1508
1067
  if (!draftIDpromise) {
1509
1068
  draftIDpromise = this._draftIDpromise = this._getDraftIDimplementation();
1510
1069
  }
1511
1070
  return draftIDpromise;
1512
1071
  }
1513
-
1514
- async _getDraftIDimplementation(): Promise<?string> {
1072
+ async _getDraftIDimplementation() {
1515
1073
  if (this._driver.isUsingSyncAPI()) {
1516
1074
  const draftID = this._getDraftIDfromForm();
1517
1075
  // we want to keep the semantics that getDraftID doesn't return until
@@ -1526,35 +1084,27 @@ class GmailComposeView {
1526
1084
  try {
1527
1085
  // If this succeeds, then the draft must exist on the server and we
1528
1086
  // can safely return the draft id we know.
1529
- const gmailMessageId =
1530
- await this._driver.getGmailMessageIdForSyncDraftId(syncMessageId);
1087
+ const gmailMessageId = await this._driver.getGmailMessageIdForSyncDraftId(syncMessageId);
1531
1088
  } catch (e) {
1532
1089
  // draft doesn't exist so we wait until it does
1533
- await this._eventStream
1534
- .filter(({ eventName }) => eventName === 'draftSaved')
1535
- .beforeEnd(() => null)
1536
- .map(() => this._getDraftIDfromForm())
1537
- .take(1)
1538
- .toPromise();
1090
+ await this._eventStream.filter(_ref8 => {
1091
+ let {
1092
+ eventName
1093
+ } = _ref8;
1094
+ return eventName === 'draftSaved';
1095
+ }).beforeEnd(() => null).map(() => this._getDraftIDfromForm()).take(1).toPromise();
1539
1096
  }
1540
-
1541
1097
  return draftID;
1542
1098
  }
1543
1099
  }
1544
1100
  } else {
1545
1101
  let i = -1;
1546
1102
  let lastDebugData = null;
1547
-
1548
1103
  try {
1549
1104
  // If this compose view doesn't have a message id yet, wait until it gets
1550
1105
  // one or it's closed.
1551
1106
  if (!this._messageId) {
1552
- await this._eventStream
1553
- .filter((event) => event.eventName === 'messageIDChange')
1554
- .beforeEnd(() => null)
1555
- .take(1)
1556
- .toPromise();
1557
-
1107
+ await this._eventStream.filter(event => event.eventName === 'messageIDChange').beforeEnd(() => null).take(1).toPromise();
1558
1108
  if (!this._messageId) {
1559
1109
  // The compose was closed before it got an id.
1560
1110
  return null;
@@ -1569,7 +1119,6 @@ class GmailComposeView {
1569
1119
  // eslint-disable-next-line no-constant-condition
1570
1120
  while (true) {
1571
1121
  i++;
1572
-
1573
1122
  const messageId = this._messageId;
1574
1123
  if (!messageId) {
1575
1124
  throw new Error('Should not happen');
@@ -1580,11 +1129,7 @@ class GmailComposeView {
1580
1129
  // the draft save response yet. Wait for that response to finish and
1581
1130
  // keep trying if it looks like that might be the case.
1582
1131
  if (this._draftSaving) {
1583
- await this._eventStream
1584
- .filter((event) => event.eventName === 'messageIDChange')
1585
- .beforeEnd(() => null)
1586
- .take(1)
1587
- .toPromise();
1132
+ await this._eventStream.filter(event => event.eventName === 'messageIDChange').beforeEnd(() => null).take(1).toPromise();
1588
1133
  continue;
1589
1134
  }
1590
1135
 
@@ -1595,23 +1140,25 @@ class GmailComposeView {
1595
1140
  if (!newMessageId) {
1596
1141
  throw new Error('Should not happen');
1597
1142
  }
1598
- const { draftID, debugData } =
1599
- await this._driver.getDraftIDForMessageID(newMessageId, true);
1143
+ const {
1144
+ draftID,
1145
+ debugData
1146
+ } = await this._driver.getDraftIDForMessageID(newMessageId, true);
1600
1147
  const err = new Error('Failed to read draft ID -- after check');
1601
1148
  this._driver.getLogger().error(err, {
1602
1149
  message: 'getDraftID error -- after check',
1603
1150
  messageIdChanged: messageId !== newMessageId,
1604
1151
  gotDraftID: draftID != null,
1605
- debugData: draftID ? null : debugData,
1152
+ debugData: draftID ? null : debugData
1606
1153
  });
1607
1154
  }, 10 * 1000);
1608
-
1609
1155
  throw new Error('Failed to read draft ID');
1610
1156
  }
1611
1157
  lastMessageId = messageId;
1612
-
1613
- const { draftID, debugData } =
1614
- await this._driver.getDraftIDForMessageID(messageId);
1158
+ const {
1159
+ draftID,
1160
+ debugData
1161
+ } = await this._driver.getDraftIDForMessageID(messageId);
1615
1162
  lastDebugData = debugData;
1616
1163
  if (draftID) {
1617
1164
  return draftID;
@@ -1626,151 +1173,99 @@ class GmailComposeView {
1626
1173
  isStandalone: this._isStandalone,
1627
1174
  emailWasSent: this._emailWasSent,
1628
1175
  i,
1629
- lastDebugData,
1176
+ lastDebugData
1630
1177
  });
1631
1178
  throw err;
1632
1179
  }
1633
1180
  }
1634
1181
  }
1635
-
1636
- addManagedViewController(viewController: { destroy(): void }) {
1182
+ addManagedViewController(viewController) {
1637
1183
  this._managedViewControllers.push(viewController);
1638
1184
  }
1639
-
1640
- ensureGroupingIsOpen(type: string) {
1641
- ensureGroupingIsOpen(this._element, type);
1185
+ ensureGroupingIsOpen(type) {
1186
+ (0, _ensureGroupingIsOpen.default)(this._element, type);
1642
1187
  }
1643
-
1644
- ensureAppButtonToolbarsAreClosed(): void {
1645
- ensureAppButtonToolbarsAreClosed(this._element);
1188
+ ensureAppButtonToolbarsAreClosed() {
1189
+ (0, _ensureAppButtonToolbarsAreClosed.default)(this._element);
1646
1190
  }
1647
-
1648
- isMinimized(): boolean {
1191
+ isMinimized() {
1649
1192
  const element = this.getElement();
1650
1193
  const bodyElement = this.getMaybeBodyElement();
1651
- const bodyContainer = find(element.children, (child) =>
1652
- child.contains(bodyElement)
1653
- );
1194
+ const bodyContainer = (0, _find.default)(element.children, child => child.contains(bodyElement));
1654
1195
  if (!bodyContainer) {
1655
1196
  if (!hasReportedMissingBody) {
1656
1197
  hasReportedMissingBody = true;
1657
- this._driver
1658
- .getLogger()
1659
- .error(new Error('isMinimized failed to find bodyContainer'), {
1660
- bodyElement: !!bodyElement,
1661
- hasMessageIDElement: !!this._messageIDElement,
1662
- ended: (this._eventStream: any).ended,
1663
- bodyElStillInCompose: this._element.contains(this._seenBodyElement),
1664
- seenBodyElHtml: censorHTMLstring(this._seenBodyElement.outerHTML),
1665
- composeHtml: censorHTMLstring(element.outerHTML),
1666
- });
1198
+ this._driver.getLogger().error(new Error('isMinimized failed to find bodyContainer'), {
1199
+ bodyElement: !!bodyElement,
1200
+ hasMessageIDElement: !!this._messageIDElement,
1201
+ ended: this._eventStream.ended,
1202
+ bodyElStillInCompose: this._element.contains(this._seenBodyElement),
1203
+ seenBodyElHtml: (0, _censorHTMLstring.default)(this._seenBodyElement.outerHTML),
1204
+ composeHtml: (0, _censorHTMLstring.default)(element.outerHTML)
1205
+ });
1667
1206
  }
1668
1207
  return false;
1669
1208
  }
1670
-
1671
1209
  return bodyContainer.style.display !== '';
1672
1210
  }
1673
-
1674
- setMinimized(minimized: boolean) {
1211
+ setMinimized(minimized) {
1675
1212
  if (minimized !== this.isMinimized()) {
1676
- if (this._isInlineReplyForm)
1677
- throw new Error('Not implemented for inline compose views');
1678
- const minimizeButton = querySelector(this._element, '.Hm > img');
1679
- simulateClick(minimizeButton);
1213
+ if (this._isInlineReplyForm) throw new Error('Not implemented for inline compose views');
1214
+ const minimizeButton = (0, _querySelectorOrFail.default)(this._element, '.Hm > img');
1215
+ (0, _simulateMouseEvent.simulateClick)(minimizeButton);
1680
1216
  }
1681
1217
  }
1682
-
1683
- setFullscreen(fullscreen: boolean) {
1218
+ setFullscreen(fullscreen) {
1684
1219
  if (fullscreen !== this.isFullscreen()) {
1685
- if (this._isInlineReplyForm)
1686
- throw new Error('Not implemented for inline compose views');
1687
- const fullscreenButton = querySelector(
1688
- this._element,
1689
- '.Hm > img:nth-of-type(2)'
1690
- );
1691
- simulateClick(fullscreenButton);
1220
+ if (this._isInlineReplyForm) throw new Error('Not implemented for inline compose views');
1221
+ const fullscreenButton = (0, _querySelectorOrFail.default)(this._element, '.Hm > img:nth-of-type(2)');
1222
+ (0, _simulateMouseEvent.simulateClick)(fullscreenButton);
1692
1223
  }
1693
1224
  }
1694
-
1695
- setTitleBarColor(color: string): () => void {
1696
- const buttonParent = querySelector(
1697
- this._element,
1698
- '.nH.Hy.aXJ table.cf.Ht td.Hm'
1699
- );
1700
- const elementsToModify = [
1701
- querySelector(this._element, '.nH.Hy.aXJ .pi > .l.o'),
1702
- querySelector(this._element, '.nH.Hy.aXJ .l.m'),
1703
- querySelector(this._element, '.nH.Hy.aXJ .l.m > .l.n'),
1704
- ];
1705
-
1225
+ setTitleBarColor(color) {
1226
+ const buttonParent = (0, _querySelectorOrFail.default)(this._element, '.nH.Hy.aXJ table.cf.Ht td.Hm');
1227
+ const elementsToModify = [(0, _querySelectorOrFail.default)(this._element, '.nH.Hy.aXJ .pi > .l.o'), (0, _querySelectorOrFail.default)(this._element, '.nH.Hy.aXJ .l.m'), (0, _querySelectorOrFail.default)(this._element, '.nH.Hy.aXJ .l.m > .l.n')];
1706
1228
  buttonParent.classList.add('inboxsdk__compose_customTitleBarColor');
1707
-
1708
- elementsToModify.forEach((el) => {
1229
+ elementsToModify.forEach(el => {
1709
1230
  el.style.backgroundColor = color;
1710
1231
  });
1711
-
1712
1232
  return () => {
1713
1233
  buttonParent.classList.remove('inboxsdk__compose_customTitleBarColor');
1714
-
1715
- elementsToModify.forEach((el) => {
1234
+ elementsToModify.forEach(el => {
1716
1235
  el.style.backgroundColor = '';
1717
1236
  });
1718
1237
  };
1719
1238
  }
1720
-
1721
- setTitleBarText(text: string): () => void {
1239
+ setTitleBarText(text) {
1722
1240
  if (this.isInlineReplyForm()) {
1723
- throw new Error(
1724
- 'setTitleBarText() is not supported on inline compose views'
1725
- );
1241
+ throw new Error('setTitleBarText() is not supported on inline compose views');
1726
1242
  }
1727
-
1728
- const titleBarTable = querySelector(
1729
- this._element,
1730
- '.nH.Hy.aXJ table.cf.Ht'
1731
- );
1732
-
1733
- if (
1734
- titleBarTable.classList.contains(
1735
- 'inboxsdk__compose_hasCustomTitleBarText'
1736
- )
1737
- ) {
1738
- throw new Error(
1739
- 'Custom title bar text is already registered for this compose view'
1740
- );
1243
+ const titleBarTable = (0, _querySelectorOrFail.default)(this._element, '.nH.Hy.aXJ table.cf.Ht');
1244
+ if (titleBarTable.classList.contains('inboxsdk__compose_hasCustomTitleBarText')) {
1245
+ throw new Error('Custom title bar text is already registered for this compose view');
1741
1246
  }
1742
-
1743
- const titleTextParent = querySelector(
1744
- titleBarTable,
1745
- 'div.Hp'
1746
- ).parentElement;
1247
+ const titleTextParent = (0, _querySelectorOrFail.default)(titleBarTable, 'div.Hp').parentElement;
1747
1248
  if (!(titleTextParent instanceof HTMLElement)) {
1748
1249
  throw new Error('Could not locate title bar text parent');
1749
1250
  }
1750
-
1751
1251
  titleBarTable.classList.add('inboxsdk__compose_hasCustomTitleBarText');
1752
1252
  titleTextParent.classList.add('inboxsdk__compose_nativeTitleBarText');
1753
-
1754
1253
  const customTitleText = document.createElement('td');
1755
1254
  customTitleText.classList.add('inboxsdk__compose_customTitleBarText');
1756
- customTitleText.innerHTML = autoHtml`
1255
+ customTitleText.innerHTML = (0, _autoHtml.default)`
1757
1256
  <div class="Hp">
1758
1257
  <h2 class="a3E">
1759
1258
  <div class="aYF">${text}</div>
1760
1259
  </h2>
1761
1260
  </div>
1762
1261
  `;
1763
-
1764
1262
  titleTextParent.insertAdjacentElement('afterend', customTitleText);
1765
-
1766
1263
  return () => {
1767
1264
  customTitleText.remove();
1768
-
1769
1265
  titleBarTable.classList.remove('inboxsdk__compose_hasCustomTitleBarText');
1770
1266
  titleTextParent.classList.remove('inboxsdk__compose_nativeTitleBarText');
1771
1267
  };
1772
1268
  }
1773
-
1774
1269
  _triggerDraftSave() {
1775
1270
  if (this._isTriggeringADraftSavePending) {
1776
1271
  return;
@@ -1780,40 +1275,28 @@ class GmailComposeView {
1780
1275
  // Done asynchronously with setTimeout because if it's done synchronously
1781
1276
  // or after an asap step after an inline compose view's creation, Gmail
1782
1277
  // interprets the fake keypress and decides to add a '¾' character.
1783
- Kefir.later(0)
1784
- .takeUntilBy(this._stopper)
1785
- .onValue(() => {
1786
- this._isTriggeringADraftSavePending = false;
1787
-
1788
- const body = this.getMaybeBodyElement();
1789
- if (body) {
1790
- const unsilence = this._driver
1791
- .getPageCommunicator()
1792
- .silenceGmailErrorsForAMoment();
1793
- try {
1794
- simulateKey(body, 190, 0);
1795
- } finally {
1796
- unsilence();
1797
- }
1278
+ Kefir.later(0).takeUntilBy(this._stopper).onValue(() => {
1279
+ this._isTriggeringADraftSavePending = false;
1280
+ const body = this.getMaybeBodyElement();
1281
+ if (body) {
1282
+ const unsilence = this._driver.getPageCommunicator().silenceGmailErrorsForAMoment();
1283
+ try {
1284
+ (0, _simulateKey.default)(body, 190, 0);
1285
+ } finally {
1286
+ unsilence();
1798
1287
  }
1799
- });
1288
+ }
1289
+ });
1800
1290
  }
1801
1291
  }
1802
1292
 
1803
1293
  // If this compose is a reply, then this gets the message ID of the message
1804
1294
  // we're replying to.
1805
- _getTargetMessageID(): ?string {
1806
- const input: ?HTMLInputElement = (this._element.querySelector(
1807
- 'input[name="rm"]'
1808
- ): any);
1809
- return input &&
1810
- typeof input.value === 'string' &&
1811
- input.value != 'undefined'
1812
- ? input.value.replace('#', '')
1813
- : null;
1295
+ _getTargetMessageID() {
1296
+ const input = this._element.querySelector('input[name="rm"]');
1297
+ return input && typeof input.value === 'string' && input.value != 'undefined' ? input.value.replace('#', '') : null;
1814
1298
  }
1815
-
1816
- _getThreadID(): ?string {
1299
+ _getThreadID() {
1817
1300
  const targetID = this.getTargetMessageID();
1818
1301
  try {
1819
1302
  return targetID ? this._driver.getThreadIDForMessageID(targetID) : null;
@@ -1822,117 +1305,76 @@ class GmailComposeView {
1822
1305
  return null;
1823
1306
  }
1824
1307
  }
1825
-
1826
- getElement(): HTMLElement {
1308
+ getElement() {
1827
1309
  return this._element;
1828
1310
  }
1829
-
1830
- isFullscreen(): boolean {
1311
+ isFullscreen() {
1831
1312
  return this._isFullscreen;
1832
1313
  }
1833
-
1834
- getLastSelectionRange(): ?Range {
1314
+ getLastSelectionRange() {
1835
1315
  // The selection range can become invalid if the compose view has become expanded or
1836
1316
  // minimized since the range was set.
1837
1317
  const range = this._lastSelectionRange;
1838
- if (
1839
- range &&
1840
- !this.getBodyElement().contains(range.commonAncestorContainer)
1841
- ) {
1318
+ if (range && !this.getBodyElement().contains(range.commonAncestorContainer)) {
1842
1319
  this._lastSelectionRange = undefined;
1843
1320
  }
1844
1321
  return this._lastSelectionRange;
1845
1322
  }
1846
-
1847
- setLastSelectionRange(lastSelectionRange: ?Range) {
1323
+ setLastSelectionRange(lastSelectionRange) {
1848
1324
  this._lastSelectionRange = lastSelectionRange;
1849
1325
  }
1850
-
1851
- registerRequestModifier(
1852
- modifier: (composeParams: { body: string }) =>
1853
- | { body: string }
1854
- | Promise<{ body: string }>
1855
- ) {
1856
- const keyId = this._driver.isUsingSyncAPI()
1857
- ? this._getDraftIDfromForm()
1858
- : this.getComposeID();
1859
-
1326
+ registerRequestModifier(modifier) {
1327
+ const keyId = this._driver.isUsingSyncAPI() ? this._getDraftIDfromForm() : this.getComposeID();
1860
1328
  if (!keyId) throw new Error('keyId should be set here');
1861
-
1862
- const modifierId = this._driver
1863
- .getPageCommunicator()
1864
- .registerComposeRequestModifier(keyId, this._driver.getAppId());
1329
+ const modifierId = this._driver.getPageCommunicator().registerComposeRequestModifier(keyId, this._driver.getAppId());
1865
1330
  this._requestModifiers[modifierId] = modifier;
1866
1331
  this._startListeningForModificationRequests();
1867
1332
  this._stopper.onValue(() => {
1868
- this._driver
1869
- .getPageCommunicator()
1870
- .unregisterComposeRequestModifier(keyId, modifierId);
1333
+ this._driver.getPageCommunicator().unregisterComposeRequestModifier(keyId, modifierId);
1871
1334
  });
1872
1335
  }
1873
-
1874
1336
  _startListeningForModificationRequests() {
1875
1337
  if (this._isListeningToAjaxInterceptStream) {
1876
1338
  return;
1877
1339
  }
1878
-
1879
- const keyId = this._driver.isUsingSyncAPI()
1880
- ? this._getDraftIDfromForm()
1881
- : this.getComposeID();
1882
-
1340
+ const keyId = this._driver.isUsingSyncAPI() ? this._getDraftIDfromForm() : this.getComposeID();
1883
1341
  if (!keyId) throw new Error('keyId should be set here');
1884
-
1885
- this._driver
1886
- .getPageCommunicator()
1887
- .ajaxInterceptStream.filter(
1888
- ({ type, composeid, draftID, modifierId }) =>
1889
- type === 'inboxSDKmodifyComposeRequest' &&
1890
- (composeid === keyId || keyId === draftID) &&
1891
- Boolean(this._requestModifiers[modifierId])
1892
- )
1893
- .takeUntilBy(this._stopper)
1894
- .onValue(({ modifierId, composeParams }) => {
1342
+ this._driver.getPageCommunicator().ajaxInterceptStream.filter(_ref9 => {
1343
+ let {
1344
+ type,
1345
+ composeid,
1346
+ draftID,
1347
+ modifierId
1348
+ } = _ref9;
1349
+ return type === 'inboxSDKmodifyComposeRequest' && (composeid === keyId || keyId === draftID) && Boolean(this._requestModifiers[modifierId]);
1350
+ }).takeUntilBy(this._stopper).onValue(_ref10 => {
1351
+ let {
1352
+ modifierId,
1353
+ composeParams
1354
+ } = _ref10;
1355
+ if (this._driver.getLogger().shouldTrackEverything()) {
1356
+ this._driver.getLogger().eventSite('inboxSDKmodifyComposeRequest');
1357
+ }
1358
+ const modifier = this._requestModifiers[modifierId];
1359
+ const result = new Promise(resolve => resolve(modifier(composeParams)));
1360
+ result.then(newComposeParams => this._driver.getPageCommunicator().modifyComposeRequest(keyId, modifierId, newComposeParams || composeParams)).then(x => {
1895
1361
  if (this._driver.getLogger().shouldTrackEverything()) {
1896
- this._driver.getLogger().eventSite('inboxSDKmodifyComposeRequest');
1362
+ this._driver.getLogger().eventSite('composeRequestModified');
1897
1363
  }
1898
-
1899
- const modifier = this._requestModifiers[modifierId];
1900
- const result = new Promise((resolve) =>
1901
- resolve(modifier(composeParams))
1902
- );
1903
-
1904
- result
1905
- .then((newComposeParams) =>
1906
- this._driver
1907
- .getPageCommunicator()
1908
- .modifyComposeRequest(
1909
- keyId,
1910
- modifierId,
1911
- newComposeParams || composeParams
1912
- )
1913
- )
1914
- .then((x) => {
1915
- if (this._driver.getLogger().shouldTrackEverything()) {
1916
- this._driver.getLogger().eventSite('composeRequestModified');
1917
- }
1918
- return x;
1919
- })
1920
- .catch((err) => {
1921
- this._driver
1922
- .getPageCommunicator()
1923
- .modifyComposeRequest(keyId, modifierId, composeParams);
1924
- this._driver.getLogger().error(err);
1925
- });
1364
+ return x;
1365
+ }).catch(err => {
1366
+ this._driver.getPageCommunicator().modifyComposeRequest(keyId, modifierId, composeParams);
1367
+ this._driver.getLogger().error(err);
1926
1368
  });
1927
-
1369
+ });
1928
1370
  this._isListeningToAjaxInterceptStream = true;
1929
1371
  }
1930
-
1931
- setupLinkPopOvers(): void {
1372
+ setupLinkPopOvers() {
1932
1373
  if (!this._hasSetupLinkPopOvers) {
1933
1374
  this._hasSetupLinkPopOvers = true;
1934
- this._eventStream.plug(setupLinkPopOvers(this));
1375
+ this._eventStream.plug((0, _setupLinkPopovers.default)(this));
1935
1376
  }
1936
1377
  }
1937
1378
  }
1938
- export default ud.defn(module, GmailComposeView);
1379
+ var _default = ud.defn(module, GmailComposeView);
1380
+ exports.default = _default;