@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,56 +1,36 @@
1
- /* @flow */
2
-
3
- import uniq from 'lodash/uniq';
4
- import escape from 'lodash/escape';
5
- import asap from 'asap';
6
- import { defn } from 'ud';
7
- import Kefir from 'kefir';
8
- import kefirStopper from 'kefir-stopper';
9
- import type { Stopper } from 'kefir-stopper';
10
-
11
- import streamWaitFor from '../../../lib/stream-wait-for';
12
- import makeMutationObserverStream from '../../../lib/dom/make-mutation-observer-stream';
13
- import insertElementInOrder from '../../../lib/dom/insert-element-in-order';
14
- import isElementVisible from '../../../../common/isElementVisible';
15
-
16
- import GmailElementGetter from '../gmail-element-getter';
17
-
18
- import ButtonView from '../widgets/buttons/button-view';
19
- import GmailDropdownView from '../widgets/gmail-dropdown-view';
20
- import BasicButtonViewController from '../../../widgets/buttons/basic-button-view-controller';
21
- import DropdownButtonViewController from '../../../widgets/buttons/dropdown-button-view-controller';
22
- import GmailThreadView from './gmail-thread-view';
23
- import GmailRowListView from './gmail-row-list-view';
24
-
25
- import { SECTION_NAMES } from '../../../constants/toolbars';
26
-
27
- import type GmailDriver from '../gmail-driver';
28
- import type { RouteViewDriver } from '../../../driver-interfaces/route-view-driver';
29
-
30
- import Logger from '../../../lib/logger';
31
-
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _uniq = _interopRequireDefault(require("lodash/uniq"));
10
+ var _escape = _interopRequireDefault(require("lodash/escape"));
11
+ var _asap = _interopRequireDefault(require("asap"));
12
+ var _ud = require("ud");
13
+ var _kefir = _interopRequireDefault(require("kefir"));
14
+ var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
15
+ var _streamWaitFor = _interopRequireDefault(require("../../../lib/stream-wait-for"));
16
+ var _makeMutationObserverStream = _interopRequireDefault(require("../../../lib/dom/make-mutation-observer-stream"));
17
+ var _insertElementInOrder = _interopRequireDefault(require("../../../lib/dom/insert-element-in-order"));
18
+ var _isElementVisible = _interopRequireDefault(require("../../../../common/isElementVisible"));
19
+ var _gmailElementGetter = _interopRequireDefault(require("../gmail-element-getter"));
20
+ var _buttonView = _interopRequireDefault(require("../widgets/buttons/button-view"));
21
+ var _gmailDropdownView = _interopRequireDefault(require("../widgets/gmail-dropdown-view"));
22
+ var _basicButtonViewController = _interopRequireDefault(require("../../../widgets/buttons/basic-button-view-controller"));
23
+ var _dropdownButtonViewController = _interopRequireDefault(require("../../../widgets/buttons/dropdown-button-view-controller"));
24
+ var _gmailThreadView = _interopRequireDefault(require("./gmail-thread-view"));
25
+ var _gmailRowListView = _interopRequireDefault(require("./gmail-row-list-view"));
26
+ var _toolbars = require("../../../constants/toolbars");
27
+ var _logger = _interopRequireDefault(require("../../../lib/logger"));
32
28
  class GmailToolbarView {
33
- _element: HTMLElement;
34
- _driver: GmailDriver;
35
- _ready: Kefir.Observable<GmailToolbarView>;
36
- _stopper: Stopper;
37
- _routeViewDriver: RouteViewDriver;
38
- _buttonViewControllers: Set<
39
- DropdownButtonViewController | BasicButtonViewController
40
- > = new Set();
41
- _moreMenuItems: Array<{ buttonDescriptor: Object }> = [];
42
- _toolbarState: ?string;
43
- _threadViewDriver: ?GmailThreadView;
44
- _rowListViewDriver: ?GmailRowListView;
45
- _isUpdateButtonClassesScheduled: boolean = false;
46
- _moreMenuItemsContainer: ?HTMLElement = null;
47
-
48
- constructor(
49
- element: HTMLElement,
50
- driver: GmailDriver,
51
- routeViewDriver: RouteViewDriver,
52
- parent: GmailThreadView | GmailRowListView
53
- ) {
29
+ constructor(element, driver, routeViewDriver, parent) {
30
+ (0, _defineProperty2.default)(this, "_buttonViewControllers", new Set());
31
+ (0, _defineProperty2.default)(this, "_moreMenuItems", []);
32
+ (0, _defineProperty2.default)(this, "_isUpdateButtonClassesScheduled", false);
33
+ (0, _defineProperty2.default)(this, "_moreMenuItemsContainer", null);
54
34
  // Important: Multiple GmailToolbarViews will be created for the same
55
35
  // toolbar element in preview pane mode! When a GmailToolbarView is
56
36
  // created, it adds some attributes to the element corresponding to the
@@ -60,31 +40,25 @@ class GmailToolbarView {
60
40
  // element.
61
41
  this._element = element;
62
42
  this._driver = driver;
63
- this._stopper = kefirStopper();
43
+ this._stopper = (0, _kefirStopper.default)();
64
44
  this._routeViewDriver = routeViewDriver;
65
-
66
45
  if (this._getMoveSectionElement()) {
67
- this._ready = Kefir.constant(this);
46
+ this._ready = _kefir.default.constant(this);
68
47
  } else {
69
- this._ready = streamWaitFor(() => !!this._getMoveSectionElement())
70
- .takeUntilBy(this._stopper)
71
- .map(() => this)
72
- .toProperty();
48
+ this._ready = (0, _streamWaitFor.default)(() => !!this._getMoveSectionElement()).takeUntilBy(this._stopper).map(() => this).toProperty();
73
49
  }
74
-
75
50
  this._ready.onValue(() => {
76
51
  this._startMonitoringMoreMenu();
77
52
  this._determineToolbarState();
78
53
  this._determineToolbarIconMode();
79
54
  this._setupToolbarStateMonitoring();
80
55
  });
81
-
82
- if (parent instanceof GmailThreadView) {
56
+ if (parent instanceof _gmailThreadView.default) {
83
57
  this._threadViewDriver = parent;
84
58
  this._ready.onValue(() => {
85
59
  this._element.setAttribute('data-thread-toolbar', 'true');
86
60
  });
87
- } else if (parent instanceof GmailRowListView) {
61
+ } else if (parent instanceof _gmailRowListView.default) {
88
62
  this._rowListViewDriver = parent;
89
63
  this._ready.onValue(() => {
90
64
  this._element.setAttribute('data-rowlist-toolbar', 'true');
@@ -93,29 +67,24 @@ class GmailToolbarView {
93
67
  throw new Error('Invalid parent');
94
68
  }
95
69
  }
96
-
97
- getStopper(): Kefir.Observable<null> {
70
+ getStopper() {
98
71
  return this._stopper;
99
72
  }
100
- getElement(): HTMLElement {
73
+ getElement() {
101
74
  return this._element;
102
75
  }
103
- getRouteViewDriver(): RouteViewDriver {
76
+ getRouteViewDriver() {
104
77
  return this._routeViewDriver;
105
78
  }
106
-
107
79
  getThreadViewDriver() {
108
80
  return this._threadViewDriver;
109
81
  }
110
-
111
- isForRowList(): boolean {
82
+ isForRowList() {
112
83
  return this._rowListViewDriver != null;
113
84
  }
114
-
115
- isForThread(): boolean {
85
+ isForThread() {
116
86
  return this._threadViewDriver != null;
117
87
  }
118
-
119
88
  getThreadRowViewDrivers() {
120
89
  if (!this._rowListViewDriver) {
121
90
  console.error('missing this._rowListViewDriver'); //eslint-disable-line no-console
@@ -123,38 +92,28 @@ class GmailToolbarView {
123
92
  }
124
93
  return this._rowListViewDriver.getThreadRowViewDrivers();
125
94
  }
126
-
127
- addButton(
128
- buttonDescriptor: Object,
129
- id?: string
130
- ): { getStopper(): Kefir.Observable<null>, destroy(): void } {
131
- const buttonStopper = kefirStopper();
132
-
95
+ addButton(buttonDescriptor, id) {
96
+ const buttonStopper = (0, _kefirStopper.default)();
133
97
  this._stopper.takeUntilBy(buttonStopper).onValue(() => {
134
98
  buttonStopper.destroy();
135
99
  });
136
-
137
100
  const appId = this._driver.getAppId();
138
- const toolbarSections = SECTION_NAMES;
101
+ const toolbarSections = _toolbars.SECTION_NAMES;
139
102
  this._ready.takeUntilBy(buttonStopper).onValue(() => {
140
103
  if (buttonDescriptor.section === toolbarSections.OTHER) {
141
- const entry = { buttonDescriptor };
104
+ const entry = {
105
+ buttonDescriptor
106
+ };
142
107
  this._moreMenuItems.push(entry);
143
108
  this._addToOpenMoreMenu(buttonDescriptor);
144
109
  buttonStopper.onValue(() => {
145
- this._moreMenuItems = this._moreMenuItems.filter(
146
- (_entry) => _entry !== entry
147
- );
110
+ this._moreMenuItems = this._moreMenuItems.filter(_entry => _entry !== entry);
148
111
  this._addMoreItems();
149
112
  });
150
113
  } else {
151
- const sectionElement = this._getSectionElement(
152
- buttonDescriptor.section,
153
- toolbarSections
154
- );
114
+ const sectionElement = this._getSectionElement(buttonDescriptor.section, toolbarSections);
155
115
  if (sectionElement) {
156
- const buttonViewController =
157
- this._createButtonViewController(buttonDescriptor);
116
+ const buttonViewController = this._createButtonViewController(buttonDescriptor);
158
117
  this._buttonViewControllers.add(buttonViewController);
159
118
  buttonStopper.onValue(() => {
160
119
  this._buttonViewControllers.delete(buttonViewController);
@@ -162,282 +121,184 @@ class GmailToolbarView {
162
121
  });
163
122
 
164
123
  // Debugging code to track our duplicate toolbar button issue.
165
- (buttonViewController
166
- .getView()
167
- .getElement(): any).__addButton_ownedByExtension = true;
168
- buttonViewController
169
- .getView()
170
- .getElement()
171
- .setAttribute(
172
- 'data-add-button-debug',
173
- JSON.stringify({
174
- id,
175
- title: buttonDescriptor.title,
176
- hasThreadViewDriver: this.isForThread(),
177
- hasRowListViewDriver: this.isForRowList(),
178
- })
179
- );
180
-
181
- buttonViewController
182
- .getView()
183
- .getElement()
184
- .setAttribute(
185
- 'data-order-hint',
186
- String(buttonDescriptor.orderHint || 0)
187
- );
188
- insertElementInOrder(
189
- sectionElement,
190
- buttonViewController.getView().getElement()
191
- );
192
-
193
- Kefir.merge([Kefir.constant(-1), Kefir.later(1000, 1000)])
194
- .map((delay) => {
195
- const duplicates: Object[] = Array.from(sectionElement.children)
196
- .filter(
197
- (el) =>
198
- buttonViewController
199
- .getView()
200
- .getElement()
201
- .getAttribute('data-rowlist-toolbar') ===
202
- el.getAttribute('data-rowlist-toolbar') &&
203
- buttonViewController
204
- .getView()
205
- .getElement()
206
- .getAttribute('data-toolbar-expanded') ===
207
- el.getAttribute('data-toolbar-expanded')
208
- )
209
- .filter((el) => el.hasAttribute('data-add-button-debug'))
210
- .map((el) =>
211
- Object.assign(
212
- {
213
- ownedByExtension: !!(el: any)
214
- .__addButton_ownedByExtension,
215
- },
216
- JSON.parse(
217
- el.getAttribute('data-add-button-debug') || 'null'
218
- )
219
- )
220
- )
221
- .filter(({ title }) => title === buttonDescriptor.title);
222
- return { delay, duplicates };
223
- })
224
- .filter(({ duplicates }) => duplicates.length > 1)
225
- .take(1)
226
- .takeUntilBy(this._stopper)
227
- .onValue(({ delay, duplicates }) => {
228
- Logger.error(new Error('Duplicate toolbar button'), {
229
- delay,
230
- duplicates,
231
- dataThreadToolbar: this._element.getAttribute(
232
- 'data-thread-toolbar'
233
- ),
234
- dataRowlistToolbar: this._element.getAttribute(
235
- 'data-rowlist-toolbar'
236
- ),
237
- });
124
+ buttonViewController.getView().getElement().__addButton_ownedByExtension = true;
125
+ buttonViewController.getView().getElement().setAttribute('data-add-button-debug', JSON.stringify({
126
+ id,
127
+ title: buttonDescriptor.title,
128
+ hasThreadViewDriver: this.isForThread(),
129
+ hasRowListViewDriver: this.isForRowList()
130
+ }));
131
+ buttonViewController.getView().getElement().setAttribute('data-order-hint', String(buttonDescriptor.orderHint || 0));
132
+ (0, _insertElementInOrder.default)(sectionElement, buttonViewController.getView().getElement());
133
+ _kefir.default.merge([_kefir.default.constant(-1), _kefir.default.later(1000, 1000)]).map(delay => {
134
+ const duplicates = Array.from(sectionElement.children).filter(el => buttonViewController.getView().getElement().getAttribute('data-rowlist-toolbar') === el.getAttribute('data-rowlist-toolbar') && buttonViewController.getView().getElement().getAttribute('data-toolbar-expanded') === el.getAttribute('data-toolbar-expanded')).filter(el => el.hasAttribute('data-add-button-debug')).map(el => Object.assign({
135
+ ownedByExtension: !!el.__addButton_ownedByExtension
136
+ }, JSON.parse(el.getAttribute('data-add-button-debug') || 'null'))).filter(_ref => {
137
+ let {
138
+ title
139
+ } = _ref;
140
+ return title === buttonDescriptor.title;
238
141
  });
239
-
142
+ return {
143
+ delay,
144
+ duplicates
145
+ };
146
+ }).filter(_ref2 => {
147
+ let {
148
+ duplicates
149
+ } = _ref2;
150
+ return duplicates.length > 1;
151
+ }).take(1).takeUntilBy(this._stopper).onValue(_ref3 => {
152
+ let {
153
+ delay,
154
+ duplicates
155
+ } = _ref3;
156
+ _logger.default.error(new Error('Duplicate toolbar button'), {
157
+ delay,
158
+ duplicates,
159
+ dataThreadToolbar: this._element.getAttribute('data-thread-toolbar'),
160
+ dataRowlistToolbar: this._element.getAttribute('data-rowlist-toolbar')
161
+ });
162
+ });
240
163
  this._updateButtonClasses(this._element);
241
- buttonViewController
242
- .getView()
243
- .setEnabled(this._toolbarState === 'EXPANDED');
164
+ buttonViewController.getView().setEnabled(this._toolbarState === 'EXPANDED');
244
165
  }
245
166
  }
246
167
  });
247
-
248
168
  return {
249
169
  getStopper: () => buttonStopper,
250
170
  destroy: () => {
251
171
  buttonStopper.destroy();
252
- },
172
+ }
253
173
  };
254
174
  }
255
-
256
- waitForReady(): Kefir.Observable<GmailToolbarView> {
175
+ waitForReady() {
257
176
  return this._ready;
258
177
  }
259
-
260
- _createButtonViewController(
261
- buttonDescriptor: Object
262
- ): DropdownButtonViewController | BasicButtonViewController {
178
+ _createButtonViewController(buttonDescriptor) {
263
179
  const buttonView = this._getButtonView(buttonDescriptor);
264
180
  buttonDescriptor.buttonView = buttonView;
265
-
266
181
  let buttonViewController = null;
267
182
  if (buttonDescriptor.hasDropdown) {
268
- buttonViewController = new DropdownButtonViewController({
183
+ buttonViewController = new _dropdownButtonViewController.default({
269
184
  buttonView: buttonView,
270
- dropdownViewDriverClass: GmailDropdownView,
185
+ dropdownViewDriverClass: _gmailDropdownView.default,
271
186
  dropdownShowFunction: buttonDescriptor.onClick,
272
187
  dropdownPositionOptions: {
273
188
  position: 'bottom',
274
- hAlign: 'left',
275
- },
189
+ hAlign: 'left'
190
+ }
276
191
  });
277
192
  } else {
278
- buttonViewController = new BasicButtonViewController(buttonDescriptor);
193
+ buttonViewController = new _basicButtonViewController.default(buttonDescriptor);
279
194
  }
280
-
281
195
  return buttonViewController;
282
196
  }
283
-
284
- _getButtonView(buttonDescriptor: Object): Object {
285
- const buttonView = new ButtonView({
197
+ _getButtonView(buttonDescriptor) {
198
+ const buttonView = new _buttonView.default({
286
199
  ...buttonDescriptor,
287
- noArrow: true,
200
+ noArrow: true
288
201
  });
289
-
290
202
  if (this._rowListViewDriver) {
291
203
  buttonView.getElement().setAttribute('data-rowlist-toolbar', 'true');
292
204
  buttonView.getElement().setAttribute('data-toolbar-expanded', 'true');
293
205
  } else if (this._threadViewDriver) {
294
206
  buttonView.getElement().setAttribute('data-thread-toolbar', 'true');
295
207
  }
296
-
297
208
  buttonView.getElement().setAttribute('role', 'button');
298
-
299
209
  return buttonView;
300
210
  }
301
-
302
211
  _startMonitoringMoreMenu() {
303
212
  const moreButtonElement = this._element.querySelector('.nf[role=button]');
304
213
  if (!moreButtonElement) {
305
214
  return;
306
215
  }
307
-
308
- makeMutationObserverStream(moreButtonElement, {
216
+ (0, _makeMutationObserverStream.default)(moreButtonElement, {
309
217
  attributes: true,
310
- attributeFilter: ['aria-expanded'],
311
- })
312
- .toProperty(() => null)
313
- .takeUntilBy(this._stopper)
314
- .map(() => moreButtonElement.getAttribute('aria-expanded'))
315
- .onValue((ariaExpanded) => {
316
- if (ariaExpanded !== 'true') {
317
- this._clearMoreItems();
318
- } else {
319
- this._addMoreItems();
320
- }
321
- });
218
+ attributeFilter: ['aria-expanded']
219
+ }).toProperty(() => null).takeUntilBy(this._stopper).map(() => moreButtonElement.getAttribute('aria-expanded')).onValue(ariaExpanded => {
220
+ if (ariaExpanded !== 'true') {
221
+ this._clearMoreItems();
222
+ } else {
223
+ this._addMoreItems();
224
+ }
225
+ });
322
226
  }
323
-
324
227
  _determineToolbarState() {
325
228
  const moveSectionElement = this._getMoveSectionElement();
326
229
  if (!moveSectionElement) throw new Error('No move section element');
327
-
328
230
  if (moveSectionElement.style.display === 'none') {
329
231
  this._toolbarState = 'COLLAPSED';
330
232
  } else {
331
233
  this._toolbarState = 'EXPANDED';
332
234
  }
333
235
  }
334
-
335
236
  _determineToolbarIconMode() {
336
237
  const moveSectionElement = this._getMoveSectionElement();
337
238
  if (!moveSectionElement) throw new Error('No move section element');
338
- const isIconMode = Array.from(
339
- moveSectionElement.querySelectorAll(
340
- '[role=button]:not(.inboxsdk__button)'
341
- )
342
- ).some(
343
- (buttonElement) =>
344
- buttonElement.hasAttribute('title') ||
345
- buttonElement.hasAttribute('data-tooltip')
346
- );
347
- this._element.setAttribute(
348
- 'data-toolbar-icononly',
349
- isIconMode ? 'true' : 'false'
350
- );
239
+ const isIconMode = Array.from(moveSectionElement.querySelectorAll('[role=button]:not(.inboxsdk__button)')).some(buttonElement => buttonElement.hasAttribute('title') || buttonElement.hasAttribute('data-tooltip'));
240
+ this._element.setAttribute('data-toolbar-icononly', isIconMode ? 'true' : 'false');
351
241
  }
352
-
353
242
  _setupToolbarStateMonitoring() {
354
243
  const moveSectionElement = this._getMoveSectionElement();
355
244
  if (!moveSectionElement) throw new Error('No move section element');
356
- makeMutationObserverStream(moveSectionElement, {
245
+ (0, _makeMutationObserverStream.default)(moveSectionElement, {
357
246
  attributes: true,
358
- attributeFilter: ['style'],
359
- })
360
- .takeUntilBy(this._stopper)
361
- .onValue((mutation) => {
362
- if (
363
- mutation.target instanceof HTMLElement &&
364
- mutation.target.style.display === 'none'
365
- ) {
366
- this._toolbarState = 'COLLAPSED';
367
- } else {
368
- this._toolbarState = 'EXPANDED';
369
- }
370
-
371
- this._updateButtonClasses(this._element);
372
- this._updateButtonEnabledState();
373
- });
247
+ attributeFilter: ['style']
248
+ }).takeUntilBy(this._stopper).onValue(mutation => {
249
+ if (mutation.target instanceof HTMLElement && mutation.target.style.display === 'none') {
250
+ this._toolbarState = 'COLLAPSED';
251
+ } else {
252
+ this._toolbarState = 'EXPANDED';
253
+ }
254
+ this._updateButtonClasses(this._element);
255
+ this._updateButtonEnabledState();
256
+ });
374
257
  }
375
-
376
- _getSectionElement(
377
- sectionName: string,
378
- toolbarSections: Object
379
- ): ?HTMLElement {
258
+ _getSectionElement(sectionName, toolbarSections) {
380
259
  switch (sectionName) {
381
260
  case toolbarSections.INBOX_STATE:
382
261
  return this._getArchiveSectionElement();
383
-
384
262
  case toolbarSections.METADATA_STATE:
385
263
  return this._getMoveSectionElement();
386
-
387
264
  default:
388
265
  return null;
389
266
  }
390
267
  }
391
-
392
- _getArchiveSectionElement(): ?HTMLElement {
393
- return this._getSectionElementForButtonSelector(
394
- '.ar9, .aFh, .aFj, .lR, .nN, .nX, .aFk'
395
- );
268
+ _getArchiveSectionElement() {
269
+ return this._getSectionElementForButtonSelector('.ar9, .aFh, .aFj, .lR, .nN, .nX, .aFk');
396
270
  }
397
-
398
- _getCheckboxSectionElement(): ?HTMLElement {
271
+ _getCheckboxSectionElement() {
399
272
  return this._getSectionElementForButtonSelector('.T-Jo-auh');
400
273
  }
401
-
402
- _getMoveSectionElement(): ?HTMLElement {
274
+ _getMoveSectionElement() {
403
275
  return this._getSectionElementForButtonSelector('.asb, .ase, .ns, .mw');
404
276
  }
405
-
406
- _getSectionElementForButtonSelector(buttonSelector: string): ?HTMLElement {
277
+ _getSectionElementForButtonSelector(buttonSelector) {
407
278
  const sectionElements = this._element.querySelectorAll('.G-Ni');
408
-
409
279
  for (let ii = 0; ii < sectionElements.length; ii++) {
410
280
  if (sectionElements[ii].querySelector(buttonSelector)) {
411
281
  return sectionElements[ii];
412
282
  }
413
283
  }
414
-
415
284
  return null;
416
285
  }
417
-
418
- _updateButtonClasses(element: HTMLElement) {
286
+ _updateButtonClasses(element) {
419
287
  if (this._isUpdateButtonClassesScheduled) return;
420
-
421
288
  this._isUpdateButtonClassesScheduled = true;
422
- asap(() => {
289
+ (0, _asap.default)(() => {
423
290
  if (this._toolbarState === 'EXPANDED') {
424
291
  element.setAttribute('data-toolbar-expanded', 'true');
425
292
  } else if (this._toolbarState === 'COLLAPSED') {
426
293
  element.setAttribute('data-toolbar-expanded', 'false');
427
294
  }
428
-
429
295
  const buttons = element.querySelectorAll('.G-Ni > [role=button]');
430
-
431
- Array.prototype.forEach.call(buttons, (button) => {
296
+ Array.prototype.forEach.call(buttons, button => {
432
297
  let current = button;
433
298
  for (let ii = 0; ii < 100000; ii++) {
434
299
  if (current.previousElementSibling) {
435
- if (
436
- current.previousElementSibling.classList.contains(
437
- 'inboxsdk__button'
438
- )
439
- ) {
440
- if (isElementVisible(current.previousElementSibling)) {
300
+ if (current.previousElementSibling.classList.contains('inboxsdk__button')) {
301
+ if ((0, _isElementVisible.default)(current.previousElementSibling)) {
441
302
  button.classList.add('T-I-Js-Gs');
442
303
  break;
443
304
  } else {
@@ -452,14 +313,11 @@ class GmailToolbarView {
452
313
  break;
453
314
  }
454
315
  }
455
-
456
316
  current = button;
457
317
  for (let ii = 0; ii < 100000; ii++) {
458
318
  if (current.nextElementSibling) {
459
- if (
460
- current.nextElementSibling.classList.contains('inboxsdk__button')
461
- ) {
462
- if (isElementVisible(current.nextElementSibling)) {
319
+ if (current.nextElementSibling.classList.contains('inboxsdk__button')) {
320
+ if ((0, _isElementVisible.default)(current.nextElementSibling)) {
463
321
  button.classList.add('T-I-Js-IF');
464
322
  break;
465
323
  } else {
@@ -475,117 +333,75 @@ class GmailToolbarView {
475
333
  }
476
334
  }
477
335
  });
478
-
479
336
  this._isUpdateButtonClassesScheduled = false;
480
337
  });
481
338
  }
482
-
483
339
  _updateButtonEnabledState() {
484
340
  const enabled = this._toolbarState === 'EXPANDED';
485
- this._buttonViewControllers.forEach((buttonViewController) => {
341
+ this._buttonViewControllers.forEach(buttonViewController => {
486
342
  buttonViewController.getView().setEnabled(enabled);
487
343
  });
488
344
  }
489
-
490
345
  _addMoreItems() {
491
346
  this._clearMoreItems();
492
-
493
347
  if (this._toolbarState !== 'EXPANDED') {
494
348
  return;
495
349
  }
496
-
497
- this._moreMenuItems.forEach((item) => {
350
+ this._moreMenuItems.forEach(item => {
498
351
  this._addToOpenMoreMenu(item.buttonDescriptor);
499
352
  });
500
353
  }
501
-
502
354
  _clearMoreItems() {
503
355
  if (this._moreMenuItemsContainer) {
504
356
  this._moreMenuItemsContainer.remove();
505
357
  this._moreMenuItemsContainer = null;
506
358
  }
507
359
  }
508
-
509
- _addToOpenMoreMenu(buttonDescriptor: Object) {
510
- const moreMenu = GmailElementGetter.getActiveMoreMenu();
360
+ _addToOpenMoreMenu(buttonDescriptor) {
361
+ const moreMenu = _gmailElementGetter.default.getActiveMoreMenu();
511
362
  if (!moreMenu) {
512
363
  return;
513
364
  }
514
-
515
365
  const appDiv = this._getMoreMenuItemsContainer(moreMenu);
516
366
  const menuItemElement = this._getMoreMenuItemElement(buttonDescriptor);
517
-
518
- insertElementInOrder(appDiv, menuItemElement);
367
+ (0, _insertElementInOrder.default)(appDiv, menuItemElement);
519
368
  }
520
-
521
- _getMoreMenuItemsContainer(moreMenu: HTMLElement): HTMLElement {
369
+ _getMoreMenuItemsContainer(moreMenu) {
522
370
  if (this._moreMenuItemsContainer) {
523
371
  return this._moreMenuItemsContainer;
524
372
  }
525
-
526
- const container = (this._moreMenuItemsContainer =
527
- document.createElement('div'));
373
+ const container = this._moreMenuItemsContainer = document.createElement('div');
528
374
  container.setAttribute('data-group-order-hint', this._driver.getAppId());
529
375
  container.innerHTML = '<div class="J-Kh"></div>';
530
-
531
- insertElementInOrder(moreMenu, container);
532
-
376
+ (0, _insertElementInOrder.default)(moreMenu, container);
533
377
  return container;
534
378
  }
535
-
536
- _getMoreMenuItemElement(buttonDescriptor: Object): HTMLElement {
379
+ _getMoreMenuItemElement(buttonDescriptor) {
537
380
  const itemElement = document.createElement('div');
538
381
  itemElement.setAttribute('class', 'J-N inboxsdk__menuItem');
539
382
  itemElement.setAttribute('role', 'menuitem');
540
- itemElement.setAttribute(
541
- 'data-order-hint',
542
- String(buttonDescriptor.orderHint || 0)
543
- );
544
-
545
- itemElement.innerHTML = [
546
- '<div class="J-N-Jz" style="-webkit-user-select: none;">',
547
- buttonDescriptor.iconUrl
548
- ? '<img class="J-N-JX" src="' +
549
- escape(buttonDescriptor.iconUrl) +
550
- '" />'
551
- : '',
552
- buttonDescriptor.iconClass
553
- ? '<span class="inboxsdk__icon J-N-JX ' +
554
- escape(buttonDescriptor.iconClass) +
555
- '"></span>'
556
- : '',
557
- escape(buttonDescriptor.title),
558
- '</div>',
559
- ].join('');
560
-
561
- itemElement.addEventListener('mouseenter', (e: MouseEvent) =>
562
- itemElement.classList.add('J-N-JT')
563
- );
564
- itemElement.addEventListener('mouseleave', (e: MouseEvent) =>
565
- itemElement.classList.remove('J-N-JT')
566
- );
567
- itemElement.addEventListener('click', (e: MouseEvent) => {
383
+ itemElement.setAttribute('data-order-hint', String(buttonDescriptor.orderHint || 0));
384
+ itemElement.innerHTML = ['<div class="J-N-Jz" style="-webkit-user-select: none;">', buttonDescriptor.iconUrl ? '<img class="J-N-JX" src="' + (0, _escape.default)(buttonDescriptor.iconUrl) + '" />' : '', buttonDescriptor.iconClass ? '<span class="inboxsdk__icon J-N-JX ' + (0, _escape.default)(buttonDescriptor.iconClass) + '"></span>' : '', (0, _escape.default)(buttonDescriptor.title), '</div>'].join('');
385
+ itemElement.addEventListener('mouseenter', e => itemElement.classList.add('J-N-JT'));
386
+ itemElement.addEventListener('mouseleave', e => itemElement.classList.remove('J-N-JT'));
387
+ itemElement.addEventListener('click', e => {
568
388
  if (buttonDescriptor.onClick) {
569
389
  buttonDescriptor.onClick({});
570
390
  }
571
391
  });
572
-
573
392
  return itemElement;
574
393
  }
575
-
576
394
  destroy() {
577
395
  const element = this._element;
578
-
579
396
  if (this._threadViewDriver) {
580
397
  this._element.removeAttribute('data-thread-toolbar');
581
398
  } else if (this._rowListViewDriver) {
582
399
  this._element.removeAttribute('data-rowlist-toolbar');
583
400
  }
584
-
585
401
  this._clearMoreItems();
586
402
  this._stopper.destroy();
587
403
  this._updateButtonClasses(element);
588
404
  }
589
405
  }
590
-
591
- export default defn(module, GmailToolbarView);
406
+ var _default = (0, _ud.defn)(module, GmailToolbarView);
407
+ exports.default = _default;