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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/inboxsdk.js +1 -1
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +5 -1
  4. package/src/build/exec.js +26 -0
  5. package/src/build/spawn.js +17 -0
  6. package/src/common/ajax.js +90 -0
  7. package/src/common/cachebust-url.js +10 -0
  8. package/src/common/censorHTMLstring.js +37 -0
  9. package/src/common/censorHTMLtree.js +28 -0
  10. package/src/common/censorJSONTree.js +15 -0
  11. package/src/common/connectivity-test.js +21 -0
  12. package/src/common/defer.js +11 -0
  13. package/src/common/find-parent.js +10 -0
  14. package/src/common/get-extension-id.js +7 -0
  15. package/src/common/get-or-fail.js +8 -0
  16. package/src/common/get-session-id.js +14 -0
  17. package/src/common/get-stack-trace.js +6 -0
  18. package/src/common/html-to-text.js +7 -0
  19. package/src/common/isElementVisible.js +6 -0
  20. package/src/common/load-script.js +127 -0
  21. package/src/common/log-error.js +191 -0
  22. package/src/common/quoted-split.js +18 -0
  23. package/src/common/rate-limit-queuer.js +57 -0
  24. package/src/common/rate-limit.js +14 -0
  25. package/src/common/version.js +6 -0
  26. package/src/inboxsdk-js/check-requirements.js +7 -3
  27. package/src/inboxsdk-js/header.js +1 -0
  28. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +5 -6
  29. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +4 -3
  30. package/src/inboxsdk-js/inboxsdk-REMOTE.js +3 -1
  31. package/src/inboxsdk-js/inboxsdk-TEST.js +4 -3
  32. package/src/inboxsdk-js/inboxsdk.js +33 -39
  33. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +15 -18
  34. package/src/inboxsdk-js/loading/platform-implementation-loader.js +27 -0
  35. package/src/injected-js/gmail/constants.js +2 -0
  36. package/src/injected-js/gmail/modify-suggestions.js +106 -0
  37. package/src/injected-js/gmail/modify-suggestions.test.js +8 -9
  38. package/src/injected-js/gmail/setup-gmail-interceptor.js +340 -579
  39. package/src/injected-js/gmail/setup-gmonkey-handler.js +49 -0
  40. package/src/injected-js/gmail/sync-compose-processor-20220909.js +298 -0
  41. package/src/injected-js/gmail/sync-compose-processor.js +55 -0
  42. package/src/injected-js/gmail/sync-compose-request-processor.js +110 -0
  43. package/src/injected-js/gmail/sync-compose-request-processor.test.js +39 -49
  44. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +20 -33
  45. package/src/injected-js/gmail/thread-identifier/index.js +57 -93
  46. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +22 -31
  47. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +12 -28
  48. package/src/injected-js/inbox/setupAjaxInterceptor.js +64 -121
  49. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +53 -66
  50. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +20 -36
  51. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
  52. package/src/injected-js/injected-logger.js +50 -0
  53. package/src/injected-js/main.js +11 -24
  54. package/src/injected-js/message-metadata-holder.js +52 -82
  55. package/src/injected-js/setup-data-exposer.js +89 -148
  56. package/src/injected-js/setup-error-silencer.js +21 -21
  57. package/src/injected-js/setup-event-reemitter.js +30 -22
  58. package/src/injected-js/setupCustomViewEventAssassin.js +90 -0
  59. package/src/injected-js/setupInboxCustomViewLinkFixer.js +24 -29
  60. package/src/injected-js/setupPushStateListener.js +18 -11
  61. package/src/injected-js/xhr-helper.js +62 -65
  62. package/src/injected-js/xhr-proxy-factory.js +195 -445
  63. package/src/injected-js/xhr-proxy-factory.test.js +824 -991
  64. package/src/platform-implementation-js/constants/nav-item-types.js +19 -0
  65. package/src/platform-implementation-js/constants/router.js +14 -9
  66. package/src/platform-implementation-js/constants/toolbars.js +8 -3
  67. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
  68. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +115 -136
  69. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +21 -0
  70. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +28 -0
  71. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +98 -0
  72. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +4 -0
  73. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +13 -14
  74. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +27 -48
  75. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +8 -0
  76. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +31 -42
  77. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +30 -40
  78. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +12 -0
  79. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +33 -0
  80. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +10 -18
  81. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +21 -28
  82. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +33 -45
  83. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +31 -49
  84. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +58 -65
  85. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +4 -0
  86. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +40 -124
  87. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +17 -22
  88. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +44 -0
  89. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +10 -11
  90. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +44 -80
  91. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +19 -26
  92. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +71 -147
  93. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +91 -148
  94. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +150 -166
  95. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +70 -120
  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 +44 -67
  98. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +230 -379
  99. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +121 -307
  100. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +17 -24
  101. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +41 -49
  102. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +30 -40
  103. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +28 -60
  104. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +61 -133
  105. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +95 -0
  106. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +30 -42
  107. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +52 -46
  108. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +354 -694
  109. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +38 -0
  110. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +12 -0
  111. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +253 -0
  112. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +200 -0
  113. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +533 -0
  114. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +289 -0
  115. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +21 -0
  116. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +77 -93
  117. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +28 -0
  118. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +19 -0
  119. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +126 -0
  120. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +35 -82
  121. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +44 -94
  122. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +12 -19
  123. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +17 -29
  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 +391 -797
  126. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +7 -9
  127. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +60 -109
  128. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +95 -135
  129. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +103 -211
  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 +188 -541
  133. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +67 -135
  134. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +27 -49
  135. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +7 -13
  136. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +9 -22
  137. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +36 -63
  138. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +101 -0
  139. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +38 -113
  140. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +38 -0
  141. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +11 -16
  142. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +11 -17
  143. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +8 -11
  144. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +27 -47
  145. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +11 -24
  146. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +59 -111
  147. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +28 -0
  148. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +15 -14
  149. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +11 -17
  150. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +18 -24
  151. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +22 -0
  152. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +19 -23
  153. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +233 -0
  154. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +11 -19
  155. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +141 -376
  156. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +17 -28
  157. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +34 -70
  158. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +223 -0
  159. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +10 -17
  160. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +157 -0
  161. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +109 -0
  162. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +83 -137
  163. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +10 -19
  164. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +632 -1190
  165. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +5 -0
  166. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +29 -38
  167. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +327 -617
  168. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +759 -0
  169. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +26 -49
  170. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +188 -380
  171. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +104 -194
  172. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +84 -0
  173. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +382 -811
  174. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +34 -58
  175. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +330 -581
  176. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +123 -277
  177. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +15 -35
  178. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +216 -571
  179. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +152 -336
  180. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +87 -211
  181. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +33 -0
  182. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +325 -0
  183. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +58 -0
  184. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +55 -0
  185. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +10 -11
  186. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +96 -0
  187. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +30 -0
  188. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +10 -0
  189. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +20 -29
  190. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +22 -0
  191. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +41 -76
  192. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +45 -99
  193. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +76 -128
  194. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +128 -319
  195. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +45 -78
  196. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +8 -4
  197. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +36 -54
  198. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +35 -53
  199. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +13 -15
  200. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +15 -18
  201. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +14 -13
  202. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +14 -20
  203. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +14 -13
  204. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +35 -67
  205. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +16 -18
  206. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +68 -185
  207. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +28 -56
  208. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +12 -10
  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 +24 -35
  211. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +37 -89
  212. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +56 -78
  213. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +26 -32
  214. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +52 -109
  215. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +7 -8
  216. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +16 -20
  217. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +15 -16
  218. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +75 -83
  219. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +530 -822
  220. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +48 -61
  221. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +9 -12
  222. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +12 -19
  223. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +24 -33
  224. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +201 -388
  225. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +249 -265
  226. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +84 -152
  227. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +55 -67
  228. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +43 -65
  229. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +31 -56
  230. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +191 -294
  231. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +32 -45
  232. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +21 -39
  233. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +153 -240
  234. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +75 -150
  235. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +20 -37
  236. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +60 -114
  237. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +47 -65
  238. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +41 -52
  239. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +27 -36
  240. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +52 -80
  241. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +465 -649
  242. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +37 -58
  243. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +14 -26
  244. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +118 -235
  245. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +10 -11
  246. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +28 -46
  247. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +131 -202
  248. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +40 -80
  249. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +35 -61
  250. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +124 -221
  251. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +125 -213
  252. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +104 -126
  253. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +36 -51
  254. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +158 -297
  255. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +21 -35
  256. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +24 -43
  257. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +39 -68
  258. package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +17 -0
  259. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +14 -19
  260. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +27 -35
  261. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +33 -0
  262. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +16 -22
  263. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +49 -0
  264. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
  265. package/src/platform-implementation-js/driver-common/gmailAjax.js +65 -0
  266. package/src/platform-implementation-js/driver-common/inboxAjax.js +12 -7
  267. package/src/platform-implementation-js/driver-common/render-custom-icon.js +16 -0
  268. package/src/platform-implementation-js/driver-common/requestGmailThread.js +19 -20
  269. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +197 -306
  270. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +113 -161
  271. package/src/platform-implementation-js/driver-common/update-icon.js +90 -0
  272. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +1 -114
  273. package/src/platform-implementation-js/driver-interfaces/driver.js +1 -131
  274. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +4 -48
  275. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +1 -29
  276. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +1 -32
  277. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +1 -11
  278. package/src/platform-implementation-js/lib/ErrorCollector.js +47 -0
  279. package/src/platform-implementation-js/lib/Membrane.js +22 -0
  280. package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +30 -0
  281. package/src/platform-implementation-js/lib/array-to-lifetimes.js +43 -41
  282. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +139 -155
  283. package/src/platform-implementation-js/lib/attemptWithRetries.js +16 -0
  284. package/src/platform-implementation-js/lib/common-page-communicator.js +137 -0
  285. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +19 -38
  286. package/src/platform-implementation-js/lib/css-selector-escape.js +7 -3
  287. package/src/platform-implementation-js/lib/delay-asap.js +12 -0
  288. package/src/platform-implementation-js/lib/delay-idle.js +16 -0
  289. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +36 -0
  290. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +8 -11
  291. package/src/platform-implementation-js/lib/dom/generic-button-view.js +39 -0
  292. package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +39 -0
  293. package/src/platform-implementation-js/lib/dom/get-selection.js +23 -52
  294. package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +38 -0
  295. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +69 -101
  296. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +8 -10
  297. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +12 -0
  298. package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +79 -0
  299. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +28 -0
  300. package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +15 -0
  301. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +15 -0
  302. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +5 -0
  303. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +15 -17
  304. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +39 -0
  305. package/src/platform-implementation-js/lib/dom/parentNodes.js +8 -0
  306. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +8 -11
  307. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +6 -0
  308. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +22 -0
  309. package/src/platform-implementation-js/lib/dom/set-css.js +7 -3
  310. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +9 -11
  311. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +32 -33
  312. package/src/platform-implementation-js/lib/dom/simulate-key.js +46 -0
  313. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +16 -0
  314. package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +7 -0
  315. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +25 -0
  316. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +23 -26
  317. package/src/platform-implementation-js/lib/fake-window-resize.js +5 -0
  318. package/src/platform-implementation-js/lib/from-event-target-capture.js +12 -0
  319. package/src/platform-implementation-js/lib/fromEventsWithOptions.js +10 -0
  320. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +86 -149
  321. package/src/platform-implementation-js/lib/handler-registry.js +67 -0
  322. package/src/platform-implementation-js/lib/idMap.js +45 -0
  323. package/src/platform-implementation-js/lib/imageRequest.js +8 -0
  324. package/src/platform-implementation-js/lib/incrementName.js +7 -0
  325. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +14 -0
  326. package/src/platform-implementation-js/lib/inject-script.js +33 -0
  327. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +42 -57
  328. package/src/platform-implementation-js/lib/is-valid-app-id.js +27 -0
  329. package/src/platform-implementation-js/lib/is-valid-email.js +14 -0
  330. package/src/platform-implementation-js/lib/isNotNil.js +5 -0
  331. package/src/platform-implementation-js/lib/isStreakAppId.js +11 -0
  332. package/src/platform-implementation-js/lib/logger.js +441 -0
  333. package/src/platform-implementation-js/lib/make-revocable-function.js +19 -21
  334. package/src/platform-implementation-js/lib/make-revocable-function.test.js +20 -22
  335. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +15 -17
  336. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +9 -18
  337. package/src/platform-implementation-js/lib/persistent-queue.js +107 -0
  338. package/src/platform-implementation-js/lib/populateRouteID.js +8 -9
  339. package/src/platform-implementation-js/lib/populateRouteID.test.js +20 -19
  340. package/src/platform-implementation-js/lib/react/ElementContainer.js +23 -20
  341. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +10 -9
  342. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +13 -20
  343. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +13 -18
  344. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +11 -17
  345. package/src/platform-implementation-js/lib/safe-event-emitter.js +17 -0
  346. package/src/platform-implementation-js/lib/shared-style.js +14 -13
  347. package/src/platform-implementation-js/lib/stopper-pool.js +41 -0
  348. package/src/platform-implementation-js/lib/stream-wait-for.js +30 -0
  349. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +18 -17
  350. package/src/platform-implementation-js/lib/toLiveSet.js +17 -15
  351. package/src/platform-implementation-js/lib/wait-for.js +28 -0
  352. package/src/platform-implementation-js/lib/waitForAsync.js +19 -0
  353. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +6 -5
  354. package/src/platform-implementation-js/main.js +9 -24
  355. package/src/platform-implementation-js/namespaces/app-menu.d.ts.map +1 -1
  356. package/src/platform-implementation-js/namespaces/app-menu.js +31 -0
  357. package/src/platform-implementation-js/namespaces/butter-bar.js +163 -0
  358. package/src/platform-implementation-js/namespaces/compose.js +37 -60
  359. package/src/platform-implementation-js/namespaces/conversations.js +52 -124
  360. package/src/platform-implementation-js/namespaces/global.js +27 -39
  361. package/src/platform-implementation-js/namespaces/keyboard.js +29 -33
  362. package/src/platform-implementation-js/namespaces/lists.js +25 -31
  363. package/src/platform-implementation-js/namespaces/modal.js +34 -28
  364. package/src/platform-implementation-js/namespaces/nav-menu.js +30 -45
  365. package/src/platform-implementation-js/namespaces/router.js +70 -137
  366. package/src/platform-implementation-js/namespaces/search.js +19 -17
  367. package/src/platform-implementation-js/namespaces/toolbars.js +71 -117
  368. package/src/platform-implementation-js/namespaces/user.js +36 -37
  369. package/src/platform-implementation-js/namespaces/widgets.js +54 -61
  370. package/src/platform-implementation-js/platform-implementation.js +98 -229
  371. package/src/platform-implementation-js/views/SimpleElementView.js +16 -0
  372. package/src/platform-implementation-js/views/app-menu-item-view.js +257 -0
  373. package/src/platform-implementation-js/views/app-toolbar-button-view.js +26 -47
  374. package/src/platform-implementation-js/views/collapsible-panel-view.js +222 -0
  375. package/src/platform-implementation-js/views/collapsible-section-view.js +66 -63
  376. package/src/platform-implementation-js/views/compose-button-view.js +45 -0
  377. package/src/platform-implementation-js/views/compose-view.js +312 -0
  378. package/src/platform-implementation-js/views/content-panel-view.js +28 -30
  379. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +21 -44
  380. package/src/platform-implementation-js/views/conversations/custom-message-view.js +44 -104
  381. package/src/platform-implementation-js/views/conversations/message-view.js +131 -202
  382. package/src/platform-implementation-js/views/conversations/thread-view.js +75 -127
  383. package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +14 -0
  384. package/src/platform-implementation-js/views/native-nav-item-view.js +32 -65
  385. package/src/platform-implementation-js/views/nav-item-view.js +51 -115
  386. package/src/platform-implementation-js/views/route-view/custom-route-view.js +25 -20
  387. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
  388. package/src/platform-implementation-js/views/route-view/list-route-view.js +30 -52
  389. package/src/platform-implementation-js/views/route-view/route-view.js +24 -35
  390. package/src/platform-implementation-js/views/section-view.js +60 -52
  391. package/src/platform-implementation-js/views/thread-row-view.js +49 -74
  392. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +39 -0
  393. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +98 -0
  394. package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +122 -0
  395. package/src/platform-implementation-js/widgets/drawer-view.js +29 -36
  396. package/src/platform-implementation-js/widgets/modal-view.js +39 -68
  397. package/src/platform-implementation-js/widgets/mole-view.js +22 -22
  398. package/src/platform-implementation-js/widgets/top-message-bar-view.js +13 -10
