@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,72 +1,65 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import includes from 'lodash/includes';
4
- import * as ud from 'ud';
5
- import { NATIVE_ROUTE_IDS } from '../../../constants/router';
6
- import { simulateClick } from '../../../lib/dom/simulate-mouse-event';
7
- import getURLObject from './get-url-object';
8
-
9
- import type GmailDriver from '../gmail-driver';
10
- import type { RouteParams } from '../../../namespaces/router';
11
-
12
- const gotoView = ud.defn(
13
- module,
14
- async function gotoView(
15
- gmailDriver: GmailDriver,
16
- viewName: string,
17
- params: ?RouteParams | string
18
- ): Promise<void> {
19
- if (viewName[0] === '#') {
20
- if (params) {
21
- throw new Error("params parameter can't be passed with resolved URL");
22
- }
23
- viewName = viewName.slice(1);
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _includes = _interopRequireDefault(require("lodash/includes"));
9
+ var ud = _interopRequireWildcard(require("ud"));
10
+ var _router = require("../../../constants/router");
11
+ var _simulateMouseEvent = require("../../../lib/dom/simulate-mouse-event");
12
+ var _getUrlObject = _interopRequireDefault(require("./get-url-object"));
13
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
+ const gotoView = ud.defn(module, async function gotoView(gmailDriver, viewName, params) {
16
+ if (viewName[0] === '#') {
17
+ if (params) {
18
+ throw new Error("params parameter can't be passed with resolved URL");
24
19
  }
25
-
26
- if (includes(NATIVE_ROUTE_IDS, viewName)) {
27
- if (gmailDriver.isUsingSyncAPI()) {
28
- // need to go to the new url
29
- if (params && typeof params !== 'string') {
30
- const threadID = params.threadID;
31
- if (threadID && typeof threadID === 'string') {
32
- const int = parseInt(threadID, 16);
33
- if (!isNaN(int)) {
34
- //we got an old id
35
- const syncThreadId =
36
- await gmailDriver.getSyncThreadIdForOldGmailThreadId(threadID);
37
- params = {
38
- ...params,
39
- threadID: '#' + syncThreadId,
40
- };
41
- }
20
+ viewName = viewName.slice(1);
21
+ }
22
+ if ((0, _includes.default)(_router.NATIVE_ROUTE_IDS, viewName)) {
23
+ if (gmailDriver.isUsingSyncAPI()) {
24
+ // need to go to the new url
25
+ if (params && typeof params !== 'string') {
26
+ const threadID = params.threadID;
27
+ if (threadID && typeof threadID === 'string') {
28
+ const int = parseInt(threadID, 16);
29
+ if (!isNaN(int)) {
30
+ //we got an old id
31
+ const syncThreadId = await gmailDriver.getSyncThreadIdForOldGmailThreadId(threadID);
32
+ params = {
33
+ ...params,
34
+ threadID: '#' + syncThreadId
35
+ };
42
36
  }
43
37
  }
44
38
  }
45
-
46
- const newHash = gmailDriver.createLink(viewName, params);
47
- // Create a fake link and simulate a click event on it to let Gmail handle
48
- // the view change. If we just set window.location.hash ourselves to the
49
- // newHash, it's a Gmail hash, and any composes are open, then Gmail will
50
- // redirect the user to the hash with ?compose=... appended to the end and
51
- // break the back button. If we try to pre-empt Gmail and add the
52
- // ?compose=... part ourselves, then sometimes Gmail thinks it's new and
53
- // actually triggers now composes to open. This fake link method avoids the
54
- // issue.
55
- const link = document.createElement('a');
56
- link.style.display = 'none';
57
- link.href = newHash;
58
- ((document.body: any): HTMLElement).appendChild(link);
59
- simulateClick(link);
60
- link.remove();
61
- } else {
62
- const newHash = gmailDriver.createLink(viewName, params);
63
- // If it's not a gmail view name, then it's probably a hash for a custom
64
- // view. We need to set the hash ourselves. Gmail won't react at all to a
65
- // hashchange event for a hash it doesn't recognize, so we don't have to
66
- // worry about the above issue.
67
- window.location.hash = newHash;
68
39
  }
40
+ const newHash = gmailDriver.createLink(viewName, params);
41
+ // Create a fake link and simulate a click event on it to let Gmail handle
42
+ // the view change. If we just set window.location.hash ourselves to the
43
+ // newHash, it's a Gmail hash, and any composes are open, then Gmail will
44
+ // redirect the user to the hash with ?compose=... appended to the end and
45
+ // break the back button. If we try to pre-empt Gmail and add the
46
+ // ?compose=... part ourselves, then sometimes Gmail thinks it's new and
47
+ // actually triggers now composes to open. This fake link method avoids the
48
+ // issue.
49
+ const link = document.createElement('a');
50
+ link.style.display = 'none';
51
+ link.href = newHash;
52
+ document.body.appendChild(link);
53
+ (0, _simulateMouseEvent.simulateClick)(link);
54
+ link.remove();
55
+ } else {
56
+ const newHash = gmailDriver.createLink(viewName, params);
57
+ // If it's not a gmail view name, then it's probably a hash for a custom
58
+ // view. We need to set the hash ourselves. Gmail won't react at all to a
59
+ // hashchange event for a hash it doesn't recognize, so we don't have to
60
+ // worry about the above issue.
61
+ window.location.hash = newHash;
69
62
  }
70
- );
71
-
72
- export default gotoView;
63
+ });
64
+ var _default = gotoView;
65
+ exports.default = _default;
@@ -0,0 +1,4 @@
1
+ export default function isIntegratedViewGmail() {
2
+ const nav = document.querySelector('div[role=navigation]');
3
+ return Boolean(nav?.firstElementChild?.classList.contains('Xa'));
4
+ }
@@ -1,200 +1,117 @@
1
- /* @flow */
2
-
3
- import escape from 'lodash/escape';
4
- import * as Kefir from 'kefir';
5
- import kefirStopper from 'kefir-stopper';
6
- import type { Stopper } from 'kefir-stopper';
7
- import makeElementChildStream from '../../../lib/dom/make-element-child-stream';
8
- import querySelector from '../../../lib/dom/querySelectorOrFail';
9
- import makeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
10
- import type KeyboardShortcutHandle from '../../../views/keyboard-shortcut-handle';
11
-
12
- export default class KeyboardShortcutHelpModifier {
13
- _appId: ?string;
14
- _appName: ?string;
15
- _appIconUrl: ?string;
16
- _stopper: Stopper;
17
- _shortcuts: Set<KeyboardShortcutHandle>;
18
-
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _escape = _interopRequireDefault(require("lodash/escape"));
9
+ var Kefir = _interopRequireWildcard(require("kefir"));
10
+ var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
11
+ var _makeElementChildStream = _interopRequireDefault(require("../../../lib/dom/make-element-child-stream"));
12
+ var _querySelectorOrFail = _interopRequireDefault(require("../../../lib/dom/querySelectorOrFail"));
13
+ var _makeMutationObserverChunkedStream = _interopRequireDefault(require("../../../lib/dom/make-mutation-observer-chunked-stream"));
14
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
+ class KeyboardShortcutHelpModifier {
19
17
  constructor() {
20
18
  this._appId = null; // TODO have these passed to the constructor
21
19
  this._appName = null;
22
20
  this._appIconUrl = null;
23
-
24
- this._stopper = kefirStopper();
21
+ this._stopper = (0, _kefirStopper.default)();
25
22
  this._shortcuts = new Set();
26
23
  this._monitorKeyboardHelp();
27
24
  }
28
-
29
25
  destroy() {
30
26
  this._stopper.destroy();
31
27
  this._shortcuts.clear();
32
28
  }
33
-
34
- set(
35
- keyboardShortcutHandle: KeyboardShortcutHandle,
36
- appId: string,
37
- appName: ?string,
38
- appIconUrl: ?string
39
- ) {
29
+ set(keyboardShortcutHandle, appId, appName, appIconUrl) {
40
30
  this._initializeAppValues(appId, appName, appIconUrl);
41
-
42
31
  this._shortcuts.add(keyboardShortcutHandle);
43
32
  }
44
-
45
- delete(keyboardShortcutHandle: KeyboardShortcutHandle) {
33
+ delete(keyboardShortcutHandle) {
46
34
  this._shortcuts.delete(keyboardShortcutHandle);
47
35
  }
48
-
49
- _initializeAppValues(appId: string, appName: ?string, appIconUrl: ?string) {
36
+ _initializeAppValues(appId, appName, appIconUrl) {
50
37
  if (!this._appId) {
51
38
  this._appId = appId;
52
39
  }
53
-
54
40
  if (!this._appName) {
55
41
  this._appName = appName;
56
42
  }
57
-
58
43
  if (!this._appIconUrl) {
59
44
  this._appIconUrl = appIconUrl;
60
45
  }
61
46
  }
62
-
63
47
  _monitorKeyboardHelp() {
64
- makeElementChildStream(((document.body: any): HTMLElement))
65
- .map((event) => event.el)
66
- .filter((node) => node && node.classList && node.classList.contains('wa'))
67
- .flatMap((node) =>
68
- makeMutationObserverChunkedStream(node, {
69
- attributes: true,
70
- attributeFilter: ['class'],
71
- })
72
- .filter(() => !node.classList.contains('aou'))
73
- .toProperty(() => null)
74
- .map(() => node)
75
- )
76
- .takeUntilBy(this._stopper)
77
- .onValue((node) => this._renderHelp(node));
48
+ (0, _makeElementChildStream.default)(document.body).map(event => event.el).filter(node => node && node.classList && node.classList.contains('wa')).flatMap(node => (0, _makeMutationObserverChunkedStream.default)(node, {
49
+ attributes: true,
50
+ attributeFilter: ['class']
51
+ }).filter(() => !node.classList.contains('aou')).toProperty(() => null).map(() => node)).takeUntilBy(this._stopper).onValue(node => this._renderHelp(node));
78
52
  }
79
-
80
- _renderHelp(node: HTMLElement) {
53
+ _renderHelp(node) {
81
54
  if (this._shortcuts.size === 0) {
82
55
  return;
83
56
  }
84
-
85
57
  var keys = this._shortcuts.keys();
86
-
87
58
  var header = this._renderHeader();
88
59
  var table = this._renderTable();
89
-
90
60
  var bodies = table.querySelectorAll('tbody tbody');
91
-
92
61
  var index = 0;
93
- this._shortcuts.forEach((keyboardShortcutHandle) => {
62
+ this._shortcuts.forEach(keyboardShortcutHandle => {
94
63
  this._renderShortcut(bodies[index % 2], keyboardShortcutHandle);
95
64
  index++;
96
65
  });
97
-
98
- const firstHeader = querySelector(node, '.aov');
66
+ const firstHeader = (0, _querySelectorOrFail.default)(node, '.aov');
99
67
  const parent = firstHeader.parentElement;
100
68
  if (!parent) throw new Error('Could not find parent');
101
69
  parent.insertBefore(header, firstHeader);
102
70
  parent.insertBefore(table, firstHeader);
103
71
  }
104
-
105
- _renderHeader(): HTMLElement {
72
+ _renderHeader() {
106
73
  const header = document.createElement('div');
107
74
  header.setAttribute('class', 'aov aox');
108
- header.innerHTML = [
109
- '<div class="aow">',
110
- '<span class="inboxsdk__shortcutHelp_title">',
111
- escape(this._appName || this._appId) + ' keyboard shortcuts',
112
- '</span>',
113
- '</div>',
114
- ].join('');
115
-
75
+ header.innerHTML = ['<div class="aow">', '<span class="inboxsdk__shortcutHelp_title">', (0, _escape.default)(this._appName || this._appId) + ' keyboard shortcuts', '</span>', '</div>'].join('');
116
76
  if (this._appIconUrl) {
117
77
  const img = document.createElement('img');
118
78
  if (this._appIconUrl) {
119
79
  img.src = this._appIconUrl;
120
80
  }
121
81
  img.setAttribute('class', 'inboxsdk__icon');
122
-
123
- const title = querySelector(header, '.inboxsdk__shortcutHelp_title');
82
+ const title = (0, _querySelectorOrFail.default)(header, '.inboxsdk__shortcutHelp_title');
124
83
  title.insertBefore(img, title.firstChild);
125
84
  }
126
-
127
85
  return header;
128
86
  }
129
-
130
- _renderTable(): HTMLElement {
87
+ _renderTable() {
131
88
  var table = document.createElement('table');
132
89
  table.setAttribute('cellpadding', '0');
133
90
  table.setAttribute('class', 'cf wd inboxsdk__shortcutHelp_table');
134
-
135
- table.innerHTML = [
136
- '<tbody>',
137
- '<tr>',
138
- '<td class="Dn">',
139
- '<table cellpadding="0" class="cf">',
140
- '<tbody>',
141
- '<tr><th>&nbsp;</th><th>&nbsp;</th></tr>',
142
- '</tbody>',
143
- '</table>',
144
- '</td>',
145
- '<td class="Dn">',
146
- '<table cellpadding="0" class="cf">',
147
- '<tbody>',
148
- '<tr><th>&nbsp;</th><th>&nbsp;</th></tr>',
149
- '</tbody>',
150
- '</table>',
151
- '</td>',
152
- '</tr',
153
- '</tbody>',
154
- ].join('');
155
-
91
+ table.innerHTML = ['<tbody>', '<tr>', '<td class="Dn">', '<table cellpadding="0" class="cf">', '<tbody>', '<tr><th>&nbsp;</th><th>&nbsp;</th></tr>', '</tbody>', '</table>', '</td>', '<td class="Dn">', '<table cellpadding="0" class="cf">', '<tbody>', '<tr><th>&nbsp;</th><th>&nbsp;</th></tr>', '</tbody>', '</table>', '</td>', '</tr', '</tbody>'].join('');
156
92
  return table;
157
93
  }
158
-
159
- _renderShortcut(
160
- tableBody: HTMLElement,
161
- keyboardShortcutHandle: KeyboardShortcutHandle
162
- ) {
94
+ _renderShortcut(tableBody, keyboardShortcutHandle) {
163
95
  var shortcutRow = document.createElement('tr');
164
- shortcutRow.innerHTML = [
165
- '<td class="wg Dn"> ',
166
- _getShortcutHTML(keyboardShortcutHandle.chord),
167
- '</td>',
168
- '<td class="we Dn"> ',
169
- escape(keyboardShortcutHandle.description || ''),
170
- '</td>',
171
- ].join('');
172
-
96
+ shortcutRow.innerHTML = ['<td class="wg Dn"> ', _getShortcutHTML(keyboardShortcutHandle.chord), '</td>', '<td class="we Dn"> ', (0, _escape.default)(keyboardShortcutHandle.description || ''), '</td>'].join('');
173
97
  tableBody.appendChild(shortcutRow);
174
98
  }
175
99
  }
176
-
177
- function _getShortcutHTML(chord: string): string {
100
+ exports.default = KeyboardShortcutHelpModifier;
101
+ function _getShortcutHTML(chord) {
178
102
  const retArray = [];
179
-
180
103
  const parts = chord.split(/[\s+]/g);
181
104
  const separators = chord.match(/[\s+]/g);
182
-
183
105
  for (var ii = 0; ii < parts.length; ii++) {
184
- retArray.push(
185
- '<span class="wh">' + escape(_getAngledBracket(parts[ii])) + '</span>'
186
- );
106
+ retArray.push('<span class="wh">' + (0, _escape.default)(_getAngledBracket(parts[ii])) + '</span>');
187
107
  if (separators && separators[ii]) {
188
108
  retArray.push(_getSeparatorHTML(separators[ii]));
189
109
  }
190
110
  }
191
-
192
111
  retArray.push(' :');
193
-
194
112
  return retArray.join('');
195
113
  }
196
-
197
- function _getAngledBracket(chordChar: string): string {
114
+ function _getAngledBracket(chordChar) {
198
115
  switch (chordChar.toLowerCase()) {
199
116
  case 'shift':
200
117
  return '<Shift>';
@@ -213,8 +130,7 @@ function _getAngledBracket(chordChar: string): string {
213
130
  return chordChar;
214
131
  }
215
132
  }
216
-
217
- function _getSeparatorHTML(separator: string): string {
133
+ function _getSeparatorHTML(separator) {
218
134
  switch (separator) {
219
135
  case ' ':
220
136
  return '<span class="wb">then</span> ';
@@ -223,4 +139,4 @@ function _getSeparatorHTML(separator: string): string {
223
139
  default:
224
140
  return '';
225
141
  }
226
- }
142
+ }
@@ -1,27 +1,22 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import { simulateClick } from '../../../lib/dom/simulate-mouse-event';
4
- import GmailElementGetter from '../gmail-element-getter';
5
-
6
- import waitFor from '../../../lib/wait-for';
7
-
8
- import type GmailDriver from '../gmail-driver';
9
-
10
- export default async function openComposeWindow(gmailDriver: GmailDriver) {
11
- await GmailElementGetter.waitForGmailModeToSettle();
12
-
13
- if (
14
- GmailElementGetter.isStandaloneComposeWindow() ||
15
- GmailElementGetter.isStandaloneThreadWindow()
16
- ) {
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = openComposeWindow;
8
+ var _simulateMouseEvent = require("../../../lib/dom/simulate-mouse-event");
9
+ var _gmailElementGetter = _interopRequireDefault(require("../gmail-element-getter"));
10
+ var _waitFor = _interopRequireDefault(require("../../../lib/wait-for"));
11
+ async function openComposeWindow(gmailDriver) {
12
+ await _gmailElementGetter.default.waitForGmailModeToSettle();
13
+ if (_gmailElementGetter.default.isStandaloneComposeWindow() || _gmailElementGetter.default.isStandaloneThreadWindow()) {
17
14
  throw new Error('Can not open new compose while in standalone window');
18
15
  }
19
-
20
- if (!GmailElementGetter.getComposeButton()) {
21
- await waitFor(() => !!GmailElementGetter.getComposeButton());
16
+ if (!_gmailElementGetter.default.getComposeButton()) {
17
+ await (0, _waitFor.default)(() => !!_gmailElementGetter.default.getComposeButton());
22
18
  }
23
-
24
- const composeButton = GmailElementGetter.getComposeButton();
19
+ const composeButton = _gmailElementGetter.default.getComposeButton();
25
20
  if (!composeButton) throw new Error('Could not find compose button');
26
- simulateClick(composeButton);
27
- }
21
+ (0, _simulateMouseEvent.simulateClick)(composeButton);
22
+ }
@@ -0,0 +1,44 @@
1
+ import qs from 'querystring';
2
+ import getSyncThreadsForSearch from '../../../driver-common/getSyncThreadsForSearch';
3
+ import encodeDraftUrlId from './encodeDraftUrlId';
4
+ import getRfcMessageIdForGmailMessageId from './get-rfc-message-id-for-gmail-message-id';
5
+ export default async function openDraftByMessageID(driver, messageID) {
6
+ let newHash;
7
+ if (driver.isUsingSyncAPI()) {
8
+ const rfcMessageID = await getRfcMessageIdForGmailMessageId(driver, messageID);
9
+ const { threads } = await getSyncThreadsForSearch(driver, 'rfc822msgid:' + rfcMessageID);
10
+ if (threads.length === 0) {
11
+ throw new Error('Failed to get sync message id');
12
+ }
13
+ const thread = threads[0];
14
+ const syncMessageData = thread.extraMetaData.syncMessageData.find((m) => m.oldMessageID === messageID);
15
+ if (!syncMessageData) {
16
+ throw new Error('Failed to find syncMessageData');
17
+ }
18
+ const { syncMessageID } = syncMessageData;
19
+ newHash = makeNewSyncHash(window.location.hash, thread.syncThreadID, syncMessageID);
20
+ }
21
+ else {
22
+ newHash = makeNewHash(window.location.hash, messageID);
23
+ }
24
+ window.location.hash = newHash;
25
+ }
26
+ export function makeNewHash(oldHash, messageID) {
27
+ oldHash = '#' + oldHash.replace(/^#/, '');
28
+ const [pre, query] = oldHash.split('?');
29
+ const params = qs.parse(query);
30
+ if (params.compose) {
31
+ params.compose += ',' + messageID;
32
+ }
33
+ else {
34
+ params.compose = messageID;
35
+ }
36
+ return pre + '?' + qs.stringify(params);
37
+ }
38
+ export function makeNewSyncHash(oldHash, syncThreadID, syncMessageID) {
39
+ oldHash = '#' + oldHash.replace(/^#/, '');
40
+ const [pre, query] = oldHash.split('?');
41
+ const params = qs.parse(query);
42
+ params.compose = encodeDraftUrlId(syncThreadID, syncMessageID);
43
+ return pre + '?' + qs.stringify(params);
44
+ }
@@ -1,23 +1,22 @@
1
- /* @flow */
2
-
3
- import openDraftByMessageID, { makeNewHash } from './open-draft-by-message-id';
1
+ "use strict";
4
2
 
3
+ var _openDraftByMessageId = _interopRequireWildcard(require("./open-draft-by-message-id"));
4
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
5
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
5
6
  describe('makeNewHash', () => {
6
7
  it('1', () => {
7
- expect(makeNewHash('', '123')).toBe('#?compose=123');
8
+ expect((0, _openDraftByMessageId.makeNewHash)('', '123')).toBe('#?compose=123');
8
9
  });
9
10
  it('2', () => {
10
- expect(makeNewHash('#', '123')).toBe('#?compose=123');
11
+ expect((0, _openDraftByMessageId.makeNewHash)('#', '123')).toBe('#?compose=123');
11
12
  });
12
13
  it('3', () => {
13
- expect(makeNewHash('#inbox', '123')).toBe('#inbox?compose=123');
14
+ expect((0, _openDraftByMessageId.makeNewHash)('#inbox', '123')).toBe('#inbox?compose=123');
14
15
  });
15
16
  it('4', () => {
16
- expect(makeNewHash('#inbox?compose=123', '456')).toBe(
17
- '#inbox?compose=123%2C456'
18
- );
17
+ expect((0, _openDraftByMessageId.makeNewHash)('#inbox?compose=123', '456')).toBe('#inbox?compose=123%2C456');
19
18
  });
20
19
  it('5', () => {
21
- expect(makeNewHash('#inbox?foo=5', '123')).toBe('#inbox?foo=5&compose=123');
20
+ expect((0, _openDraftByMessageId.makeNewHash)('#inbox?foo=5', '123')).toBe('#inbox?foo=5&compose=123');
22
21
  });
23
- });
22
+ });