@inboxsdk/core 0.2.28-alpha.4 → 0.2.28-alpha.6

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 (264) hide show
  1. package/inboxsdk.js +1 -1
  2. package/package.json +5 -1
  3. package/src/inboxsdk-js/check-requirements.js +7 -3
  4. package/src/inboxsdk-js/header.js +1 -0
  5. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +5 -6
  6. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +4 -3
  7. package/src/inboxsdk-js/inboxsdk-REMOTE.js +3 -1
  8. package/src/inboxsdk-js/inboxsdk-TEST.js +4 -3
  9. package/src/inboxsdk-js/inboxsdk.js +33 -39
  10. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +15 -18
  11. package/src/inboxsdk.d.ts +2 -0
  12. package/src/injected-js/gmail/modify-suggestions.test.js +8 -9
  13. package/src/injected-js/gmail/setup-gmail-interceptor.js +340 -579
  14. package/src/injected-js/gmail/sync-compose-request-processor.test.js +39 -49
  15. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +20 -33
  16. package/src/injected-js/gmail/thread-identifier/index.js +57 -93
  17. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +22 -31
  18. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +12 -28
  19. package/src/injected-js/inbox/setupAjaxInterceptor.js +64 -121
  20. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +53 -66
  21. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +20 -36
  22. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
  23. package/src/injected-js/main.js +11 -24
  24. package/src/injected-js/message-metadata-holder.js +52 -82
  25. package/src/injected-js/setup-data-exposer.js +89 -148
  26. package/src/injected-js/setup-error-silencer.js +21 -21
  27. package/src/injected-js/setup-event-reemitter.js +30 -22
  28. package/src/injected-js/setupInboxCustomViewLinkFixer.js +24 -29
  29. package/src/injected-js/setupPushStateListener.js +18 -11
  30. package/src/injected-js/xhr-helper.js +62 -65
  31. package/src/injected-js/xhr-proxy-factory.js +195 -445
  32. package/src/injected-js/xhr-proxy-factory.test.js +824 -991
  33. package/src/platform-implementation-js/constants/router.js +14 -9
  34. package/src/platform-implementation-js/constants/toolbars.js +8 -3
  35. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
  36. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +115 -136
  37. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +13 -14
  38. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +27 -48
  39. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +31 -42
  40. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +30 -40
  41. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +10 -18
  42. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +21 -28
  43. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +33 -45
  44. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +31 -49
  45. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +58 -65
  46. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +40 -124
  47. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +17 -22
  48. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +10 -11
  49. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +44 -80
  50. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +19 -26
  51. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +71 -147
  52. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +91 -148
  53. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +150 -166
  54. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +70 -120
  55. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +15 -15
  56. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +44 -67
  57. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +230 -379
  58. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +121 -307
  59. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +17 -24
  60. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +41 -49
  61. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +30 -40
  62. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +28 -60
  63. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +61 -133
  64. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +30 -42
  65. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +52 -46
  66. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +354 -694
  67. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +77 -93
  68. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +35 -82
  69. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +44 -94
  70. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +12 -19
  71. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +17 -29
  72. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +26 -26
  73. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +391 -797
  74. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +7 -9
  75. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +60 -109
  76. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +95 -135
  77. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +103 -211
  78. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +61 -61
  79. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +17 -17
  80. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +188 -541
  81. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +67 -135
  82. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +27 -49
  83. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +7 -13
  84. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +9 -22
  85. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +36 -63
  86. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +38 -113
  87. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +11 -16
  88. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +11 -17
  89. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +8 -11
  90. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +27 -47
  91. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +11 -24
  92. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +59 -111
  93. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +15 -14
  94. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +11 -17
  95. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +18 -24
  96. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +19 -23
  97. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +11 -19
  98. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +141 -376
  99. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +17 -28
  100. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +34 -70
  101. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +10 -17
  102. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +83 -137
  103. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +10 -19
  104. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +632 -1190
  105. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +29 -38
  106. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +327 -617
  107. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +26 -49
  108. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +188 -380
  109. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +104 -194
  110. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +382 -811
  111. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +34 -58
  112. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +330 -581
  113. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +123 -277
  114. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +15 -35
  115. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +216 -571
  116. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +152 -336
  117. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +87 -211
  118. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +10 -11
  119. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +20 -29
  120. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +41 -76
  121. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +45 -99
  122. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +76 -128
  123. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +128 -319
  124. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +45 -78
  125. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +8 -4
  126. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +36 -54
  127. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +35 -53
  128. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +13 -15
  129. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +15 -18
  130. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +14 -13
  131. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +14 -20
  132. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +14 -13
  133. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +35 -67
  134. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +16 -18
  135. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +68 -185
  136. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +28 -56
  137. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +12 -10
  138. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +16 -16
  139. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +24 -35
  140. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +37 -89
  141. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +56 -78
  142. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +26 -32
  143. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +52 -109
  144. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +7 -8
  145. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +16 -20
  146. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +15 -16
  147. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +75 -83
  148. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +530 -822
  149. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +48 -61
  150. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +9 -12
  151. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +12 -19
  152. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +24 -33
  153. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +201 -388
  154. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +249 -265
  155. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +84 -152
  156. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +55 -67
  157. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +43 -65
  158. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +31 -56
  159. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +191 -294
  160. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +32 -45
  161. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +21 -39
  162. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +153 -240
  163. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +75 -150
  164. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +20 -37
  165. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +60 -114
  166. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +47 -65
  167. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +41 -52
  168. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +27 -36
  169. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +52 -80
  170. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +465 -649
  171. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +37 -58
  172. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +14 -26
  173. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +118 -235
  174. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +10 -11
  175. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +28 -46
  176. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +131 -202
  177. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +40 -80
  178. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +35 -61
  179. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +124 -221
  180. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +125 -213
  181. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +104 -126
  182. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +36 -51
  183. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +158 -297
  184. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +21 -35
  185. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +24 -43
  186. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +39 -68
  187. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +14 -19
  188. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +27 -35
  189. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +16 -22
  190. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
  191. package/src/platform-implementation-js/driver-common/inboxAjax.js +12 -7
  192. package/src/platform-implementation-js/driver-common/requestGmailThread.js +19 -20
  193. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +197 -306
  194. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +113 -161
  195. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +1 -114
  196. package/src/platform-implementation-js/driver-interfaces/driver.js +1 -131
  197. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +4 -48
  198. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +1 -29
  199. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +1 -32
  200. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +1 -11
  201. package/src/platform-implementation-js/lib/array-to-lifetimes.js +43 -41
  202. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +139 -155
  203. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +19 -38
  204. package/src/platform-implementation-js/lib/css-selector-escape.js +7 -3
  205. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +8 -11
  206. package/src/platform-implementation-js/lib/dom/get-selection.js +23 -52
  207. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +69 -101
  208. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +8 -10
  209. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +15 -17
  210. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +8 -11
  211. package/src/platform-implementation-js/lib/dom/set-css.js +7 -3
  212. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +9 -11
  213. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +32 -33
  214. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +23 -26
  215. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +86 -149
  216. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +42 -57
  217. package/src/platform-implementation-js/lib/make-revocable-function.js +19 -21
  218. package/src/platform-implementation-js/lib/make-revocable-function.test.js +20 -22
  219. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +15 -17
  220. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +9 -18
  221. package/src/platform-implementation-js/lib/populateRouteID.js +8 -9
  222. package/src/platform-implementation-js/lib/populateRouteID.test.js +20 -19
  223. package/src/platform-implementation-js/lib/react/ElementContainer.js +23 -20
  224. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +10 -9
  225. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +13 -20
  226. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +13 -18
  227. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +11 -17
  228. package/src/platform-implementation-js/lib/shared-style.js +14 -13
  229. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +18 -17
  230. package/src/platform-implementation-js/lib/toLiveSet.js +17 -15
  231. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +6 -5
  232. package/src/platform-implementation-js/main.js +9 -24
  233. package/src/platform-implementation-js/namespaces/compose.js +37 -60
  234. package/src/platform-implementation-js/namespaces/conversations.js +52 -124
  235. package/src/platform-implementation-js/namespaces/global.js +27 -39
  236. package/src/platform-implementation-js/namespaces/keyboard.js +29 -33
  237. package/src/platform-implementation-js/namespaces/lists.js +25 -31
  238. package/src/platform-implementation-js/namespaces/modal.js +34 -28
  239. package/src/platform-implementation-js/namespaces/nav-menu.js +30 -45
  240. package/src/platform-implementation-js/namespaces/router.js +70 -137
  241. package/src/platform-implementation-js/namespaces/search.js +19 -17
  242. package/src/platform-implementation-js/namespaces/toolbars.js +71 -117
  243. package/src/platform-implementation-js/namespaces/user.js +36 -37
  244. package/src/platform-implementation-js/namespaces/widgets.js +54 -61
  245. package/src/platform-implementation-js/platform-implementation.js +98 -229
  246. package/src/platform-implementation-js/views/app-toolbar-button-view.js +26 -47
  247. package/src/platform-implementation-js/views/collapsible-section-view.js +66 -63
  248. package/src/platform-implementation-js/views/content-panel-view.js +28 -30
  249. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +21 -44
  250. package/src/platform-implementation-js/views/conversations/custom-message-view.js +44 -104
  251. package/src/platform-implementation-js/views/conversations/message-view.js +131 -202
  252. package/src/platform-implementation-js/views/conversations/thread-view.js +75 -127
  253. package/src/platform-implementation-js/views/native-nav-item-view.js +32 -65
  254. package/src/platform-implementation-js/views/nav-item-view.js +51 -115
  255. package/src/platform-implementation-js/views/route-view/custom-route-view.js +25 -20
  256. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
  257. package/src/platform-implementation-js/views/route-view/list-route-view.js +30 -52
  258. package/src/platform-implementation-js/views/route-view/route-view.js +24 -35
  259. package/src/platform-implementation-js/views/section-view.js +60 -52
  260. package/src/platform-implementation-js/views/thread-row-view.js +49 -74
  261. package/src/platform-implementation-js/widgets/drawer-view.js +29 -36
  262. package/src/platform-implementation-js/widgets/modal-view.js +39 -68
  263. package/src/platform-implementation-js/widgets/mole-view.js +22 -22
  264. package/src/platform-implementation-js/widgets/top-message-bar-view.js +13 -10