@@ -1,211 +1,151 @@
1
- /* @flow */
2
-
3
- import { defn } from 'ud';
4
- import asap from 'asap';
5
- import Kefir from 'kefir';
6
- import kefirBus from 'kefir-bus';
7
- import type { Bus } from 'kefir-bus';
8
- import BigNumber from 'bignumber.js';
9
- import delayAsap from '../../../lib/delay-asap';
10
- import type InboxDriver from '../inbox-driver';
11
- import type InboxThreadView from './inbox-thread-view';
12
- import censorHTMLtree from '../../../../common/censorHTMLtree';
13
- import makeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
14
- import InboxAttachmentCardView from './inbox-attachment-card-view';
15
- import findParent from '../../../../common/find-parent';
16
- import parser from '../detection/message/parser';
17
- import type { Parsed } from '../detection/message/parser';
18
- import type {
19
- MessageViewDriver,
20
- MessageViewToolbarButtonDescriptor,
21
- MessageViewLinkDescriptor,
22
- VIEW_STATE,
23
- } from '../../../driver-interfaces/message-view-driver';
24
- import SafeEventEmitter from '../../../lib/safe-event-emitter';
25
-
26
- class AttachmentIcon extends SafeEventEmitter {}
27
-
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 _ud = require("ud");
10
+ var _asap = _interopRequireDefault(require("asap"));
11
+ var _kefir = _interopRequireDefault(require("kefir"));
12
+ var _kefirBus = _interopRequireDefault(require("kefir-bus"));
13
+ var _bignumber = _interopRequireDefault(require("bignumber.js"));
14
+ var _delayAsap = _interopRequireDefault(require("../../../lib/delay-asap"));
15
+ var _censorHTMLtree = _interopRequireDefault(require("../../../../common/censorHTMLtree"));
16
+ var _makeMutationObserverChunkedStream = _interopRequireDefault(require("../../../lib/dom/make-mutation-observer-chunked-stream"));
17
+ var _inboxAttachmentCardView = _interopRequireDefault(require("./inbox-attachment-card-view"));
18
+ var _findParent = _interopRequireDefault(require("../../../../common/find-parent"));
19
+ var _parser = _interopRequireDefault(require("../detection/message/parser"));
20
+ var _safeEventEmitter = _interopRequireDefault(require("../../../lib/safe-event-emitter"));
21
+ class AttachmentIcon extends _safeEventEmitter.default {}
28
22
  class InboxMessageView {
29
- _element: HTMLElement;
30
- _driver: InboxDriver;
31
- _p: Parsed;
32
- _stopper: Kefir.Observable<any>;
33
- _eventStream: Bus<Object> = kefirBus();
34
- _threadViewDriver: ?InboxThreadView;
35
- _attachmentCardViews: InboxAttachmentCardView[] = [];
36
-
37
- constructor(element: HTMLElement, driver: InboxDriver, parsed: Parsed) {
38
- (this: MessageViewDriver); // interface check
23
+ constructor(element, driver, parsed) {
24
+ (0, _defineProperty2.default)(this, "_eventStream", (0, _kefirBus.default)());
25
+ (0, _defineProperty2.default)(this, "_attachmentCardViews", []);
26
+ this; // interface check
39
27
  this._element = element;
40
28
  this._driver = driver;
41
29
  this._p = parsed;
42
-
43
30
  this._stopper = this._eventStream.ignoreValues().beforeEnd(() => null);
44
31
 
45
32
  // If our id changes, then destroy this view.
46
33
  // getMessageViewDriverStream() will create a new view for this element.
47
- makeMutationObserverChunkedStream(this._element, {
34
+ (0, _makeMutationObserverChunkedStream.default)(this._element, {
48
35
  attributes: true,
49
- attributeFilter: ['data-msg-id'],
50
- })
51
- .toProperty(() => null)
52
- .map(() => this._element.getAttribute('data-msg-id'))
53
- .skipDuplicates()
54
- .changes()
55
- .onValue(() => {
56
- this.destroy();
57
- });
58
-
59
- makeMutationObserverChunkedStream(this._element, {
36
+ attributeFilter: ['data-msg-id']
37
+ }).toProperty(() => null).map(() => this._element.getAttribute('data-msg-id')).skipDuplicates().changes().onValue(() => {
38
+ this.destroy();
39
+ });
40
+ (0, _makeMutationObserverChunkedStream.default)(this._element, {
60
41
  attributes: true,
61
- attributeFilter: ['aria-expanded'],
62
- })
63
- .toProperty(() => null)
64
- .map(() => this._element.getAttribute('aria-expanded') === 'true')
65
- .skipDuplicates()
66
- .changes()
67
- .takeUntilBy(this._stopper)
68
- .onValue((expanded) => {
69
- if (expanded) {
70
- this._reparse();
71
- } else {
72
- // Destroy on collapse so that when it's uncollapsed again, the app
73
- // can re-do its modifications.
74
- this.destroy();
75
- }
76
- });
77
-
42
+ attributeFilter: ['aria-expanded']
43
+ }).toProperty(() => null).map(() => this._element.getAttribute('aria-expanded') === 'true').skipDuplicates().changes().takeUntilBy(this._stopper).onValue(expanded => {
44
+ if (expanded) {
45
+ this._reparse();
46
+ } else {
47
+ // Destroy on collapse so that when it's uncollapsed again, the app
48
+ // can re-do its modifications.
49
+ this.destroy();
50
+ }
51
+ });
78
52
  this._threadViewDriver = this._findThreadView();
79
53
  if (this._threadViewDriver) {
80
54
  this._threadViewDriver.addMessageViewDriver(this);
81
55
  }
82
-
83
56
  this._driver.getMessageViewElementsMap().set(this._element, this);
84
-
85
57
  this._monitorEmailAddressHovering();
86
58
  }
87
-
88
- _findThreadView(): ?InboxThreadView {
59
+ _findThreadView() {
89
60
  const map = this._driver.getThreadViewElementsMap();
90
- const threadViewElement = findParent(this._element, (el) =>
91
- map.has((el: any))
92
- );
61
+ const threadViewElement = (0, _findParent.default)(this._element, el => map.has(el));
93
62
  if (!threadViewElement) return null;
94
63
  return map.get(threadViewElement);
95
64
  }
96
-
97
65
  _reparse() {
98
66
  const oldParsed = this._p;
99
- this._p = parser(this._element);
67
+ this._p = (0, _parser.default)(this._element);
100
68
  if (this._p.errors.length > 0) {
101
69
  this._driver.getLogger().errorSite(new Error('message reparse errors'), {
102
70
  score: this._p.score,
103
71
  errors: this._p.errors,
104
- html: censorHTMLtree(this._element),
72
+ html: (0, _censorHTMLtree.default)(this._element)
105
73
  });
106
74
  }
107
-
108
75
  if (!oldParsed.attributes.loaded && this._p.attributes.loaded) {
109
76
  this._eventStream.emit({
110
77
  type: 'internal',
111
- eventName: 'messageLoad',
78
+ eventName: 'messageLoad'
112
79
  });
113
80
  }
114
81
  if (oldParsed.attributes.viewState !== this._p.attributes.viewState) {
115
82
  this._eventStream.emit({
116
83
  eventName: 'viewStateChange',
117
84
  oldValue: oldParsed.attributes.viewState,
118
- newValue: this._p.attributes.viewState,
85
+ newValue: this._p.attributes.viewState
119
86
  });
120
87
  }
121
88
  }
122
-
123
89
  _monitorEmailAddressHovering() {
124
- this._eventStream.plug(
125
- Kefir.fromEvents(this._element, 'mouseover')
126
- .map((e) => e.target)
127
- .filter((element) => element && element.getAttribute('email'))
128
- .map((element) => {
129
- const contact = {
130
- name: element.textContent,
131
- emailAddress: element.getAttribute('email'),
132
- };
133
-
134
- let contactType;
135
- if (
136
- this._p.elements.sender &&
137
- this._p.elements.sender.contains(element)
138
- ) {
139
- contactType = 'sender';
140
- } else if (
141
- this._p.attributes.recipientElements &&
142
- Array.from(this._p.attributes.recipientElements).some((el) =>
143
- el.contains(element)
144
- )
145
- ) {
146
- contactType = 'recipient';
147
- } else {
148
- return null;
149
- }
150
-
151
- return {
152
- eventName: 'contactHover',
153
- messageViewDriver: this,
154
- contact,
155
- contactType,
156
- };
157
- })
158
- .filter()
159
- );
90
+ this._eventStream.plug(_kefir.default.fromEvents(this._element, 'mouseover').map(e => e.target).filter(element => element && element.getAttribute('email')).map(element => {
91
+ const contact = {
92
+ name: element.textContent,
93
+ emailAddress: element.getAttribute('email')
94
+ };
95
+ let contactType;
96
+ if (this._p.elements.sender && this._p.elements.sender.contains(element)) {
97
+ contactType = 'sender';
98
+ } else if (this._p.attributes.recipientElements && Array.from(this._p.attributes.recipientElements).some(el => el.contains(element))) {
99
+ contactType = 'recipient';
100
+ } else {
101
+ return null;
102
+ }
103
+ return {
104
+ eventName: 'contactHover',
105
+ messageViewDriver: this,
106
+ contact,
107
+ contactType
108
+ };
109
+ }).filter());
160
110
  }
161
-
162
- addAttachmentCardViewDriver(card: InboxAttachmentCardView) {
111
+ addAttachmentCardViewDriver(card) {
163
112
  this._attachmentCardViews.push(card);
164
- card
165
- .getStopper()
166
- .takeUntilBy(this._stopper)
167
- .onValue(() => {
168
- this._attachmentCardViews = this._attachmentCardViews.filter(
169
- (v) => v !== card
170
- );
171
- });
113
+ card.getStopper().takeUntilBy(this._stopper).onValue(() => {
114
+ this._attachmentCardViews = this._attachmentCardViews.filter(v => v !== card);
115
+ });
172
116
  }
173
-
174
117
  getStopper() {
175
118
  return this._stopper;
176
119
  }
177
-
178
- getEventStream(): Kefir.Observable<Object> {
120
+ getEventStream() {
179
121
  return this._eventStream;
180
122
  }
181
-
182
123
  isLoaded() {
183
124
  return this._p.attributes.loaded;
184
125
  }
185
-
186
126
  hasOpenReply() {
187
127
  // Inbox associates inline replies with threads, not messages.
188
128
  return false;
189
129
  }
190
-
191
- getMessageID(): string {
192
- const { inboxMessageId } = this._p.attributes;
130
+ getMessageID() {
131
+ const {
132
+ inboxMessageId
133
+ } = this._p.attributes;
193
134
  if (!inboxMessageId) {
194
135
  throw new Error('Failed to find message id');
195
136
  }
196
137
  if (/^msg-a:/.test(inboxMessageId)) {
197
138
  // eslint-disable-next-line no-console
198
- console.warn(
199
- 'MessageView.getMessageID() returned an incorrect message ID. This method will be deprecated soon. Use getMessageIDAsync() instead which does not have this problem.'
200
- );
139
+ console.warn('MessageView.getMessageID() returned an incorrect message ID. This method will be deprecated soon. Use getMessageIDAsync() instead which does not have this problem.');
201
140
  }
202
141
  const m = /\d+$/.exec(inboxMessageId);
203
142
  if (!m) throw new Error('Should not happen');
204
- return new BigNumber(m[0]).toString(16);
143
+ return new _bignumber.default(m[0]).toString(16);
205
144
  }
206
-
207
- async getMessageIDAsync(): Promise<string> {
208
- const { inboxMessageId } = this._p.attributes;
145
+ async getMessageIDAsync() {
146
+ const {
147
+ inboxMessageId
148
+ } = this._p.attributes;
209
149
  if (!inboxMessageId) {
210
150
  throw new Error('Failed to find message id');
211
151
  }
@@ -214,55 +154,46 @@ class InboxMessageView {
214
154
  // means this message hasn't been sent as a real email yet, and we need
215
155
  // to wait for the send to complete before we can look up this message's
216
156
  // id.
217
- for (let inboxComposeView of this._driver
218
- .getComposeViewDriverLiveSet()
219
- .values()) {
157
+ for (let inboxComposeView of this._driver.getComposeViewDriverLiveSet().values()) {
220
158
  const draftId = await inboxComposeView.getDraftID();
221
159
  if (draftId && `msg-a:${draftId}` === inboxMessageId) {
222
160
  await inboxComposeView.getStopper().take(1).toPromise();
223
161
  break;
224
162
  }
225
163
  }
226
- return await this._driver.getGmailMessageIdForSyncMessageId(
227
- inboxMessageId
228
- );
164
+ return await this._driver.getGmailMessageIdForSyncMessageId(inboxMessageId);
229
165
  } else {
230
166
  const m = /\d+$/.exec(inboxMessageId);
231
167
  if (!m) throw new Error('Should not happen');
232
- return new BigNumber(m[0]).toString(16);
168
+ return new _bignumber.default(m[0]).toString(16);
233
169
  }
234
170
  }
235
-
236
171
  getContentsElement() {
237
172
  if (!this._p.elements.body) throw new Error('Could not find body element');
238
173
  return this._p.elements.body;
239
174
  }
240
-
241
- getLinks(): Array<MessageViewLinkDescriptor> {
175
+ getLinks() {
242
176
  throw new Error('not implemented yet');
243
177
  }
244
- isElementInQuotedArea(el: HTMLElement): boolean {
245
- const quotedArea = findParent(el, (el) =>
246
- el.classList.contains('gmail_extra')
247
- );
178
+ isElementInQuotedArea(el) {
179
+ const quotedArea = (0, _findParent.default)(el, el => el.classList.contains('gmail_extra'));
248
180
  return quotedArea != null;
249
181
  }
250
- addMoreMenuItem(options: MessageViewToolbarButtonDescriptor): void {
182
+ addMoreMenuItem(options) {
251
183
  throw new Error('not implemented yet');
252
184
  }
253
- addAttachmentIcon(options: Object): SafeEventEmitter & {} {
185
+ addAttachmentIcon(options) {
254
186
  // eslint-disable-next-line no-console
255
- console.warn(
256
- 'MessageView.addAttachmentIcon is not implemented yet in Inbox'
257
- );
258
-
187
+ console.warn('MessageView.addAttachmentIcon is not implemented yet in Inbox');
259
188
  return new AttachmentIcon();
260
189
  }
261
190
  getAttachmentCardViewDrivers() {
262
- return (this._attachmentCardViews: any);
191
+ return this._attachmentCardViews;
263
192
  }
264
- addAttachmentCard(options: Object) {
265
- const { attachmentsArea } = this._p.elements;
193
+ addAttachmentCard(options) {
194
+ const {
195
+ attachmentsArea
196
+ } = this._p.elements;
266
197
  if (!attachmentsArea) throw new Error('Could not find attachments area');
267
198
  let container = attachmentsArea.lastElementChild;
268
199
  if (!container) {
@@ -272,77 +203,75 @@ class InboxMessageView {
272
203
  container = document.createElement('div');
273
204
  attachmentsArea.appendChild(container);
274
205
  }
275
- return new InboxAttachmentCardView(
276
- { ...options, element: null, container },
277
- this._driver
278
- );
206
+ return new _inboxAttachmentCardView.default({
207
+ ...options,
208
+ element: null,
209
+ container
210
+ }, this._driver);
279
211
  }
280
- addButtonToDownloadAllArea(options: Object): void {
212
+ addButtonToDownloadAllArea(options) {
281
213
  // no-op in Inbox
282
214
  }
283
- getViewState(): VIEW_STATE {
215
+ getViewState() {
284
216
  return this._p.attributes.viewState;
285
217
  }
286
- getDateString(): string {
218
+ getDateString() {
287
219
  throw new Error('not implemented yet');
288
220
  }
289
- getSender(): Contact {
290
- const { sender } = this._p.elements;
221
+ getSender() {
222
+ const {
223
+ sender
224
+ } = this._p.elements;
291
225
  if (!sender) throw new Error('could not find sender element');
292
226
  const emailAddress = sender.getAttribute('email');
293
227
  if (!emailAddress) throw new Error('could not find email address');
294
228
  return {
295
229
  emailAddress,
296
- name: sender.textContent,
230
+ name: sender.textContent
297
231
  };
298
232
  }
299
- getRecipients(): Array<Contact> {
233
+ getRecipients() {
300
234
  const userContact = this._driver.getUserContact();
301
- return Array.prototype.map.call(
302
- this._p.attributes.recipientElements,
303
- (el) => {
304
- const emailAddress = el.getAttribute('email');
305
- if (emailAddress === userContact.emailAddress) {
306
- return userContact;
307
- }
308
- return {
309
- emailAddress,
310
- name: el.textContent,
311
- };
235
+ return Array.prototype.map.call(this._p.attributes.recipientElements, el => {
236
+ const emailAddress = el.getAttribute('email');
237
+ if (emailAddress === userContact.emailAddress) {
238
+ return userContact;
312
239
  }
313
- );
240
+ return {
241
+ emailAddress,
242
+ name: el.textContent
243
+ };
244
+ });
314
245
  }
315
-
316
- getRecipientEmailAddresses(): Array<string> {
317
- return this.getRecipients().map(({ emailAddress }) => emailAddress);
246
+ getRecipientEmailAddresses() {
247
+ return this.getRecipients().map(_ref => {
248
+ let {
249
+ emailAddress
250
+ } = _ref;
251
+ return emailAddress;
252
+ });
318
253
  }
319
-
320
- async getRecipientsFull(): Promise<Array<Contact>> {
254
+ async getRecipientsFull() {
321
255
  return this.getRecipients();
322
256
  }
323
-
324
257
  getThreadViewDriver() {
325
258
  if (!this._threadViewDriver) throw new Error('failed to find threadView');
326
259
  return this._threadViewDriver;
327
260
  }
328
-
329
261
  getReadyStream() {
330
262
  // Needs to emit after any attachment cards have been added in order for
331
263
  // an app calling getFileAttachmentCardViews() immediately to see the cards.
332
264
  // The cards are emitted several microtasks after the message, so we delay
333
265
  // by about 10 microtasks here. An integration test tests this at least.
334
266
  // TODO something else.
335
- return Kefir.repeat((i) => (i > 10 ? null : delayAsap(null)))
336
- .ignoreValues()
337
- .beforeEnd(() => null);
267
+ return _kefir.default.repeat(i => i > 10 ? null : (0, _delayAsap.default)(null)).ignoreValues().beforeEnd(() => null);
338
268
  }
339
-
340
269
  destroy() {
341
270
  this._eventStream.end();
342
- this._attachmentCardViews.slice().forEach((card) => {
271
+ this._attachmentCardViews.slice().forEach(card => {
343
272
  card.destroy();
344
273
  });
345
274
  }
346
275
  }
347
-
348
- export default defn(module, InboxMessageView);
276
+ var _default = (0, _ud.defn)(module, InboxMessageView);
277
+ exports.default = _default;
@@ -1,59 +1,48 @@
1
- /* @flow */
2
-
3
- import { defn } from 'ud';
4
- import sortBy from 'lodash/sortBy';
5
- import Kefir from 'kefir';
6
- import kefirBus from 'kefir-bus';
7
- import type { Bus } from 'kefir-bus';
8
- import insertElementInOrder from '../../../lib/dom/insert-element-in-order';
9
- import querySelector from '../../../lib/dom/querySelectorOrFail';
10
-
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 _ud = require("ud");
10
+ var _sortBy = _interopRequireDefault(require("lodash/sortBy"));
11
+ var _kefir = _interopRequireDefault(require("kefir"));
12
+ var _kefirBus = _interopRequireDefault(require("kefir-bus"));
13
+ var _insertElementInOrder = _interopRequireDefault(require("../../../lib/dom/insert-element-in-order"));
14
+ var _querySelectorOrFail = _interopRequireDefault(require("../../../lib/dom/querySelectorOrFail"));
11
15
  class InboxModalView {
12
- _eventStream: Bus<Object> = kefirBus();
13
- _modalContainerElement: HTMLElement;
14
-
15
- constructor(options: Object) {
16
+ constructor(options) {
17
+ (0, _defineProperty2.default)(this, "_eventStream", (0, _kefirBus.default)());
16
18
  this._setupModalContainerElement(options);
17
-
18
19
  this._processOptions(options);
19
-
20
- const closeElement = querySelector(
21
- this._modalContainerElement,
22
- '.inboxsdk__close_button'
23
- );
24
-
25
- closeElement.addEventListener('click', (event: MouseEvent) => {
20
+ const closeElement = (0, _querySelectorOrFail.default)(this._modalContainerElement, '.inboxsdk__close_button');
21
+ closeElement.addEventListener('click', event => {
26
22
  this._eventStream.emit({
27
23
  eventName: 'closeClick',
28
- domEvent: event,
24
+ domEvent: event
29
25
  });
30
26
  });
31
27
  }
32
-
33
28
  destroy() {
34
29
  this._modalContainerElement.remove();
35
30
  this._eventStream.end();
36
31
  }
37
-
38
- getModalContainerElement(): HTMLElement {
32
+ getModalContainerElement() {
39
33
  return this._modalContainerElement;
40
34
  }
41
- getEventStream(): Kefir.Observable<Object> {
35
+ getEventStream() {
42
36
  return this._eventStream;
43
37
  }
44
-
45
- _processOptions(options: Object) {
38
+ _processOptions(options) {
46
39
  this.setTitle(options.title);
47
40
  this.setContentElement(options.el);
48
41
  this.setButtons(options.buttons || []);
49
42
  this.setChromeClasses(options.chrome, options.showCloseButton);
50
43
  }
51
-
52
- setTitle(title: string) {
53
- const heading = querySelector(
54
- this._modalContainerElement,
55
- '[role=heading]'
56
- );
44
+ setTitle(title) {
45
+ const heading = (0, _querySelectorOrFail.default)(this._modalContainerElement, '[role=heading]');
57
46
  if (!title) {
58
47
  heading.style.display = 'none';
59
48
  } else {
@@ -61,12 +50,8 @@ class InboxModalView {
61
50
  heading.textContent = title;
62
51
  }
63
52
  }
64
-
65
- setContentElement(element: HTMLElement) {
66
- const content = querySelector(
67
- this._modalContainerElement,
68
- '.inboxsdk__modal_content'
69
- );
53
+ setContentElement(element) {
54
+ const content = (0, _querySelectorOrFail.default)(this._modalContainerElement, '.inboxsdk__modal_content');
70
55
  content.innerHTML = '';
71
56
  if (typeof element === 'string') {
72
57
  content.innerHTML = element;
@@ -74,66 +59,42 @@ class InboxModalView {
74
59
  content.appendChild(element);
75
60
  }
76
61
  }
77
-
78
- setButtons(buttons: Object[]) {
79
- const buttonContainer = querySelector(
80
- this._modalContainerElement,
81
- '.inboxsdk__modal_buttons'
82
- );
83
-
62
+ setButtons(buttons) {
63
+ const buttonContainer = (0, _querySelectorOrFail.default)(this._modalContainerElement, '.inboxsdk__modal_buttons');
84
64
  if (buttons.length > 0) {
85
65
  this._modalContainerElement.classList.add('inboxsdk__modal_hasButtons');
86
66
  } else {
87
- this._modalContainerElement.classList.remove(
88
- 'inboxsdk__modal_hasButtons'
89
- );
67
+ this._modalContainerElement.classList.remove('inboxsdk__modal_hasButtons');
90
68
  }
91
-
92
69
  buttonContainer.innerHTML = '';
93
- sortBy(buttons, [
94
- (button) => (button.type === 'PRIMARY_ACTION' ? 0 : 1),
95
- (button) => button.orderHint || 0,
96
- ]).forEach((buttonDescriptor) => {
70
+ (0, _sortBy.default)(buttons, [button => button.type === 'PRIMARY_ACTION' ? 0 : 1, button => button.orderHint || 0]).forEach(buttonDescriptor => {
97
71
  var buttonEl = document.createElement('input');
98
- buttonEl.className =
99
- buttonDescriptor.type === 'PRIMARY_ACTION' ? 'inboxsdk__primary' : '';
72
+ buttonEl.className = buttonDescriptor.type === 'PRIMARY_ACTION' ? 'inboxsdk__primary' : '';
100
73
  buttonEl.type = 'button';
101
74
  buttonEl.value = buttonDescriptor.text;
102
- buttonEl.addEventListener('click', (event: MouseEvent) => {
75
+ buttonEl.addEventListener('click', event => {
103
76
  event.preventDefault();
104
77
  buttonDescriptor.onClick.call(null);
105
78
  });
106
79
  buttonContainer.appendChild(buttonEl);
107
80
  });
108
81
  }
109
-
110
- setChromeClasses(chrome: boolean, showCloseButton: boolean) {
82
+ setChromeClasses(chrome, showCloseButton) {
111
83
  if (chrome === false) {
112
84
  this._modalContainerElement.classList.add('inboxsdk__modal_chromeless');
113
85
  } else {
114
- this._modalContainerElement.classList.remove(
115
- 'inboxsdk__modal_chromeless'
116
- );
86
+ this._modalContainerElement.classList.remove('inboxsdk__modal_chromeless');
117
87
  }
118
88
  if (showCloseButton) {
119
- this._modalContainerElement.classList.add(
120
- 'inboxsdk__modal_showCloseButton'
121
- );
89
+ this._modalContainerElement.classList.add('inboxsdk__modal_showCloseButton');
122
90
  } else {
123
- this._modalContainerElement.classList.remove(
124
- 'inboxsdk__modal_showCloseButton'
125
- );
91
+ this._modalContainerElement.classList.remove('inboxsdk__modal_showCloseButton');
126
92
  }
127
93
  }
128
-
129
- _setupModalContainerElement(options: Object) {
130
- const constrainTitleWidthTopRowClass = options.constrainTitleWidth
131
- ? 'inboxsdk__modal_toprow--constrain-title-width'
132
- : '';
133
-
94
+ _setupModalContainerElement(options) {
95
+ const constrainTitleWidthTopRowClass = options.constrainTitleWidth ? 'inboxsdk__modal_toprow--constrain-title-width' : '';
134
96
  this._modalContainerElement = document.createElement('div');
135
97
  this._modalContainerElement.className = 'inboxsdk__modal_fullscreen';
136
-
137
98
  var htmlString = `
138
99
  <div class="inboxsdk__modal_container" tabindex="0" role="alertdialog">
139
100
  <div class="inboxsdk__modal_toprow ${constrainTitleWidthTopRowClass}">
@@ -145,9 +106,8 @@ class InboxModalView {
145
106
  <div class="inboxsdk__modal_buttons"></div>
146
107
  </div>
147
108
  `;
148
-
149
109
  this._modalContainerElement.innerHTML = htmlString;
150
110
  }
151
111
  }
152
-
153
- export default defn(module, InboxModalView);
112
+ var _default = (0, _ud.defn)(module, InboxModalView);
113
+ exports.default = _default;