@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
@@ -0,0 +1,19 @@
1
+ /**
2
+ * The different nav item types that exist
3
+ */
4
+ const navItemTypes = Object.freeze({
5
+ /**
6
+ * standard nav item for navigating
7
+ */
8
+ NAVIGATION: 'NAVIGATION',
9
+ /**
10
+ * nav item that looks like a link
11
+ */
12
+ LINK: 'LINK',
13
+ // nav item for logical grouping. In Gmailv2, the entire nav item can be clicked to expand/collapse its children and it ignores all NavItemDescriptor options other than `name` and `subtitle`.
14
+ // Behaves identically to NAVIGATION when in Gmailv1.
15
+ GROUPER: 'GROUPER',
16
+ // Old alias for LINK
17
+ MANAGE: 'MANAGE',
18
+ });
19
+ export default navItemTypes;
@@ -1,6 +1,10 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- export const NATIVE_ROUTE_IDS: { [k: string]: string } = Object.freeze({
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ROUTE_TYPES = exports.NATIVE_ROUTE_IDS = exports.NATIVE_LIST_ROUTE_IDS = void 0;
7
+ const NATIVE_ROUTE_IDS = Object.freeze({
4
8
  INBOX: 'inbox/:page',
5
9
  ALL_MAIL: 'all/:page',
6
10
  SENT: 'sent/:page',
@@ -23,10 +27,10 @@ export const NATIVE_ROUTE_IDS: { [k: string]: string } = Object.freeze({
23
27
  CHAT_WELCOME: 'chat/welcome',
24
28
  SPACES: 'rooms/welcome',
25
29
  MEET: 'calls',
26
- ANY_LIST: '*',
30
+ ANY_LIST: '*'
27
31
  });
28
-
29
- export const NATIVE_LIST_ROUTE_IDS: { [k: string]: string } = Object.freeze({
32
+ exports.NATIVE_ROUTE_IDS = NATIVE_ROUTE_IDS;
33
+ const NATIVE_LIST_ROUTE_IDS = Object.freeze({
30
34
  INBOX: NATIVE_ROUTE_IDS.INBOX,
31
35
  ALL_MAIL: NATIVE_ROUTE_IDS.ALL_MAIL,
32
36
  SENT: NATIVE_ROUTE_IDS.SENT,
@@ -40,14 +44,15 @@ export const NATIVE_LIST_ROUTE_IDS: { [k: string]: string } = Object.freeze({
40
44
  SPAM: NATIVE_ROUTE_IDS.SPAM,
41
45
  IMPORTANT: NATIVE_ROUTE_IDS.IMPORTANT,
42
46
  SEARCH: NATIVE_ROUTE_IDS.SEARCH,
43
- ANY_LIST: NATIVE_ROUTE_IDS.ANY_LIST,
47
+ ANY_LIST: NATIVE_ROUTE_IDS.ANY_LIST
44
48
  });
45
-
46
- export const ROUTE_TYPES: { [k: string]: string } = Object.freeze({
49
+ exports.NATIVE_LIST_ROUTE_IDS = NATIVE_LIST_ROUTE_IDS;
50
+ const ROUTE_TYPES = Object.freeze({
47
51
  LIST: 'LIST',
48
52
  THREAD: 'THREAD',
49
53
  SETTINGS: 'SETTINGS',
50
54
  CHAT: 'CHAT',
51
55
  CUSTOM: 'CUSTOM',
52
- UNKNOWN: 'UNKNOWN',
56
+ UNKNOWN: 'UNKNOWN'
53
57
  });
58
+ exports.ROUTE_TYPES = ROUTE_TYPES;
@@ -1,7 +1,12 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- export const SECTION_NAMES: { [k: string]: string } = Object.freeze({
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SECTION_NAMES = void 0;
7
+ const SECTION_NAMES = Object.freeze({
4
8
  INBOX_STATE: 'INBOX_STATE',
5
9
  METADATA_STATE: 'METADATA_STATE',
6
- OTHER: 'OTHER',
10
+ OTHER: 'OTHER'
7
11
  });
12
+ exports.SECTION_NAMES = SECTION_NAMES;
@@ -1,22 +1,22 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import type Kefir from 'kefir';
4
- import udKefir from 'ud-kefir';
5
- import rewriteCssWithIdMap from '../../lib/rewriteCssWithIdMap';
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = customStyle;
8
+ var _udKefir = _interopRequireDefault(require("ud-kefir"));
9
+ var _rewriteCssWithIdMap = _interopRequireDefault(require("../../lib/rewriteCssWithIdMap"));
6
10
  var fs = require('fs');
7
- var cssContent: Kefir.Observable<string> = udKefir(
8
- module,
9
- fs.readFileSync(__dirname + '/../../style/gmail.css', 'utf8')
10
- );
11
-
12
- export default function customStyle() {
11
+ var cssContent = (0, _udKefir.default)(module, fs.readFileSync(__dirname + '/../../style/gmail.css', 'utf8'));
12
+ function customStyle() {
13
13
  if (!document.getElementById('inboxsdk__style')) {
14
14
  var style = document.createElement('style');
15
15
  style.id = 'inboxsdk__style';
16
- cssContent.onValue((css) => {
17
- style.textContent = rewriteCssWithIdMap(css);
16
+ cssContent.onValue(css => {
17
+ style.textContent = (0, _rewriteCssWithIdMap.default)(css);
18
18
  });
19
19
  if (!document.head) throw new Error('missing head');
20
20
  document.head.appendChild(style);
21
21
  }
22
- }
22
+ }
@@ -1,81 +1,69 @@
1
- /* @flow */
2
-
3
- import Kefir from 'kefir';
4
-
5
- import streamWaitFor from '../../lib/stream-wait-for';
6
- import querySelector from '../../lib/dom/querySelectorOrFail';
7
- import makeMutationObserverChunkedStream from '../../lib/dom/make-mutation-observer-chunked-stream';
8
-
9
- const elements = streamWaitFor(() =>
10
- ((document.body: any): HTMLElement).querySelector('div.b8[role="alert"]')
11
- )
12
- .map((noticeContainer: HTMLElement) => {
13
- const googleNotice = querySelector(
14
- noticeContainer,
15
- '.vh:not(.inboxsdk__butterbar)'
16
- );
17
- let sdkNotice = noticeContainer.querySelector('.vh.inboxsdk__butterbar');
18
- if (!sdkNotice) {
19
- sdkNotice = document.createElement('div');
20
- sdkNotice.classList.add('vh', 'inboxsdk__butterbar');
21
- sdkNotice.style.display = 'none';
22
-
23
- const textAndButtonsContainer = document.createElement('span');
24
- textAndButtonsContainer.classList.add('aT');
25
-
26
- const textContainer = document.createElement('span');
27
- textContainer.classList.add('inboxsdk__butterbar-text', 'bAq');
28
-
29
- const buttonsContainer = document.createElement('span');
30
- buttonsContainer.classList.add('inboxsdk__butterbar-buttons', 'bAo');
31
- buttonsContainer.innerHTML = '&nbsp;&nbsp;';
32
-
33
- const noticeCloseButton = document.createElement('div');
34
- noticeCloseButton.classList.add('inboxsdk__butterbar-close', 'bBe');
35
- noticeCloseButton.innerHTML = '<div class="bBf"></div>';
36
- noticeCloseButton.setAttribute('role', 'button');
37
- noticeCloseButton.tabIndex = 0;
38
-
39
- textAndButtonsContainer.appendChild(textContainer);
40
- textAndButtonsContainer.appendChild(buttonsContainer);
41
-
42
- sdkNotice.appendChild(textAndButtonsContainer);
43
- sdkNotice.appendChild(noticeCloseButton);
44
-
45
- const parentNode = googleNotice.parentNode;
46
- if (!parentNode) {
47
- throw new Error('parentNode not found');
48
- }
49
- parentNode.insertBefore(sdkNotice, googleNotice.nextSibling);
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 _kefir = _interopRequireDefault(require("kefir"));
9
+ var _streamWaitFor = _interopRequireDefault(require("../../lib/stream-wait-for"));
10
+ var _querySelectorOrFail = _interopRequireDefault(require("../../lib/dom/querySelectorOrFail"));
11
+ var _makeMutationObserverChunkedStream = _interopRequireDefault(require("../../lib/dom/make-mutation-observer-chunked-stream"));
12
+ const elements = (0, _streamWaitFor.default)(() => document.body.querySelector('div.b8[role="alert"]')).map(noticeContainer => {
13
+ const googleNotice = (0, _querySelectorOrFail.default)(noticeContainer, '.vh:not(.inboxsdk__butterbar)');
14
+ let sdkNotice = noticeContainer.querySelector('.vh.inboxsdk__butterbar');
15
+ if (!sdkNotice) {
16
+ sdkNotice = document.createElement('div');
17
+ sdkNotice.classList.add('vh', 'inboxsdk__butterbar');
18
+ sdkNotice.style.display = 'none';
19
+ const textAndButtonsContainer = document.createElement('span');
20
+ textAndButtonsContainer.classList.add('aT');
21
+ const textContainer = document.createElement('span');
22
+ textContainer.classList.add('inboxsdk__butterbar-text', 'bAq');
23
+ const buttonsContainer = document.createElement('span');
24
+ buttonsContainer.classList.add('inboxsdk__butterbar-buttons', 'bAo');
25
+ buttonsContainer.innerHTML = '&nbsp;&nbsp;';
26
+ const noticeCloseButton = document.createElement('div');
27
+ noticeCloseButton.classList.add('inboxsdk__butterbar-close', 'bBe');
28
+ noticeCloseButton.innerHTML = '<div class="bBf"></div>';
29
+ noticeCloseButton.setAttribute('role', 'button');
30
+ noticeCloseButton.tabIndex = 0;
31
+ textAndButtonsContainer.appendChild(textContainer);
32
+ textAndButtonsContainer.appendChild(buttonsContainer);
33
+ sdkNotice.appendChild(textAndButtonsContainer);
34
+ sdkNotice.appendChild(noticeCloseButton);
35
+ const parentNode = googleNotice.parentNode;
36
+ if (!parentNode) {
37
+ throw new Error('parentNode not found');
50
38
  }
51
- return { noticeContainer, googleNotice, sdkNotice };
52
- })
53
- .toProperty();
54
-
55
- const googleNoticeMutationChunks = elements.flatMapLatest(({ googleNotice }) =>
56
- makeMutationObserverChunkedStream(googleNotice, { childList: true })
57
- );
58
- const googleAddedNotice = googleNoticeMutationChunks.filter((mutations) =>
59
- mutations.some((m) => m.addedNodes.length > 0)
60
- );
61
- const googleRemovedNotice = googleNoticeMutationChunks.filter(
62
- (mutations) => !mutations.some((m) => m.addedNodes.length > 0)
63
- );
64
-
65
- const sdkRemovedNotice = elements
66
- .flatMapLatest(({ sdkNotice }) =>
67
- makeMutationObserverChunkedStream(sdkNotice, {
68
- attributes: true,
69
- attributeFilter: ['data-inboxsdk-id'],
70
- }).map(() => sdkNotice.getAttribute('data-inboxsdk-id'))
71
- )
72
- .filter((id) => id == null);
73
-
74
- const noticeAvailableStream = Kefir.merge([
75
- googleRemovedNotice,
76
- sdkRemovedNotice,
77
- ]);
78
-
39
+ parentNode.insertBefore(sdkNotice, googleNotice.nextSibling);
40
+ }
41
+ return {
42
+ noticeContainer,
43
+ googleNotice,
44
+ sdkNotice
45
+ };
46
+ }).toProperty();
47
+ const googleNoticeMutationChunks = elements.flatMapLatest(_ref => {
48
+ let {
49
+ googleNotice
50
+ } = _ref;
51
+ return (0, _makeMutationObserverChunkedStream.default)(googleNotice, {
52
+ childList: true
53
+ });
54
+ });
55
+ const googleAddedNotice = googleNoticeMutationChunks.filter(mutations => mutations.some(m => m.addedNodes.length > 0));
56
+ const googleRemovedNotice = googleNoticeMutationChunks.filter(mutations => !mutations.some(m => m.addedNodes.length > 0));
57
+ const sdkRemovedNotice = elements.flatMapLatest(_ref2 => {
58
+ let {
59
+ sdkNotice
60
+ } = _ref2;
61
+ return (0, _makeMutationObserverChunkedStream.default)(sdkNotice, {
62
+ attributes: true,
63
+ attributeFilter: ['data-inboxsdk-id']
64
+ }).map(() => sdkNotice.getAttribute('data-inboxsdk-id'));
65
+ }).filter(id => id == null);
66
+ const noticeAvailableStream = _kefir.default.merge([googleRemovedNotice, sdkRemovedNotice]);
79
67
  function hideMessage(noticeContainer, googleNotice, sdkNotice) {
80
68
  googleNotice.style.display = '';
81
69
  noticeContainer.style.top = '-10000px';
@@ -84,57 +72,59 @@ function hideMessage(noticeContainer, googleNotice, sdkNotice) {
84
72
  sdkNotice.style.display = 'none';
85
73
  sdkNotice.removeAttribute('data-inboxsdk-id');
86
74
  }
87
-
88
- export default class GmailButterBarDriver {
75
+ class GmailButterBarDriver {
89
76
  constructor() {
90
- Kefir.combine([elements, googleAddedNotice]).onValue(
91
- ([{ googleNotice, sdkNotice }]) => {
92
- googleNotice.style.display = '';
93
- sdkNotice.style.display = 'none';
94
- sdkNotice.setAttribute('data-inboxsdk-id', 'gmail');
95
- }
96
- );
77
+ _kefir.default.combine([elements, googleAddedNotice]).onValue(_ref3 => {
78
+ let [{
79
+ googleNotice,
80
+ sdkNotice
81
+ }] = _ref3;
82
+ googleNotice.style.display = '';
83
+ sdkNotice.style.display = 'none';
84
+ sdkNotice.setAttribute('data-inboxsdk-id', 'gmail');
85
+ });
97
86
 
98
87
  // Force stream to be in active state. sdkRemovedNotice is prone to missing
99
88
  // events if it only becomes active once a message has started.
100
89
  noticeAvailableStream.onValue(() => {});
101
90
  }
102
-
103
- getNoticeAvailableStream(): Kefir.Observable<any> {
91
+ getNoticeAvailableStream() {
104
92
  return noticeAvailableStream;
105
93
  }
106
-
107
- getSharedMessageQueue(): Array<Object> {
108
- const attr = (document.head: any).getAttribute(
109
- 'data-inboxsdk-butterbar-queue'
110
- );
94
+ getSharedMessageQueue() {
95
+ const attr = document.head.getAttribute('data-inboxsdk-butterbar-queue');
111
96
  return attr ? JSON.parse(attr) : [];
112
97
  }
113
-
114
- setSharedMessageQueue(queue: Object) {
98
+ setSharedMessageQueue(queue) {
115
99
  const attr = JSON.stringify(queue);
116
- (document.head: any).setAttribute('data-inboxsdk-butterbar-queue', attr);
100
+ document.head.setAttribute('data-inboxsdk-butterbar-queue', attr);
117
101
  }
118
102
 
119
103
  // Immediately displays the message, overriding anything else on the screen.
120
104
  // Priority and queuing logic is handled by butter-bar.js above this.
121
- showMessage(rawOptions: Object): { destroy(): void } {
105
+ showMessage(rawOptions) {
122
106
  const instanceId = Date.now() + '-' + Math.random();
123
-
124
107
  const destroy = () => {
125
- elements
126
- .take(1)
127
- .onValue(({ noticeContainer, googleNotice, sdkNotice }) => {
128
- if (sdkNotice.getAttribute('data-inboxsdk-id') === instanceId) {
129
- if (rawOptions.className) {
130
- sdkNotice.classList.remove(rawOptions.className);
131
- }
132
- hideMessage(noticeContainer, googleNotice, sdkNotice);
108
+ elements.take(1).onValue(_ref4 => {
109
+ let {
110
+ noticeContainer,
111
+ googleNotice,
112
+ sdkNotice
113
+ } = _ref4;
114
+ if (sdkNotice.getAttribute('data-inboxsdk-id') === instanceId) {
115
+ if (rawOptions.className) {
116
+ sdkNotice.classList.remove(rawOptions.className);
133
117
  }
134
- });
118
+ hideMessage(noticeContainer, googleNotice, sdkNotice);
119
+ }
120
+ });
135
121
  };
136
-
137
- elements.take(1).onValue(({ noticeContainer, googleNotice, sdkNotice }) => {
122
+ elements.take(1).onValue(_ref5 => {
123
+ let {
124
+ noticeContainer,
125
+ googleNotice,
126
+ sdkNotice
127
+ } = _ref5;
138
128
  noticeContainer.style.visibility = 'visible';
139
129
  noticeContainer.style.top = '';
140
130
  // The bAp css class is added to noticeContainer whenever a native butter is active in
@@ -144,27 +134,17 @@ export default class GmailButterBarDriver {
144
134
  // The bAp class also causes butters to be styled and positioned as Snack Bars instead
145
135
  // (as opposed to butters).
146
136
  noticeContainer.classList.add('bAp');
147
-
148
137
  googleNotice.style.display = 'none';
149
138
  sdkNotice.className = googleNotice.className;
150
139
  sdkNotice.classList.add('inboxsdk__butterbar');
151
-
152
- const textContainer = querySelector(
153
- sdkNotice,
154
- '.inboxsdk__butterbar-text'
155
- );
140
+ const textContainer = (0, _querySelectorOrFail.default)(sdkNotice, '.inboxsdk__butterbar-text');
156
141
  while (textContainer.firstChild) {
157
142
  textContainer.removeChild(textContainer.firstChild);
158
143
  }
159
-
160
- const buttonsContainer = querySelector(
161
- sdkNotice,
162
- '.inboxsdk__butterbar-buttons'
163
- );
144
+ const buttonsContainer = (0, _querySelectorOrFail.default)(sdkNotice, '.inboxsdk__butterbar-buttons');
164
145
  while (buttonsContainer.firstChild) {
165
146
  buttonsContainer.removeChild(buttonsContainer.firstChild);
166
147
  }
167
-
168
148
  if (rawOptions.html) {
169
149
  textContainer.innerHTML = rawOptions.html;
170
150
  } else if (rawOptions.el) {
@@ -172,43 +152,42 @@ export default class GmailButterBarDriver {
172
152
  } else {
173
153
  textContainer.textContent = rawOptions.text;
174
154
  }
175
-
176
155
  if (rawOptions.buttons) {
177
- rawOptions.buttons.forEach((buttonDescriptor) => {
156
+ rawOptions.buttons.forEach(buttonDescriptor => {
178
157
  const button = document.createElement('span');
179
158
  button.classList.add('ag', 'a8k');
180
- button.onclick = (e) => buttonDescriptor.onClick(e);
159
+ button.onclick = e => buttonDescriptor.onClick(e);
181
160
  button.setAttribute('role', 'button');
182
161
  button.tabIndex = 0;
183
162
  button.textContent = buttonDescriptor.title;
184
163
  buttonsContainer.appendChild(button);
185
164
  });
186
165
  }
187
-
188
- const closeButton = querySelector(
189
- sdkNotice,
190
- '.inboxsdk__butterbar-close'
191
- );
166
+ const closeButton = (0, _querySelectorOrFail.default)(sdkNotice, '.inboxsdk__butterbar-close');
192
167
  if (closeButton) {
193
- Kefir.fromEvents(closeButton, 'click').take(1).onValue(destroy);
168
+ _kefir.default.fromEvents(closeButton, 'click').take(1).onValue(destroy);
194
169
  }
195
-
196
170
  if (rawOptions.className) {
197
171
  sdkNotice.classList.add(rawOptions.className);
198
172
  }
199
-
200
173
  sdkNotice.style.display = '';
201
174
  sdkNotice.setAttribute('data-inboxsdk-id', instanceId);
202
175
  });
203
-
204
- return { destroy };
176
+ return {
177
+ destroy
178
+ };
205
179
  }
206
-
207
180
  hideGmailMessage() {
208
- elements.take(1).onValue(({ noticeContainer, googleNotice, sdkNotice }) => {
181
+ elements.take(1).onValue(_ref6 => {
182
+ let {
183
+ noticeContainer,
184
+ googleNotice,
185
+ sdkNotice
186
+ } = _ref6;
209
187
  if (sdkNotice.getAttribute('data-inboxsdk-id') === 'gmail') {
210
188
  hideMessage(noticeContainer, googleNotice, sdkNotice);
211
189
  }
212
190
  });
213
191
  }
214
192
  }
193
+ exports.default = GmailButterBarDriver;
@@ -0,0 +1,21 @@
1
+ import { GmailAppMenuItemView } from '../views/gmail-app-menu-item-view';
2
+ import GmailElementGetter from '../gmail-element-getter';
3
+ import Logger from '../../../lib/logger';
4
+ export async function addAppMenuItem(driver, menuItemDescriptor) {
5
+ const appMenuInjectionContainer = await GmailElementGetter.getAppMenuAsync();
6
+ const gmailAppMenuItemView = new GmailAppMenuItemView(driver);
7
+ gmailAppMenuItemView.setMenuItemDescriptor(menuItemDescriptor);
8
+ try {
9
+ if (!appMenuInjectionContainer || !gmailAppMenuItemView.element)
10
+ return;
11
+ const siblingElement = menuItemDescriptor.insertIndex
12
+ ? appMenuInjectionContainer.childNodes[menuItemDescriptor.insertIndex] ??
13
+ null
14
+ : null;
15
+ appMenuInjectionContainer.insertBefore(gmailAppMenuItemView.element, siblingElement);
16
+ }
17
+ catch (err) {
18
+ Logger.error(err);
19
+ }
20
+ return gmailAppMenuItemView;
21
+ }
@@ -0,0 +1,28 @@
1
+ import once from 'lodash/once';
2
+ import GmailElementGetter from '../gmail-element-getter';
3
+ import waitFor from '../../../lib/wait-for';
4
+ import Logger from '../../../lib/logger';
5
+ import { CollapsiblePanelView } from '../../../views/collapsible-panel-view';
6
+ export async function addCollapsiblePanel(driver, panelDescriptor) {
7
+ const injectionContainer = await waitForAppMenuParentReady();
8
+ const collapsiblePanelView = new CollapsiblePanelView(driver);
9
+ collapsiblePanelView.panelDescriptor = panelDescriptor;
10
+ if (!injectionContainer || !collapsiblePanelView.element)
11
+ return;
12
+ const appMenu = await GmailElementGetter.getAppMenuAsync();
13
+ if (!appMenu)
14
+ return;
15
+ appMenu.insertAdjacentElement('afterend', collapsiblePanelView.element);
16
+ return collapsiblePanelView;
17
+ }
18
+ const waitForAppMenuParentReady = once(async () => {
19
+ if (!GmailElementGetter.isStandalone()) {
20
+ try {
21
+ const menuParentElement = await waitFor(() => GmailElementGetter.getAppMenuContainer());
22
+ return menuParentElement;
23
+ }
24
+ catch (e) {
25
+ Logger.error(e);
26
+ }
27
+ }
28
+ });
@@ -0,0 +1,98 @@
1
+ import GmailElementGetter from '../gmail-element-getter';
2
+ import GmailNavItemView from '../views/gmail-nav-item-view';
3
+ import Logger from '../../../lib/logger';
4
+ import waitFor from '../../../lib/wait-for';
5
+ import insertElementInOrder from '../../../lib/dom/insert-element-in-order';
6
+ import makeMutationObserverStream from '../../../lib/dom/make-mutation-observer-stream';
7
+ import querySelector from '../../../lib/dom/querySelectorOrFail';
8
+ import once from 'lodash/once';
9
+ export default async function addNavItem(driver, orderGroup, navItemDescriptor, navMenuInjectionContainer) {
10
+ await waitForMenuReady();
11
+ const gmailNavItemView = new GmailNavItemView(driver, orderGroup, 1);
12
+ gmailNavItemView.setNavItemDescriptor(navItemDescriptor);
13
+ if (!GmailElementGetter.isStandalone()) {
14
+ try {
15
+ const attacher = _attachNavItemView(gmailNavItemView, navMenuInjectionContainer);
16
+ attacher();
17
+ gmailNavItemView
18
+ .getEventStream()
19
+ .filter((event) => event.eventName === 'orderChanged')
20
+ .onValue(attacher);
21
+ }
22
+ catch (err) {
23
+ Logger.error(err);
24
+ }
25
+ }
26
+ return gmailNavItemView;
27
+ }
28
+ export const waitForMenuReady = once(async () => {
29
+ const appMenu = await GmailElementGetter.getAppMenuAsync();
30
+ if (!appMenu) {
31
+ await waitForNavMenuReady();
32
+ }
33
+ });
34
+ const waitForNavMenuReady = once(async () => {
35
+ if (!GmailElementGetter.isStandalone()) {
36
+ await GmailElementGetter.waitForGmailModeToSettle();
37
+ await waitFor(() => document.querySelector('.aeN[role=navigation], .aeN [role=navigation]'));
38
+ // Wait for contents of navmenu to load (needed to figure out if it's integrated gmail mode)
39
+ await waitFor(() => document.querySelector('.Ls77Lb.aZ6 > .pp'));
40
+ }
41
+ });
42
+ function _attachNavItemView(gmailNavItemView, navMenuInjectionContainer) {
43
+ if (navMenuInjectionContainer) {
44
+ return () => {
45
+ insertElementInOrder(navMenuInjectionContainer, gmailNavItemView.getElement());
46
+ };
47
+ }
48
+ if (!GmailElementGetter.shouldAddNavItemsInline()) {
49
+ // If we're in the modern (non-classic-hangouts) leftnav, then put
50
+ // the added nav items in a floating section at the bottom separate
51
+ // from the Mail section.
52
+ return function () {
53
+ const navMenuInjectionContainer = GmailElementGetter.getSeparateSectionNavItemMenuInjectionContainer();
54
+ if (!navMenuInjectionContainer) {
55
+ throw new Error('should not happen');
56
+ }
57
+ const nonMailLeftNavSections = Array.from(document.querySelectorAll('.Xa.wT:not([data-group-order-hint])')).slice(1);
58
+ nonMailLeftNavSections.forEach((div) => {
59
+ div.dataset.groupOrderHint = 'zz_gmail';
60
+ });
61
+ insertElementInOrder(navMenuInjectionContainer, gmailNavItemView.getElement());
62
+ };
63
+ }
64
+ else {
65
+ // If we're in the old classic-hangouts-compatible leftnav, then
66
+ // inject our added nav items among Gmail's own nav items.
67
+ return function () {
68
+ insertElementInOrder(_getNavItemsHolder(), gmailNavItemView.getElement());
69
+ };
70
+ }
71
+ }
72
+ function _getNavItemsHolder() {
73
+ const holder = document.querySelector('.inboxsdk__navMenu');
74
+ if (!holder) {
75
+ return _createNavItemsHolder();
76
+ }
77
+ else {
78
+ return querySelector(holder, '.TK');
79
+ }
80
+ }
81
+ function _createNavItemsHolder() {
82
+ const holder = document.createElement('div');
83
+ holder.setAttribute('class', 'LrBjie inboxsdk__navMenu');
84
+ holder.innerHTML = '<div class="TK"></div>';
85
+ const navMenuInjectionContainer = GmailElementGetter.getSameSectionNavItemMenuInjectionContainer();
86
+ if (!navMenuInjectionContainer)
87
+ throw new Error('should not happen');
88
+ navMenuInjectionContainer.insertBefore(holder, navMenuInjectionContainer.children[2]);
89
+ makeMutationObserverStream(holder, {
90
+ attributes: true,
91
+ attributeFilter: ['class'],
92
+ }).onValue(function () {
93
+ if (holder.classList.contains('TA')) {
94
+ holder.classList.remove('TA');
95
+ }
96
+ });
97
+ return querySelector(holder, '.TK');
98
+ }
@@ -0,0 +1,4 @@
1
+ import GmailSupportItemView from '../views/gmail-support-item-view';
2
+ export default function addSupportItem(driver, supportItemDescriptor) {
3
+ return new GmailSupportItemView(driver, supportItemDescriptor);
4
+ }
@@ -1,21 +1,20 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import type Kefir from 'kefir';
4
- import GmailElementGetter from '../gmail-element-getter';
5
- import GmailAppToolbarButtonView from '../views/gmail-app-toolbar-button-view';
6
- import type GmailDriver from '../gmail-driver';
7
-
8
- export default function addToolbarButtonForApp(
9
- gmailDriver: GmailDriver,
10
- buttonDescriptor: Kefir.Observable<Object>
11
- ): Promise<GmailAppToolbarButtonView> {
12
- return GmailElementGetter.waitForGmailModeToSettle().then(() => {
13
- if (GmailElementGetter.isStandalone()) {
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = addToolbarButtonForApp;
8
+ var _gmailElementGetter = _interopRequireDefault(require("../gmail-element-getter"));
9
+ var _gmailAppToolbarButtonView = _interopRequireDefault(require("../views/gmail-app-toolbar-button-view"));
10
+ function addToolbarButtonForApp(gmailDriver, buttonDescriptor) {
11
+ return _gmailElementGetter.default.waitForGmailModeToSettle().then(() => {
12
+ if (_gmailElementGetter.default.isStandalone()) {
14
13
  return new Promise((resolve, reject) => {
15
14
  //never complete
16
15
  });
17
16
  } else {
18
- return new GmailAppToolbarButtonView(gmailDriver, buttonDescriptor);
17
+ return new _gmailAppToolbarButtonView.default(gmailDriver, buttonDescriptor);
19
18
  }
20
19
  });
21
- }
20
+ }