@inboxsdk/core 0.2.28-alpha.5 → 0.2.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (669) hide show
  1. package/inboxsdk.js +28 -62
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +1 -5
  4. package/pageWorld.js.map +1 -1
  5. package/src/build/exec.d.ts +0 -1
  6. package/src/build/spawn.d.ts +0 -1
  7. package/src/common/ajax.d.ts +0 -1
  8. package/src/common/cachebust-url.d.ts +0 -1
  9. package/src/common/censorHTMLstring.d.ts +0 -1
  10. package/src/common/censorHTMLtree.d.ts +0 -1
  11. package/src/common/censorJSONTree.d.ts +0 -1
  12. package/src/common/connectivity-test.d.ts +0 -1
  13. package/src/common/defer.d.ts +0 -1
  14. package/src/common/find-parent.d.ts +0 -1
  15. package/src/common/get-extension-id.d.ts +0 -1
  16. package/src/common/get-or-fail.d.ts +0 -1
  17. package/src/common/get-session-id.d.ts +0 -1
  18. package/src/common/get-stack-trace.d.ts +0 -1
  19. package/src/common/html-to-text.d.ts +0 -1
  20. package/src/common/isElementVisible.d.ts +0 -1
  21. package/src/common/load-script.d.ts +0 -1
  22. package/src/common/log-error.d.ts +0 -1
  23. package/src/common/quoted-split.d.ts +0 -1
  24. package/src/common/rate-limit-queuer.d.ts +0 -1
  25. package/src/common/rate-limit.d.ts +0 -1
  26. package/src/common/version.d.ts +0 -1
  27. package/src/inboxsdk-js/check-requirements.js +3 -7
  28. package/src/inboxsdk-js/header.js +0 -1
  29. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +6 -5
  30. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +3 -4
  31. package/src/inboxsdk-js/inboxsdk-REMOTE.js +1 -3
  32. package/src/inboxsdk-js/inboxsdk-TEST.js +3 -4
  33. package/src/inboxsdk-js/inboxsdk.js +39 -33
  34. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +18 -15
  35. package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts +0 -1
  36. package/src/inboxsdk.d.ts +27 -10
  37. package/src/injected-js/gmail/constants.d.ts +0 -1
  38. package/src/injected-js/gmail/modify-suggestions.d.ts +0 -1
  39. package/src/injected-js/gmail/modify-suggestions.test.js +9 -8
  40. package/src/injected-js/gmail/setup-gmail-interceptor.js +579 -340
  41. package/src/injected-js/gmail/setup-gmonkey-handler.d.ts +0 -1
  42. package/src/injected-js/gmail/sync-compose-processor-20220909.d.ts +0 -1
  43. package/src/injected-js/gmail/sync-compose-processor.d.ts +0 -1
  44. package/src/injected-js/gmail/sync-compose-request-processor.d.ts +0 -1
  45. package/src/injected-js/gmail/sync-compose-request-processor.test.js +49 -39
  46. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +33 -20
  47. package/src/injected-js/gmail/thread-identifier/index.js +93 -57
  48. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +31 -22
  49. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +28 -12
  50. package/src/injected-js/inbox/setupAjaxInterceptor.js +121 -64
  51. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +66 -53
  52. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +36 -20
  53. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
  54. package/src/injected-js/injected-logger.d.ts +0 -1
  55. package/src/injected-js/main.js +24 -11
  56. package/src/injected-js/message-metadata-holder.js +82 -52
  57. package/src/injected-js/setup-data-exposer.js +148 -89
  58. package/src/injected-js/setup-error-silencer.js +21 -21
  59. package/src/injected-js/setup-event-reemitter.js +22 -30
  60. package/src/injected-js/setupCustomViewEventAssassin.d.ts +0 -1
  61. package/src/injected-js/setupInboxCustomViewLinkFixer.js +29 -24
  62. package/src/injected-js/setupPushStateListener.js +11 -18
  63. package/src/injected-js/xhr-helper.js +65 -62
  64. package/src/injected-js/xhr-proxy-factory.js +445 -195
  65. package/src/injected-js/xhr-proxy-factory.test.js +991 -824
  66. package/src/platform-implementation-js/constants/nav-item-types.d.ts +0 -1
  67. package/src/platform-implementation-js/constants/router.js +9 -17
  68. package/src/platform-implementation-js/constants/toolbars.js +3 -8
  69. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
  70. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +136 -115
  71. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts +2 -3
  72. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.d.ts +0 -1
  73. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +14 -13
  74. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +48 -27
  75. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.d.ts +0 -1
  76. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +42 -31
  77. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +40 -30
  78. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.d.ts +0 -1
  79. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.d.ts +0 -1
  80. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +18 -10
  81. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +28 -21
  82. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +45 -33
  83. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +49 -31
  84. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +65 -58
  85. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts +0 -1
  86. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +124 -40
  87. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +22 -17
  88. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.d.ts +0 -1
  89. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +11 -10
  90. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +80 -44
  91. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +26 -19
  92. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +147 -71
  93. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +148 -91
  94. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +166 -150
  95. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +120 -70
  96. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +15 -15
  97. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +67 -44
  98. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +379 -230
  99. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +307 -121
  100. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +24 -17
  101. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +49 -41
  102. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +40 -30
  103. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +60 -28
  104. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +133 -61
  105. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +110 -83
  106. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +42 -30
  107. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +46 -52
  108. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts +3 -13
  109. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +683 -355
  110. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.d.ts +0 -1
  111. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.d.ts +0 -1
  112. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts +0 -4
  113. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.d.ts +0 -1
  114. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.d.ts +0 -1
  115. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.d.ts +0 -1
  116. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.d.ts +0 -1
  117. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +93 -77
  118. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.d.ts +0 -1
  119. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.d.ts +0 -1
  120. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +82 -35
  121. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +94 -44
  122. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +19 -12
  123. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +29 -17
  124. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +26 -26
  125. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +797 -391
  126. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +9 -7
  127. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +109 -60
  128. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +135 -95
  129. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +211 -103
  130. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +61 -61
  131. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +17 -17
  132. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +541 -188
  133. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +135 -67
  134. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +49 -27
  135. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +13 -7
  136. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +22 -9
  137. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +63 -36
  138. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.d.ts +0 -1
  139. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +113 -38
  140. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.d.ts +0 -1
  141. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +16 -11
  142. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +17 -11
  143. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +11 -8
  144. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +47 -27
  145. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +24 -11
  146. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +111 -59
  147. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.d.ts +0 -1
  148. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +14 -15
  149. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +17 -11
  150. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +24 -18
  151. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.d.ts +0 -1
  152. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +23 -19
  153. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.d.ts +0 -1
  154. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +19 -11
  155. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +376 -141
  156. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +28 -17
  157. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +70 -34
  158. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.d.ts +0 -1
  159. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +17 -10
  160. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.d.ts +0 -1
  161. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.d.ts +0 -1
  162. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +137 -83
  163. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +19 -10
  164. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +1190 -632
  165. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.d.ts +0 -1
  166. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +38 -29
  167. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +617 -327
  168. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts +1 -34
  169. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +48 -29
  170. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +380 -188
  171. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +194 -104
  172. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.d.ts +0 -1
  173. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +811 -382
  174. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +58 -34
  175. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +581 -330
  176. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +277 -123
  177. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +35 -15
  178. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +571 -216
  179. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +336 -152
  180. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +211 -87
  181. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.d.ts +0 -1
  182. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.d.ts +0 -1
  183. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.d.ts +0 -1
  184. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.d.ts +0 -1
  185. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +11 -10
  186. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.d.ts +0 -1
  187. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.d.ts +0 -1
  188. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.d.ts +0 -1
  189. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +29 -20
  190. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.d.ts +0 -1
  191. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +76 -41
  192. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +99 -45
  193. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +128 -76
  194. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +319 -128
  195. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +78 -45
  196. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +4 -8
  197. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +54 -36
  198. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +53 -35
  199. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +15 -13
  200. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +18 -15
  201. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +13 -14
  202. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +20 -14
  203. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +13 -14
  204. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +67 -35
  205. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +18 -16
  206. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +185 -68
  207. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +56 -28
  208. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +10 -12
  209. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +16 -16
  210. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +35 -24
  211. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +89 -37
  212. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +78 -56
  213. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +32 -26
  214. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +109 -52
  215. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +8 -7
  216. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +20 -16
  217. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +16 -15
  218. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +83 -75
  219. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +823 -531
  220. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +61 -48
  221. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +12 -9
  222. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +19 -12
  223. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +33 -24
  224. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +388 -201
  225. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +265 -249
  226. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +152 -84
  227. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +67 -55
  228. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +65 -43
  229. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +56 -31
  230. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +294 -191
  231. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +45 -32
  232. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +39 -21
  233. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +240 -153
  234. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +150 -75
  235. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +37 -20
  236. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +114 -60
  237. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +65 -47
  238. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +52 -41
  239. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +36 -27
  240. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +80 -52
  241. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +649 -465
  242. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +58 -37
  243. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +26 -14
  244. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +235 -118
  245. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +11 -10
  246. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +46 -28
  247. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +202 -131
  248. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +80 -40
  249. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +61 -35
  250. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +221 -124
  251. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +213 -125
  252. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +126 -104
  253. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +51 -36
  254. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +297 -158
  255. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +35 -21
  256. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +43 -24
  257. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +68 -39
  258. package/src/platform-implementation-js/driver-common/getAccountUrlPart.d.ts +0 -1
  259. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +19 -14
  260. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +35 -27
  261. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.d.ts +0 -1
  262. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +22 -16
  263. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.d.ts +0 -1
  264. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
  265. package/src/platform-implementation-js/driver-common/gmailAjax.d.ts +0 -1
  266. package/src/platform-implementation-js/driver-common/inboxAjax.js +7 -12
  267. package/src/platform-implementation-js/driver-common/render-custom-icon.d.ts +0 -1
  268. package/src/platform-implementation-js/driver-common/requestGmailThread.js +20 -19
  269. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +306 -197
  270. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +161 -113
  271. package/src/platform-implementation-js/driver-common/update-icon.d.ts +0 -1
  272. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +114 -1
  273. package/src/platform-implementation-js/driver-interfaces/driver.d.ts +0 -5
  274. package/src/platform-implementation-js/driver-interfaces/driver.js +126 -1
  275. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +48 -4
  276. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +29 -1
  277. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +32 -1
  278. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +11 -1
  279. package/src/platform-implementation-js/lib/ErrorCollector.d.ts +0 -1
  280. package/src/platform-implementation-js/lib/Membrane.d.ts +0 -1
  281. package/src/platform-implementation-js/lib/ScrollableContainByScreen.d.ts +0 -1
  282. package/src/platform-implementation-js/lib/array-to-lifetimes.js +41 -43
  283. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +155 -139
  284. package/src/platform-implementation-js/lib/attemptWithRetries.d.ts +0 -1
  285. package/src/platform-implementation-js/lib/common-page-communicator.d.ts +0 -1
  286. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +38 -19
  287. package/src/platform-implementation-js/lib/css-selector-escape.js +3 -7
  288. package/src/platform-implementation-js/lib/delay-asap.d.ts +0 -1
  289. package/src/platform-implementation-js/lib/delay-idle.d.ts +0 -1
  290. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.d.ts +0 -1
  291. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +11 -8
  292. package/src/platform-implementation-js/lib/dom/generic-button-view.d.ts +0 -1
  293. package/src/platform-implementation-js/lib/dom/get-insert-before-element.d.ts +0 -1
  294. package/src/platform-implementation-js/lib/dom/get-selection.js +52 -23
  295. package/src/platform-implementation-js/lib/dom/insert-element-in-order.d.ts +0 -1
  296. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +101 -69
  297. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +10 -8
  298. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.d.ts +0 -1
  299. package/src/platform-implementation-js/lib/dom/make-element-child-stream.d.ts +0 -1
  300. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.d.ts +0 -1
  301. package/src/platform-implementation-js/lib/dom/make-element-view-stream.d.ts +0 -1
  302. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.d.ts +0 -1
  303. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.d.ts +0 -1
  304. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +17 -15
  305. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.d.ts +0 -1
  306. package/src/platform-implementation-js/lib/dom/parentNodes.d.ts +0 -1
  307. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +11 -8
  308. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.d.ts +0 -1
  309. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.d.ts +0 -1
  310. package/src/platform-implementation-js/lib/dom/set-css.js +3 -7
  311. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +11 -9
  312. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +33 -32
  313. package/src/platform-implementation-js/lib/dom/simulate-key.d.ts +0 -1
  314. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.d.ts +0 -1
  315. package/src/platform-implementation-js/lib/dom/trigger-relay-event.d.ts +0 -1
  316. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.d.ts +0 -1
  317. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +26 -23
  318. package/src/platform-implementation-js/lib/fake-window-resize.d.ts +0 -1
  319. package/src/platform-implementation-js/lib/from-event-target-capture.d.ts +0 -1
  320. package/src/platform-implementation-js/lib/fromEventsWithOptions.d.ts +0 -1
  321. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +149 -86
  322. package/src/platform-implementation-js/lib/handler-registry.d.ts +0 -1
  323. package/src/platform-implementation-js/lib/idMap.d.ts +0 -1
  324. package/src/platform-implementation-js/lib/imageRequest.d.ts +0 -1
  325. package/src/platform-implementation-js/lib/incrementName.d.ts +0 -1
  326. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts +0 -1
  327. package/src/platform-implementation-js/lib/inject-script.d.ts +0 -1
  328. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +57 -42
  329. package/src/platform-implementation-js/lib/is-valid-app-id.d.ts +0 -1
  330. package/src/platform-implementation-js/lib/is-valid-email.d.ts +0 -1
  331. package/src/platform-implementation-js/lib/isNotNil.d.ts +0 -1
  332. package/src/platform-implementation-js/lib/isStreakAppId.d.ts +0 -1
  333. package/src/platform-implementation-js/lib/logger.d.ts +0 -1
  334. package/src/platform-implementation-js/lib/make-revocable-function.js +21 -19
  335. package/src/platform-implementation-js/lib/make-revocable-function.test.js +22 -20
  336. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +17 -15
  337. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +18 -9
  338. package/src/platform-implementation-js/lib/persistent-queue.d.ts +0 -1
  339. package/src/platform-implementation-js/lib/populateRouteID.js +9 -8
  340. package/src/platform-implementation-js/lib/populateRouteID.test.js +19 -20
  341. package/src/platform-implementation-js/lib/react/ElementContainer.js +20 -23
  342. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +9 -10
  343. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +20 -13
  344. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +18 -13
  345. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +17 -11
  346. package/src/platform-implementation-js/lib/safe-event-emitter.d.ts +0 -1
  347. package/src/platform-implementation-js/lib/shared-style.js +13 -14
  348. package/src/platform-implementation-js/lib/stopper-pool.d.ts +0 -1
  349. package/src/platform-implementation-js/lib/stream-wait-for.d.ts +0 -1
  350. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +17 -18
  351. package/src/platform-implementation-js/lib/toLiveSet.js +15 -17
  352. package/src/platform-implementation-js/lib/wait-for.d.ts +1 -2
  353. package/src/platform-implementation-js/lib/waitForAsync.d.ts +0 -1
  354. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +5 -6
  355. package/src/platform-implementation-js/main.js +24 -9
  356. package/src/platform-implementation-js/namespaces/butter-bar.d.ts +0 -1
  357. package/src/platform-implementation-js/namespaces/compose.js +60 -37
  358. package/src/platform-implementation-js/namespaces/conversations.js +124 -52
  359. package/src/platform-implementation-js/namespaces/global.js +39 -27
  360. package/src/platform-implementation-js/namespaces/keyboard.js +33 -29
  361. package/src/platform-implementation-js/namespaces/lists.js +31 -25
  362. package/src/platform-implementation-js/namespaces/modal.js +28 -34
  363. package/src/platform-implementation-js/namespaces/nav-menu.js +45 -30
  364. package/src/platform-implementation-js/namespaces/router.js +137 -70
  365. package/src/platform-implementation-js/namespaces/search.js +17 -19
  366. package/src/platform-implementation-js/namespaces/toolbars.js +117 -71
  367. package/src/platform-implementation-js/namespaces/user.js +37 -36
  368. package/src/platform-implementation-js/namespaces/widgets.js +61 -54
  369. package/src/platform-implementation-js/platform-implementation.d.ts +0 -2
  370. package/src/platform-implementation-js/platform-implementation.js +226 -98
  371. package/src/platform-implementation-js/views/SimpleElementView.d.ts +0 -1
  372. package/src/platform-implementation-js/views/app-toolbar-button-view.js +47 -26
  373. package/src/platform-implementation-js/views/collapsible-section-view.js +63 -66
  374. package/src/platform-implementation-js/views/compose-button-view.d.ts +0 -1
  375. package/src/platform-implementation-js/views/compose-view.d.ts +0 -1
  376. package/src/platform-implementation-js/views/content-panel-view.js +30 -28
  377. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +44 -21
  378. package/src/platform-implementation-js/views/conversations/custom-message-view.js +104 -44
  379. package/src/platform-implementation-js/views/conversations/message-view.js +202 -131
  380. package/src/platform-implementation-js/views/conversations/thread-view.js +127 -75
  381. package/src/platform-implementation-js/views/keyboard-shortcut-handle.d.ts +0 -1
  382. package/src/platform-implementation-js/views/native-nav-item-view.js +65 -32
  383. package/src/platform-implementation-js/views/nav-item-view.js +115 -51
  384. package/src/platform-implementation-js/views/route-view/custom-route-view.js +20 -25
  385. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
  386. package/src/platform-implementation-js/views/route-view/list-route-view.js +52 -30
  387. package/src/platform-implementation-js/views/route-view/route-view.js +35 -24
  388. package/src/platform-implementation-js/views/section-view.js +52 -60
  389. package/src/platform-implementation-js/views/thread-row-view.js +74 -49
  390. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.d.ts +0 -1
  391. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.d.ts +0 -1
  392. package/src/platform-implementation-js/widgets/buttons/dropdown-view.d.ts +0 -1
  393. package/src/platform-implementation-js/widgets/drawer-view.js +36 -29
  394. package/src/platform-implementation-js/widgets/modal-view.js +68 -39
  395. package/src/platform-implementation-js/widgets/mole-view.js +22 -22
  396. package/src/platform-implementation-js/widgets/top-message-bar-view.js +10 -13
  397. package/src/build/exec.d.ts.map +0 -1
  398. package/src/build/exec.js +0 -26
  399. package/src/build/spawn.d.ts.map +0 -1
  400. package/src/build/spawn.js +0 -17
  401. package/src/common/ajax.d.ts.map +0 -1
  402. package/src/common/ajax.js +0 -90
  403. package/src/common/cachebust-url.d.ts.map +0 -1
  404. package/src/common/cachebust-url.js +0 -10
  405. package/src/common/censorHTMLstring.d.ts.map +0 -1
  406. package/src/common/censorHTMLstring.js +0 -37
  407. package/src/common/censorHTMLtree.d.ts.map +0 -1
  408. package/src/common/censorHTMLtree.js +0 -28
  409. package/src/common/censorJSONTree.d.ts.map +0 -1
  410. package/src/common/censorJSONTree.js +0 -15
  411. package/src/common/connectivity-test.d.ts.map +0 -1
  412. package/src/common/connectivity-test.js +0 -21
  413. package/src/common/defer.d.ts.map +0 -1
  414. package/src/common/defer.js +0 -11
  415. package/src/common/find-parent.d.ts.map +0 -1
  416. package/src/common/find-parent.js +0 -10
  417. package/src/common/get-extension-id.d.ts.map +0 -1
  418. package/src/common/get-extension-id.js +0 -7
  419. package/src/common/get-or-fail.d.ts.map +0 -1
  420. package/src/common/get-or-fail.js +0 -8
  421. package/src/common/get-session-id.d.ts.map +0 -1
  422. package/src/common/get-session-id.js +0 -14
  423. package/src/common/get-stack-trace.d.ts.map +0 -1
  424. package/src/common/get-stack-trace.js +0 -6
  425. package/src/common/html-to-text.d.ts.map +0 -1
  426. package/src/common/html-to-text.js +0 -7
  427. package/src/common/isElementVisible.d.ts.map +0 -1
  428. package/src/common/isElementVisible.js +0 -6
  429. package/src/common/load-script.d.ts.map +0 -1
  430. package/src/common/load-script.js +0 -127
  431. package/src/common/log-error.d.ts.map +0 -1
  432. package/src/common/log-error.js +0 -191
  433. package/src/common/quoted-split.d.ts.map +0 -1
  434. package/src/common/quoted-split.js +0 -18
  435. package/src/common/rate-limit-queuer.d.ts.map +0 -1
  436. package/src/common/rate-limit-queuer.js +0 -57
  437. package/src/common/rate-limit.d.ts.map +0 -1
  438. package/src/common/rate-limit.js +0 -14
  439. package/src/common/version.d.ts.map +0 -1
  440. package/src/common/version.js +0 -6
  441. package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts.map +0 -1
  442. package/src/inboxsdk-js/loading/platform-implementation-loader.js +0 -27
  443. package/src/injected-js/gmail/constants.d.ts.map +0 -1
  444. package/src/injected-js/gmail/constants.js +0 -2
  445. package/src/injected-js/gmail/modify-suggestions.d.ts.map +0 -1
  446. package/src/injected-js/gmail/modify-suggestions.js +0 -106
  447. package/src/injected-js/gmail/setup-gmonkey-handler.d.ts.map +0 -1
  448. package/src/injected-js/gmail/setup-gmonkey-handler.js +0 -49
  449. package/src/injected-js/gmail/sync-compose-processor-20220909.d.ts.map +0 -1
  450. package/src/injected-js/gmail/sync-compose-processor-20220909.js +0 -298
  451. package/src/injected-js/gmail/sync-compose-processor.d.ts.map +0 -1
  452. package/src/injected-js/gmail/sync-compose-processor.js +0 -55
  453. package/src/injected-js/gmail/sync-compose-request-processor.d.ts.map +0 -1
  454. package/src/injected-js/gmail/sync-compose-request-processor.js +0 -110
  455. package/src/injected-js/injected-logger.d.ts.map +0 -1
  456. package/src/injected-js/injected-logger.js +0 -50
  457. package/src/injected-js/setupCustomViewEventAssassin.d.ts.map +0 -1
  458. package/src/injected-js/setupCustomViewEventAssassin.js +0 -90
  459. package/src/platform-implementation-js/constants/nav-item-types.d.ts.map +0 -1
  460. package/src/platform-implementation-js/constants/nav-item-types.js +0 -19
  461. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.d.ts +0 -5
  462. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.d.ts.map +0 -1
  463. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +0 -21
  464. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.d.ts +0 -5
  465. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.d.ts.map +0 -1
  466. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +0 -28
  467. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts.map +0 -1
  468. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +0 -98
  469. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.d.ts.map +0 -1
  470. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +0 -4
  471. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.d.ts.map +0 -1
  472. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +0 -8
  473. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.d.ts.map +0 -1
  474. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +0 -12
  475. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.d.ts.map +0 -1
  476. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +0 -33
  477. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts.map +0 -1
  478. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +0 -4
  479. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.d.ts.map +0 -1
  480. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +0 -44
  481. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.d.ts +0 -2
  482. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.d.ts.map +0 -1
  483. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.d.ts.map +0 -1
  484. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +0 -38
  485. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.d.ts.map +0 -1
  486. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +0 -12
  487. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts.map +0 -1
  488. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +0 -253
  489. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.d.ts.map +0 -1
  490. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +0 -200
  491. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.d.ts.map +0 -1
  492. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +0 -533
  493. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.d.ts.map +0 -1
  494. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +0 -289
  495. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.d.ts.map +0 -1
  496. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +0 -21
  497. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.d.ts.map +0 -1
  498. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +0 -28
  499. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.d.ts.map +0 -1
  500. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +0 -19
  501. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.d.ts +0 -43
  502. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.d.ts.map +0 -1
  503. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +0 -126
  504. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.d.ts.map +0 -1
  505. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +0 -101
  506. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.d.ts.map +0 -1
  507. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +0 -38
  508. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.d.ts.map +0 -1
  509. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +0 -28
  510. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.d.ts.map +0 -1
  511. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +0 -22
  512. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.d.ts.map +0 -1
  513. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +0 -233
  514. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.d.ts.map +0 -1
  515. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +0 -223
  516. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.d.ts.map +0 -1
  517. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +0 -157
  518. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.d.ts.map +0 -1
  519. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +0 -109
  520. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.d.ts.map +0 -1
  521. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +0 -5
  522. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts.map +0 -1
  523. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +0 -759
  524. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.d.ts.map +0 -1
  525. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +0 -84
  526. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.d.ts.map +0 -1
  527. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +0 -33
  528. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.d.ts.map +0 -1
  529. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +0 -325
  530. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.d.ts.map +0 -1
  531. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +0 -58
  532. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.d.ts.map +0 -1
  533. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +0 -55
  534. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.d.ts.map +0 -1
  535. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +0 -96
  536. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.d.ts.map +0 -1
  537. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +0 -30
  538. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.d.ts.map +0 -1
  539. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +0 -10
  540. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.d.ts.map +0 -1
  541. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +0 -22
  542. package/src/platform-implementation-js/driver-common/getAccountUrlPart.d.ts.map +0 -1
  543. package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +0 -17
  544. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.d.ts.map +0 -1
  545. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +0 -33
  546. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.d.ts.map +0 -1
  547. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +0 -49
  548. package/src/platform-implementation-js/driver-common/gmailAjax.d.ts.map +0 -1
  549. package/src/platform-implementation-js/driver-common/gmailAjax.js +0 -65
  550. package/src/platform-implementation-js/driver-common/render-custom-icon.d.ts.map +0 -1
  551. package/src/platform-implementation-js/driver-common/render-custom-icon.js +0 -16
  552. package/src/platform-implementation-js/driver-common/update-icon.d.ts.map +0 -1
  553. package/src/platform-implementation-js/driver-common/update-icon.js +0 -90
  554. package/src/platform-implementation-js/lib/ErrorCollector.d.ts.map +0 -1
  555. package/src/platform-implementation-js/lib/ErrorCollector.js +0 -47
  556. package/src/platform-implementation-js/lib/Membrane.d.ts.map +0 -1
  557. package/src/platform-implementation-js/lib/Membrane.js +0 -22
  558. package/src/platform-implementation-js/lib/ScrollableContainByScreen.d.ts.map +0 -1
  559. package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +0 -30
  560. package/src/platform-implementation-js/lib/attemptWithRetries.d.ts.map +0 -1
  561. package/src/platform-implementation-js/lib/attemptWithRetries.js +0 -16
  562. package/src/platform-implementation-js/lib/common-page-communicator.d.ts.map +0 -1
  563. package/src/platform-implementation-js/lib/common-page-communicator.js +0 -137
  564. package/src/platform-implementation-js/lib/delay-asap.d.ts.map +0 -1
  565. package/src/platform-implementation-js/lib/delay-asap.js +0 -12
  566. package/src/platform-implementation-js/lib/delay-idle.d.ts.map +0 -1
  567. package/src/platform-implementation-js/lib/delay-idle.js +0 -16
  568. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.d.ts.map +0 -1
  569. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +0 -36
  570. package/src/platform-implementation-js/lib/dom/generic-button-view.d.ts.map +0 -1
  571. package/src/platform-implementation-js/lib/dom/generic-button-view.js +0 -39
  572. package/src/platform-implementation-js/lib/dom/get-insert-before-element.d.ts.map +0 -1
  573. package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +0 -39
  574. package/src/platform-implementation-js/lib/dom/insert-element-in-order.d.ts.map +0 -1
  575. package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +0 -38
  576. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.d.ts.map +0 -1
  577. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +0 -12
  578. package/src/platform-implementation-js/lib/dom/make-element-child-stream.d.ts.map +0 -1
  579. package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +0 -79
  580. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.d.ts.map +0 -1
  581. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +0 -28
  582. package/src/platform-implementation-js/lib/dom/make-element-view-stream.d.ts.map +0 -1
  583. package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +0 -15
  584. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.d.ts.map +0 -1
  585. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +0 -15
  586. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.d.ts.map +0 -1
  587. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +0 -5
  588. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.d.ts.map +0 -1
  589. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +0 -39
  590. package/src/platform-implementation-js/lib/dom/parentNodes.d.ts.map +0 -1
  591. package/src/platform-implementation-js/lib/dom/parentNodes.js +0 -8
  592. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.d.ts.map +0 -1
  593. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +0 -6
  594. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.d.ts.map +0 -1
  595. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +0 -22
  596. package/src/platform-implementation-js/lib/dom/simulate-key.d.ts.map +0 -1
  597. package/src/platform-implementation-js/lib/dom/simulate-key.js +0 -46
  598. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.d.ts.map +0 -1
  599. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +0 -16
  600. package/src/platform-implementation-js/lib/dom/trigger-relay-event.d.ts.map +0 -1
  601. package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +0 -7
  602. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.d.ts.map +0 -1
  603. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +0 -25
  604. package/src/platform-implementation-js/lib/fake-window-resize.d.ts.map +0 -1
  605. package/src/platform-implementation-js/lib/fake-window-resize.js +0 -5
  606. package/src/platform-implementation-js/lib/from-event-target-capture.d.ts.map +0 -1
  607. package/src/platform-implementation-js/lib/from-event-target-capture.js +0 -12
  608. package/src/platform-implementation-js/lib/fromEventsWithOptions.d.ts.map +0 -1
  609. package/src/platform-implementation-js/lib/fromEventsWithOptions.js +0 -10
  610. package/src/platform-implementation-js/lib/handler-registry.d.ts.map +0 -1
  611. package/src/platform-implementation-js/lib/handler-registry.js +0 -67
  612. package/src/platform-implementation-js/lib/idMap.d.ts.map +0 -1
  613. package/src/platform-implementation-js/lib/idMap.js +0 -45
  614. package/src/platform-implementation-js/lib/imageRequest.d.ts.map +0 -1
  615. package/src/platform-implementation-js/lib/imageRequest.js +0 -8
  616. package/src/platform-implementation-js/lib/incrementName.d.ts.map +0 -1
  617. package/src/platform-implementation-js/lib/incrementName.js +0 -7
  618. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts.map +0 -1
  619. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +0 -14
  620. package/src/platform-implementation-js/lib/inject-script.d.ts.map +0 -1
  621. package/src/platform-implementation-js/lib/inject-script.js +0 -33
  622. package/src/platform-implementation-js/lib/is-valid-app-id.d.ts.map +0 -1
  623. package/src/platform-implementation-js/lib/is-valid-app-id.js +0 -27
  624. package/src/platform-implementation-js/lib/is-valid-email.d.ts.map +0 -1
  625. package/src/platform-implementation-js/lib/is-valid-email.js +0 -14
  626. package/src/platform-implementation-js/lib/isNotNil.d.ts.map +0 -1
  627. package/src/platform-implementation-js/lib/isNotNil.js +0 -5
  628. package/src/platform-implementation-js/lib/isStreakAppId.d.ts.map +0 -1
  629. package/src/platform-implementation-js/lib/isStreakAppId.js +0 -11
  630. package/src/platform-implementation-js/lib/logger.d.ts.map +0 -1
  631. package/src/platform-implementation-js/lib/logger.js +0 -441
  632. package/src/platform-implementation-js/lib/persistent-queue.d.ts.map +0 -1
  633. package/src/platform-implementation-js/lib/persistent-queue.js +0 -107
  634. package/src/platform-implementation-js/lib/safe-event-emitter.d.ts.map +0 -1
  635. package/src/platform-implementation-js/lib/safe-event-emitter.js +0 -17
  636. package/src/platform-implementation-js/lib/stopper-pool.d.ts.map +0 -1
  637. package/src/platform-implementation-js/lib/stopper-pool.js +0 -41
  638. package/src/platform-implementation-js/lib/stream-wait-for.d.ts.map +0 -1
  639. package/src/platform-implementation-js/lib/stream-wait-for.js +0 -30
  640. package/src/platform-implementation-js/lib/wait-for.d.ts.map +0 -1
  641. package/src/platform-implementation-js/lib/wait-for.js +0 -28
  642. package/src/platform-implementation-js/lib/waitForAsync.d.ts.map +0 -1
  643. package/src/platform-implementation-js/lib/waitForAsync.js +0 -19
  644. package/src/platform-implementation-js/namespaces/app-menu.d.ts +0 -38
  645. package/src/platform-implementation-js/namespaces/app-menu.d.ts.map +0 -1
  646. package/src/platform-implementation-js/namespaces/app-menu.js +0 -31
  647. package/src/platform-implementation-js/namespaces/butter-bar.d.ts.map +0 -1
  648. package/src/platform-implementation-js/namespaces/butter-bar.js +0 -163
  649. package/src/platform-implementation-js/views/SimpleElementView.d.ts.map +0 -1
  650. package/src/platform-implementation-js/views/SimpleElementView.js +0 -16
  651. package/src/platform-implementation-js/views/app-menu-item-view.d.ts +0 -23
  652. package/src/platform-implementation-js/views/app-menu-item-view.d.ts.map +0 -1
  653. package/src/platform-implementation-js/views/app-menu-item-view.js +0 -257
  654. package/src/platform-implementation-js/views/collapsible-panel-view.d.ts +0 -50
  655. package/src/platform-implementation-js/views/collapsible-panel-view.d.ts.map +0 -1
  656. package/src/platform-implementation-js/views/collapsible-panel-view.js +0 -222
  657. package/src/platform-implementation-js/views/compose-button-view.d.ts.map +0 -1
  658. package/src/platform-implementation-js/views/compose-button-view.js +0 -45
  659. package/src/platform-implementation-js/views/compose-view.d.ts.map +0 -1
  660. package/src/platform-implementation-js/views/compose-view.js +0 -312
  661. package/src/platform-implementation-js/views/keyboard-shortcut-handle.d.ts.map +0 -1
  662. package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +0 -14
  663. package/src/platform-implementation-js/views/nav-item-view.d.ts +0 -24
  664. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.d.ts.map +0 -1
  665. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +0 -39
  666. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.d.ts.map +0 -1
  667. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +0 -98
  668. package/src/platform-implementation-js/widgets/buttons/dropdown-view.d.ts.map +0 -1
  669. package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +0 -122