@@ -1,125 +1,50 @@
1
- /* @flow */
2
-
3
- import Kefir from 'kefir';
4
- import Logger from '../../../../lib/logger';
5
-
6
- import GmailTooltipView from '../../widgets/gmail-tooltip-view';
7
- import type GmailComposeView from '../gmail-compose-view';
8
-
9
- import type { TooltipDescriptor } from '../../../../views/compose-button-view';
10
-
11
- export default function addTooltipToButton(
12
- gmailComposeView: GmailComposeView,
13
- buttonViewController: Object,
14
- buttonDescriptor: Object,
15
- tooltipDescriptor: TooltipDescriptor
16
- ): GmailTooltipView {
17
- var gmailTooltipView = new GmailTooltipView(tooltipDescriptor);
18
- var tooltipStopperStream: Kefir.Observable<any> = gmailTooltipView
19
- .getStopper()
20
- .merge(gmailComposeView.getStopper());
21
-
22
- gmailComposeView
23
- .getStopper()
24
- .takeUntilBy(gmailTooltipView.getStopper())
25
- .onValue(() => gmailTooltipView.destroy());
26
-
27
- ((document.body: any): HTMLElement).appendChild(
28
- gmailTooltipView.getElement()
29
- );
30
-
31
- _anchorTooltip(
32
- gmailTooltipView,
33
- gmailComposeView,
34
- buttonViewController,
35
- buttonDescriptor
36
- );
37
-
38
- gmailComposeView
39
- .getEventStream()
40
- .filter(
41
- (event) =>
42
- event.eventName === 'buttonAdded' ||
43
- event.eventName === 'fullscreenChanged'
44
- )
45
- .merge(
46
- gmailTooltipView
47
- .getEventStream()
48
- .filter(({ eventName }) => eventName === 'imageLoaded')
49
- )
50
- .debounce(10)
51
- .takeUntilBy(tooltipStopperStream)
52
- .onValue(
53
- _anchorTooltip.bind(
54
- null,
55
- gmailTooltipView,
56
- gmailComposeView,
57
- buttonViewController,
58
- buttonDescriptor
59
- )
60
- );
61
-
62
- buttonViewController
63
- .getView()
64
- .getEventStream()
65
- .takeUntilBy(tooltipStopperStream)
66
- .filter(function (event) {
67
- return event.eventName === 'click';
68
- })
69
- .onValue(gmailTooltipView.destroy.bind(gmailTooltipView));
70
-
71
- var stoppedIntervalStream =
72
- Kefir.interval(50).takeUntilBy(tooltipStopperStream);
73
-
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = addTooltipToButton;
8
+ var _kefir = _interopRequireDefault(require("kefir"));
9
+ var _logger = _interopRequireDefault(require("../../../../lib/logger"));
10
+ var _gmailTooltipView = _interopRequireDefault(require("../../widgets/gmail-tooltip-view"));
11
+ function addTooltipToButton(gmailComposeView, buttonViewController, buttonDescriptor, tooltipDescriptor) {
12
+ var gmailTooltipView = new _gmailTooltipView.default(tooltipDescriptor);
13
+ var tooltipStopperStream = gmailTooltipView.getStopper().merge(gmailComposeView.getStopper());
14
+ gmailComposeView.getStopper().takeUntilBy(gmailTooltipView.getStopper()).onValue(() => gmailTooltipView.destroy());
15
+ document.body.appendChild(gmailTooltipView.getElement());
16
+ _anchorTooltip(gmailTooltipView, gmailComposeView, buttonViewController, buttonDescriptor);
17
+ gmailComposeView.getEventStream().filter(event => event.eventName === 'buttonAdded' || event.eventName === 'fullscreenChanged').merge(gmailTooltipView.getEventStream().filter(_ref => {
18
+ let {
19
+ eventName
20
+ } = _ref;
21
+ return eventName === 'imageLoaded';
22
+ })).debounce(10).takeUntilBy(tooltipStopperStream).onValue(_anchorTooltip.bind(null, gmailTooltipView, gmailComposeView, buttonViewController, buttonDescriptor));
23
+ buttonViewController.getView().getEventStream().takeUntilBy(tooltipStopperStream).filter(function (event) {
24
+ return event.eventName === 'click';
25
+ }).onValue(gmailTooltipView.destroy.bind(gmailTooltipView));
26
+ var stoppedIntervalStream = _kefir.default.interval(50).takeUntilBy(tooltipStopperStream);
74
27
  var left = 0;
75
28
  var top = 0;
76
-
77
- stoppedIntervalStream
78
- .takeWhile(
79
- () => !!buttonViewController.getView() && !!gmailTooltipView.getElement()
80
- )
81
- .map(() =>
82
- buttonViewController.getView().getElement().getBoundingClientRect()
83
- )
84
- .filter((rect) => rect.left !== left || rect.top !== top)
85
- .map((rect) => {
86
- left = rect.left;
87
- top = rect.top;
88
- return rect;
89
- })
90
- .onValue(
91
- gmailTooltipView.anchor.bind(
92
- gmailTooltipView,
93
- buttonViewController.getView().getElement(),
94
- { position: 'top' }
95
- )
96
- );
97
-
98
- stoppedIntervalStream
99
- .filter(
100
- () =>
101
- !buttonViewController.getView() ||
102
- !buttonViewController.getView().getElement().offsetParent
103
- )
104
- .onValue(gmailTooltipView.destroy.bind(gmailTooltipView));
105
-
29
+ stoppedIntervalStream.takeWhile(() => !!buttonViewController.getView() && !!gmailTooltipView.getElement()).map(() => buttonViewController.getView().getElement().getBoundingClientRect()).filter(rect => rect.left !== left || rect.top !== top).map(rect => {
30
+ left = rect.left;
31
+ top = rect.top;
32
+ return rect;
33
+ }).onValue(gmailTooltipView.anchor.bind(gmailTooltipView, buttonViewController.getView().getElement(), {
34
+ position: 'top'
35
+ }));
36
+ stoppedIntervalStream.filter(() => !buttonViewController.getView() || !buttonViewController.getView().getElement().offsetParent).onValue(gmailTooltipView.destroy.bind(gmailTooltipView));
106
37
  return gmailTooltipView;
107
38
  }
108
-
109
- function _anchorTooltip(
110
- gmailTooltipView,
111
- gmailComposeView,
112
- buttonViewController,
113
- buttonDescriptor
114
- ) {
39
+ function _anchorTooltip(gmailTooltipView, gmailComposeView, buttonViewController, buttonDescriptor) {
115
40
  try {
116
41
  gmailComposeView.ensureGroupingIsOpen(buttonDescriptor.type);
117
42
  setTimeout(function () {
118
43
  gmailTooltipView.anchor(buttonViewController.getView().getElement(), {
119
- position: 'top',
44
+ position: 'top'
120
45
  });
121
46
  }, 10);
122
47
  } catch (err) {
123
- Logger.error(err);
48
+ _logger.default.error(err);
124
49
  }
125
- }
50
+ }
@@ -1,22 +1,17 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import { simulateClick } from '../../../../lib/dom/simulate-mouse-event';
4
-
5
- export default function ensureAppButtonToolbarsAreClosed(
6
- gmailComposeViewElement: HTMLElement
7
- ) {
8
- var groupedButton = gmailComposeViewElement.querySelector(
9
- '.inboxsdk__compose_groupedActionButton'
10
- );
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = ensureAppButtonToolbarsAreClosed;
7
+ var _simulateMouseEvent = require("../../../../lib/dom/simulate-mouse-event");
8
+ function ensureAppButtonToolbarsAreClosed(gmailComposeViewElement) {
9
+ var groupedButton = gmailComposeViewElement.querySelector('.inboxsdk__compose_groupedActionButton');
11
10
  if (!groupedButton) {
12
11
  return; //no group button so we're good
13
12
  }
14
13
 
15
- if (
16
- gmailComposeViewElement.classList.contains(
17
- 'inboxsdk__compose_groupedActionToolbar_visible'
18
- )
19
- ) {
20
- simulateClick(groupedButton);
14
+ if (gmailComposeViewElement.classList.contains('inboxsdk__compose_groupedActionToolbar_visible')) {
15
+ (0, _simulateMouseEvent.simulateClick)(groupedButton);
21
16
  }
22
- }
17
+ }
@@ -1,29 +1,23 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import { simulateClick } from '../../../../lib/dom/simulate-mouse-event';
4
-
5
- export default function ensureGroupingIsOpen(
6
- gmailComposeViewElement: HTMLElement,
7
- type: string
8
- ) {
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = ensureGroupingIsOpen;
7
+ var _simulateMouseEvent = require("../../../../lib/dom/simulate-mouse-event");
8
+ function ensureGroupingIsOpen(gmailComposeViewElement, type) {
9
9
  if (type === 'SEND_ACTION') {
10
10
  return; //we don't currently group send_actions
11
11
  }
12
12
 
13
- var groupedButton = gmailComposeViewElement.querySelector(
14
- '.inboxsdk__compose_groupedActionButton'
15
- );
13
+ var groupedButton = gmailComposeViewElement.querySelector('.inboxsdk__compose_groupedActionButton');
16
14
  if (!groupedButton) {
17
15
  return; //no group button so we're good
18
16
  }
19
17
 
20
- if (
21
- gmailComposeViewElement.classList.contains(
22
- 'inboxsdk__compose_groupedActionToolbar_visible'
23
- )
24
- ) {
18
+ if (gmailComposeViewElement.classList.contains('inboxsdk__compose_groupedActionToolbar_visible')) {
25
19
  return; //we are already visible
26
20
  }
27
21
 
28
- simulateClick(groupedButton);
29
- }
22
+ (0, _simulateMouseEvent.simulateClick)(groupedButton);
23
+ }
@@ -1,19 +1,16 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import type GmailComposeView from '../gmail-compose-view';
4
-
5
- export default function (gmailComposeView: GmailComposeView) {
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = _default;
7
+ function _default(gmailComposeView) {
6
8
  gmailComposeView.getBodyElement().focus();
7
-
8
9
  const lastSelectionRange = gmailComposeView.getLastSelectionRange();
9
10
  const selection = document.getSelection();
10
11
  if (!selection) throw new Error();
11
- if (
12
- lastSelectionRange &&
13
- selection.anchorNode === selection.focusNode &&
14
- selection.anchorOffset === selection.focusOffset
15
- ) {
12
+ if (lastSelectionRange && selection.anchorNode === selection.focusNode && selection.anchorOffset === selection.focusOffset) {
16
13
  selection.removeAllRanges();
17
14
  selection.addRange(lastSelectionRange);
18
15
  }
19
- }
16
+ }
@@ -1,82 +1,62 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import find from 'lodash/find';
4
- import { simulateClick } from '../../../../lib/dom/simulate-mouse-event';
5
- import type GmailDriver from '../../gmail-driver';
6
- import type GmailComposeView from '../../views/gmail-compose-view';
7
-
8
- export function getFromContact(
9
- driver: GmailDriver,
10
- gmailComposeView: GmailComposeView
11
- ): Contact {
12
- const nameInput: ?HTMLInputElement = (gmailComposeView
13
- .getElement()
14
- .querySelector('input[name="from"]'): any);
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getFromContact = getFromContact;
8
+ exports.getFromContactChoices = getFromContactChoices;
9
+ exports.setFromEmail = setFromEmail;
10
+ var _find = _interopRequireDefault(require("lodash/find"));
11
+ var _simulateMouseEvent = require("../../../../lib/dom/simulate-mouse-event");
12
+ function getFromContact(driver, gmailComposeView) {
13
+ const nameInput = gmailComposeView.getElement().querySelector('input[name="from"]');
15
14
  const emailAddress = nameInput ? nameInput.value : null;
16
15
  if (!emailAddress) {
17
16
  return driver.getUserContact();
18
17
  }
19
18
  const fromContactChoices = getFromContactChoices(driver, gmailComposeView);
20
- const matchingContact: ?Contact = find(
21
- fromContactChoices,
22
- (contact) => contact.emailAddress === emailAddress
23
- );
19
+ const matchingContact = (0, _find.default)(fromContactChoices, contact => contact.emailAddress === emailAddress);
24
20
  let name;
25
21
  if (!matchingContact) {
26
22
  name = emailAddress;
27
23
  driver.getLogger().error(new Error('getFromContact failed to find name'), {
28
- fromContactChoicesLength: fromContactChoices.length,
24
+ fromContactChoicesLength: fromContactChoices.length
29
25
  });
30
26
  } else {
31
27
  name = matchingContact.name;
32
28
  }
33
- return { emailAddress, name };
29
+ return {
30
+ emailAddress,
31
+ name
32
+ };
34
33
  }
35
-
36
- export function getFromContactChoices(
37
- driver: GmailDriver,
38
- gmailComposeView: GmailComposeView
39
- ): Contact[] {
40
- const choiceEls = gmailComposeView
41
- .getElement()
42
- .querySelectorAll(
43
- 'div.J-M.jQjAxd.J-M-awS[role=menu] > div.SK.AX > div[value][role=menuitem]'
44
- );
34
+ function getFromContactChoices(driver, gmailComposeView) {
35
+ const choiceEls = gmailComposeView.getElement().querySelectorAll('div.J-M.jQjAxd.J-M-awS[role=menu] > div.SK.AX > div[value][role=menuitem]');
45
36
  if (choiceEls.length == 0) {
46
37
  // From field isn't present
47
38
  return [driver.getUserContact()];
48
39
  }
49
- return Array.from(choiceEls).map((item) => ({
40
+ return Array.from(choiceEls).map(item => ({
50
41
  emailAddress: item.getAttribute('value') || '',
51
- name: item.textContent.replace(/<.*/, '').trim(),
42
+ name: item.textContent.replace(/<.*/, '').trim()
52
43
  }));
53
44
  }
54
-
55
- export function setFromEmail(
56
- driver: GmailDriver,
57
- gmailComposeView: GmailComposeView,
58
- email: string
59
- ) {
45
+ function setFromEmail(driver, gmailComposeView, email) {
60
46
  let currentFromAddress = gmailComposeView.getFromContact().emailAddress;
61
47
  if (currentFromAddress === email) {
62
48
  return;
63
49
  }
64
-
65
- const choiceParent = gmailComposeView
66
- .getElement()
67
- .querySelector('div.J-M.jQjAxd.J-M-awS[role=menu] > div.SK.AX');
50
+ const choiceParent = gmailComposeView.getElement().querySelector('div.J-M.jQjAxd.J-M-awS[role=menu] > div.SK.AX');
68
51
  if (!choiceParent) {
69
52
  if (driver.getUserContact().emailAddress != email) {
70
53
  throw new Error('Chosen email from choice was not found');
71
54
  }
72
55
  return;
73
56
  }
74
- const chosenChoice = find(
75
- choiceParent.children,
76
- (item) => item.getAttribute('value') == email
77
- );
57
+ const chosenChoice = (0, _find.default)(choiceParent.children, item => item.getAttribute('value') == email);
78
58
  if (!chosenChoice) {
79
59
  throw new Error('Chosen email from choice was not found');
80
60
  }
81
- simulateClick(chosenChoice);
82
- }
61
+ (0, _simulateMouseEvent.simulateClick)(chosenChoice);
62
+ }
@@ -1,30 +1,22 @@
1
- /* @flow */
2
-
3
- import type GmailComposeView from '../gmail-compose-view';
1
+ "use strict";
4
2
 
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = getAdditionalActionToolbar;
5
7
  const composeViewActionToolbars = new WeakMap();
6
-
7
- export default function getAdditionalActionToolbar(
8
- gmailComposeView: GmailComposeView
9
- ) {
10
- var groupedActionToolbar = gmailComposeView
11
- .getElement()
12
- .querySelector('.inboxsdk__compose_groupedActionToolbar > div');
8
+ function getAdditionalActionToolbar(gmailComposeView) {
9
+ var groupedActionToolbar = gmailComposeView.getElement().querySelector('.inboxsdk__compose_groupedActionToolbar > div');
13
10
  if (groupedActionToolbar) {
14
11
  return groupedActionToolbar;
15
12
  }
16
-
17
- let actionToolbar = gmailComposeView
18
- .getElement()
19
- .querySelector('.inboxsdk__compose_actionToolbar > div');
13
+ let actionToolbar = gmailComposeView.getElement().querySelector('.inboxsdk__compose_actionToolbar > div');
20
14
  if (actionToolbar) {
21
15
  return actionToolbar;
22
16
  }
23
-
24
17
  actionToolbar = composeViewActionToolbars.get(gmailComposeView);
25
18
  if (!actionToolbar) {
26
- const _actionToolbar = (actionToolbar =
27
- _addActionToolbar(gmailComposeView));
19
+ const _actionToolbar = actionToolbar = _addActionToolbar(gmailComposeView);
28
20
  gmailComposeView.getStopper().onValue(() => {
29
21
  _actionToolbar.remove();
30
22
  });
@@ -32,20 +24,17 @@ export default function getAdditionalActionToolbar(
32
24
  }
33
25
  return actionToolbar;
34
26
  }
35
-
36
- function _addActionToolbar(gmailComposeView: GmailComposeView) {
27
+ function _addActionToolbar(gmailComposeView) {
37
28
  const td = document.createElement('td');
38
29
  td.setAttribute('class', 'inboxsdk__compose_actionToolbar gU');
39
30
  const formattingArea = gmailComposeView.getFormattingArea();
40
31
  if (!formattingArea) throw new Error('formatting area missing');
41
32
  formattingArea.insertAdjacentElement('beforebegin', td);
42
-
43
33
  let parent = td.parentElement;
44
34
  while (parent) {
45
35
  if (parent.tagName === 'TABLE') break;
46
36
  parent = parent.parentElement;
47
37
  }
48
-
49
38
  if (parent) {
50
39
  const col = parent.querySelector('colgroup col');
51
40
  if (col) {
@@ -59,9 +48,7 @@ function _addActionToolbar(gmailComposeView: GmailComposeView) {
59
48
  col.insertAdjacentElement('afterend', newCol1);
60
49
  }
61
50
  }
62
-
63
51
  var toolbarDiv = document.createElement('div');
64
52
  td.appendChild(toolbarDiv);
65
-
66
53
  return toolbarDiv;
67
- }
54
+ }
@@ -1,151 +1,99 @@
1
- /* @flow */
2
-
3
- import Kefir from 'kefir';
4
- import t from 'transducers.js';
5
-
6
- import Logger from '../../../../lib/logger';
7
- import makeMutationObserverStream from '../../../../lib/dom/make-mutation-observer-stream';
8
- import getAddressInformationExtractor from './get-address-information-extractor';
9
- import { getRecipientRowElements } from './page-parser';
10
-
11
- import type GmailComposeView from '../gmail-compose-view';
12
- import makeElementChildStream from '../../../../lib/dom/make-element-child-stream';
13
- import toItemWithLifetimeStream from '../../../../lib/toItemWithLifetimeStream';
14
-
15
- export default function getAddressChangesStream(
16
- gmailComposeView: GmailComposeView
17
- ): Kefir.Observable<Object> {
18
- const recipientRowElements = getRecipientRowElements(
19
- gmailComposeView.getElement()
20
- );
21
-
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = getAddressChangesStream;
8
+ var _kefir = _interopRequireDefault(require("kefir"));
9
+ var _transducers = _interopRequireDefault(require("transducers.js"));
10
+ var _logger = _interopRequireDefault(require("../../../../lib/logger"));
11
+ var _makeMutationObserverStream = _interopRequireDefault(require("../../../../lib/dom/make-mutation-observer-stream"));
12
+ var _getAddressInformationExtractor = _interopRequireDefault(require("./get-address-information-extractor"));
13
+ var _pageParser = require("./page-parser");
14
+ var _makeElementChildStream = _interopRequireDefault(require("../../../../lib/dom/make-element-child-stream"));
15
+ var _toItemWithLifetimeStream = _interopRequireDefault(require("../../../../lib/toItemWithLifetimeStream"));
16
+ function getAddressChangesStream(gmailComposeView) {
17
+ const recipientRowElements = (0, _pageParser.getRecipientRowElements)(gmailComposeView.getElement());
22
18
  if (!recipientRowElements || recipientRowElements.length === 0) {
23
- return Kefir.never();
19
+ return _kefir.default.never();
24
20
  }
25
-
26
- const mergedStream = Kefir.merge([
27
- _makeSubAddressStream('to', gmailComposeView),
28
- _makeSubAddressStream('cc', gmailComposeView),
29
- _makeSubAddressStream('bcc', gmailComposeView),
30
- ]);
31
-
21
+ const mergedStream = _kefir.default.merge([_makeSubAddressStream('to', gmailComposeView), _makeSubAddressStream('cc', gmailComposeView), _makeSubAddressStream('bcc', gmailComposeView)]);
32
22
  const umbrellaStream = mergedStream.map(_groupChangeEvents);
33
-
34
- return Kefir.merge([
35
- mergedStream,
36
- umbrellaStream,
37
- getFromAddressChangeStream(gmailComposeView),
38
- ]);
23
+ return _kefir.default.merge([mergedStream, umbrellaStream, getFromAddressChangeStream(gmailComposeView)]);
39
24
  }
40
-
41
- function readContactFromElement(
42
- contactNode: HTMLElement,
43
- addressType: ReceiverType,
44
- gmailComposeView: GmailComposeView
45
- ): Contact | null {
25
+ function readContactFromElement(contactNode, addressType, gmailComposeView) {
46
26
  if (contactNode.getAttribute('role') === 'option') {
47
27
  // Handling updated compose recipients
48
28
  // https://workspaceupdates.googleblog.com/2021/10/visual-updates-for-composing-email-in-gmail.html
49
29
  return {
50
30
  name: contactNode.getAttribute('data-name'),
51
- emailAddress: (contactNode.getAttribute('data-hovercard-id'): any),
31
+ emailAddress: contactNode.getAttribute('data-hovercard-id')
52
32
  };
53
33
  } else {
54
- return getAddressInformationExtractor(
55
- addressType,
56
- gmailComposeView
57
- )(contactNode);
34
+ return (0, _getAddressInformationExtractor.default)(addressType, gmailComposeView)(contactNode);
58
35
  }
59
36
  }
60
-
61
- function _makeSubAddressStream(
62
- addressType: ReceiverType,
63
- gmailComposeView: GmailComposeView
64
- ): Kefir.Observable<{ eventName: string, data: { contact: Contact } }> {
65
- const contactNodes = gmailComposeView.tagTree.getAllByTag(
66
- `${addressType}Recipient`
67
- );
68
-
69
- return toItemWithLifetimeStream(contactNodes).flatMap(
70
- ({ el, removalStream }) => {
71
- const contact = readContactFromElement(
72
- el.getValue(),
73
- addressType,
74
- gmailComposeView
75
- );
76
- if (!contact) {
77
- return Kefir.never();
78
- }
79
- return Kefir.constant({
80
- eventName: `${addressType}ContactAdded`,
81
- data: {
82
- contact,
83
- },
84
- }).merge(
85
- removalStream.map(() => ({
86
- eventName: `${addressType}ContactRemoved`,
87
- data: {
88
- contact,
89
- },
90
- }))
91
- );
37
+ function _makeSubAddressStream(addressType, gmailComposeView) {
38
+ const contactNodes = gmailComposeView.tagTree.getAllByTag(`${addressType}Recipient`);
39
+ return (0, _toItemWithLifetimeStream.default)(contactNodes).flatMap(_ref => {
40
+ let {
41
+ el,
42
+ removalStream
43
+ } = _ref;
44
+ const contact = readContactFromElement(el.getValue(), addressType, gmailComposeView);
45
+ if (!contact) {
46
+ return _kefir.default.never();
92
47
  }
93
- );
48
+ return _kefir.default.constant({
49
+ eventName: `${addressType}ContactAdded`,
50
+ data: {
51
+ contact
52
+ }
53
+ }).merge(removalStream.map(() => ({
54
+ eventName: `${addressType}ContactRemoved`,
55
+ data: {
56
+ contact
57
+ }
58
+ })));
59
+ });
94
60
  }
95
-
96
61
  function _groupChangeEvents(event) {
97
62
  const grouping = {
98
63
  to: {
99
64
  added: [],
100
- removed: [],
65
+ removed: []
101
66
  },
102
67
  cc: {
103
68
  added: [],
104
- removed: [],
69
+ removed: []
105
70
  },
106
71
  bcc: {
107
72
  added: [],
108
- removed: [],
109
- },
73
+ removed: []
74
+ }
110
75
  };
111
-
112
76
  const parts = event.eventName.split('Contact'); //splits "toContactAdded" => ["to", "Added"]
113
77
  grouping[parts[0]][parts[1].toLowerCase()].push(event.data.contact);
114
-
115
78
  return {
116
79
  eventName: 'recipientsChanged',
117
- data: grouping,
80
+ data: grouping
118
81
  };
119
82
  }
120
-
121
83
  function getFromAddressChangeStream(gmailComposeView) {
122
- return Kefir.later(0, null).flatMap(() => {
123
- const fromInput = gmailComposeView
124
- .getElement()
125
- .querySelector('input[name="from"]');
126
- return Kefir.constant(
127
- _convertToEvent('fromContactChanged', gmailComposeView.getFromContact())
128
- ).merge(
129
- !fromInput
130
- ? Kefir.never()
131
- : makeMutationObserverStream(fromInput, {
132
- attributes: true,
133
- attributeFilter: ['value'],
134
- }).map(() =>
135
- _convertToEvent(
136
- 'fromContactChanged',
137
- gmailComposeView.getFromContact()
138
- )
139
- )
140
- );
84
+ return _kefir.default.later(0, null).flatMap(() => {
85
+ const fromInput = gmailComposeView.getElement().querySelector('input[name="from"]');
86
+ return _kefir.default.constant(_convertToEvent('fromContactChanged', gmailComposeView.getFromContact())).merge(!fromInput ? _kefir.default.never() : (0, _makeMutationObserverStream.default)(fromInput, {
87
+ attributes: true,
88
+ attributeFilter: ['value']
89
+ }).map(() => _convertToEvent('fromContactChanged', gmailComposeView.getFromContact())));
141
90
  });
142
91
  }
143
-
144
92
  function _convertToEvent(eventName, addressInfo) {
145
93
  return {
146
94
  eventName,
147
95
  data: {
148
- contact: addressInfo,
149
- },
96
+ contact: addressInfo
97
+ }
150
98
  };
151
- }
99
+ }