@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,162 +1,105 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import Kefir from 'kefir';
4
- import udKefir from 'ud-kefir';
5
- import streamWaitFor from '../../../lib/stream-wait-for';
6
-
7
- import kefirMakeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
8
- import makeElementChildStream from '../../../lib/dom/make-element-child-stream';
9
- import elementViewMapper from '../../../lib/dom/element-view-mapper';
10
- import makeElementStreamMerger from '../../../lib/dom/make-element-stream-merger';
11
- import GmailElementGetter from '../gmail-element-getter';
12
-
13
- import GmailComposeView from '../views/gmail-compose-view';
14
- import type GmailMessageView from '../views/gmail-message-view';
15
-
16
- import Logger from '../../../lib/logger';
17
- import type GmailDriver from '../gmail-driver';
18
-
19
- var impStream = udKefir(module, imp);
20
-
21
- export default function setupComposeViewDriverStream(
22
- gmailDriver: GmailDriver,
23
- messageViewDriverStream: Kefir.Observable<GmailMessageView>,
24
- xhrInterceptorStream: Kefir.Observable<Object>
25
- ): Kefir.Observable<GmailComposeView> {
26
- return impStream.flatMapLatest((imp) =>
27
- imp(gmailDriver, messageViewDriverStream, xhrInterceptorStream)
28
- );
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = setupComposeViewDriverStream;
8
+ var _kefir = _interopRequireDefault(require("kefir"));
9
+ var _udKefir = _interopRequireDefault(require("ud-kefir"));
10
+ var _streamWaitFor = _interopRequireDefault(require("../../../lib/stream-wait-for"));
11
+ var _makeMutationObserverChunkedStream = _interopRequireDefault(require("../../../lib/dom/make-mutation-observer-chunked-stream"));
12
+ var _makeElementChildStream = _interopRequireDefault(require("../../../lib/dom/make-element-child-stream"));
13
+ var _elementViewMapper = _interopRequireDefault(require("../../../lib/dom/element-view-mapper"));
14
+ var _makeElementStreamMerger = _interopRequireDefault(require("../../../lib/dom/make-element-stream-merger"));
15
+ var _gmailElementGetter = _interopRequireDefault(require("../gmail-element-getter"));
16
+ var _gmailComposeView = _interopRequireDefault(require("../views/gmail-compose-view"));
17
+ var _logger = _interopRequireDefault(require("../../../lib/logger"));
18
+ var impStream = (0, _udKefir.default)(module, imp);
19
+ function setupComposeViewDriverStream(gmailDriver, messageViewDriverStream, xhrInterceptorStream) {
20
+ return impStream.flatMapLatest(imp => imp(gmailDriver, messageViewDriverStream, xhrInterceptorStream));
29
21
  }
30
-
31
- function imp(
32
- gmailDriver: GmailDriver,
33
- messageViewDriverStream: Kefir.Observable<GmailMessageView>,
34
- xhrInterceptorStream: Kefir.Observable<Object>
35
- ): Kefir.Observable<GmailComposeView> {
36
- return Kefir.fromPromise(GmailElementGetter.waitForGmailModeToSettle())
37
- .flatMap(() => {
38
- var elementStream;
39
- var isStandalone = false;
40
-
41
- if (GmailElementGetter.isStandaloneComposeWindow()) {
42
- elementStream = _setupStandaloneComposeElementStream();
43
- isStandalone = true;
44
- } else if (GmailElementGetter.isStandaloneThreadWindow()) {
45
- elementStream = Kefir.never();
46
- } else {
47
- elementStream = _setupStandardComposeElementStream();
48
- }
49
-
50
- return elementStream.map(
51
- elementViewMapper(
52
- (el) =>
53
- new GmailComposeView(el, xhrInterceptorStream, gmailDriver, {
54
- isStandalone,
55
- isInlineReplyForm: false,
56
- })
57
- )
58
- );
59
- })
60
- .merge(
61
- messageViewDriverStream.flatMap((gmailMessageView) =>
62
- gmailMessageView.getReplyElementStream().map(
63
- elementViewMapper(
64
- (el) =>
65
- new GmailComposeView(el, xhrInterceptorStream, gmailDriver, {
66
- isStandalone: false,
67
- isInlineReplyForm: true,
68
- })
69
- )
70
- )
71
- )
72
- )
73
- .flatMap((composeViewDriver: any) => composeViewDriver.ready());
22
+ function imp(gmailDriver, messageViewDriverStream, xhrInterceptorStream) {
23
+ return _kefir.default.fromPromise(_gmailElementGetter.default.waitForGmailModeToSettle()).flatMap(() => {
24
+ var elementStream;
25
+ var isStandalone = false;
26
+ if (_gmailElementGetter.default.isStandaloneComposeWindow()) {
27
+ elementStream = _setupStandaloneComposeElementStream();
28
+ isStandalone = true;
29
+ } else if (_gmailElementGetter.default.isStandaloneThreadWindow()) {
30
+ elementStream = _kefir.default.never();
31
+ } else {
32
+ elementStream = _setupStandardComposeElementStream();
33
+ }
34
+ return elementStream.map((0, _elementViewMapper.default)(el => new _gmailComposeView.default(el, xhrInterceptorStream, gmailDriver, {
35
+ isStandalone,
36
+ isInlineReplyForm: false
37
+ })));
38
+ }).merge(messageViewDriverStream.flatMap(gmailMessageView => gmailMessageView.getReplyElementStream().map((0, _elementViewMapper.default)(el => new _gmailComposeView.default(el, xhrInterceptorStream, gmailDriver, {
39
+ isStandalone: false,
40
+ isInlineReplyForm: true
41
+ }))))).flatMap(composeViewDriver => composeViewDriver.ready());
74
42
  }
75
-
76
43
  function _setupStandardComposeElementStream() {
77
- return _waitForContainerAndMonitorChildrenStream(() =>
78
- GmailElementGetter.getComposeWindowContainer()
79
- )
80
- .flatMap((composeGrandParent) => {
81
- var composeParentEl = composeGrandParent.el.querySelector('div.AD');
82
- if (composeParentEl) {
83
- return makeElementChildStream(composeParentEl)
84
- .takeUntilBy(composeGrandParent.removalStream)
85
- .map(_informElement('composeFullscreenStateChanged'));
86
- } else {
87
- return Kefir.never();
88
- }
89
- })
90
- .merge(
91
- GmailElementGetter.getFullscreenComposeWindowContainerStream()
92
- .flatMap(({ el, removalStream }) =>
93
- makeElementChildStream(el).takeUntilBy(removalStream)
94
- )
95
- .map(_informElement('composeFullscreenStateChanged'))
96
- .map(({ el, removalStream }) => {
97
- // If you close a fullscreen compose while it's still saving, Gmail never
98
- // removes it from the DOM, and instead only removes a specific child
99
- // element. Ugh. Watch for its removal too.
100
- const targetEl = el.querySelector('[role=dialog] div.aaZ');
101
- if (!targetEl) return null;
102
- var hiddenStream = kefirMakeMutationObserverChunkedStream(targetEl, {
103
- childList: true,
104
- })
105
- .filter(() => targetEl.childElementCount === 0)
106
- .map(() => null);
107
- return {
108
- el,
109
- removalStream: removalStream.merge(hiddenStream).take(1),
110
- };
111
- })
112
- .filter(Boolean)
113
- )
114
- .flatMap((event) => {
115
- if (!event) throw new Error('Should not happen');
116
- const el = event.el.querySelector('[role=dialog]');
117
- if (!el || !el.querySelector('form')) {
118
- return Kefir.never();
119
- }
120
- return Kefir.constant({
121
- el,
122
- removalStream: event.removalStream,
123
- });
124
- })
125
- .flatMap(makeElementStreamMerger());
44
+ return _waitForContainerAndMonitorChildrenStream(() => _gmailElementGetter.default.getComposeWindowContainer()).flatMap(composeGrandParent => {
45
+ var composeParentEl = composeGrandParent.el.querySelector('div.AD');
46
+ if (composeParentEl) {
47
+ return (0, _makeElementChildStream.default)(composeParentEl).takeUntilBy(composeGrandParent.removalStream).map(_informElement('composeFullscreenStateChanged'));
48
+ } else {
49
+ return _kefir.default.never();
50
+ }
51
+ }).merge(_gmailElementGetter.default.getFullscreenComposeWindowContainerStream().flatMap(_ref => {
52
+ let {
53
+ el,
54
+ removalStream
55
+ } = _ref;
56
+ return (0, _makeElementChildStream.default)(el).takeUntilBy(removalStream);
57
+ }).map(_informElement('composeFullscreenStateChanged')).map(_ref2 => {
58
+ let {
59
+ el,
60
+ removalStream
61
+ } = _ref2;
62
+ // If you close a fullscreen compose while it's still saving, Gmail never
63
+ // removes it from the DOM, and instead only removes a specific child
64
+ // element. Ugh. Watch for its removal too.
65
+ const targetEl = el.querySelector('[role=dialog] div.aaZ');
66
+ if (!targetEl) return null;
67
+ var hiddenStream = (0, _makeMutationObserverChunkedStream.default)(targetEl, {
68
+ childList: true
69
+ }).filter(() => targetEl.childElementCount === 0).map(() => null);
70
+ return {
71
+ el,
72
+ removalStream: removalStream.merge(hiddenStream).take(1)
73
+ };
74
+ }).filter(Boolean)).flatMap(event => {
75
+ if (!event) throw new Error('Should not happen');
76
+ const el = event.el.querySelector('[role=dialog]');
77
+ if (!el || !el.querySelector('form')) {
78
+ return _kefir.default.never();
79
+ }
80
+ return _kefir.default.constant({
81
+ el,
82
+ removalStream: event.removalStream
83
+ });
84
+ }).flatMap((0, _makeElementStreamMerger.default)());
126
85
  }
127
-
128
86
  function _setupStandaloneComposeElementStream() {
129
- return _waitForContainerAndMonitorChildrenStream(() =>
130
- GmailElementGetter.StandaloneCompose.getComposeWindowContainer()
131
- );
87
+ return _waitForContainerAndMonitorChildrenStream(() => _gmailElementGetter.default.StandaloneCompose.getComposeWindowContainer());
132
88
  }
133
-
134
- function _waitForContainerAndMonitorChildrenStream(
135
- containerFn: () => ?HTMLElement
136
- ) {
137
- return Kefir.interval(2000) // TODO replace this with page-parser-tree
138
- .map(containerFn)
139
- .filter()
140
- .take(1)
141
- .flatMap((containerEl) => makeElementChildStream(containerEl));
89
+ function _waitForContainerAndMonitorChildrenStream(containerFn) {
90
+ return _kefir.default.interval(2000) // TODO replace this with page-parser-tree
91
+ .map(containerFn).filter().take(1).flatMap(containerEl => (0, _makeElementChildStream.default)(containerEl));
142
92
  }
143
-
144
93
  function _informElement(eventName) {
145
94
  return function (event) {
146
- const composeEl =
147
- event &&
148
- event.el &&
149
- event.el.querySelector &&
150
- event.el.querySelector('[role=dialog]');
95
+ const composeEl = event && event.el && event.el.querySelector && event.el.querySelector('[role=dialog]');
151
96
  if (composeEl) {
152
- composeEl.dispatchEvent(
153
- new CustomEvent(eventName, {
154
- bubbles: false,
155
- cancelable: false,
156
- detail: null,
157
- })
158
- );
97
+ composeEl.dispatchEvent(new CustomEvent(eventName, {
98
+ bubbles: false,
99
+ cancelable: false,
100
+ detail: null
101
+ }));
159
102
  }
160
103
  return event;
161
104
  };
162
- }
105
+ }
@@ -1,189 +1,173 @@
1
- /* @flow */
2
-
3
- import Kefir from 'kefir';
4
- import get from '../../../../common/get-or-fail';
5
-
6
- import type GmailDriver from '../gmail-driver';
7
- import type GmailRouteProcessor from '../views/gmail-route-view/gmail-route-processor';
8
- import GmailElementGetter from '../gmail-element-getter';
9
- import GmailRouteView from '../views/gmail-route-view/gmail-route-view';
10
- import getURLObject from './get-url-object';
11
-
12
- import routeIDmatchesHash from '../../../lib/routeIDmatchesHash';
13
-
14
- export default function setupRouteViewDriverStream(
15
- gmailRouteProcessor: GmailRouteProcessor,
16
- driver: GmailDriver
17
- ): Kefir.Observable<GmailRouteView> {
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = setupRouteViewDriverStream;
8
+ var _kefir = _interopRequireDefault(require("kefir"));
9
+ var _getOrFail = _interopRequireDefault(require("../../../../common/get-or-fail"));
10
+ var _gmailElementGetter = _interopRequireDefault(require("../gmail-element-getter"));
11
+ var _gmailRouteView = _interopRequireDefault(require("../views/gmail-route-view/gmail-route-view"));
12
+ var _getUrlObject = _interopRequireDefault(require("./get-url-object"));
13
+ var _routeIDmatchesHash = _interopRequireDefault(require("../../../lib/routeIDmatchesHash"));
14
+ function setupRouteViewDriverStream(gmailRouteProcessor, driver) {
18
15
  const customRouteIDs = driver.getCustomRouteIDs();
19
16
  const customListRouteIDs = driver.getCustomListRouteIDs();
20
- const customListSearchStringsToRouteIds =
21
- driver.getCustomListSearchStringsToRouteIds();
22
-
23
- let lastNativeHash = getURLObject(document.location.href).hash;
17
+ const customListSearchStringsToRouteIds = driver.getCustomListSearchStringsToRouteIds();
18
+ let lastNativeHash = (0, _getUrlObject.default)(document.location.href).hash;
24
19
  let latestGmailRouteView = null;
25
-
26
20
  driver.getStopper().onValue(() => {
27
21
  if (latestGmailRouteView) {
28
22
  latestGmailRouteView.destroy();
29
23
  }
30
24
  });
31
-
32
25
  let lastHash = lastNativeHash;
33
-
34
26
  let sameRouteData = {};
35
-
36
- const eligibleHashChanges = Kefir.fromEvents(window, 'hashchange')
37
- .filter((event) => !event.oldURL.match(/#inboxsdk-fake-no-vc$/))
38
- .map((event) => ({
39
- new: getURLObject(event.newURL),
40
- old: getURLObject(event.oldURL),
41
- }))
42
- .filter((event) => event.new.hash !== event.old.hash)
43
- .map((event) => event.new)
44
- .map((urlObject) => {
45
- const { hash, name } = urlObject;
46
- for (let routeIDs of customRouteIDs) {
47
- let routeID = routeIDmatchesHash(routeIDs, hash);
48
- if (routeID) {
49
- return { urlObject, type: 'CUSTOM', routeID };
50
- }
51
- }
52
- for (let [routeIDs] of customListRouteIDs) {
53
- let routeID = routeIDmatchesHash(routeIDs, name);
54
- if (routeID) {
55
- return { urlObject, type: 'CUSTOM_LIST_TRIGGER', routeID };
56
- }
27
+ const eligibleHashChanges = _kefir.default.fromEvents(window, 'hashchange').filter(event => !event.oldURL.match(/#inboxsdk-fake-no-vc$/)).map(event => ({
28
+ new: (0, _getUrlObject.default)(event.newURL),
29
+ old: (0, _getUrlObject.default)(event.oldURL)
30
+ })).filter(event => event.new.hash !== event.old.hash).map(event => event.new).map(urlObject => {
31
+ const {
32
+ hash,
33
+ name
34
+ } = urlObject;
35
+ for (let routeIDs of customRouteIDs) {
36
+ let routeID = (0, _routeIDmatchesHash.default)(routeIDs, hash);
37
+ if (routeID) {
38
+ return {
39
+ urlObject,
40
+ type: 'CUSTOM',
41
+ routeID
42
+ };
57
43
  }
58
- if (gmailRouteProcessor.isNativeRoute(urlObject.name)) {
59
- return { urlObject, type: 'NATIVE' };
44
+ }
45
+ for (let [routeIDs] of customListRouteIDs) {
46
+ let routeID = (0, _routeIDmatchesHash.default)(routeIDs, name);
47
+ if (routeID) {
48
+ return {
49
+ urlObject,
50
+ type: 'CUSTOM_LIST_TRIGGER',
51
+ routeID
52
+ };
60
53
  }
61
- return { urlObject, type: 'OTHER_APP_CUSTOM' };
62
- });
63
-
64
- const customAndCustomListRouteHashChanges = eligibleHashChanges.filter(
65
- ({ type }) => type !== 'NATIVE'
66
- );
54
+ }
55
+ if (gmailRouteProcessor.isNativeRoute(urlObject.name)) {
56
+ return {
57
+ urlObject,
58
+ type: 'NATIVE'
59
+ };
60
+ }
61
+ return {
62
+ urlObject,
63
+ type: 'OTHER_APP_CUSTOM'
64
+ };
65
+ });
66
+ const customAndCustomListRouteHashChanges = eligibleHashChanges.filter(_ref => {
67
+ let {
68
+ type
69
+ } = _ref;
70
+ return type !== 'NATIVE';
71
+ });
67
72
 
68
73
  // If a user goes from a native route to a custom route, and then back to the
69
74
  // same native route, we need to make a new GmailRouteView because
70
75
  // getMainContentElementChangedStream() won't be firing, except when going from thread->custom->thread
71
- const revertNativeHashChanges = eligibleHashChanges
72
- .filter(({ type }) => type === 'NATIVE')
73
- .filter(({ urlObject }) => {
74
- const tmp = lastNativeHash;
75
- lastNativeHash = urlObject.hash;
76
- return tmp === urlObject.hash;
77
- })
78
- .filter(({ urlObject }) => {
79
- return urlObject.hash !== lastHash;
80
- });
76
+ const revertNativeHashChanges = eligibleHashChanges.filter(_ref2 => {
77
+ let {
78
+ type
79
+ } = _ref2;
80
+ return type === 'NATIVE';
81
+ }).filter(_ref3 => {
82
+ let {
83
+ urlObject
84
+ } = _ref3;
85
+ const tmp = lastNativeHash;
86
+ lastNativeHash = urlObject.hash;
87
+ return tmp === urlObject.hash;
88
+ }).filter(_ref4 => {
89
+ let {
90
+ urlObject
91
+ } = _ref4;
92
+ return urlObject.hash !== lastHash;
93
+ });
81
94
 
82
95
  // Merge everything that can trigger a new RouteView
83
- return Kefir.merge([
84
- customAndCustomListRouteHashChanges,
85
- revertNativeHashChanges,
86
-
87
- // when native gmail changes main view there's a div that takes on role=main.
88
- // getMainContentElementChangedStream doesn't respect custom views so filter
89
- // out events from it. This filter is needed if the user is already at a custom
90
- // view of another InboxSDK instance while this starts up.
91
- GmailElementGetter.getMainContentElementChangedStream()
92
- .map((event) => ({
93
- urlObject: getURLObject(document.location.href),
94
- type: 'NATIVE',
95
- }))
96
- .filter((options) =>
97
- gmailRouteProcessor.isNativeRoute(options.urlObject.name)
98
- ),
99
- ])
100
- .map((options) => {
101
- const { type, urlObject } = options;
102
- if (type === 'NATIVE' && urlObject.name === 'search') {
103
- const customListRouteId = customListSearchStringsToRouteIds.get(
104
- urlObject.params[0]
105
- );
106
- if (customListRouteId) {
107
- const searchInput = GmailElementGetter.getSearchInput();
108
- if (!searchInput) throw new Error('Should not happen');
109
- searchInput.value = '';
110
-
111
- // Only rewrite the url if it's a search query with no further
112
- // parameters or it has a page parameter. Don't write URLs with thread
113
- // id parameters because currently other parts of the code depend on
114
- // being able to parse the URL as a normal thread URL.
115
-
116
- // Additionally, we don't want to treat threads as the CUSTOM_LIST type
117
- // since they're not lists.
118
- if (
119
- urlObject.params.length === 1 ||
120
- (urlObject.params.length === 2 && urlObject.params[1][0] === 'p')
121
- ) {
122
- driver.hashChangeNoViewChange(
123
- '#' +
124
- customListRouteId +
125
- (urlObject.params[1] ? '/' + urlObject.params[1] : '')
126
- );
127
- return {
128
- type: 'CUSTOM_LIST',
129
- urlObject,
130
- routeID: customListRouteId,
131
- };
132
- }
96
+ return _kefir.default.merge([customAndCustomListRouteHashChanges, revertNativeHashChanges,
97
+ // when native gmail changes main view there's a div that takes on role=main.
98
+ // getMainContentElementChangedStream doesn't respect custom views so filter
99
+ // out events from it. This filter is needed if the user is already at a custom
100
+ // view of another InboxSDK instance while this starts up.
101
+ _gmailElementGetter.default.getMainContentElementChangedStream().map(event => ({
102
+ urlObject: (0, _getUrlObject.default)(document.location.href),
103
+ type: 'NATIVE'
104
+ })).filter(options => gmailRouteProcessor.isNativeRoute(options.urlObject.name))]).map(options => {
105
+ const {
106
+ type,
107
+ urlObject
108
+ } = options;
109
+ if (type === 'NATIVE' && urlObject.name === 'search') {
110
+ const customListRouteId = customListSearchStringsToRouteIds.get(urlObject.params[0]);
111
+ if (customListRouteId) {
112
+ const searchInput = _gmailElementGetter.default.getSearchInput();
113
+ if (!searchInput) throw new Error('Should not happen');
114
+ searchInput.value = '';
115
+
116
+ // Only rewrite the url if it's a search query with no further
117
+ // parameters or it has a page parameter. Don't write URLs with thread
118
+ // id parameters because currently other parts of the code depend on
119
+ // being able to parse the URL as a normal thread URL.
120
+
121
+ // Additionally, we don't want to treat threads as the CUSTOM_LIST type
122
+ // since they're not lists.
123
+ if (urlObject.params.length === 1 || urlObject.params.length === 2 && urlObject.params[1][0] === 'p') {
124
+ driver.hashChangeNoViewChange('#' + customListRouteId + (urlObject.params[1] ? '/' + urlObject.params[1] : ''));
125
+ return {
126
+ type: 'CUSTOM_LIST',
127
+ urlObject,
128
+ routeID: customListRouteId
129
+ };
133
130
  }
134
131
  }
135
- return options;
136
- })
137
- .map((options) => {
138
- const MAX_KEY_CACHE = 50;
139
- const { urlObject } = options;
140
-
141
- if (!sameRouteData[urlObject.hash]) {
142
- sameRouteData[urlObject.hash] = {
143
- data: {},
144
- };
145
- }
146
- sameRouteData[urlObject.hash].lastUsedTimestamp = Date.now();
147
-
148
- if (Object.keys(sameRouteData).length > MAX_KEY_CACHE) {
149
- sameRouteData = Object.keys(sameRouteData)
150
- .sort(
151
- (a, b) =>
152
- sameRouteData[b].lastUsedTimestamp -
153
- sameRouteData[a].lastUsedTimestamp
154
- )
155
- .slice(0, MAX_KEY_CACHE / 2)
156
- .reduce((acc, hash) => ({ ...acc, [hash]: sameRouteData[hash] }), {});
157
- }
158
-
159
- return {
160
- ...options,
161
- cachedRouteData: sameRouteData[urlObject.hash].data,
132
+ }
133
+ return options;
134
+ }).map(options => {
135
+ const MAX_KEY_CACHE = 50;
136
+ const {
137
+ urlObject
138
+ } = options;
139
+ if (!sameRouteData[urlObject.hash]) {
140
+ sameRouteData[urlObject.hash] = {
141
+ data: {}
162
142
  };
163
- })
164
- .map((options) => {
165
- if (options.type === 'NATIVE' || options.type === 'CUSTOM_LIST') {
166
- driver.showNativeRouteView();
167
- } else if (options.type === 'CUSTOM_LIST_TRIGGER') {
168
- driver.showCustomThreadList(
169
- options.routeID,
170
- get(customListRouteIDs, options.routeID),
171
- options.urlObject.params
172
- );
173
- return;
174
- }
175
- return new GmailRouteView(options, gmailRouteProcessor, driver);
176
- })
177
- .filter(Boolean)
178
- .map((gmailRouteView) => {
179
- if (latestGmailRouteView) {
180
- latestGmailRouteView.destroy();
181
- }
182
- latestGmailRouteView = gmailRouteView;
183
- lastHash = getURLObject(document.location.href).hash;
184
-
185
- return gmailRouteView;
186
- });
143
+ }
144
+ sameRouteData[urlObject.hash].lastUsedTimestamp = Date.now();
145
+ if (Object.keys(sameRouteData).length > MAX_KEY_CACHE) {
146
+ sameRouteData = Object.keys(sameRouteData).sort((a, b) => sameRouteData[b].lastUsedTimestamp - sameRouteData[a].lastUsedTimestamp).slice(0, MAX_KEY_CACHE / 2).reduce((acc, hash) => ({
147
+ ...acc,
148
+ [hash]: sameRouteData[hash]
149
+ }), {});
150
+ }
151
+ return {
152
+ ...options,
153
+ cachedRouteData: sameRouteData[urlObject.hash].data
154
+ };
155
+ }).map(options => {
156
+ if (options.type === 'NATIVE' || options.type === 'CUSTOM_LIST') {
157
+ driver.showNativeRouteView();
158
+ } else if (options.type === 'CUSTOM_LIST_TRIGGER') {
159
+ driver.showCustomThreadList(options.routeID, (0, _getOrFail.default)(customListRouteIDs, options.routeID), options.urlObject.params);
160
+ return;
161
+ }
162
+ return new _gmailRouteView.default(options, gmailRouteProcessor, driver);
163
+ }).filter(Boolean).map(gmailRouteView => {
164
+ if (latestGmailRouteView) {
165
+ latestGmailRouteView.destroy();
166
+ }
167
+ latestGmailRouteView = gmailRouteView;
168
+ lastHash = (0, _getUrlObject.default)(document.location.href).hash;
169
+ return gmailRouteView;
170
+ });
187
171
  }
188
172
 
189
173
  /*
@@ -191,4 +175,4 @@ export default function setupRouteViewDriverStream(
191
175
  *
192
176
  * SDK only cares about hash change when the hash goes to a route that the app registered as custom.
193
177
  * Otherwise it only responds to route changes when the role=main div changes.
194
- */
178
+ */