@@ -1,233 +1,301 @@
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 _escape = _interopRequireDefault(require("lodash/escape"));
10
- var _find = _interopRequireDefault(require("lodash/find"));
11
- var _ud = require("ud");
12
- var _closestNg = _interopRequireDefault(require("closest-ng"));
13
- var _kefir = _interopRequireDefault(require("kefir"));
14
- var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
15
- var _kefirBus = _interopRequireDefault(require("kefir-bus"));
16
- var _autoHtml = _interopRequireDefault(require("auto-html"));
17
- var _censorHTMLstring = _interopRequireDefault(require("../../../../common/censorHTMLstring"));
18
- var _delayAsap = _interopRequireDefault(require("../../../lib/delay-asap"));
19
- var _arrayToLifetimes = _interopRequireDefault(require("../../../lib/array-to-lifetimes"));
20
- var _querySelectorOrFail = _interopRequireDefault(require("../../../lib/dom/querySelectorOrFail"));
21
- var _makeMutationObserverChunkedStream = _interopRequireDefault(require("../../../lib/dom/make-mutation-observer-chunked-stream"));
22
- var _simulateMouseEvent = require("../../../lib/dom/simulate-mouse-event");
23
- var _simulateKey = _interopRequireDefault(require("../../../lib/dom/simulate-key"));
24
- var _insertHtmlAtCursor = _interopRequireDefault(require("../../../lib/dom/insert-html-at-cursor"));
25
- var _querySelectorOne = _interopRequireDefault(require("../../../lib/dom/querySelectorOne"));
26
- var _ErrorCollector = _interopRequireDefault(require("../../../lib/ErrorCollector"));
27
- var _handleComposeLinkChips = _interopRequireDefault(require("../../../lib/handle-compose-link-chips"));
28
- var _insertLinkChipIntoBody = _interopRequireDefault(require("../../../lib/insert-link-chip-into-body"));
29
- var _getPresendingStream = _interopRequireDefault(require("../../../driver-common/compose/getPresendingStream"));
30
- var _getDiscardStream = _interopRequireDefault(require("../../../driver-common/compose/getDiscardStream"));
31
- var _addRecipientRow = _interopRequireDefault(require("../addRecipientRow"));
32
- var _inboxComposeButtonView = _interopRequireDefault(require("./inbox-compose-button-view"));
33
- var _getSelection = require("../../../lib/dom/get-selection");
34
- var _getGmailThreadIdForRfcMessageId = _interopRequireDefault(require("../../../driver-common/getGmailThreadIdForRfcMessageId"));
35
- let cachedFromContacts = null;
1
+ /* @flow */
2
+
3
+ import escape from 'lodash/escape';
4
+ import find from 'lodash/find';
5
+ import { defn } from 'ud';
6
+ import closest from 'closest-ng';
7
+ import Kefir from 'kefir';
8
+ import kefirStopper from 'kefir-stopper';
9
+ import kefirBus from 'kefir-bus';
10
+ import type { Bus } from 'kefir-bus';
11
+ import autoHtml from 'auto-html';
12
+ import censorHTMLstring from '../../../../common/censorHTMLstring';
13
+ import delayAsap from '../../../lib/delay-asap';
14
+ import arrayToLifetimes from '../../../lib/array-to-lifetimes';
15
+ import querySelector from '../../../lib/dom/querySelectorOrFail';
16
+ import makeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
17
+ import { simulateClick } from '../../../lib/dom/simulate-mouse-event';
18
+ import simulateKey from '../../../lib/dom/simulate-key';
19
+ import insertHTMLatCursor from '../../../lib/dom/insert-html-at-cursor';
20
+ import querySelectorOne from '../../../lib/dom/querySelectorOne';
21
+ import ErrorCollector from '../../../lib/ErrorCollector';
22
+ import handleComposeLinkChips from '../../../lib/handle-compose-link-chips';
23
+ import insertLinkChipIntoBody from '../../../lib/insert-link-chip-into-body';
24
+ import getPresendingStream from '../../../driver-common/compose/getPresendingStream';
25
+ import getDiscardStream from '../../../driver-common/compose/getDiscardStream';
26
+ import addRecipientRow from '../addRecipientRow';
27
+ import type InboxDriver from '../inbox-driver';
28
+ import type { TooltipDescriptor } from '../../../views/compose-button-view';
29
+ import InboxComposeButtonView from './inbox-compose-button-view';
30
+ import type {
31
+ ComposeViewDriver,
32
+ StatusBar,
33
+ ComposeButtonDescriptor,
34
+ } from '../../../driver-interfaces/compose-view-driver';
35
+ import {
36
+ getSelectedHTMLInElement,
37
+ getSelectedTextInElement,
38
+ } from '../../../lib/dom/get-selection';
39
+ import getGmailThreadIdForRfcMessageId from '../../../driver-common/getGmailThreadIdForRfcMessageId';
40
+
41
+ import type { Parsed } from '../detection/compose/parser';
42
+
43
+ let cachedFromContacts: ?Array<Contact> = null;
44
+
36
45
  class InboxComposeView {
37
- constructor(driver, el, parsed) {
38
- (0, _defineProperty2.default)(this, "_eventStream", (0, _kefirBus.default)());
39
- (0, _defineProperty2.default)(this, "_stopper", (0, _kefirStopper.default)());
40
- (0, _defineProperty2.default)(this, "_isMinimized", false);
41
- (0, _defineProperty2.default)(this, "_isFullscreenMode", false);
42
- (0, _defineProperty2.default)(this, "_isPresending", false);
43
- (0, _defineProperty2.default)(this, "_closedProgrammatically", false);
44
- this;
46
+ _element: HTMLElement;
47
+ _driver: InboxDriver;
48
+ _eventStream: Bus<any> = kefirBus();
49
+ _ajaxInterceptStream: Kefir.Observable<Object>;
50
+ _sendingStream: ?Kefir.Observable<any>;
51
+ _stopper = kefirStopper();
52
+ _queueDraftSave: () => void;
53
+ _modifierButtonContainer: ?HTMLElement;
54
+ _lastBodySelectionRange: ?Range;
55
+ _draftID: string;
56
+ _isMinimized: boolean = false;
57
+ _isFullscreenMode: boolean = false;
58
+ _isPresending: boolean = false;
59
+ _closedProgrammatically: boolean = false;
60
+ _p: Parsed;
61
+ _els: *;
62
+
63
+ constructor(driver: InboxDriver, el: HTMLElement, parsed: Parsed) {
64
+ (this: ComposeViewDriver);
45
65
  this._element = el;
46
66
  this._driver = driver;
47
67
  this._modifierButtonContainer = null;
48
68
  this._lastBodySelectionRange = null;
49
69
  this._p = parsed;
50
70
  this._els = parsed.elements;
51
- const bottomAreaElementCount = this._els.sendBtn && this._els.sendBtn.parentElement && this._els.sendBtn.parentElement.childElementCount;
71
+
72
+ const bottomAreaElementCount =
73
+ this._els.sendBtn &&
74
+ this._els.sendBtn.parentElement &&
75
+ this._els.sendBtn.parentElement.childElementCount;
76
+
52
77
  this._driver.getLogger().eventSite('compose open', {
53
78
  errorCount: this._p.errors.length,
54
79
  bottomAreaElementCount,
55
- isInline: this._p.attributes.isInline
80
+ isInline: this._p.attributes.isInline,
56
81
  });
57
- const draftSaveTriggerer = (0, _kefirBus.default)();
82
+
83
+ const draftSaveTriggerer = kefirBus();
58
84
  this._queueDraftSave = () => {
59
85
  draftSaveTriggerer.emit(null);
60
86
  };
87
+
61
88
  const bodyEl = this._els.body;
62
89
  if (bodyEl) {
63
- draftSaveTriggerer.bufferBy(draftSaveTriggerer.flatMap(() => (0, _delayAsap.default)(null))).filter(x => x.length > 0).takeUntilBy(this._stopper).onValue(() => {
64
- var unsilence = this._driver.getPageCommunicator().silenceGmailErrorsForAMoment();
65
- try {
66
- (0, _simulateKey.default)(bodyEl, 13, 0);
67
- } finally {
68
- unsilence();
69
- }
70
- });
71
- _kefir.default.merge([_kefir.default.fromEvents(document.body, 'mousedown'), _kefir.default.fromEvents(document.body, 'keydown')]).takeUntilBy(this.getStopper()).onValue(event => {
72
- const selection = document.getSelection();
73
- if (selection.rangeCount > 0 && bodyEl.contains(selection.anchorNode)) {
74
- this._lastBodySelectionRange = selection.getRangeAt(0);
75
- }
76
- });
77
- this._eventStream.plug((0, _makeMutationObserverChunkedStream.default)(bodyEl, {
78
- childList: true,
79
- subtree: true,
80
- characterData: true
81
- }).map(() => ({
82
- eventName: 'bodyChanged'
83
- })));
84
- }
85
- _kefir.default.fromEvents(this._element, 'closedProgrammatically').takeUntilBy(this._stopper).onValue(() => {
86
- this._closedProgrammatically = true;
87
- });
88
- this._draftID = this._driver.getPageCommunicator().getDraftIDForComposeView(this.getElement());
89
- this._ajaxInterceptStream = this._driver.getPageCommunicator().ajaxInterceptStream.takeUntilBy(this._stopper).filter(_ref => {
90
- let {
91
- draftID
92
- } = _ref;
93
- return draftID === this._draftID;
94
- });
95
- this._setupStreams();
96
- this.getEventStream().takeUntilBy(this._stopper).onValue(_ref2 => {
97
- let {
98
- eventName
99
- } = _ref2;
100
- if (eventName === 'presending') {
101
- this._isPresending = true;
102
- const sendCanceledStream = this.getEventStream().filter(_ref3 => {
103
- let {
104
- eventName
105
- } = _ref3;
106
- return eventName === 'sendCanceled';
90
+ draftSaveTriggerer
91
+ .bufferBy(draftSaveTriggerer.flatMap(() => delayAsap(null)))
92
+ .filter((x) => x.length > 0)
93
+ .takeUntilBy(this._stopper)
94
+ .onValue(() => {
95
+ var unsilence = this._driver
96
+ .getPageCommunicator()
97
+ .silenceGmailErrorsForAMoment();
98
+ try {
99
+ simulateKey(bodyEl, 13, 0);
100
+ } finally {
101
+ unsilence();
102
+ }
107
103
  });
108
- this._sendingStream = _kefir.default.merge([_kefir.default.combine([this.getEventStream().filter(_ref4 => {
109
- let {
110
- eventName
111
- } = _ref4;
112
- return eventName === 'sending';
113
- }), this.getEventStream().filter(_ref5 => {
114
- let {
115
- eventName
116
- } = _ref5;
117
- return eventName === 'sent';
118
- })]), this._ajaxInterceptStream.filter(_ref6 => {
119
- let {
120
- type
121
- } = _ref6;
122
- return type === 'emailSendFailed';
123
- }), _kefir.default.later(60 * 1000).flatMap(() => _kefir.default.constantError(new Error('Timed out waiting for ComposeView send')))]).takeUntilBy(sendCanceledStream).takeUntilBy(this._stopper).take(1).takeErrors(1);
124
- this._sendingStream.onValue(() => {
125
- this._isPresending = false;
126
- }).onError(error => {
127
- this._driver.getLogger().error(error);
104
+
105
+ Kefir.merge([
106
+ Kefir.fromEvents((document.body: any), 'mousedown'),
107
+ Kefir.fromEvents((document.body: any), 'keydown'),
108
+ ])
109
+ .takeUntilBy(this.getStopper())
110
+ .onValue((event) => {
111
+ const selection = (document: any).getSelection();
112
+ if (
113
+ selection.rangeCount > 0 &&
114
+ bodyEl.contains(selection.anchorNode)
115
+ ) {
116
+ this._lastBodySelectionRange = selection.getRangeAt(0);
117
+ }
128
118
  });
129
- this._driver.getPageCommunicator().notifyEmailSending();
130
- if (!this._p.attributes.isInline) {
131
- // TODO make this code less fragile on slow machines/connections
132
- _kefir.default.later(5 * 1000).takeUntilBy(this.getEventStream().filter(_ref7 => {
133
- let {
134
- eventName
135
- } = _ref7;
136
- return ['sendCanceled', 'presending'].indexOf(eventName) !== -1;
137
- })).onValue(() => {
138
- // In cases where Inbox decides to cancel the send client-side,
139
- // we need to make sure we realize sending is not going to happen
140
- // and inform consumers who might be expecting a send.
141
- // The most common case for this is trying to send an email
142
- // with no recipients.
143
- if (document.contains(this._element)) {
144
- this._eventStream.emit({
145
- eventName: 'sendCanceled'
119
+
120
+ this._eventStream.plug(
121
+ makeMutationObserverChunkedStream(bodyEl, {
122
+ childList: true,
123
+ subtree: true,
124
+ characterData: true,
125
+ }).map(() => ({ eventName: 'bodyChanged' }))
126
+ );
127
+ }
128
+
129
+ Kefir.fromEvents(this._element, 'closedProgrammatically')
130
+ .takeUntilBy(this._stopper)
131
+ .onValue(() => {
132
+ this._closedProgrammatically = true;
133
+ });
134
+
135
+ this._draftID = this._driver
136
+ .getPageCommunicator()
137
+ .getDraftIDForComposeView(this.getElement());
138
+
139
+ this._ajaxInterceptStream = this._driver
140
+ .getPageCommunicator()
141
+ .ajaxInterceptStream.takeUntilBy(this._stopper)
142
+ .filter(({ draftID }) => draftID === this._draftID);
143
+
144
+ this._setupStreams();
145
+
146
+ this.getEventStream()
147
+ .takeUntilBy(this._stopper)
148
+ .onValue(({ eventName }) => {
149
+ if (eventName === 'presending') {
150
+ this._isPresending = true;
151
+
152
+ const sendCanceledStream = this.getEventStream().filter(
153
+ ({ eventName }) => eventName === 'sendCanceled'
154
+ );
155
+
156
+ this._sendingStream = Kefir.merge([
157
+ Kefir.combine([
158
+ this.getEventStream().filter(
159
+ ({ eventName }) => eventName === 'sending'
160
+ ),
161
+ this.getEventStream().filter(
162
+ ({ eventName }) => eventName === 'sent'
163
+ ),
164
+ ]),
165
+ this._ajaxInterceptStream.filter(
166
+ ({ type }) => type === 'emailSendFailed'
167
+ ),
168
+ Kefir.later(60 * 1000).flatMap(() =>
169
+ Kefir.constantError(
170
+ new Error('Timed out waiting for ComposeView send')
171
+ )
172
+ ),
173
+ ])
174
+ .takeUntilBy(sendCanceledStream)
175
+ .takeUntilBy(this._stopper)
176
+ .take(1)
177
+ .takeErrors(1);
178
+
179
+ this._sendingStream
180
+ .onValue(() => {
181
+ this._isPresending = false;
182
+ })
183
+ .onError((error) => {
184
+ this._driver.getLogger().error(error);
185
+ });
186
+ this._driver.getPageCommunicator().notifyEmailSending();
187
+ if (!this._p.attributes.isInline) {
188
+ // TODO make this code less fragile on slow machines/connections
189
+ Kefir.later(5 * 1000)
190
+ .takeUntilBy(
191
+ this.getEventStream().filter(
192
+ ({ eventName }) =>
193
+ ['sendCanceled', 'presending'].indexOf(eventName) !== -1
194
+ )
195
+ )
196
+ .onValue(() => {
197
+ // In cases where Inbox decides to cancel the send client-side,
198
+ // we need to make sure we realize sending is not going to happen
199
+ // and inform consumers who might be expecting a send.
200
+ // The most common case for this is trying to send an email
201
+ // with no recipients.
202
+ if (document.contains(this._element)) {
203
+ this._eventStream.emit({ eventName: 'sendCanceled' });
204
+ }
146
205
  });
147
- }
148
- });
206
+ }
207
+ } else if (eventName === 'sendCanceled') {
208
+ this._isPresending = false;
209
+ this._driver.getPageCommunicator().notifyEmailSendCanceled();
149
210
  }
150
- } else if (eventName === 'sendCanceled') {
151
- this._isPresending = false;
152
- this._driver.getPageCommunicator().notifyEmailSendCanceled();
153
- }
154
- });
155
- (0, _handleComposeLinkChips.default)(this);
156
- const {
157
- fromPickerEmailSpan
158
- } = this._els;
211
+ });
212
+
213
+ handleComposeLinkChips(this);
214
+
215
+ const { fromPickerEmailSpan } = this._els;
159
216
  if (fromPickerEmailSpan) {
160
- this._eventStream.plug((0, _makeMutationObserverChunkedStream.default)(fromPickerEmailSpan, {
161
- childList: true,
162
- subtree: true,
163
- characterData: true
164
- }).map(() => ({
165
- eventName: 'fromContactChanged',
166
- data: {
167
- contact: this.getFromContact()
168
- }
169
- })));
217
+ this._eventStream.plug(
218
+ makeMutationObserverChunkedStream(fromPickerEmailSpan, {
219
+ childList: true,
220
+ subtree: true,
221
+ characterData: true,
222
+ }).map(() => ({
223
+ eventName: 'fromContactChanged',
224
+ data: { contact: this.getFromContact() },
225
+ }))
226
+ );
170
227
  }
171
- const {
172
- minimizeBtnImage
173
- } = this._els;
228
+
229
+ const { minimizeBtnImage } = this._els;
174
230
  if (minimizeBtnImage) {
175
231
  const isMinimized = () => /_maximize_/.test(minimizeBtnImage.src);
176
- const minimizeButtonChanges = (0, _makeMutationObserverChunkedStream.default)(minimizeBtnImage, {
177
- attributes: true
178
- });
179
- minimizeButtonChanges.toProperty(() => null).takeUntilBy(this._stopper).onValue(() => {
180
- this._isMinimized = isMinimized();
181
- });
182
- this._eventStream.plug(minimizeButtonChanges.map(() => ({
183
- eventName: isMinimized() ? 'minimized' : 'restored'
184
- })));
232
+ const minimizeButtonChanges = makeMutationObserverChunkedStream(
233
+ minimizeBtnImage,
234
+ { attributes: true }
235
+ );
236
+ minimizeButtonChanges
237
+ .toProperty(() => null)
238
+ .takeUntilBy(this._stopper)
239
+ .onValue(() => {
240
+ this._isMinimized = isMinimized();
241
+ });
242
+ this._eventStream.plug(
243
+ minimizeButtonChanges.map(() => ({
244
+ eventName: isMinimized() ? 'minimized' : 'restored',
245
+ }))
246
+ );
185
247
  }
186
- const {
187
- toggleFullscreenButtonImage
188
- } = this._els;
248
+
249
+ const { toggleFullscreenButtonImage } = this._els;
189
250
  if (toggleFullscreenButtonImage) {
190
- const isFullscreenMode = () => !/_enter_full_screen/.test(toggleFullscreenButtonImage.src);
191
- const toggleButtonChanges = (0, _makeMutationObserverChunkedStream.default)(toggleFullscreenButtonImage, {
192
- attributes: true
193
- });
194
- toggleButtonChanges.toProperty(() => null).takeUntilBy(this._stopper).onValue(() => {
195
- this._isFullscreenMode = isFullscreenMode();
196
- });
197
- this._eventStream.plug(toggleButtonChanges.map(() => ({
198
- eventName: 'fullscreenChanged',
199
- data: {
200
- fullscreen: isFullscreenMode()
201
- }
202
- })));
251
+ const isFullscreenMode = () =>
252
+ !/_enter_full_screen/.test(toggleFullscreenButtonImage.src);
253
+ const toggleButtonChanges = makeMutationObserverChunkedStream(
254
+ toggleFullscreenButtonImage,
255
+ { attributes: true }
256
+ );
257
+ toggleButtonChanges
258
+ .toProperty(() => null)
259
+ .takeUntilBy(this._stopper)
260
+ .onValue(() => {
261
+ this._isFullscreenMode = isFullscreenMode();
262
+ });
263
+ this._eventStream.plug(
264
+ toggleButtonChanges.map(() => ({
265
+ eventName: 'fullscreenChanged',
266
+ data: { fullscreen: isFullscreenMode() },
267
+ }))
268
+ );
203
269
  }
204
270
  }
205
271
  removedFromDOM() {
206
272
  // The element of an inline draft may be re-used with a new ID.
207
273
  this._element.removeAttribute('data-inboxsdk-draft-id');
274
+
208
275
  const cleanup = () => {
209
276
  this._eventStream.emit({
210
277
  eventName: 'destroy',
211
278
  data: {
212
- closedByInboxSDK: this._closedProgrammatically
213
- }
279
+ closedByInboxSDK: this._closedProgrammatically,
280
+ },
214
281
  });
215
282
  this._eventStream.end();
216
283
  this._stopper.destroy();
217
284
  };
285
+
218
286
  if (this._isPresending) {
219
287
  this._sendingStream && this._sendingStream.onEnd(cleanup);
220
288
  } else {
221
289
  cleanup();
222
290
  }
223
291
  }
224
- getEventStream() {
292
+ getEventStream(): Kefir.Observable<Object> {
225
293
  return this._eventStream;
226
294
  }
227
- getStopper() {
295
+ getStopper(): Kefir.Observable<null> {
228
296
  return this._stopper;
229
297
  }
230
- getElement() {
298
+ getElement(): HTMLElement {
231
299
  return this._element;
232
300
  }
233
301
  // Call this whenever we change the body directly by mucking with the
@@ -246,132 +314,160 @@ class InboxComposeView {
246
314
  this._queueDraftSave();
247
315
  }
248
316
  _getAddressChangesStream() {
249
- const {
250
- toInput,
251
- ccInput,
252
- bccInput
253
- } = this._els;
317
+ const { toInput, ccInput, bccInput } = this._els;
318
+
254
319
  function makeChangesStream(prefix, input, cb) {
255
- if (!input) return _kefir.default.never();
256
- const contactArrayStream = (0, _makeMutationObserverChunkedStream.default)(input.parentElement, {
257
- childList: true,
258
- attributes: true,
259
- subtree: true
260
- }).merge(_kefir.default.later(0)).map(cb);
261
- return (0, _arrayToLifetimes.default)(contactArrayStream, c => c.emailAddress).flatMap(_ref8 => {
262
- let {
263
- el,
264
- removalStream
265
- } = _ref8;
266
- return _kefir.default.constant({
320
+ if (!input) return Kefir.never();
321
+ const contactArrayStream = makeMutationObserverChunkedStream(
322
+ (input: any).parentElement,
323
+ { childList: true, attributes: true, subtree: true }
324
+ )
325
+ .merge(Kefir.later(0))
326
+ .map(cb);
327
+ return arrayToLifetimes(
328
+ contactArrayStream,
329
+ (c) => c.emailAddress
330
+ ).flatMap(({ el, removalStream }) =>
331
+ Kefir.constant({
267
332
  eventName: prefix + 'ContactAdded',
268
- data: {
269
- contact: el
270
- }
271
- }).merge(removalStream.map(() => ({
272
- eventName: prefix + 'ContactRemoved',
273
- data: {
274
- contact: el
275
- }
276
- })));
277
- });
333
+ data: { contact: el },
334
+ }).merge(
335
+ removalStream.map(() => ({
336
+ eventName: prefix + 'ContactRemoved',
337
+ data: { contact: el },
338
+ }))
339
+ )
340
+ );
278
341
  }
279
- return _kefir.default.merge([makeChangesStream('to', toInput, () => this.getToRecipients()), makeChangesStream('cc', ccInput, () => this.getCcRecipients()), makeChangesStream('bcc', bccInput, () => this.getBccRecipients())]).takeUntilBy(this._stopper);
342
+
343
+ return Kefir.merge([
344
+ makeChangesStream('to', toInput, () => this.getToRecipients()),
345
+ makeChangesStream('cc', ccInput, () => this.getCcRecipients()),
346
+ makeChangesStream('bcc', bccInput, () => this.getBccRecipients()),
347
+ ]).takeUntilBy(this._stopper);
280
348
  }
281
349
  _setupStreams() {
282
350
  this._eventStream.plug(this._getAddressChangesStream());
283
- this._eventStream.plug((0, _getPresendingStream.default)({
284
- element: this.getElement(),
285
- sendButton: this.getSendButton()
286
- }));
287
- this._eventStream.plug((0, _getDiscardStream.default)({
288
- element: this.getElement(),
289
- discardButton: this.getDiscardButton()
290
- }));
291
- this._eventStream.plug(_kefir.default.fromEvents(this.getElement(), 'inboxSDKsendCanceled').map(() => ({
292
- eventName: 'sendCanceled'
293
- })));
294
- this._eventStream.plug(_kefir.default.fromEvents(this.getElement(), 'inboxSDKdiscardCanceled').map(() => ({
295
- eventName: 'discardCanceled'
296
- })));
297
- this._eventStream.plug(this._ajaxInterceptStream.filter(_ref9 => {
298
- let {
299
- type
300
- } = _ref9;
301
- return type === 'emailSending';
302
- }).map(() => ({
303
- eventName: 'sending'
304
- })));
305
- this._eventStream.plug(this._ajaxInterceptStream.filter(_ref10 => {
306
- let {
307
- type
308
- } = _ref10;
309
- return type === 'emailSent';
310
- }).map(event => {
311
- const data = {
312
- getThreadID: () => (0, _getGmailThreadIdForRfcMessageId.default)(this._driver, event.rfcID),
313
- getMessageID: () => this._driver.getGmailMessageIdForSyncMessageId(`msg-a:${event.draftID}`)
314
- };
315
- ['gmailThreadId', 'gmailMessageId', 'threadID', 'messageID'].forEach(name => {
316
- Object.defineProperty(data, name, {
317
- get: () => {
318
- this._driver.getLogger().deprecationWarning(`ComposeView sent event.${name}`, 'ComposeView sent event.getThreadID() or event.getMessageID()');
319
- throw new Error('Not supported');
320
- }
321
- });
322
- });
323
- return {
324
- eventName: 'sent',
325
- data
326
- };
327
- }));
328
- }
329
- getFromContact() {
330
- const {
331
- fromPickerEmailSpan
332
- } = this._els;
351
+
352
+ this._eventStream.plug(
353
+ getPresendingStream({
354
+ element: this.getElement(),
355
+ sendButton: this.getSendButton(),
356
+ })
357
+ );
358
+
359
+ this._eventStream.plug(
360
+ getDiscardStream({
361
+ element: this.getElement(),
362
+ discardButton: this.getDiscardButton(),
363
+ })
364
+ );
365
+
366
+ this._eventStream.plug(
367
+ Kefir.fromEvents(this.getElement(), 'inboxSDKsendCanceled').map(() => ({
368
+ eventName: 'sendCanceled',
369
+ }))
370
+ );
371
+
372
+ this._eventStream.plug(
373
+ Kefir.fromEvents(this.getElement(), 'inboxSDKdiscardCanceled').map(
374
+ () => ({ eventName: 'discardCanceled' })
375
+ )
376
+ );
377
+
378
+ this._eventStream.plug(
379
+ this._ajaxInterceptStream
380
+ .filter(({ type }) => type === 'emailSending')
381
+ .map(() => ({ eventName: 'sending' }))
382
+ );
383
+
384
+ this._eventStream.plug(
385
+ this._ajaxInterceptStream
386
+ .filter(({ type }) => type === 'emailSent')
387
+ .map((event) => {
388
+ const data = {
389
+ getThreadID: (): Promise<string> =>
390
+ getGmailThreadIdForRfcMessageId(this._driver, event.rfcID),
391
+ getMessageID: (): Promise<string> =>
392
+ this._driver.getGmailMessageIdForSyncMessageId(
393
+ `msg-a:${event.draftID}`
394
+ ),
395
+ };
396
+ ['gmailThreadId', 'gmailMessageId', 'threadID', 'messageID'].forEach(
397
+ (name) => {
398
+ Object.defineProperty(data, name, {
399
+ get: () => {
400
+ this._driver
401
+ .getLogger()
402
+ .deprecationWarning(
403
+ `ComposeView sent event.${name}`,
404
+ 'ComposeView sent event.getThreadID() or event.getMessageID()'
405
+ );
406
+ throw new Error('Not supported');
407
+ },
408
+ });
409
+ }
410
+ );
411
+ return { eventName: 'sent', data };
412
+ })
413
+ );
414
+ }
415
+ getFromContact(): Contact {
416
+ const { fromPickerEmailSpan } = this._els;
333
417
  if (!fromPickerEmailSpan) {
334
418
  return this._driver.getUserContact();
335
419
  }
336
420
  const email = fromPickerEmailSpan.textContent;
337
- const contact = (0, _find.default)(this.getFromContactChoices(), c => c.emailAddress === email);
421
+ const contact = find(
422
+ this.getFromContactChoices(),
423
+ (c) => c.emailAddress === email
424
+ );
338
425
  if (!contact) {
339
426
  throw new Error('Failed to find from contact');
340
427
  }
341
428
  return contact;
342
429
  }
343
- getFromContactChoices() {
344
- if (this._p.attributes.isInline) throw new Error("Can't get from values of inline compose");
430
+ getFromContactChoices(): Contact[] {
431
+ if (this._p.attributes.isInline)
432
+ throw new Error("Can't get from values of inline compose");
345
433
  if (cachedFromContacts) {
346
434
  return cachedFromContacts;
347
435
  }
348
- const {
349
- fromPicker
350
- } = this._els;
436
+ const { fromPicker } = this._els;
351
437
  if (!fromPicker) {
352
438
  cachedFromContacts = [this._driver.getUserContact()];
353
439
  return cachedFromContacts;
354
440
  }
355
441
  const startActiveElement = document.activeElement;
356
- const grandUncle = this._element.parentElement.parentElement.firstElementChild;
357
- let fromOptionEls = grandUncle.querySelectorAll('li[role=menuitem][data-jsaction*=".switch_custom_from"]');
442
+
443
+ const grandUncle: HTMLElement = (this._element: any).parentElement
444
+ .parentElement.firstElementChild;
445
+ let fromOptionEls = grandUncle.querySelectorAll(
446
+ 'li[role=menuitem][data-jsaction*=".switch_custom_from"]'
447
+ );
448
+
358
449
  const needToOpenMenu = fromOptionEls.length === 0;
450
+
359
451
  try {
360
452
  if (needToOpenMenu) {
361
- (0, _simulateMouseEvent.simulateClick)(fromPicker);
362
- fromOptionEls = grandUncle.querySelectorAll('li[role=menuitem][data-jsaction*=".switch_custom_from"]');
453
+ simulateClick(fromPicker);
454
+ fromOptionEls = grandUncle.querySelectorAll(
455
+ 'li[role=menuitem][data-jsaction*=".switch_custom_from"]'
456
+ );
363
457
  }
458
+
364
459
  if (fromOptionEls.length === 0) {
365
460
  cachedFromContacts = [this._driver.getUserContact()];
366
461
  return cachedFromContacts;
367
462
  }
368
- cachedFromContacts = Array.from(fromOptionEls).map(el => ({
369
- name: (0, _querySelectorOrFail.default)(el, 'span[title]').title,
370
- emailAddress: (0, _querySelectorOrFail.default)(el, 'span:not([title])').textContent
463
+
464
+ cachedFromContacts = Array.from(fromOptionEls).map((el) => ({
465
+ name: querySelector(el, 'span[title]').title,
466
+ emailAddress: querySelector(el, 'span:not([title])').textContent,
371
467
  }));
372
468
  } finally {
373
469
  if (needToOpenMenu) {
374
- (0, _simulateMouseEvent.simulateClick)(document.body);
470
+ simulateClick((document.body: any));
375
471
  }
376
472
  if (startActiveElement) {
377
473
  startActiveElement.focus();
@@ -379,30 +475,41 @@ class InboxComposeView {
379
475
  }
380
476
  return cachedFromContacts;
381
477
  }
382
- setFromEmail(email) {
383
- if (this._p.attributes.isInline) throw new Error("Can't set from value of inline compose");
478
+ setFromEmail(email: string): void {
479
+ if (this._p.attributes.isInline)
480
+ throw new Error("Can't set from value of inline compose");
384
481
  if (this.getFromContact().emailAddress === email) return;
385
- const {
386
- fromPicker
387
- } = this._els;
482
+
483
+ const { fromPicker } = this._els;
388
484
  if (!fromPicker) throw new Error('from picker element not found');
485
+
389
486
  const startActiveElement = document.activeElement;
390
- const grandUncle = this._element.parentElement.parentElement.firstElementChild;
391
- let fromOptionEls = grandUncle.querySelectorAll('li[role=menuitem][data-jsaction*=".switch_custom_from"]');
487
+
488
+ const grandUncle: HTMLElement = (this._element: any).parentElement
489
+ .parentElement.firstElementChild;
490
+ let fromOptionEls = grandUncle.querySelectorAll(
491
+ 'li[role=menuitem][data-jsaction*=".switch_custom_from"]'
492
+ );
493
+
392
494
  const needToOpenMenu = fromOptionEls.length === 0;
393
495
  try {
394
496
  if (needToOpenMenu) {
395
- (0, _simulateMouseEvent.simulateClick)(fromPicker);
396
- fromOptionEls = grandUncle.querySelectorAll('li[role=menuitem][data-jsaction*=".switch_custom_from"]');
497
+ simulateClick(fromPicker);
498
+ fromOptionEls = grandUncle.querySelectorAll(
499
+ 'li[role=menuitem][data-jsaction*=".switch_custom_from"]'
500
+ );
397
501
  }
398
- const fromOptionEl = (0, _find.default)(fromOptionEls, el => el.querySelector('span:not([title])').textContent === email);
502
+ const fromOptionEl = find(
503
+ fromOptionEls,
504
+ (el) => el.querySelector('span:not([title])').textContent === email
505
+ );
399
506
  if (!fromOptionEl) {
400
507
  throw new Error('Failed to find from contact to set');
401
508
  }
402
- (0, _simulateMouseEvent.simulateClick)(fromOptionEl);
509
+ simulateClick(fromOptionEl);
403
510
  } finally {
404
511
  if (needToOpenMenu) {
405
- (0, _simulateMouseEvent.simulateClick)(fromPicker);
512
+ simulateClick(fromPicker);
406
513
  }
407
514
  if (startActiveElement) {
408
515
  startActiveElement.focus();
@@ -419,102 +526,122 @@ class InboxComposeView {
419
526
  selection.addRange(lastSelectionRange);
420
527
  }
421
528
  }
422
- insertBodyTextAtCursor(text) {
423
- return this.insertBodyHTMLAtCursor((0, _escape.default)(text).replace(/\n/g, '<br>'));
529
+ insertBodyTextAtCursor(text: string): ?HTMLElement {
530
+ return this.insertBodyHTMLAtCursor(escape(text).replace(/\n/g, '<br>'));
424
531
  }
425
- insertBodyHTMLAtCursor(html) {
426
- var retVal = (0, _insertHtmlAtCursor.default)(this.getBodyElement(), html, this._lastBodySelectionRange);
532
+ insertBodyHTMLAtCursor(html: string): ?HTMLElement {
533
+ var retVal = insertHTMLatCursor(
534
+ this.getBodyElement(),
535
+ html,
536
+ this._lastBodySelectionRange
537
+ );
427
538
  this._informBodyChanged();
428
539
  return retVal;
429
540
  }
430
- insertLinkIntoBody(text, href) {
431
- var html = (0, _autoHtml.default)`<a href="${href}">${text}</a>`;
541
+ insertLinkIntoBody(text: string, href: string): ?HTMLElement {
542
+ var html = autoHtml`<a href="${href}">${text}</a>`;
432
543
  return this.insertBodyHTMLAtCursor(html);
433
544
  }
434
- insertLinkChipIntoBody(options) {
435
- var retval = (0, _insertLinkChipIntoBody.default)(this, options);
545
+ insertLinkChipIntoBody(options: {
546
+ iconUrl?: string,
547
+ url: string,
548
+ text: string,
549
+ }): HTMLElement {
550
+ var retval = insertLinkChipIntoBody(this, options);
436
551
  this._informBodyChanged();
437
552
  return retval;
438
553
  }
439
- setBodyHTML(html) {
554
+ setBodyHTML(html: string): void {
440
555
  if (!this._els.body) throw new Error('Compose View missing body element');
441
556
  this._els.body.innerHTML = html;
442
557
  this._informBodyChanged();
443
558
  }
444
- setBodyText(text) {
559
+ setBodyText(text: string): void {
445
560
  if (!this._els.body) throw new Error('Compose View missing body element');
446
561
  this._els.body.textContent = text;
447
562
  this._informBodyChanged();
448
563
  }
449
- _setRecipients(inputElement, emails) {
564
+ _setRecipients(inputElement: HTMLInputElement, emails: string[]) {
450
565
  const chipContainer = inputElement.parentElement;
451
566
  if (!chipContainer) throw new Error('Should not happen');
567
+
452
568
  const startActiveElement = document.activeElement;
453
569
 
454
570
  // Inbox re-uses the chip elements as some are removed, so finding all the
455
571
  // button elements at once and then clicking on each of them wouldn't work.
456
- const removeButtonCount = chipContainer.querySelectorAll('[role=button][jsaction*="remove_chip"]').length;
572
+ const removeButtonCount = chipContainer.querySelectorAll(
573
+ '[role=button][jsaction*="remove_chip"]'
574
+ ).length;
457
575
  for (let i = 0; i < removeButtonCount; i++) {
458
- const removeButton = chipContainer.querySelector('[role=button][jsaction*="remove_chip"]');
576
+ const removeButton = chipContainer.querySelector(
577
+ '[role=button][jsaction*="remove_chip"]'
578
+ );
459
579
  if (!removeButton) break;
460
- (0, _simulateMouseEvent.simulateClick)(removeButton);
580
+ simulateClick(removeButton);
461
581
  }
462
- emails.forEach(email => {
582
+
583
+ emails.forEach((email) => {
463
584
  inputElement.value = email;
464
585
  inputElement.dispatchEvent(new window.FocusEvent('blur'));
465
586
  });
587
+
466
588
  if (startActiveElement) {
467
589
  startActiveElement.focus();
468
590
  }
469
591
  }
470
- setToRecipients(emails) {
471
- if (this._p.attributes.isInline) throw new Error("Can't set recipients of inline compose");
472
- const {
473
- toInput
474
- } = this._els;
592
+ setToRecipients(emails: string[]): void {
593
+ if (this._p.attributes.isInline)
594
+ throw new Error("Can't set recipients of inline compose");
595
+ const { toInput } = this._els;
475
596
  if (!toInput) throw new Error('Compose View missing recipient input');
476
597
  this._setRecipients(toInput, emails);
477
598
  }
478
- setCcRecipients(emails) {
479
- if (this._p.attributes.isInline) throw new Error("Can't set recipients of inline compose");
480
- const {
481
- ccInput
482
- } = this._els;
599
+ setCcRecipients(emails: string[]): void {
600
+ if (this._p.attributes.isInline)
601
+ throw new Error("Can't set recipients of inline compose");
602
+ const { ccInput } = this._els;
483
603
  if (!ccInput) throw new Error('Compose View missing recipient input');
484
604
  this._setRecipients(ccInput, emails);
485
- const {
486
- toggleCcBccButton
487
- } = this._els;
488
- if (emails.length && toggleCcBccButton && toggleCcBccButton.style.display !== 'none') {
489
- (0, _simulateMouseEvent.simulateClick)(toggleCcBccButton);
605
+ const { toggleCcBccButton } = this._els;
606
+ if (
607
+ emails.length &&
608
+ toggleCcBccButton &&
609
+ toggleCcBccButton.style.display !== 'none'
610
+ ) {
611
+ simulateClick(toggleCcBccButton);
490
612
  }
491
613
  }
492
- setBccRecipients(emails) {
493
- if (this._p.attributes.isInline) throw new Error("Can't set recipients of inline compose");
494
- const {
495
- bccInput
496
- } = this._els;
614
+ setBccRecipients(emails: string[]): void {
615
+ if (this._p.attributes.isInline)
616
+ throw new Error("Can't set recipients of inline compose");
617
+ const { bccInput } = this._els;
497
618
  if (!bccInput) throw new Error('Compose View missing recipient input');
498
619
  this._setRecipients(bccInput, emails);
499
- const {
500
- toggleCcBccButton
501
- } = this._els;
502
- if (emails.length && toggleCcBccButton && toggleCcBccButton.style.display !== 'none') {
503
- (0, _simulateMouseEvent.simulateClick)(toggleCcBccButton);
620
+ const { toggleCcBccButton } = this._els;
621
+ if (
622
+ emails.length &&
623
+ toggleCcBccButton &&
624
+ toggleCcBccButton.style.display !== 'none'
625
+ ) {
626
+ simulateClick(toggleCcBccButton);
504
627
  }
505
628
  }
506
- replaceSendButton(el) {
507
- const {
508
- sendBtn
509
- } = this._p.elements;
629
+
630
+ replaceSendButton(el: HTMLElement): () => void {
631
+ const { sendBtn } = this._p.elements;
510
632
  if (!sendBtn) throw new Error('Could not locate send button');
633
+
511
634
  sendBtn.style.display = 'none';
635
+
512
636
  const container = document.createElement('div');
513
637
  container.classList.add('inboxsdk__compose_customSendContainer');
514
638
  container.appendChild(el);
515
639
  this._element.setAttribute('data-inboxsdk-send-replaced', '');
640
+
516
641
  sendBtn.insertAdjacentElement('afterend', container);
517
- const removalStopper = (0, _kefirStopper.default)();
642
+
643
+ const removalStopper = kefirStopper();
644
+
518
645
  return () => {
519
646
  removalStopper.destroy();
520
647
  container.remove();
@@ -522,164 +649,200 @@ class InboxComposeView {
522
649
  sendBtn.style.display = '';
523
650
  };
524
651
  }
525
- hideDiscardButton() {
526
- const {
527
- discardBtn
528
- } = this._p.elements;
652
+
653
+ hideDiscardButton(): () => void {
654
+ const { discardBtn } = this._p.elements;
529
655
  if (!discardBtn) throw new Error('Could not locate discard button');
656
+
530
657
  const discardDivider = discardBtn.previousElementSibling;
531
658
  if (!(discardDivider instanceof HTMLElement)) {
532
659
  throw new Error('Could not locate discard button divider');
533
660
  }
661
+
534
662
  discardBtn.style.display = 'none';
535
663
  discardDivider.style.display = 'none';
664
+
536
665
  return () => {
537
666
  discardBtn.style.display = '';
538
667
  discardDivider.style.display = '';
539
668
  };
540
669
  }
670
+
541
671
  close() {
542
672
  if (this._p.attributes.isInline) {
543
673
  throw new Error('Not implemented for inline compose');
544
674
  }
545
- const {
546
- closeBtn
547
- } = this._els;
675
+
676
+ const { closeBtn } = this._els;
677
+
548
678
  if (closeBtn) {
549
- this._element.dispatchEvent(new CustomEvent('closedProgrammatically', {
550
- bubbles: false,
551
- cancelable: false,
552
- detail: null
553
- }));
554
- (0, _simulateMouseEvent.simulateClick)(closeBtn);
679
+ this._element.dispatchEvent(
680
+ new CustomEvent('closedProgrammatically', {
681
+ bubbles: false,
682
+ cancelable: false,
683
+ detail: null,
684
+ })
685
+ );
686
+
687
+ simulateClick(closeBtn);
555
688
  }
556
689
  }
557
- send(_ref11) {
558
- let {
559
- sendAndArchive
560
- } = _ref11;
561
- if (!this._els.sendBtn) throw new Error('Compose View missing send element');
562
- (0, _simulateMouseEvent.simulateClick)(this._els.sendBtn);
690
+ send({ sendAndArchive }: { sendAndArchive: boolean }) {
691
+ if (!this._els.sendBtn)
692
+ throw new Error('Compose View missing send element');
693
+ simulateClick(this._els.sendBtn);
563
694
  }
564
695
  discard() {
565
- (0, _simulateMouseEvent.simulateClick)(this.getDiscardButton());
696
+ simulateClick(this.getDiscardButton());
566
697
  }
567
- setMinimized(minimized) {
698
+ setMinimized(minimized: boolean) {
568
699
  if (minimized !== this.isMinimized()) {
569
- if (this._p.attributes.isInline) throw new Error('Not implemented for inline compose views');
570
- const {
571
- minimizeBtn
572
- } = this._els;
700
+ if (this._p.attributes.isInline)
701
+ throw new Error('Not implemented for inline compose views');
702
+ const { minimizeBtn } = this._els;
573
703
  if (!minimizeBtn) throw new Error('Could not find minimize button');
574
704
  minimizeBtn.click();
575
705
  }
576
706
  }
577
- setFullscreen(fullscreen) {
707
+ setFullscreen(fullscreen: boolean) {
578
708
  if (fullscreen !== this.isFullscreen()) {
579
- if (this._p.attributes.isInline) throw new Error('Not implemented for inline compose views');
580
- const {
581
- toggleFullscreenButton
582
- } = this._els;
583
- if (!toggleFullscreenButton) throw new Error('Could not find fullscreen button');
709
+ if (this._p.attributes.isInline)
710
+ throw new Error('Not implemented for inline compose views');
711
+ const { toggleFullscreenButton } = this._els;
712
+ if (!toggleFullscreenButton)
713
+ throw new Error('Could not find fullscreen button');
584
714
  toggleFullscreenButton.click();
585
715
  }
586
716
  }
587
- setTitleBarColor(color) {
588
- const {
589
- isInline
590
- } = this._p.attributes;
717
+
718
+ setTitleBarColor(color: string): () => void {
719
+ const { isInline } = this._p.attributes;
591
720
  if (isInline) throw new Error('Cannot set title bar of inline compose');
592
- const {
593
- titleBar
594
- } = this._p.elements;
721
+
722
+ const { titleBar } = this._p.elements;
595
723
  if (!titleBar) throw new Error('Could not locate compose title bar');
724
+
596
725
  titleBar.style.backgroundColor = color;
726
+
597
727
  return () => {
598
728
  titleBar.style.backgroundColor = '';
599
729
  };
600
730
  }
601
- setTitleBarText(text) {
731
+
732
+ setTitleBarText(text: string): () => void {
602
733
  throw new Error('Not supported in Inbox');
603
734
  }
604
- addButton(buttonDescriptor, groupOrderHint, extraOnClickOptions) {
605
- var buttonViewController = new _inboxComposeButtonView.default(this, buttonDescriptor, groupOrderHint, extraOnClickOptions);
735
+
736
+ addButton(
737
+ buttonDescriptor: Kefir.Observable<?ComposeButtonDescriptor>,
738
+ groupOrderHint: string,
739
+ extraOnClickOptions: Object
740
+ ): Promise<?Object> {
741
+ var buttonViewController = new InboxComposeButtonView(
742
+ this,
743
+ buttonDescriptor,
744
+ groupOrderHint,
745
+ extraOnClickOptions
746
+ );
606
747
  return Promise.resolve({
607
748
  buttonViewController,
608
- buttonDescriptor: {}
749
+ buttonDescriptor: {},
609
750
  });
610
751
  }
611
- getModifierButtonContainer() {
752
+ getModifierButtonContainer(): HTMLElement {
612
753
  if (this._modifierButtonContainer) {
613
754
  return this._modifierButtonContainer;
614
755
  }
615
- this._modifierButtonContainer = this._element.querySelector('.inboxsdk__compose_actionToolbar');
756
+ this._modifierButtonContainer = this._element.querySelector(
757
+ '.inboxsdk__compose_actionToolbar'
758
+ );
616
759
  if (this._modifierButtonContainer) {
617
760
  return this._modifierButtonContainer;
618
761
  }
619
762
  const div = document.createElement('div');
620
763
  div.className = 'inboxsdk__compose_actionToolbar';
764
+
621
765
  if (!this._p.attributes.isInline) {
622
- const hiddenAttachBtn = this._els.attachBtn ? this._els.attachBtn.nextSibling : null;
623
- if (hiddenAttachBtn instanceof HTMLElement && hiddenAttachBtn.style.position === 'absolute') {
766
+ const hiddenAttachBtn = this._els.attachBtn
767
+ ? this._els.attachBtn.nextSibling
768
+ : null;
769
+ if (
770
+ hiddenAttachBtn instanceof HTMLElement &&
771
+ hiddenAttachBtn.style.position === 'absolute'
772
+ ) {
624
773
  hiddenAttachBtn.style.display = 'none';
625
774
  } else {
626
- this._driver.getLogger().error(new Error("Didn't find hiddenAttachBtn"));
775
+ this._driver
776
+ .getLogger()
777
+ .error(new Error("Didn't find hiddenAttachBtn"));
627
778
  }
628
779
  }
780
+
629
781
  const sendBtn = this._els.sendBtn;
630
782
  if (!sendBtn) throw new Error('Compose View missing send element');
631
783
  const sendParent = sendBtn.parentElement;
632
784
  if (!sendParent) throw new Error('Could not find send button parent');
633
785
  sendParent.insertBefore(div, sendBtn.nextSibling);
786
+
634
787
  this._modifierButtonContainer = div;
635
788
  return div;
636
789
  }
637
- addRecipientRow(options) {
638
- if (this._p.attributes.isInline) throw new Error('Cannot add recipient rows to inline compose views');
639
- return (0, _addRecipientRow.default)(this, options);
790
+ addRecipientRow(options: Kefir.Observable<?Object>): () => void {
791
+ if (this._p.attributes.isInline)
792
+ throw new Error('Cannot add recipient rows to inline compose views');
793
+
794
+ return addRecipientRow(this, options);
640
795
  }
641
- forceRecipientRowsOpen() {
796
+ forceRecipientRowsOpen(): () => void {
642
797
  console.warn('ComposeView.forceRecipientRowsOpen() is a no-op in Inbox'); // eslint-disable-line no-console
643
798
  return () => {};
644
799
  }
645
- hideNativeRecipientRows() {
646
- if (this._p.attributes.isInline) throw new Error('Cannot hide recipient rows on inline compose views');
800
+ hideNativeRecipientRows(): () => void {
801
+ if (this._p.attributes.isInline)
802
+ throw new Error('Cannot hide recipient rows on inline compose views');
803
+
647
804
  const rows = [this.getToRow(), this.getCCRow(), this.getBCCRow()];
648
- rows.forEach(row => {
805
+
806
+ rows.forEach((row) => {
649
807
  row.classList.add('inboxsdk__compose_forceRecipientRowHidden');
650
808
  });
809
+
651
810
  return () => {
652
- rows.forEach(row => {
811
+ rows.forEach((row) => {
653
812
  row.classList.remove('inboxsdk__compose_forceRecipientRowHidden');
654
813
  });
655
814
  };
656
815
  }
657
- hideRecipientArea() {
816
+ hideRecipientArea(): () => void {
658
817
  throw new Error('Not implemented');
659
818
  }
660
- addOuterSidebar(options) {
819
+ addOuterSidebar(options: { title: string, el: HTMLElement }): void {
661
820
  throw new Error('Not implemented');
662
821
  }
663
- addInnerSidebar(options) {
822
+ addInnerSidebar(options: { el: HTMLElement }): void {
664
823
  throw new Error('Not implemented');
665
824
  }
666
- addComposeNotice(composeNoticeDescriptor) {
825
+ addComposeNotice(composeNoticeDescriptor?: { orderHint?: number }) {
667
826
  throw new Error('Not implemented');
668
827
  }
669
- addStatusBar(options) {
828
+ addStatusBar(options?: {
829
+ height?: number,
830
+ orderHint?: number,
831
+ addAboveNativeStatusBar?: boolean,
832
+ }): StatusBar {
670
833
  throw new Error('Not implemented');
671
834
  }
672
- hideNativeStatusBar() {
835
+ hideNativeStatusBar(): () => void {
673
836
  throw new Error('Not Implemented');
674
837
  }
675
- isForward() {
838
+ isForward(): boolean {
676
839
  throw new Error('Not Implemented');
677
840
  }
678
- isReply() {
841
+ isReply(): boolean {
679
842
  if (this._p.attributes.isInline) return true;
680
843
  throw new Error('Not implemented');
681
844
  }
682
- isInlineReplyForm() {
845
+ isInlineReplyForm(): boolean {
683
846
  return this._p.attributes.isInline;
684
847
  }
685
848
  popOut() {
@@ -689,76 +852,83 @@ class InboxComposeView {
689
852
  if (!this._els.popOutBtn) {
690
853
  throw new Error('Should not happen');
691
854
  }
692
- (0, _simulateMouseEvent.simulateClick)(this._els.popOutBtn);
855
+ simulateClick(this._els.popOutBtn);
693
856
  }
694
- registerRequestModifier(modifier) {
857
+ registerRequestModifier(modifier: Object): void {
695
858
  throw new Error('Not implemented');
696
859
  }
697
- attachFiles(files) {
860
+ attachFiles(files: Blob[]): Promise<void> {
698
861
  throw new Error('Not implemented');
699
862
  }
700
- attachInlineFiles(files) {
863
+ attachInlineFiles(files: Blob[]): Promise<void> {
701
864
  throw new Error('Not implemented');
702
865
  }
703
- isFullscreen() {
866
+ isFullscreen(): boolean {
704
867
  return this._isFullscreenMode;
705
868
  }
706
- isMinimized() {
869
+ isMinimized(): boolean {
707
870
  return this._isMinimized;
708
871
  }
709
- getSubjectInput() {
872
+
873
+ getSubjectInput(): ?HTMLInputElement {
710
874
  return this._els.subject;
711
875
  }
712
- getMetadataFormElement() {
876
+
877
+ getMetadataFormElement(): HTMLElement {
713
878
  throw new Error('Not supported in Inbox.');
714
879
  }
715
- getToRow() {
716
- const {
717
- toRow
718
- } = this._els;
880
+
881
+ getToRow(): HTMLElement {
882
+ const { toRow } = this._els;
719
883
  if (!toRow) throw new Error('Could not locate To row');
884
+
720
885
  return toRow;
721
886
  }
722
- getCCRow() {
723
- const {
724
- ccRow
725
- } = this._els;
887
+
888
+ getCCRow(): HTMLElement {
889
+ const { ccRow } = this._els;
726
890
  if (!ccRow) throw new Error('Could not locate CC row');
891
+
727
892
  return ccRow;
728
893
  }
729
- getBCCRow() {
730
- const {
731
- bccRow
732
- } = this._els;
894
+
895
+ getBCCRow(): HTMLElement {
896
+ const { bccRow } = this._els;
733
897
  if (!bccRow) throw new Error('Could not locate BCC row');
898
+
734
899
  return bccRow;
735
900
  }
736
- getBodyElement() {
901
+
902
+ getBodyElement(): HTMLElement {
737
903
  if (!this._els.body) throw new Error('Compose View missing body element');
738
904
  return this._els.body;
739
905
  }
740
- getHTMLContent() {
906
+ getHTMLContent(): string {
741
907
  return this.getBodyElement().innerHTML;
742
908
  }
743
- getTextContent() {
909
+ getTextContent(): string {
744
910
  return this.getBodyElement().textContent;
745
911
  }
746
- getSelectedBodyHTML() {
747
- return (0, _getSelection.getSelectedHTMLInElement)(this.getBodyElement(), this._lastBodySelectionRange);
912
+ getSelectedBodyHTML(): ?string {
913
+ return getSelectedHTMLInElement(
914
+ this.getBodyElement(),
915
+ this._lastBodySelectionRange
916
+ );
748
917
  }
749
- getSelectedBodyText() {
750
- return (0, _getSelection.getSelectedTextInElement)(this.getBodyElement(), this._lastBodySelectionRange);
918
+ getSelectedBodyText(): ?string {
919
+ return getSelectedTextInElement(
920
+ this.getBodyElement(),
921
+ this._lastBodySelectionRange
922
+ );
751
923
  }
752
- getSubject() {
753
- const {
754
- subject
755
- } = this._els;
924
+ getSubject(): string {
925
+ const { subject } = this._els;
756
926
  if (!subject) {
757
927
  throw new Error('InboxSDK: Could not locate subject field');
758
928
  }
759
929
  return subject.value;
760
930
  }
761
- setSubject(text) {
931
+ setSubject(text: string): void {
762
932
  if (this._p.attributes.isInline) {
763
933
  throw new Error('setSubject is not supported for inline compose views');
764
934
  }
@@ -767,68 +937,82 @@ class InboxComposeView {
767
937
  }
768
938
  this._els.subject.value = text;
769
939
  }
770
- _getRecipients(inputElement) {
940
+ _getRecipients(inputElement: HTMLElement): Contact[] {
771
941
  const chipContainer = inputElement.parentElement;
772
942
  if (!chipContainer) throw new Error('Should not happen');
773
- return Array.from(chipContainer.children).filter(el => el.nodeName === 'DIV' && el.hasAttribute('email') && el.style.display !== 'none').map(chip => ({
774
- emailAddress: chip.getAttribute('email') || '',
775
- name: chip.textContent
776
- }));
777
- }
778
- getToRecipients() {
779
- if (this._p.attributes.isInline) throw new Error("Can't get recipients of inline compose");
780
- const {
781
- toInput
782
- } = this._els;
943
+
944
+ return Array.from(chipContainer.children)
945
+ .filter(
946
+ (el) =>
947
+ el.nodeName === 'DIV' &&
948
+ el.hasAttribute('email') &&
949
+ el.style.display !== 'none'
950
+ )
951
+ .map((chip) => ({
952
+ emailAddress: chip.getAttribute('email') || '',
953
+ name: chip.textContent,
954
+ }));
955
+ }
956
+ getToRecipients(): Contact[] {
957
+ if (this._p.attributes.isInline)
958
+ throw new Error("Can't get recipients of inline compose");
959
+ const { toInput } = this._els;
783
960
  if (!toInput) throw new Error('Compose View missing recipient input');
784
961
  return this._getRecipients(toInput);
785
962
  }
786
- getCcRecipients() {
787
- if (this._p.attributes.isInline) throw new Error("Can't get recipients of inline compose");
788
- const {
789
- ccInput
790
- } = this._els;
963
+ getCcRecipients(): Contact[] {
964
+ if (this._p.attributes.isInline)
965
+ throw new Error("Can't get recipients of inline compose");
966
+ const { ccInput } = this._els;
791
967
  if (!ccInput) throw new Error('Compose View missing recipient input');
792
968
  return this._getRecipients(ccInput);
793
969
  }
794
- getBccRecipients() {
795
- if (this._p.attributes.isInline) throw new Error("Can't get recipients of inline compose");
796
- const {
797
- bccInput
798
- } = this._els;
970
+ getBccRecipients(): Contact[] {
971
+ if (this._p.attributes.isInline)
972
+ throw new Error("Can't get recipients of inline compose");
973
+ const { bccInput } = this._els;
799
974
  if (!bccInput) throw new Error('Compose View missing recipient input');
800
975
  return this._getRecipients(bccInput);
801
976
  }
802
- getComposeID() {
977
+ getComposeID(): string {
803
978
  throw new Error('This method was discontinued');
804
979
  }
805
- getInitialMessageID() {
806
- throw new Error('composeView.getInitialMessageID is not implemented in Inbox');
980
+ getInitialMessageID(): ?string {
981
+ throw new Error(
982
+ 'composeView.getInitialMessageID is not implemented in Inbox'
983
+ );
807
984
  }
808
- getMessageID() {
985
+ getMessageID(): ?string {
809
986
  throw new Error('composeView.getMessageID is not implemented in Inbox');
810
987
  }
811
- getThreadID() {
988
+ getThreadID(): ?string {
812
989
  // TODO
813
990
  return null;
814
991
  }
815
- getCurrentDraftID() {
992
+ getCurrentDraftID(): Promise<?string> {
816
993
  return Promise.resolve(this._draftID);
817
994
  }
818
- getDraftID() {
995
+ getDraftID(): Promise<?string> {
819
996
  return Promise.resolve(this._draftID);
820
997
  }
821
- addTooltipToButton(buttonViewController, buttonDescriptor, tooltipDescriptor) {
822
- buttonViewController.showTooltip(tooltipDescriptor);
823
- }
824
- closeButtonTooltip(buttonViewController) {
825
- buttonViewController.closeTooltip();
826
- }
827
- getDiscardButton() {
828
- if (!this._els.discardBtn) throw new Error('Compose View missing discard button');
998
+ addTooltipToButton(
999
+ buttonViewController: Object,
1000
+ buttonDescriptor: Object,
1001
+ tooltipDescriptor: TooltipDescriptor
1002
+ ) {
1003
+ (buttonViewController: InboxComposeButtonView).showTooltip(
1004
+ tooltipDescriptor
1005
+ );
1006
+ }
1007
+ closeButtonTooltip(buttonViewController: Object) {
1008
+ (buttonViewController: InboxComposeButtonView).closeTooltip();
1009
+ }
1010
+ getDiscardButton(): HTMLElement {
1011
+ if (!this._els.discardBtn)
1012
+ throw new Error('Compose View missing discard button');
829
1013
  return this._els.discardBtn;
830
1014
  }
831
- getSendButton() {
1015
+ getSendButton(): HTMLElement {
832
1016
  if (!this._els.sendBtn) throw new Error('Compose View missing send button');
833
1017
  return this._els.sendBtn;
834
1018
  }
@@ -839,5 +1023,5 @@ class InboxComposeView {
839
1023
  //TODO
840
1024
  }
841
1025
  }
842
- var _default = (0, _ud.defn)(module, InboxComposeView);
843
- exports.default = _default;
1026
+
1027
+ export default defn(module, InboxComposeView);