@inboxsdk/core 0.2.28-alpha.5 → 0.2.28

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 (669) hide show
  1. package/inboxsdk.js +28 -62
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +1 -5
  4. package/pageWorld.js.map +1 -1
  5. package/src/build/exec.d.ts +0 -1
  6. package/src/build/spawn.d.ts +0 -1
  7. package/src/common/ajax.d.ts +0 -1
  8. package/src/common/cachebust-url.d.ts +0 -1
  9. package/src/common/censorHTMLstring.d.ts +0 -1
  10. package/src/common/censorHTMLtree.d.ts +0 -1
  11. package/src/common/censorJSONTree.d.ts +0 -1
  12. package/src/common/connectivity-test.d.ts +0 -1
  13. package/src/common/defer.d.ts +0 -1
  14. package/src/common/find-parent.d.ts +0 -1
  15. package/src/common/get-extension-id.d.ts +0 -1
  16. package/src/common/get-or-fail.d.ts +0 -1
  17. package/src/common/get-session-id.d.ts +0 -1
  18. package/src/common/get-stack-trace.d.ts +0 -1
  19. package/src/common/html-to-text.d.ts +0 -1
  20. package/src/common/isElementVisible.d.ts +0 -1
  21. package/src/common/load-script.d.ts +0 -1
  22. package/src/common/log-error.d.ts +0 -1
  23. package/src/common/quoted-split.d.ts +0 -1
  24. package/src/common/rate-limit-queuer.d.ts +0 -1
  25. package/src/common/rate-limit.d.ts +0 -1
  26. package/src/common/version.d.ts +0 -1
  27. package/src/inboxsdk-js/check-requirements.js +3 -7
  28. package/src/inboxsdk-js/header.js +0 -1
  29. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +6 -5
  30. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +3 -4
  31. package/src/inboxsdk-js/inboxsdk-REMOTE.js +1 -3
  32. package/src/inboxsdk-js/inboxsdk-TEST.js +3 -4
  33. package/src/inboxsdk-js/inboxsdk.js +39 -33
  34. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +18 -15
  35. package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts +0 -1
  36. package/src/inboxsdk.d.ts +27 -10
  37. package/src/injected-js/gmail/constants.d.ts +0 -1
  38. package/src/injected-js/gmail/modify-suggestions.d.ts +0 -1
  39. package/src/injected-js/gmail/modify-suggestions.test.js +9 -8
  40. package/src/injected-js/gmail/setup-gmail-interceptor.js +579 -340
  41. package/src/injected-js/gmail/setup-gmonkey-handler.d.ts +0 -1
  42. package/src/injected-js/gmail/sync-compose-processor-20220909.d.ts +0 -1
  43. package/src/injected-js/gmail/sync-compose-processor.d.ts +0 -1
  44. package/src/injected-js/gmail/sync-compose-request-processor.d.ts +0 -1
  45. package/src/injected-js/gmail/sync-compose-request-processor.test.js +49 -39
  46. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +33 -20
  47. package/src/injected-js/gmail/thread-identifier/index.js +93 -57
  48. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +31 -22
  49. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +28 -12
  50. package/src/injected-js/inbox/setupAjaxInterceptor.js +121 -64
  51. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +66 -53
  52. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +36 -20
  53. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
  54. package/src/injected-js/injected-logger.d.ts +0 -1
  55. package/src/injected-js/main.js +24 -11
  56. package/src/injected-js/message-metadata-holder.js +82 -52
  57. package/src/injected-js/setup-data-exposer.js +148 -89
  58. package/src/injected-js/setup-error-silencer.js +21 -21
  59. package/src/injected-js/setup-event-reemitter.js +22 -30
  60. package/src/injected-js/setupCustomViewEventAssassin.d.ts +0 -1
  61. package/src/injected-js/setupInboxCustomViewLinkFixer.js +29 -24
  62. package/src/injected-js/setupPushStateListener.js +11 -18
  63. package/src/injected-js/xhr-helper.js +65 -62
  64. package/src/injected-js/xhr-proxy-factory.js +445 -195
  65. package/src/injected-js/xhr-proxy-factory.test.js +991 -824
  66. package/src/platform-implementation-js/constants/nav-item-types.d.ts +0 -1
  67. package/src/platform-implementation-js/constants/router.js +9 -17
  68. package/src/platform-implementation-js/constants/toolbars.js +3 -8
  69. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
  70. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +136 -115
  71. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts +2 -3
  72. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.d.ts +0 -1
  73. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +14 -13
  74. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +48 -27
  75. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.d.ts +0 -1
  76. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +42 -31
  77. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +40 -30
  78. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.d.ts +0 -1
  79. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.d.ts +0 -1
  80. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +18 -10
  81. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +28 -21
  82. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +45 -33
  83. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +49 -31
  84. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +65 -58
  85. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts +0 -1
  86. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +124 -40
  87. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +22 -17
  88. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.d.ts +0 -1
  89. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +11 -10
  90. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +80 -44
  91. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +26 -19
  92. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +147 -71
  93. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +148 -91
  94. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +166 -150
  95. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +120 -70
  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 +67 -44
  98. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +379 -230
  99. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +307 -121
  100. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +24 -17
  101. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +49 -41
  102. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +40 -30
  103. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +60 -28
  104. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +133 -61
  105. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +110 -83
  106. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +42 -30
  107. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +46 -52
  108. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts +3 -13
  109. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +683 -355
  110. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.d.ts +0 -1
  111. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.d.ts +0 -1
  112. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts +0 -4
  113. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.d.ts +0 -1
  114. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.d.ts +0 -1
  115. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.d.ts +0 -1
  116. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.d.ts +0 -1
  117. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +93 -77
  118. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.d.ts +0 -1
  119. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.d.ts +0 -1
  120. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +82 -35
  121. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +94 -44
  122. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +19 -12
  123. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +29 -17
  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 +797 -391
  126. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +9 -7
  127. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +109 -60
  128. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +135 -95
  129. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +211 -103
  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 +541 -188
  133. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +135 -67
  134. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +49 -27
  135. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +13 -7
  136. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +22 -9
  137. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +63 -36
  138. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.d.ts +0 -1
  139. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +113 -38
  140. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.d.ts +0 -1
  141. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +16 -11
  142. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +17 -11
  143. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +11 -8
  144. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +47 -27
  145. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +24 -11
  146. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +111 -59
  147. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.d.ts +0 -1
  148. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +14 -15
  149. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +17 -11
  150. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +24 -18
  151. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.d.ts +0 -1
  152. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +23 -19
  153. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.d.ts +0 -1
  154. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +19 -11
  155. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +376 -141
  156. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +28 -17
  157. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +70 -34
  158. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.d.ts +0 -1
  159. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +17 -10
  160. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.d.ts +0 -1
  161. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.d.ts +0 -1
  162. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +137 -83
  163. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +19 -10
  164. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +1190 -632
  165. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.d.ts +0 -1
  166. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +38 -29
  167. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +617 -327
  168. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts +1 -34
  169. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +48 -29
  170. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +380 -188
  171. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +194 -104
  172. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.d.ts +0 -1
  173. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +811 -382
  174. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +58 -34
  175. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +581 -330
  176. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +277 -123
  177. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +35 -15
  178. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +571 -216
  179. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +336 -152
  180. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +211 -87
  181. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.d.ts +0 -1
  182. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.d.ts +0 -1
  183. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.d.ts +0 -1
  184. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.d.ts +0 -1
  185. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +11 -10
  186. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.d.ts +0 -1
  187. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.d.ts +0 -1
  188. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.d.ts +0 -1
  189. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +29 -20
  190. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.d.ts +0 -1
  191. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +76 -41
  192. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +99 -45
  193. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +128 -76
  194. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +319 -128
  195. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +78 -45
  196. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +4 -8
  197. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +54 -36
  198. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +53 -35
  199. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +15 -13
  200. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +18 -15
  201. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +13 -14
  202. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +20 -14
  203. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +13 -14
  204. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +67 -35
  205. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +18 -16
  206. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +185 -68
  207. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +56 -28
  208. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +10 -12
  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 +35 -24
  211. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +89 -37
  212. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +78 -56
  213. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +32 -26
  214. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +109 -52
  215. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +8 -7
  216. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +20 -16
  217. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +16 -15
  218. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +83 -75
  219. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +823 -531
  220. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +61 -48
  221. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +12 -9
  222. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +19 -12
  223. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +33 -24
  224. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +388 -201
  225. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +265 -249
  226. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +152 -84
  227. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +67 -55
  228. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +65 -43
  229. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +56 -31
  230. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +294 -191
  231. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +45 -32
  232. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +39 -21
  233. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +240 -153
  234. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +150 -75
  235. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +37 -20
  236. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +114 -60
  237. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +65 -47
  238. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +52 -41
  239. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +36 -27
  240. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +80 -52
  241. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +649 -465
  242. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +58 -37
  243. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +26 -14
  244. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +235 -118
  245. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +11 -10
  246. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +46 -28
  247. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +202 -131
  248. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +80 -40
  249. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +61 -35
  250. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +221 -124
  251. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +213 -125
  252. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +126 -104
  253. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +51 -36
  254. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +297 -158
  255. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +35 -21
  256. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +43 -24
  257. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +68 -39
  258. package/src/platform-implementation-js/driver-common/getAccountUrlPart.d.ts +0 -1
  259. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +19 -14
  260. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +35 -27
  261. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.d.ts +0 -1
  262. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +22 -16
  263. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.d.ts +0 -1
  264. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
  265. package/src/platform-implementation-js/driver-common/gmailAjax.d.ts +0 -1
  266. package/src/platform-implementation-js/driver-common/inboxAjax.js +7 -12
  267. package/src/platform-implementation-js/driver-common/render-custom-icon.d.ts +0 -1
  268. package/src/platform-implementation-js/driver-common/requestGmailThread.js +20 -19
  269. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +306 -197
  270. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +161 -113
  271. package/src/platform-implementation-js/driver-common/update-icon.d.ts +0 -1
  272. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +114 -1
  273. package/src/platform-implementation-js/driver-interfaces/driver.d.ts +0 -5
  274. package/src/platform-implementation-js/driver-interfaces/driver.js +126 -1
  275. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +48 -4
  276. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +29 -1
  277. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +32 -1
  278. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +11 -1
  279. package/src/platform-implementation-js/lib/ErrorCollector.d.ts +0 -1
  280. package/src/platform-implementation-js/lib/Membrane.d.ts +0 -1
  281. package/src/platform-implementation-js/lib/ScrollableContainByScreen.d.ts +0 -1
  282. package/src/platform-implementation-js/lib/array-to-lifetimes.js +41 -43
  283. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +155 -139
  284. package/src/platform-implementation-js/lib/attemptWithRetries.d.ts +0 -1
  285. package/src/platform-implementation-js/lib/common-page-communicator.d.ts +0 -1
  286. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +38 -19
  287. package/src/platform-implementation-js/lib/css-selector-escape.js +3 -7
  288. package/src/platform-implementation-js/lib/delay-asap.d.ts +0 -1
  289. package/src/platform-implementation-js/lib/delay-idle.d.ts +0 -1
  290. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.d.ts +0 -1
  291. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +11 -8
  292. package/src/platform-implementation-js/lib/dom/generic-button-view.d.ts +0 -1
  293. package/src/platform-implementation-js/lib/dom/get-insert-before-element.d.ts +0 -1
  294. package/src/platform-implementation-js/lib/dom/get-selection.js +52 -23
  295. package/src/platform-implementation-js/lib/dom/insert-element-in-order.d.ts +0 -1
  296. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +101 -69
  297. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +10 -8
  298. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.d.ts +0 -1
  299. package/src/platform-implementation-js/lib/dom/make-element-child-stream.d.ts +0 -1
  300. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.d.ts +0 -1
  301. package/src/platform-implementation-js/lib/dom/make-element-view-stream.d.ts +0 -1
  302. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.d.ts +0 -1
  303. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.d.ts +0 -1
  304. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +17 -15
  305. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.d.ts +0 -1
  306. package/src/platform-implementation-js/lib/dom/parentNodes.d.ts +0 -1
  307. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +11 -8
  308. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.d.ts +0 -1
  309. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.d.ts +0 -1
  310. package/src/platform-implementation-js/lib/dom/set-css.js +3 -7
  311. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +11 -9
  312. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +33 -32
  313. package/src/platform-implementation-js/lib/dom/simulate-key.d.ts +0 -1
  314. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.d.ts +0 -1
  315. package/src/platform-implementation-js/lib/dom/trigger-relay-event.d.ts +0 -1
  316. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.d.ts +0 -1
  317. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +26 -23
  318. package/src/platform-implementation-js/lib/fake-window-resize.d.ts +0 -1
  319. package/src/platform-implementation-js/lib/from-event-target-capture.d.ts +0 -1
  320. package/src/platform-implementation-js/lib/fromEventsWithOptions.d.ts +0 -1
  321. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +149 -86
  322. package/src/platform-implementation-js/lib/handler-registry.d.ts +0 -1
  323. package/src/platform-implementation-js/lib/idMap.d.ts +0 -1
  324. package/src/platform-implementation-js/lib/imageRequest.d.ts +0 -1
  325. package/src/platform-implementation-js/lib/incrementName.d.ts +0 -1
  326. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts +0 -1
  327. package/src/platform-implementation-js/lib/inject-script.d.ts +0 -1
  328. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +57 -42
  329. package/src/platform-implementation-js/lib/is-valid-app-id.d.ts +0 -1
  330. package/src/platform-implementation-js/lib/is-valid-email.d.ts +0 -1
  331. package/src/platform-implementation-js/lib/isNotNil.d.ts +0 -1
  332. package/src/platform-implementation-js/lib/isStreakAppId.d.ts +0 -1
  333. package/src/platform-implementation-js/lib/logger.d.ts +0 -1
  334. package/src/platform-implementation-js/lib/make-revocable-function.js +21 -19
  335. package/src/platform-implementation-js/lib/make-revocable-function.test.js +22 -20
  336. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +17 -15
  337. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +18 -9
  338. package/src/platform-implementation-js/lib/persistent-queue.d.ts +0 -1
  339. package/src/platform-implementation-js/lib/populateRouteID.js +9 -8
  340. package/src/platform-implementation-js/lib/populateRouteID.test.js +19 -20
  341. package/src/platform-implementation-js/lib/react/ElementContainer.js +20 -23
  342. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +9 -10
  343. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +20 -13
  344. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +18 -13
  345. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +17 -11
  346. package/src/platform-implementation-js/lib/safe-event-emitter.d.ts +0 -1
  347. package/src/platform-implementation-js/lib/shared-style.js +13 -14
  348. package/src/platform-implementation-js/lib/stopper-pool.d.ts +0 -1
  349. package/src/platform-implementation-js/lib/stream-wait-for.d.ts +0 -1
  350. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +17 -18
  351. package/src/platform-implementation-js/lib/toLiveSet.js +15 -17
  352. package/src/platform-implementation-js/lib/wait-for.d.ts +1 -2
  353. package/src/platform-implementation-js/lib/waitForAsync.d.ts +0 -1
  354. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +5 -6
  355. package/src/platform-implementation-js/main.js +24 -9
  356. package/src/platform-implementation-js/namespaces/butter-bar.d.ts +0 -1
  357. package/src/platform-implementation-js/namespaces/compose.js +60 -37
  358. package/src/platform-implementation-js/namespaces/conversations.js +124 -52
  359. package/src/platform-implementation-js/namespaces/global.js +39 -27
  360. package/src/platform-implementation-js/namespaces/keyboard.js +33 -29
  361. package/src/platform-implementation-js/namespaces/lists.js +31 -25
  362. package/src/platform-implementation-js/namespaces/modal.js +28 -34
  363. package/src/platform-implementation-js/namespaces/nav-menu.js +45 -30
  364. package/src/platform-implementation-js/namespaces/router.js +137 -70
  365. package/src/platform-implementation-js/namespaces/search.js +17 -19
  366. package/src/platform-implementation-js/namespaces/toolbars.js +117 -71
  367. package/src/platform-implementation-js/namespaces/user.js +37 -36
  368. package/src/platform-implementation-js/namespaces/widgets.js +61 -54
  369. package/src/platform-implementation-js/platform-implementation.d.ts +0 -2
  370. package/src/platform-implementation-js/platform-implementation.js +226 -98
  371. package/src/platform-implementation-js/views/SimpleElementView.d.ts +0 -1
  372. package/src/platform-implementation-js/views/app-toolbar-button-view.js +47 -26
  373. package/src/platform-implementation-js/views/collapsible-section-view.js +63 -66
  374. package/src/platform-implementation-js/views/compose-button-view.d.ts +0 -1
  375. package/src/platform-implementation-js/views/compose-view.d.ts +0 -1
  376. package/src/platform-implementation-js/views/content-panel-view.js +30 -28
  377. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +44 -21
  378. package/src/platform-implementation-js/views/conversations/custom-message-view.js +104 -44
  379. package/src/platform-implementation-js/views/conversations/message-view.js +202 -131
  380. package/src/platform-implementation-js/views/conversations/thread-view.js +127 -75
  381. package/src/platform-implementation-js/views/keyboard-shortcut-handle.d.ts +0 -1
  382. package/src/platform-implementation-js/views/native-nav-item-view.js +65 -32
  383. package/src/platform-implementation-js/views/nav-item-view.js +115 -51
  384. package/src/platform-implementation-js/views/route-view/custom-route-view.js +20 -25
  385. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
  386. package/src/platform-implementation-js/views/route-view/list-route-view.js +52 -30
  387. package/src/platform-implementation-js/views/route-view/route-view.js +35 -24
  388. package/src/platform-implementation-js/views/section-view.js +52 -60
  389. package/src/platform-implementation-js/views/thread-row-view.js +74 -49
  390. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.d.ts +0 -1
  391. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.d.ts +0 -1
  392. package/src/platform-implementation-js/widgets/buttons/dropdown-view.d.ts +0 -1
  393. package/src/platform-implementation-js/widgets/drawer-view.js +36 -29
  394. package/src/platform-implementation-js/widgets/modal-view.js +68 -39
  395. package/src/platform-implementation-js/widgets/mole-view.js +22 -22
  396. package/src/platform-implementation-js/widgets/top-message-bar-view.js +10 -13
  397. package/src/build/exec.d.ts.map +0 -1
  398. package/src/build/exec.js +0 -26
  399. package/src/build/spawn.d.ts.map +0 -1
  400. package/src/build/spawn.js +0 -17
  401. package/src/common/ajax.d.ts.map +0 -1
  402. package/src/common/ajax.js +0 -90
  403. package/src/common/cachebust-url.d.ts.map +0 -1
  404. package/src/common/cachebust-url.js +0 -10
  405. package/src/common/censorHTMLstring.d.ts.map +0 -1
  406. package/src/common/censorHTMLstring.js +0 -37
  407. package/src/common/censorHTMLtree.d.ts.map +0 -1
  408. package/src/common/censorHTMLtree.js +0 -28
  409. package/src/common/censorJSONTree.d.ts.map +0 -1
  410. package/src/common/censorJSONTree.js +0 -15
  411. package/src/common/connectivity-test.d.ts.map +0 -1
  412. package/src/common/connectivity-test.js +0 -21
  413. package/src/common/defer.d.ts.map +0 -1
  414. package/src/common/defer.js +0 -11
  415. package/src/common/find-parent.d.ts.map +0 -1
  416. package/src/common/find-parent.js +0 -10
  417. package/src/common/get-extension-id.d.ts.map +0 -1
  418. package/src/common/get-extension-id.js +0 -7
  419. package/src/common/get-or-fail.d.ts.map +0 -1
  420. package/src/common/get-or-fail.js +0 -8
  421. package/src/common/get-session-id.d.ts.map +0 -1
  422. package/src/common/get-session-id.js +0 -14
  423. package/src/common/get-stack-trace.d.ts.map +0 -1
  424. package/src/common/get-stack-trace.js +0 -6
  425. package/src/common/html-to-text.d.ts.map +0 -1
  426. package/src/common/html-to-text.js +0 -7
  427. package/src/common/isElementVisible.d.ts.map +0 -1
  428. package/src/common/isElementVisible.js +0 -6
  429. package/src/common/load-script.d.ts.map +0 -1
  430. package/src/common/load-script.js +0 -127
  431. package/src/common/log-error.d.ts.map +0 -1
  432. package/src/common/log-error.js +0 -191
  433. package/src/common/quoted-split.d.ts.map +0 -1
  434. package/src/common/quoted-split.js +0 -18
  435. package/src/common/rate-limit-queuer.d.ts.map +0 -1
  436. package/src/common/rate-limit-queuer.js +0 -57
  437. package/src/common/rate-limit.d.ts.map +0 -1
  438. package/src/common/rate-limit.js +0 -14
  439. package/src/common/version.d.ts.map +0 -1
  440. package/src/common/version.js +0 -6
  441. package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts.map +0 -1
  442. package/src/inboxsdk-js/loading/platform-implementation-loader.js +0 -27
  443. package/src/injected-js/gmail/constants.d.ts.map +0 -1
  444. package/src/injected-js/gmail/constants.js +0 -2
  445. package/src/injected-js/gmail/modify-suggestions.d.ts.map +0 -1
  446. package/src/injected-js/gmail/modify-suggestions.js +0 -106
  447. package/src/injected-js/gmail/setup-gmonkey-handler.d.ts.map +0 -1
  448. package/src/injected-js/gmail/setup-gmonkey-handler.js +0 -49
  449. package/src/injected-js/gmail/sync-compose-processor-20220909.d.ts.map +0 -1
  450. package/src/injected-js/gmail/sync-compose-processor-20220909.js +0 -298
  451. package/src/injected-js/gmail/sync-compose-processor.d.ts.map +0 -1
  452. package/src/injected-js/gmail/sync-compose-processor.js +0 -55
  453. package/src/injected-js/gmail/sync-compose-request-processor.d.ts.map +0 -1
  454. package/src/injected-js/gmail/sync-compose-request-processor.js +0 -110
  455. package/src/injected-js/injected-logger.d.ts.map +0 -1
  456. package/src/injected-js/injected-logger.js +0 -50
  457. package/src/injected-js/setupCustomViewEventAssassin.d.ts.map +0 -1
  458. package/src/injected-js/setupCustomViewEventAssassin.js +0 -90
  459. package/src/platform-implementation-js/constants/nav-item-types.d.ts.map +0 -1
  460. package/src/platform-implementation-js/constants/nav-item-types.js +0 -19
  461. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.d.ts +0 -5
  462. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.d.ts.map +0 -1
  463. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +0 -21
  464. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.d.ts +0 -5
  465. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.d.ts.map +0 -1
  466. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +0 -28
  467. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts.map +0 -1
  468. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +0 -98
  469. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.d.ts.map +0 -1
  470. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +0 -4
  471. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.d.ts.map +0 -1
  472. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +0 -8
  473. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.d.ts.map +0 -1
  474. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +0 -12
  475. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.d.ts.map +0 -1
  476. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +0 -33
  477. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts.map +0 -1
  478. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +0 -4
  479. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.d.ts.map +0 -1
  480. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +0 -44
  481. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.d.ts +0 -2
  482. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.d.ts.map +0 -1
  483. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.d.ts.map +0 -1
  484. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +0 -38
  485. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.d.ts.map +0 -1
  486. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +0 -12
  487. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts.map +0 -1
  488. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +0 -253
  489. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.d.ts.map +0 -1
  490. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +0 -200
  491. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.d.ts.map +0 -1
  492. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +0 -533
  493. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.d.ts.map +0 -1
  494. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +0 -289
  495. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.d.ts.map +0 -1
  496. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +0 -21
  497. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.d.ts.map +0 -1
  498. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +0 -28
  499. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.d.ts.map +0 -1
  500. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +0 -19
  501. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.d.ts +0 -43
  502. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.d.ts.map +0 -1
  503. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +0 -126
  504. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.d.ts.map +0 -1
  505. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +0 -101
  506. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.d.ts.map +0 -1
  507. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +0 -38
  508. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.d.ts.map +0 -1
  509. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +0 -28
  510. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.d.ts.map +0 -1
  511. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +0 -22
  512. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.d.ts.map +0 -1
  513. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +0 -233
  514. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.d.ts.map +0 -1
  515. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +0 -223
  516. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.d.ts.map +0 -1
  517. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +0 -157
  518. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.d.ts.map +0 -1
  519. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +0 -109
  520. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.d.ts.map +0 -1
  521. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +0 -5
  522. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts.map +0 -1
  523. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +0 -759
  524. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.d.ts.map +0 -1
  525. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +0 -84
  526. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.d.ts.map +0 -1
  527. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +0 -33
  528. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.d.ts.map +0 -1
  529. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +0 -325
  530. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.d.ts.map +0 -1
  531. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +0 -58
  532. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.d.ts.map +0 -1
  533. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +0 -55
  534. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.d.ts.map +0 -1
  535. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +0 -96
  536. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.d.ts.map +0 -1
  537. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +0 -30
  538. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.d.ts.map +0 -1
  539. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +0 -10
  540. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.d.ts.map +0 -1
  541. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +0 -22
  542. package/src/platform-implementation-js/driver-common/getAccountUrlPart.d.ts.map +0 -1
  543. package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +0 -17
  544. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.d.ts.map +0 -1
  545. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +0 -33
  546. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.d.ts.map +0 -1
  547. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +0 -49
  548. package/src/platform-implementation-js/driver-common/gmailAjax.d.ts.map +0 -1
  549. package/src/platform-implementation-js/driver-common/gmailAjax.js +0 -65
  550. package/src/platform-implementation-js/driver-common/render-custom-icon.d.ts.map +0 -1
  551. package/src/platform-implementation-js/driver-common/render-custom-icon.js +0 -16
  552. package/src/platform-implementation-js/driver-common/update-icon.d.ts.map +0 -1
  553. package/src/platform-implementation-js/driver-common/update-icon.js +0 -90
  554. package/src/platform-implementation-js/lib/ErrorCollector.d.ts.map +0 -1
  555. package/src/platform-implementation-js/lib/ErrorCollector.js +0 -47
  556. package/src/platform-implementation-js/lib/Membrane.d.ts.map +0 -1
  557. package/src/platform-implementation-js/lib/Membrane.js +0 -22
  558. package/src/platform-implementation-js/lib/ScrollableContainByScreen.d.ts.map +0 -1
  559. package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +0 -30
  560. package/src/platform-implementation-js/lib/attemptWithRetries.d.ts.map +0 -1
  561. package/src/platform-implementation-js/lib/attemptWithRetries.js +0 -16
  562. package/src/platform-implementation-js/lib/common-page-communicator.d.ts.map +0 -1
  563. package/src/platform-implementation-js/lib/common-page-communicator.js +0 -137
  564. package/src/platform-implementation-js/lib/delay-asap.d.ts.map +0 -1
  565. package/src/platform-implementation-js/lib/delay-asap.js +0 -12
  566. package/src/platform-implementation-js/lib/delay-idle.d.ts.map +0 -1
  567. package/src/platform-implementation-js/lib/delay-idle.js +0 -16
  568. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.d.ts.map +0 -1
  569. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +0 -36
  570. package/src/platform-implementation-js/lib/dom/generic-button-view.d.ts.map +0 -1
  571. package/src/platform-implementation-js/lib/dom/generic-button-view.js +0 -39
  572. package/src/platform-implementation-js/lib/dom/get-insert-before-element.d.ts.map +0 -1
  573. package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +0 -39
  574. package/src/platform-implementation-js/lib/dom/insert-element-in-order.d.ts.map +0 -1
  575. package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +0 -38
  576. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.d.ts.map +0 -1
  577. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +0 -12
  578. package/src/platform-implementation-js/lib/dom/make-element-child-stream.d.ts.map +0 -1
  579. package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +0 -79
  580. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.d.ts.map +0 -1
  581. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +0 -28
  582. package/src/platform-implementation-js/lib/dom/make-element-view-stream.d.ts.map +0 -1
  583. package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +0 -15
  584. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.d.ts.map +0 -1
  585. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +0 -15
  586. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.d.ts.map +0 -1
  587. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +0 -5
  588. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.d.ts.map +0 -1
  589. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +0 -39
  590. package/src/platform-implementation-js/lib/dom/parentNodes.d.ts.map +0 -1
  591. package/src/platform-implementation-js/lib/dom/parentNodes.js +0 -8
  592. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.d.ts.map +0 -1
  593. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +0 -6
  594. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.d.ts.map +0 -1
  595. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +0 -22
  596. package/src/platform-implementation-js/lib/dom/simulate-key.d.ts.map +0 -1
  597. package/src/platform-implementation-js/lib/dom/simulate-key.js +0 -46
  598. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.d.ts.map +0 -1
  599. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +0 -16
  600. package/src/platform-implementation-js/lib/dom/trigger-relay-event.d.ts.map +0 -1
  601. package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +0 -7
  602. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.d.ts.map +0 -1
  603. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +0 -25
  604. package/src/platform-implementation-js/lib/fake-window-resize.d.ts.map +0 -1
  605. package/src/platform-implementation-js/lib/fake-window-resize.js +0 -5
  606. package/src/platform-implementation-js/lib/from-event-target-capture.d.ts.map +0 -1
  607. package/src/platform-implementation-js/lib/from-event-target-capture.js +0 -12
  608. package/src/platform-implementation-js/lib/fromEventsWithOptions.d.ts.map +0 -1
  609. package/src/platform-implementation-js/lib/fromEventsWithOptions.js +0 -10
  610. package/src/platform-implementation-js/lib/handler-registry.d.ts.map +0 -1
  611. package/src/platform-implementation-js/lib/handler-registry.js +0 -67
  612. package/src/platform-implementation-js/lib/idMap.d.ts.map +0 -1
  613. package/src/platform-implementation-js/lib/idMap.js +0 -45
  614. package/src/platform-implementation-js/lib/imageRequest.d.ts.map +0 -1
  615. package/src/platform-implementation-js/lib/imageRequest.js +0 -8
  616. package/src/platform-implementation-js/lib/incrementName.d.ts.map +0 -1
  617. package/src/platform-implementation-js/lib/incrementName.js +0 -7
  618. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts.map +0 -1
  619. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +0 -14
  620. package/src/platform-implementation-js/lib/inject-script.d.ts.map +0 -1
  621. package/src/platform-implementation-js/lib/inject-script.js +0 -33
  622. package/src/platform-implementation-js/lib/is-valid-app-id.d.ts.map +0 -1
  623. package/src/platform-implementation-js/lib/is-valid-app-id.js +0 -27
  624. package/src/platform-implementation-js/lib/is-valid-email.d.ts.map +0 -1
  625. package/src/platform-implementation-js/lib/is-valid-email.js +0 -14
  626. package/src/platform-implementation-js/lib/isNotNil.d.ts.map +0 -1
  627. package/src/platform-implementation-js/lib/isNotNil.js +0 -5
  628. package/src/platform-implementation-js/lib/isStreakAppId.d.ts.map +0 -1
  629. package/src/platform-implementation-js/lib/isStreakAppId.js +0 -11
  630. package/src/platform-implementation-js/lib/logger.d.ts.map +0 -1
  631. package/src/platform-implementation-js/lib/logger.js +0 -441
  632. package/src/platform-implementation-js/lib/persistent-queue.d.ts.map +0 -1
  633. package/src/platform-implementation-js/lib/persistent-queue.js +0 -107
  634. package/src/platform-implementation-js/lib/safe-event-emitter.d.ts.map +0 -1
  635. package/src/platform-implementation-js/lib/safe-event-emitter.js +0 -17
  636. package/src/platform-implementation-js/lib/stopper-pool.d.ts.map +0 -1
  637. package/src/platform-implementation-js/lib/stopper-pool.js +0 -41
  638. package/src/platform-implementation-js/lib/stream-wait-for.d.ts.map +0 -1
  639. package/src/platform-implementation-js/lib/stream-wait-for.js +0 -30
  640. package/src/platform-implementation-js/lib/wait-for.d.ts.map +0 -1
  641. package/src/platform-implementation-js/lib/wait-for.js +0 -28
  642. package/src/platform-implementation-js/lib/waitForAsync.d.ts.map +0 -1
  643. package/src/platform-implementation-js/lib/waitForAsync.js +0 -19
  644. package/src/platform-implementation-js/namespaces/app-menu.d.ts +0 -38
  645. package/src/platform-implementation-js/namespaces/app-menu.d.ts.map +0 -1
  646. package/src/platform-implementation-js/namespaces/app-menu.js +0 -31
  647. package/src/platform-implementation-js/namespaces/butter-bar.d.ts.map +0 -1
  648. package/src/platform-implementation-js/namespaces/butter-bar.js +0 -163
  649. package/src/platform-implementation-js/views/SimpleElementView.d.ts.map +0 -1
  650. package/src/platform-implementation-js/views/SimpleElementView.js +0 -16
  651. package/src/platform-implementation-js/views/app-menu-item-view.d.ts +0 -23
  652. package/src/platform-implementation-js/views/app-menu-item-view.d.ts.map +0 -1
  653. package/src/platform-implementation-js/views/app-menu-item-view.js +0 -257
  654. package/src/platform-implementation-js/views/collapsible-panel-view.d.ts +0 -50
  655. package/src/platform-implementation-js/views/collapsible-panel-view.d.ts.map +0 -1
  656. package/src/platform-implementation-js/views/collapsible-panel-view.js +0 -222
  657. package/src/platform-implementation-js/views/compose-button-view.d.ts.map +0 -1
  658. package/src/platform-implementation-js/views/compose-button-view.js +0 -45
  659. package/src/platform-implementation-js/views/compose-view.d.ts.map +0 -1
  660. package/src/platform-implementation-js/views/compose-view.js +0 -312
  661. package/src/platform-implementation-js/views/keyboard-shortcut-handle.d.ts.map +0 -1
  662. package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +0 -14
  663. package/src/platform-implementation-js/views/nav-item-view.d.ts +0 -24
  664. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.d.ts.map +0 -1
  665. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +0 -39
  666. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.d.ts.map +0 -1
  667. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +0 -98
  668. package/src/platform-implementation-js/widgets/buttons/dropdown-view.d.ts.map +0 -1
  669. package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +0 -122
@@ -1,34 +1,36 @@
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 _find = _interopRequireDefault(require("lodash/find"));
10
- var _findIndex = _interopRequireDefault(require("lodash/findIndex"));
11
- var _ud = require("ud");
12
- var _autoHtml = _interopRequireDefault(require("auto-html"));
13
- var _asap = _interopRequireDefault(require("asap"));
14
- var _kefir = _interopRequireDefault(require("kefir"));
15
- var _kefirBus = _interopRequireDefault(require("kefir-bus"));
16
- var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
17
- var _orderManager = _interopRequireDefault(require("order-manager"));
18
- var _react = _interopRequireDefault(require("react"));
19
- var _reactDom = _interopRequireDefault(require("react-dom"));
20
- var _AppSidebar = _interopRequireDefault(require("../../../../../driver-common/sidebar/AppSidebar"));
21
- var _gmailElementGetter = _interopRequireDefault(require("../../../gmail-element-getter"));
22
- var _idMap = _interopRequireDefault(require("../../../../../lib/idMap"));
23
- var _incrementName = _interopRequireDefault(require("../../../../../lib/incrementName"));
24
- var _querySelectorOrFail = _interopRequireDefault(require("../../../../../lib/dom/querySelectorOrFail"));
25
- var _makeMutationObserverChunkedStream = _interopRequireDefault(require("../../../../../lib/dom/make-mutation-observer-chunked-stream"));
26
- var _makeElementChildStream = _interopRequireDefault(require("../../../../../lib/dom/make-element-child-stream"));
27
- var _simulateMouseEvent = require("../../../../../lib/dom/simulate-mouse-event");
28
- var _fakeWindowResize = _interopRequireDefault(require("../../../../../lib/fake-window-resize"));
29
- var _addCompanionThreadIconArea = _interopRequireDefault(require("./add-companion-thread-icon-area"));
30
- var _addCompanionGlobalIconArea = _interopRequireDefault(require("./add-companion-global-icon-area"));
31
- var _addToIconArea = _interopRequireDefault(require("./add-to-icon-area"));
1
+ /* @flow */
2
+
3
+ import find from 'lodash/find';
4
+ import findIndex from 'lodash/findIndex';
5
+ import { defn } from 'ud';
6
+ import autoHtml from 'auto-html';
7
+ import asap from 'asap';
8
+ import Kefir from 'kefir';
9
+ import kefirBus from 'kefir-bus';
10
+ import type { Bus } from 'kefir-bus';
11
+ import kefirStopper from 'kefir-stopper';
12
+ import OrderManager from 'order-manager';
13
+
14
+ import React from 'react';
15
+ import ReactDOM from 'react-dom';
16
+
17
+ import AppSidebar from '../../../../../driver-common/sidebar/AppSidebar';
18
+ import type { PanelDescriptor } from '../../../../../driver-common/sidebar/AppSidebar';
19
+
20
+ import type GmailDriver from '../../../gmail-driver';
21
+ import GmailElementGetter from '../../../gmail-element-getter';
22
+ import idMap from '../../../../../lib/idMap';
23
+ import incrementName from '../../../../../lib/incrementName';
24
+ import querySelector from '../../../../../lib/dom/querySelectorOrFail';
25
+ import makeMutationObserverChunkedStream from '../../../../../lib/dom/make-mutation-observer-chunked-stream';
26
+ import makeElementChildStream from '../../../../../lib/dom/make-element-child-stream';
27
+ import { simulateClick } from '../../../../../lib/dom/simulate-mouse-event';
28
+ import fakeWindowResize from '../../../../../lib/fake-window-resize';
29
+
30
+ import addCompanionThreadIconArea from './add-companion-thread-icon-area';
31
+ import addCompanionGlobalIconArea from './add-companion-global-icon-area';
32
+ import addToIconArea from './add-to-icon-area';
33
+
32
34
  const ACTIVE_ADD_ON_ICON_SELECTOR = '.aT5-aOt-I-KO';
33
35
  const COMPANION_SIDEBAR_CONTENT_CLOSED_SHADOW_CLASS = 'brC-brG-btc';
34
36
 
@@ -37,54 +39,75 @@ const COMPANION_SIDEBAR_CONTENT_CLOSED_SHADOW_CLASS = 'brC-brG-btc';
37
39
  // instances (including from other extensions) communicate with this Primary
38
40
  // through DOM events.
39
41
  class GmailAppSidebarPrimary {
42
+ _stopper = kefirStopper();
43
+
44
+ // There could be multiple InboxSDK instances (and therefore GmailDrivers)
45
+ // talking to this Primary, so we shouldn't privilege the specific GmailDriver
46
+ // that happened to create the Primary. Only use this GmailDriver for
47
+ // logging-related functionality!
48
+ _driver: GmailDriver;
49
+
40
50
  // This Primary has an identifier used by the DOM events to specify they're
41
51
  // talking to this Primary. This leaves us some room for having multiple
42
52
  // Primary instances (representing different visual locations in Gmail) or
43
53
  // multiple classes that make use of the same DOM events, but we don't make
44
54
  // use of that now. Mainly I didn't want to risk baking in the singleton
45
55
  // nature too deeply; that always seems to bite me.
56
+ _instanceId: string = `${Date.now()}-${Math.random()}`;
46
57
 
47
- constructor(driver, companionSidebarContentContainerElement) {
48
- (0, _defineProperty2.default)(this, "_stopper", (0, _kefirStopper.default)());
49
- (0, _defineProperty2.default)(this, "_instanceId", `${Date.now()}-${Math.random()}`);
50
- (0, _defineProperty2.default)(this, "_instanceIdsToDescriptors", new Map());
51
- (0, _defineProperty2.default)(this, "_threadSidebarComponent", null);
52
- (0, _defineProperty2.default)(this, "_threadIconArea", null);
53
- (0, _defineProperty2.default)(this, "_globalIconArea", null);
54
- (0, _defineProperty2.default)(this, "_globalButtonContainers", new Map());
55
- (0, _defineProperty2.default)(this, "_threadButtonContainers", new Map());
56
- (0, _defineProperty2.default)(this, "_contentContainers", new Map());
57
- (0, _defineProperty2.default)(this, "_threadSidebarContainerEl", null);
58
- (0, _defineProperty2.default)(this, "_currentIds", new Set());
59
- (0, _defineProperty2.default)(this, "_orderManager", new _orderManager.default({
60
- get() {
61
- try {
62
- return JSON.parse(global.localStorage.getItem('inboxsdk__sidebar_ordering') || 'null');
63
- } catch (err) {
64
- console.error('failed to read sidebar order data', err); //eslint-disable-line no-console
65
- }
66
- },
58
+ _companionSidebarContentContainerEl: HTMLElement;
59
+ _instanceIdsToDescriptors: Map<string, Object> = new Map();
67
60
 
68
- set(data) {
69
- try {
70
- global.localStorage.setItem('inboxsdk__sidebar_ordering', JSON.stringify(data));
71
- } catch (err) {
72
- console.error('failed to set sidebar order data', err); //eslint-disable-line no-console
73
- }
61
+ _threadSidebarComponent: ?AppSidebar = null;
62
+
63
+ _threadIconArea: ?HTMLElement = null;
64
+ _globalIconArea: ?HTMLElement = null;
65
+
66
+ _globalButtonContainers: Map<string, HTMLElement> = new Map();
67
+ _threadButtonContainers: Map<string, HTMLElement> = new Map();
68
+ _contentContainers: Map<string, HTMLElement> = new Map();
69
+
70
+ _threadSidebarContainerEl: ?HTMLElement = null;
71
+ _companionSidebarOuterWrapper: HTMLElement;
72
+
73
+ _currentIds: Set<string> = new Set();
74
+
75
+ _orderManager = new OrderManager<PanelDescriptor>({
76
+ get() {
77
+ try {
78
+ return JSON.parse(
79
+ global.localStorage.getItem('inboxsdk__sidebar_ordering') || 'null'
80
+ );
81
+ } catch (err) {
82
+ console.error('failed to read sidebar order data', err); //eslint-disable-line no-console
74
83
  }
75
- }));
76
- (0, _defineProperty2.default)(this, "_updateHighlightedAppThreadIconBus", (0, _kefirBus.default)());
77
- (0, _defineProperty2.default)(this, "_appSidebarRefSetter", threadSidebarComponent => {
78
- if (threadSidebarComponent) {
79
- this._threadSidebarComponent = threadSidebarComponent;
84
+ },
85
+ set(data) {
86
+ try {
87
+ global.localStorage.setItem(
88
+ 'inboxsdk__sidebar_ordering',
89
+ JSON.stringify(data)
90
+ );
91
+ } catch (err) {
92
+ console.error('failed to set sidebar order data', err); //eslint-disable-line no-console
80
93
  }
81
- });
82
- (0, _defineProperty2.default)(this, "_closeButton", null);
94
+ },
95
+ });
96
+
97
+ _containerProp: () => HTMLElement;
98
+ _updateHighlightedAppThreadIconBus: Bus<null> = kefirBus();
99
+
100
+ constructor(
101
+ driver: GmailDriver,
102
+ companionSidebarContentContainerElement: HTMLElement
103
+ ) {
83
104
  this._driver = driver;
84
- this._companionSidebarContentContainerEl = companionSidebarContentContainerElement;
105
+ this._companionSidebarContentContainerEl =
106
+ companionSidebarContentContainerElement;
85
107
  this._setupElement();
86
108
  }
87
- getInstanceId() {
109
+
110
+ getInstanceId(): string {
88
111
  return this._instanceId;
89
112
  }
90
113
 
@@ -98,207 +121,310 @@ class GmailAppSidebarPrimary {
98
121
  // This value controls whether the app sidebar should automatically open
99
122
  // itself when available when the chat sidebar isn't present. It's only set
100
123
  // if the user interacts with the app sidebar button.
101
- _getShouldGlobalAppSidebarOpen() {
102
- return global.localStorage.getItem('inboxsdk__global_app_sidebar_should_open') === 'true';
124
+ _getShouldGlobalAppSidebarOpen(): boolean {
125
+ return (
126
+ global.localStorage.getItem(
127
+ 'inboxsdk__global_app_sidebar_should_open'
128
+ ) === 'true'
129
+ );
103
130
  }
104
- _setShouldGlobalAppSidebarOpen(open) {
131
+
132
+ _setShouldGlobalAppSidebarOpen(open: boolean) {
105
133
  try {
106
- global.localStorage.setItem('inboxsdk__global_app_sidebar_should_open', String(open));
134
+ global.localStorage.setItem(
135
+ 'inboxsdk__global_app_sidebar_should_open',
136
+ String(open)
137
+ );
107
138
  } catch (err) {
108
139
  console.error('error saving', err); //eslint-disable-line no-console
109
140
  }
110
141
  }
111
142
 
112
- _getShouldThreadAppSidebarOpen() {
113
- return global.localStorage.getItem('inboxsdk__thread_app_sidebar_should_open') !== 'false';
143
+ _getShouldThreadAppSidebarOpen(): boolean {
144
+ return (
145
+ global.localStorage.getItem(
146
+ 'inboxsdk__thread_app_sidebar_should_open'
147
+ ) !== 'false'
148
+ );
114
149
  }
115
- _setShouldThreadAppSidebarOpen(open) {
150
+
151
+ _setShouldThreadAppSidebarOpen(open: boolean) {
116
152
  try {
117
- global.localStorage.setItem('inboxsdk__thread_app_sidebar_should_open', String(open));
153
+ global.localStorage.setItem(
154
+ 'inboxsdk__thread_app_sidebar_should_open',
155
+ String(open)
156
+ );
118
157
  } catch (err) {
119
158
  console.error('error saving', err); //eslint-disable-line no-console
120
159
  }
121
160
  }
122
161
 
123
- _createThreadSidebarIfNeeded() {
162
+ _createThreadSidebarIfNeeded(): HTMLElement {
124
163
  if (this._threadSidebarContainerEl) return this._threadSidebarContainerEl;
125
- const threadSidebarContainerEl = this._threadSidebarContainerEl = document.createElement('div');
126
- threadSidebarContainerEl.classList.add('thread_app_sidebar', (0, _idMap.default)('app_sidebar_container'), 'addon_sidebar');
127
- this._companionSidebarContentContainerEl.insertBefore(threadSidebarContainerEl, this._companionSidebarContentContainerEl.firstElementChild);
164
+
165
+ const threadSidebarContainerEl = (this._threadSidebarContainerEl =
166
+ document.createElement('div'));
167
+ threadSidebarContainerEl.classList.add(
168
+ 'thread_app_sidebar',
169
+ idMap('app_sidebar_container'),
170
+ 'addon_sidebar'
171
+ );
172
+
173
+ this._companionSidebarContentContainerEl.insertBefore(
174
+ threadSidebarContainerEl,
175
+ this._companionSidebarContentContainerEl.firstElementChild
176
+ );
177
+
128
178
  this._containerProp = () => threadSidebarContainerEl;
129
179
 
130
180
  // Kefir flow type def has wrong type for bufferWithTimeOrCount
131
- this._updateHighlightedAppThreadIconBus.bufferWithTimeOrCount(150, 100).filter(events => events.length > 0).takeUntilBy(this._stopper).onValue(() => {
132
- // Before touching this code, make sure you understand the meaning of the clientRect
133
- // values and of scrollTop. In particular, make sure you understand the distinction of
134
- // absolute (the scroll[Top|Bottom|Height] values) vs relative (the BoundingRect top
135
- // and bottom values) scroll values.
136
- // https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect
137
- // https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollTop
138
-
139
- const containerBoundingBox = threadSidebarContainerEl.getBoundingClientRect();
140
- const titleBars = Array.from(threadSidebarContainerEl.querySelectorAll(`.${(0, _idMap.default)('app_sidebar_content_panel')}.${(0, _idMap.default)('expanded')} .${(0, _idMap.default)('app_sidebar_content_panel_top_line')}`));
141
- const absoluteScrollOfViewportTop = threadSidebarContainerEl.scrollTop;
142
- const absoluteScrollOfViewportMidpoint = absoluteScrollOfViewportTop + containerBoundingBox.height / 2;
143
- let titleBar = titleBars.find(t => {
144
- const tBoundingBox = t.getBoundingClientRect();
145
- const relativeScrollOfTitleBottom = tBoundingBox.bottom;
146
- const absoluteScrollOfTitleBottom = relativeScrollOfTitleBottom + absoluteScrollOfViewportTop;
147
-
148
- // Return true for an element that is below the top of the viewport but above its midpoint
149
- return absoluteScrollOfTitleBottom > absoluteScrollOfViewportTop && absoluteScrollOfTitleBottom < absoluteScrollOfViewportMidpoint;
150
- });
181
+ (this._updateHighlightedAppThreadIconBus: any)
182
+ .bufferWithTimeOrCount(150, 100)
183
+ .filter((events) => events.length > 0)
184
+ .takeUntilBy(this._stopper)
185
+ .onValue(() => {
186
+ // Before touching this code, make sure you understand the meaning of the clientRect
187
+ // values and of scrollTop. In particular, make sure you understand the distinction of
188
+ // absolute (the scroll[Top|Bottom|Height] values) vs relative (the BoundingRect top
189
+ // and bottom values) scroll values.
190
+ // https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect
191
+ // https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollTop
192
+
193
+ const containerBoundingBox =
194
+ threadSidebarContainerEl.getBoundingClientRect();
195
+ const titleBars = Array.from(
196
+ threadSidebarContainerEl.querySelectorAll(
197
+ `.${idMap('app_sidebar_content_panel')}.${idMap(
198
+ 'expanded'
199
+ )} .${idMap('app_sidebar_content_panel_top_line')}`
200
+ )
201
+ );
202
+
203
+ const absoluteScrollOfViewportTop = threadSidebarContainerEl.scrollTop;
204
+ const absoluteScrollOfViewportMidpoint =
205
+ absoluteScrollOfViewportTop + containerBoundingBox.height / 2;
206
+
207
+ let titleBar = titleBars.find((t) => {
208
+ const tBoundingBox = t.getBoundingClientRect();
151
209
 
152
- // If titleBar is falsey then there isn't a title element in the top half of the viewport.
153
- // In this case, find the first title element above the viewport.
154
- if (!titleBar) {
155
- // We make the assumption here that ordering of the elements in titleBars matches the
156
- // ordering of how they appear in the sidebar (i.e. their ordering from top to bottom).
157
- let lastElementAboveViewPort;
158
- for (let i = 0; i < titleBars.length; i++) {
159
- const tElement = titleBars[i];
160
- const tBoundingBox = tElement.getBoundingClientRect();
161
210
  const relativeScrollOfTitleBottom = tBoundingBox.bottom;
162
- if (relativeScrollOfTitleBottom < 0) {
163
- lastElementAboveViewPort = tElement;
164
- } else if (relativeScrollOfTitleBottom > 0) {
165
- break;
211
+ const absoluteScrollOfTitleBottom =
212
+ relativeScrollOfTitleBottom + absoluteScrollOfViewportTop;
213
+
214
+ // Return true for an element that is below the top of the viewport but above its midpoint
215
+ return (
216
+ absoluteScrollOfTitleBottom > absoluteScrollOfViewportTop &&
217
+ absoluteScrollOfTitleBottom < absoluteScrollOfViewportMidpoint
218
+ );
219
+ });
220
+
221
+ // If titleBar is falsey then there isn't a title element in the top half of the viewport.
222
+ // In this case, find the first title element above the viewport.
223
+ if (!titleBar) {
224
+ // We make the assumption here that ordering of the elements in titleBars matches the
225
+ // ordering of how they appear in the sidebar (i.e. their ordering from top to bottom).
226
+ let lastElementAboveViewPort;
227
+ for (let i = 0; i < titleBars.length; i++) {
228
+ const tElement = titleBars[i];
229
+ const tBoundingBox = tElement.getBoundingClientRect();
230
+
231
+ const relativeScrollOfTitleBottom = tBoundingBox.bottom;
232
+ if (relativeScrollOfTitleBottom < 0) {
233
+ lastElementAboveViewPort = tElement;
234
+ } else if (relativeScrollOfTitleBottom > 0) {
235
+ break;
236
+ }
166
237
  }
238
+
239
+ titleBar = lastElementAboveViewPort;
167
240
  }
168
- titleBar = lastElementAboveViewPort;
169
- }
170
- if (titleBar) {
171
- const instanceId = titleBar.getAttribute('data-instance-id');
172
- const appName = titleBar.getAttribute('data-app-name');
173
- if (!appName) return;
174
- const appButton = this._threadButtonContainers.get(appName);
175
- if (!appButton || !this._threadIconArea) return;
176
- const activeButtonContainer = this._threadIconArea.querySelector('.sidebar_button_container_active');
177
- if (activeButtonContainer) {
178
- activeButtonContainer.classList.remove('sidebar_button_container_active');
241
+
242
+ if (titleBar) {
243
+ const instanceId = titleBar.getAttribute('data-instance-id');
244
+ const appName = titleBar.getAttribute('data-app-name');
245
+ if (!appName) return;
246
+ const appButton = this._threadButtonContainers.get(appName);
247
+ if (!appButton || !this._threadIconArea) return;
248
+
249
+ const activeButtonContainer = this._threadIconArea.querySelector(
250
+ '.sidebar_button_container_active'
251
+ );
252
+ if (activeButtonContainer) {
253
+ activeButtonContainer.classList.remove(
254
+ 'sidebar_button_container_active'
255
+ );
256
+ }
257
+
258
+ appButton.classList.add('sidebar_button_container_active');
179
259
  }
180
- appButton.classList.add('sidebar_button_container_active');
181
- }
182
- });
260
+ });
183
261
 
184
262
  //listen for scroll and update active icon if needed
185
- this._updateHighlightedAppThreadIconBus.plug(_kefir.default.fromEvents(threadSidebarContainerEl, 'scroll').map(() => null));
263
+ this._updateHighlightedAppThreadIconBus.plug(
264
+ Kefir.fromEvents(threadSidebarContainerEl, 'scroll').map(() => null)
265
+ );
186
266
 
187
267
  // handle rendering thread sidebar contents
188
268
  this._renderThreadSidebar();
189
269
  return threadSidebarContainerEl;
190
270
  }
271
+
191
272
  _renderThreadSidebarIfPresent() {
192
273
  if (!this._threadSidebarContainerEl) {
193
274
  return;
194
275
  }
195
276
  this._renderThreadSidebar();
196
277
  }
197
- _renderThreadSidebar() {
278
+
279
+ _appSidebarRefSetter: (el: ?AppSidebar) => void = (
280
+ threadSidebarComponent
281
+ ) => {
282
+ if (threadSidebarComponent) {
283
+ this._threadSidebarComponent = threadSidebarComponent;
284
+ }
285
+ };
286
+
287
+ _renderThreadSidebar(): Promise<AppSidebar> {
198
288
  const threadSidebarContainerEl = this._threadSidebarContainerEl;
199
289
  if (!threadSidebarContainerEl) {
200
- throw new Error('_renderThreadSidebar should not be called when _threadSidebarContainerEl is unset');
290
+ throw new Error(
291
+ '_renderThreadSidebar should not be called when _threadSidebarContainerEl is unset'
292
+ );
201
293
  }
202
- return new Promise(resolve => {
203
- _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_AppSidebar.default, {
204
- ref: this._appSidebarRefSetter,
205
- panels: this._orderManager.getOrderedItems().map(x => x.value),
206
- onMoveEnd: (newList, movedItem, oldIndex, newIndex) => {
207
- this._orderManager.moveItem(oldIndex, newIndex);
208
- this._renderThreadSidebar();
209
- },
210
- onExpandedToggle: () => {
294
+ return new Promise((resolve) => {
295
+ ReactDOM.render(
296
+ <AppSidebar
297
+ ref={this._appSidebarRefSetter}
298
+ panels={this._orderManager.getOrderedItems().map((x) => x.value)}
299
+ onMoveEnd={(newList, movedItem, oldIndex, newIndex) => {
300
+ this._orderManager.moveItem(oldIndex, newIndex);
301
+ this._renderThreadSidebar();
302
+ }}
303
+ onExpandedToggle={() => {
304
+ this._updateHighlightedAppThreadIconBus.emit(null);
305
+ }}
306
+ container={this._containerProp}
307
+ />,
308
+ threadSidebarContainerEl,
309
+ () => {
310
+ if (!this._threadSidebarComponent) {
311
+ throw new Error('Should not happen');
312
+ }
313
+ resolve(this._threadSidebarComponent);
211
314
  this._updateHighlightedAppThreadIconBus.emit(null);
212
- },
213
- container: this._containerProp
214
- }), threadSidebarContainerEl, () => {
215
- if (!this._threadSidebarComponent) {
216
- throw new Error('Should not happen');
217
315
  }
218
- resolve(this._threadSidebarComponent);
219
- this._updateHighlightedAppThreadIconBus.emit(null);
220
- });
316
+ );
221
317
  });
222
318
  }
223
- _getActiveButtonContainer() {
319
+
320
+ _getActiveButtonContainer(): ?HTMLElement {
224
321
  let activeButtonContainer;
225
322
  if (this._globalIconArea) {
226
- activeButtonContainer = this._globalIconArea.querySelector('.sidebar_button_container_active');
323
+ activeButtonContainer = this._globalIconArea.querySelector(
324
+ '.sidebar_button_container_active'
325
+ );
227
326
  }
228
327
  if (!activeButtonContainer && this._threadIconArea) {
229
- activeButtonContainer = this._threadIconArea.querySelector('.sidebar_button_container_active');
328
+ activeButtonContainer = this._threadIconArea.querySelector(
329
+ '.sidebar_button_container_active'
330
+ );
230
331
  }
231
332
  return activeButtonContainer;
232
333
  }
233
- _addButton(iconArea, event, isGlobal) {
234
- var _this = this;
334
+
335
+ _closeButton: ?(userClick: boolean) => void = null;
336
+
337
+ _addButton(iconArea: HTMLElement, event: Object, isGlobal: boolean) {
235
338
  // we put adding the content panel icon in the iconArea in an asap so that we
236
339
  // get consistent ordering. The ordering of the icons is based on the position of the FIRST
237
340
  // panel with that app name. This means we need to wait for all the panels for a particular appName
238
341
  // to be added first, and then we can get the correct position
239
- (0, _asap.default)(() => {
342
+ asap(() => {
240
343
  if (!iconArea) throw new Error('should not happen');
344
+
241
345
  const instanceId = event.detail.instanceId;
242
- const iconUrl = isGlobal && event.detail.iconUrl ? event.detail.iconUrl : event.detail.appIconUrl;
346
+ const iconUrl =
347
+ isGlobal && event.detail.iconUrl
348
+ ? event.detail.iconUrl
349
+ : event.detail.appIconUrl;
243
350
  const appName = event.detail.appName;
244
351
  const iconClass = event.detail.iconClass || '';
245
352
 
246
353
  // If there's an existing button for the app, then just increment its
247
354
  // data-count attribute instead of adding a new button.
248
- const existingButtonContainer = isGlobal ? this._globalButtonContainers.get(appName) : this._threadButtonContainers.get(appName);
355
+ const existingButtonContainer = isGlobal
356
+ ? this._globalButtonContainers.get(appName)
357
+ : this._threadButtonContainers.get(appName);
358
+
249
359
  let buttonContainer;
250
360
  if (existingButtonContainer) {
251
- const currentCount = Number(existingButtonContainer.getAttribute('data-count')) || 1;
252
- existingButtonContainer.setAttribute('data-count', String(currentCount + 1));
361
+ const currentCount =
362
+ Number(existingButtonContainer.getAttribute('data-count')) || 1;
363
+ existingButtonContainer.setAttribute(
364
+ 'data-count',
365
+ String(currentCount + 1)
366
+ );
253
367
  buttonContainer = existingButtonContainer;
254
368
  } else {
255
369
  buttonContainer = document.createElement('div');
256
- buttonContainer.className = (0, _idMap.default)('sidebar_button_container');
370
+ buttonContainer.className = idMap('sidebar_button_container');
257
371
  buttonContainer.setAttribute('data-app-name', appName);
258
- buttonContainer.innerHTML = (0, _autoHtml.default)`
372
+ buttonContainer.innerHTML = autoHtml`
259
373
  <button class="inboxsdk__button_icon ${iconClass}" type="button" data-tooltip="${appName}">
260
374
  <img class="inboxsdk__button_iconImg" src="${iconUrl}">
261
375
  </button>
262
376
  <div class="inboxsdk__button_selectedIndicator"></div>
263
377
  `;
378
+
264
379
  if (event.detail.primaryColor) {
265
- (0, _querySelectorOrFail.default)(buttonContainer, '.inboxsdk__button_selectedIndicator').style.backgroundColor = event.detail.primaryColor;
380
+ querySelector(
381
+ buttonContainer,
382
+ '.inboxsdk__button_selectedIndicator'
383
+ ).style.backgroundColor = event.detail.primaryColor;
266
384
  }
385
+
267
386
  if (isGlobal) {
268
387
  this._globalButtonContainers.set(appName, buttonContainer);
269
388
  } else {
270
389
  this._threadButtonContainers.set(appName, buttonContainer);
271
390
  }
272
- const activate = function () {
273
- let dontScrollIntoView = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
274
- const activeButtonContainer = _this._getActiveButtonContainer();
391
+
392
+ const activate = (dontScrollIntoView = false) => {
393
+ const activeButtonContainer = this._getActiveButtonContainer();
394
+
275
395
  if (activeButtonContainer === buttonContainer) {
276
396
  // button was clicked while its panel was open, so close it.
277
- if (!_this._closeButton) throw new Error();
278
- _this._closeButton(true);
397
+ if (!this._closeButton) throw new Error();
398
+ this._closeButton(true);
279
399
  } else {
280
400
  // button was clicked while its own panel wasn't open, so open it.
281
401
 
282
- if (_this._closeButton) {
283
- _this._closeButton(true);
402
+ if (this._closeButton) {
403
+ this._closeButton(true);
284
404
  }
285
- if (isGlobal) _this._setShouldGlobalAppSidebarOpen(true);else _this._setShouldThreadAppSidebarOpen(true);
286
- _this._openSidebarAndActivateButton(buttonContainer, isGlobal);
405
+
406
+ if (isGlobal) this._setShouldGlobalAppSidebarOpen(true);
407
+ else this._setShouldThreadAppSidebarOpen(true);
408
+
409
+ this._openSidebarAndActivateButton(buttonContainer, isGlobal);
410
+
287
411
  if (isGlobal) {
288
- const contentEl = _this._contentContainers.get(appName);
412
+ const contentEl = this._contentContainers.get(appName);
289
413
  if (contentEl) contentEl.style.display = '';
290
- _this._companionSidebarContentContainerEl.classList.add('companion_global_app_sidebar_visible');
414
+ this._companionSidebarContentContainerEl.classList.add(
415
+ 'companion_global_app_sidebar_visible'
416
+ );
291
417
 
292
418
  // let app listen for activate event
293
- document.body.dispatchEvent(new CustomEvent('inboxsdkSidebarPanelActivated', {
294
- bubbles: true,
295
- cancelable: false,
296
- detail: {
297
- instanceId
298
- }
299
- }));
419
+ ((document.body: any): HTMLElement).dispatchEvent(
420
+ new CustomEvent('inboxsdkSidebarPanelActivated', {
421
+ bubbles: true,
422
+ cancelable: false,
423
+ detail: { instanceId },
424
+ })
425
+ );
300
426
  } else {
301
- const threadSidebarComponent = _this._threadSidebarComponent;
427
+ const threadSidebarComponent = this._threadSidebarComponent;
302
428
  if (!threadSidebarComponent) {
303
429
  throw new Error('sidebar not mounted');
304
430
  }
@@ -307,45 +433,58 @@ class GmailAppSidebarPrimary {
307
433
  threadSidebarComponent.scrollPanelIntoView(instanceId, true);
308
434
  }
309
435
  }
310
- _this._closeButton = userClick => {
311
- _this._closeButton = null;
312
- const activeButtonContainer = _this._getActiveButtonContainer();
436
+
437
+ this._closeButton = (userClick: boolean) => {
438
+ this._closeButton = null;
439
+
440
+ const activeButtonContainer = this._getActiveButtonContainer();
313
441
  if (!activeButtonContainer) {
314
442
  throw new Error('Expected activeButtonContainer');
315
443
  }
316
- _this._closeSidebarAndDeactivateButton(activeButtonContainer);
444
+ this._closeSidebarAndDeactivateButton(activeButtonContainer);
445
+
317
446
  if (isGlobal) {
318
- if (userClick) _this._setShouldGlobalAppSidebarOpen(false);
319
- const contentEl = _this._contentContainers.get(appName);
447
+ if (userClick) this._setShouldGlobalAppSidebarOpen(false);
448
+
449
+ const contentEl = this._contentContainers.get(appName);
320
450
  if (contentEl) {
321
451
  contentEl.style.display = 'none';
322
452
  } else {
323
- _this._driver.getLogger().error(new Error('Unexpected: contentEl not set'));
453
+ this._driver
454
+ .getLogger()
455
+ .error(new Error('Unexpected: contentEl not set'));
324
456
  }
325
- document.body.dispatchEvent(new CustomEvent('inboxsdkSidebarPanelDeactivated', {
326
- bubbles: true,
327
- cancelable: false,
328
- detail: {
329
- instanceId
330
- }
331
- }));
457
+
458
+ ((document.body: any): HTMLElement).dispatchEvent(
459
+ new CustomEvent('inboxsdkSidebarPanelDeactivated', {
460
+ bubbles: true,
461
+ cancelable: false,
462
+ detail: { instanceId },
463
+ })
464
+ );
332
465
  } else {
333
- if (userClick) _this._setShouldThreadAppSidebarOpen(false);
466
+ if (userClick) this._setShouldThreadAppSidebarOpen(false);
334
467
  }
335
468
  //fake a window resize after closing so gmail fixes any heights that are messed up
336
- (0, _fakeWindowResize.default)();
469
+ fakeWindowResize();
337
470
  };
338
471
 
339
472
  //fake a window resize after opening so gmail fixes any heights that are messed up
340
- (0, _fakeWindowResize.default)();
473
+ fakeWindowResize();
341
474
  }
342
475
  };
343
- (0, _querySelectorOrFail.default)(buttonContainer, 'button').addEventListener('click', event => {
344
- event.stopPropagation();
345
- activate();
346
- }, true);
476
+
477
+ querySelector(buttonContainer, 'button').addEventListener(
478
+ 'click',
479
+ (event: MouseEvent) => {
480
+ event.stopPropagation();
481
+ activate();
482
+ },
483
+ true
484
+ );
485
+
347
486
  if (iconArea) {
348
- (0, _addToIconArea.default)(this._orderManager, appName, buttonContainer, iconArea);
487
+ addToIconArea(this._orderManager, appName, buttonContainer, iconArea);
349
488
  }
350
489
 
351
490
  // if we last had an SDK sidebar open then bring up the SDK sidebar when the first
@@ -354,14 +493,20 @@ class GmailAppSidebarPrimary {
354
493
  const activeButtonContainer = this._getActiveButtonContainer();
355
494
  if (isGlobal) {
356
495
  if (this._getShouldGlobalAppSidebarOpen()) {
357
- const activeButtonContainerPresentAndIsForGlobal = this._globalIconArea && activeButtonContainer && this._globalIconArea.contains(activeButtonContainer);
496
+ const activeButtonContainerPresentAndIsForGlobal =
497
+ this._globalIconArea &&
498
+ activeButtonContainer &&
499
+ this._globalIconArea.contains(activeButtonContainer);
358
500
  if (!activeButtonContainerPresentAndIsForGlobal) {
359
501
  activate(true);
360
502
  }
361
503
  }
362
504
  } else {
363
505
  if (this._getShouldThreadAppSidebarOpen()) {
364
- const activeButtonContainerPresentAndIsForThread = this._threadIconArea && activeButtonContainer && this._threadIconArea.contains(activeButtonContainer);
506
+ const activeButtonContainerPresentAndIsForThread =
507
+ this._threadIconArea &&
508
+ activeButtonContainer &&
509
+ this._threadIconArea.contains(activeButtonContainer);
365
510
  if (!activeButtonContainerPresentAndIsForThread) {
366
511
  activate(true);
367
512
  }
@@ -371,22 +516,42 @@ class GmailAppSidebarPrimary {
371
516
  }
372
517
  });
373
518
  }
374
- _removeButton(event, buttonContainers, iconArea) {
519
+
520
+ _removeButton(
521
+ event: Object,
522
+ buttonContainers: Map<string, HTMLElement>,
523
+ iconArea: ?HTMLElement
524
+ ) {
375
525
  const appName = event.detail.appName;
526
+
376
527
  const container = buttonContainers.get(appName);
377
528
  if (!iconArea || !container) {
378
- throw new Error('should not happen: tried to remove button without container or iconArea');
529
+ throw new Error(
530
+ 'should not happen: tried to remove button without container or iconArea'
531
+ );
379
532
  }
533
+
380
534
  const currentCount = Number(container.getAttribute('data-count'));
381
535
  if (currentCount <= 1) {
382
- const activeButtonContainer = iconArea.querySelector('.sidebar_button_container_active');
536
+ const activeButtonContainer = iconArea.querySelector(
537
+ '.sidebar_button_container_active'
538
+ );
383
539
  if (container === activeButtonContainer) {
384
540
  if (!this._closeButton) throw new Error();
385
541
  this._closeButton(false);
386
- this._companionSidebarOuterWrapper.classList.remove('companion_app_sidebar_wrapper_visible');
387
- this._companionSidebarContentContainerEl.classList.remove('companion_app_sidebar_visible');
388
- const contentContainer = this._companionSidebarOuterWrapper.previousElementSibling;
389
- if (contentContainer) contentContainer.classList.remove('companion_container_app_sidebar_visible');
542
+
543
+ this._companionSidebarOuterWrapper.classList.remove(
544
+ 'companion_app_sidebar_wrapper_visible'
545
+ );
546
+ this._companionSidebarContentContainerEl.classList.remove(
547
+ 'companion_app_sidebar_visible'
548
+ );
549
+ const contentContainer =
550
+ this._companionSidebarOuterWrapper.previousElementSibling;
551
+ if (contentContainer)
552
+ contentContainer.classList.remove(
553
+ 'companion_container_app_sidebar_visible'
554
+ );
390
555
  }
391
556
  container.remove();
392
557
  buttonContainers.delete(appName);
@@ -396,17 +561,39 @@ class GmailAppSidebarPrimary {
396
561
  container.setAttribute('data-count', String(currentCount - 1));
397
562
  }
398
563
  }
399
- _closeSidebarAndDeactivateButton(activeButtonContainer) {
564
+
565
+ _closeSidebarAndDeactivateButton(activeButtonContainer: HTMLElement) {
400
566
  activeButtonContainer.classList.remove('sidebar_button_container_active');
401
- this._companionSidebarOuterWrapper.classList.remove('companion_app_sidebar_wrapper_visible');
402
- this._companionSidebarContentContainerEl.classList.add(COMPANION_SIDEBAR_CONTENT_CLOSED_SHADOW_CLASS);
403
- this._companionSidebarContentContainerEl.classList.remove('companion_app_sidebar_visible', 'companion_global_app_sidebar_visible');
404
- const contentContainer = this._companionSidebarOuterWrapper.previousElementSibling;
405
- if (contentContainer) contentContainer.classList.remove('companion_container_app_sidebar_visible');
567
+ this._companionSidebarOuterWrapper.classList.remove(
568
+ 'companion_app_sidebar_wrapper_visible'
569
+ );
570
+ this._companionSidebarContentContainerEl.classList.add(
571
+ COMPANION_SIDEBAR_CONTENT_CLOSED_SHADOW_CLASS
572
+ );
573
+ this._companionSidebarContentContainerEl.classList.remove(
574
+ 'companion_app_sidebar_visible',
575
+ 'companion_global_app_sidebar_visible'
576
+ );
577
+
578
+ const contentContainer =
579
+ this._companionSidebarOuterWrapper.previousElementSibling;
580
+ if (contentContainer)
581
+ contentContainer.classList.remove(
582
+ 'companion_container_app_sidebar_visible'
583
+ );
406
584
  }
407
- _openSidebarAndActivateButton(buttonContainer, isGlobal) {
408
- const companionSidebarIconContainerEl = _gmailElementGetter.default.getCompanionSidebarIconContainerElement();
409
- if (!companionSidebarIconContainerEl) throw new Error('Could not find companion sidebar icon container element');
585
+
586
+ _openSidebarAndActivateButton(
587
+ buttonContainer: HTMLElement,
588
+ isGlobal: boolean
589
+ ) {
590
+ const companionSidebarIconContainerEl =
591
+ GmailElementGetter.getCompanionSidebarIconContainerElement();
592
+ if (!companionSidebarIconContainerEl)
593
+ throw new Error(
594
+ 'Could not find companion sidebar icon container element'
595
+ );
596
+
410
597
  const activeButtonContainer = this._getActiveButtonContainer();
411
598
  if (activeButtonContainer) {
412
599
  throw new Error('activeButtonContainer should not be true');
@@ -415,203 +602,407 @@ class GmailAppSidebarPrimary {
415
602
 
416
603
  {
417
604
  // If a gmail addon is active, close it.
418
- const nativeActiveAddOnIcon = companionSidebarIconContainerEl.querySelector(ACTIVE_ADD_ON_ICON_SELECTOR);
605
+ const nativeActiveAddOnIcon =
606
+ companionSidebarIconContainerEl.querySelector(
607
+ ACTIVE_ADD_ON_ICON_SELECTOR
608
+ );
419
609
  if (nativeActiveAddOnIcon) {
420
- (0, _simulateMouseEvent.simulateClick)(nativeActiveAddOnIcon);
610
+ simulateClick(nativeActiveAddOnIcon);
421
611
  }
422
612
  }
613
+
423
614
  buttonContainer.classList.add('sidebar_button_container_active');
424
- this._companionSidebarOuterWrapper.classList.add('companion_app_sidebar_wrapper_visible');
425
- this._companionSidebarContentContainerEl.classList.add('companion_app_sidebar_visible');
426
- this._companionSidebarContentContainerEl.classList.remove(COMPANION_SIDEBAR_CONTENT_CLOSED_SHADOW_CLASS);
427
- const contentContainer = this._companionSidebarOuterWrapper.previousElementSibling;
428
- if (contentContainer) contentContainer.classList.add('companion_container_app_sidebar_visible');
429
- if (isGlobal) this._companionSidebarContentContainerEl.classList.add('companion_global_app_sidebar_visible');
615
+ this._companionSidebarOuterWrapper.classList.add(
616
+ 'companion_app_sidebar_wrapper_visible'
617
+ );
618
+ this._companionSidebarContentContainerEl.classList.add(
619
+ 'companion_app_sidebar_visible'
620
+ );
621
+ this._companionSidebarContentContainerEl.classList.remove(
622
+ COMPANION_SIDEBAR_CONTENT_CLOSED_SHADOW_CLASS
623
+ );
624
+
625
+ const contentContainer =
626
+ this._companionSidebarOuterWrapper.previousElementSibling;
627
+ if (contentContainer)
628
+ contentContainer.classList.add('companion_container_app_sidebar_visible');
629
+ if (isGlobal)
630
+ this._companionSidebarContentContainerEl.classList.add(
631
+ 'companion_global_app_sidebar_visible'
632
+ );
430
633
  }
634
+
431
635
  _setupElement() {
432
- const companionSidebarIconContainerEl = _gmailElementGetter.default.getCompanionSidebarIconContainerElement();
433
- if (!companionSidebarIconContainerEl) throw new Error('Could not find companion sidebar icon container element');
434
- this._companionSidebarContentContainerEl.setAttribute('data-sdk-sidebar-instance-id', this._instanceId);
636
+ const companionSidebarIconContainerEl =
637
+ GmailElementGetter.getCompanionSidebarIconContainerElement();
638
+ if (!companionSidebarIconContainerEl)
639
+ throw new Error(
640
+ 'Could not find companion sidebar icon container element'
641
+ );
642
+
643
+ this._companionSidebarContentContainerEl.setAttribute(
644
+ 'data-sdk-sidebar-instance-id',
645
+ this._instanceId
646
+ );
435
647
 
436
648
  // TODO: Once the changes to the GMail DOM have been entirely ramped, drop the ternary here and
437
649
  // always get the parentElement. (Jun 20, 2018)
438
- this._companionSidebarOuterWrapper = this._companionSidebarContentContainerEl.classList.contains('bq9') ? this._companionSidebarContentContainerEl : this._companionSidebarContentContainerEl.parentElement;
650
+ this._companionSidebarOuterWrapper =
651
+ this._companionSidebarContentContainerEl.classList.contains('bq9')
652
+ ? this._companionSidebarContentContainerEl
653
+ : (this._companionSidebarContentContainerEl.parentElement: any);
654
+
439
655
  if (!this._companionSidebarOuterWrapper) {
440
- throw new Error('should not happen: failed to find companionSidebarOuterWrapper');
656
+ throw new Error(
657
+ 'should not happen: failed to find companionSidebarOuterWrapper'
658
+ );
441
659
  }
442
- const contentContainer = this._companionSidebarOuterWrapper.previousElementSibling;
660
+
661
+ const contentContainer =
662
+ this._companionSidebarOuterWrapper.previousElementSibling;
443
663
  if (contentContainer) {
444
- contentContainer.classList.add((0, _idMap.default)('companion_container_app_sidebar_in_use'));
664
+ contentContainer.classList.add(
665
+ idMap('companion_container_app_sidebar_in_use')
666
+ );
445
667
  }
446
- this._companionSidebarContentContainerEl.classList.add((0, _idMap.default)('app_sidebar_in_use'));
447
- if (!document.body.querySelector('.' + (0, _idMap.default)('app_sidebar_waiting_platform'))) {
668
+ this._companionSidebarContentContainerEl.classList.add(
669
+ idMap('app_sidebar_in_use')
670
+ );
671
+
672
+ if (
673
+ !((document.body: any): HTMLElement).querySelector(
674
+ '.' + idMap('app_sidebar_waiting_platform')
675
+ )
676
+ ) {
448
677
  const waitingPlatform = document.createElement('div');
449
- waitingPlatform.className = (0, _idMap.default)('app_sidebar_waiting_platform');
450
- document.body.appendChild(waitingPlatform);
678
+ waitingPlatform.className = idMap('app_sidebar_waiting_platform');
679
+ ((document.body: any): HTMLElement).appendChild(waitingPlatform);
451
680
  }
452
681
 
453
682
  // thread sidebar content panels
454
683
  {
455
- _kefir.default.fromEvents(window, 'storage').filter(e => e.key === 'inboxsdk__sidebar_ordering').takeUntilBy(this._stopper).onValue(() => {
456
- this._orderManager.reload();
457
- this._renderThreadSidebarIfPresent();
458
- });
459
- _kefir.default.fromEvents(document.body, 'inboxsdkNewSidebarPanel').filter(e => e.detail.sidebarId === this._instanceId && !e.detail.isGlobal).takeUntilBy(this._stopper).onValue(event => {
460
- this._createThreadSidebarIfNeeded();
461
- let id = event.detail.id;
462
- while (this._currentIds.has(id)) {
463
- id = (0, _incrementName.default)(id);
464
- }
465
- this._currentIds.add(id);
466
- const appName = event.detail.appName;
467
- this._orderManager.addItem({
468
- groupId: event.detail.appId,
469
- id,
470
- orderHint: event.detail.orderHint,
471
- value: {
684
+ Kefir.fromEvents(window, 'storage')
685
+ .filter((e) => e.key === 'inboxsdk__sidebar_ordering')
686
+ .takeUntilBy(this._stopper)
687
+ .onValue(() => {
688
+ this._orderManager.reload();
689
+ this._renderThreadSidebarIfPresent();
690
+ });
691
+
692
+ Kefir.fromEvents((document.body: any), 'inboxsdkNewSidebarPanel')
693
+ .filter(
694
+ (e) => e.detail.sidebarId === this._instanceId && !e.detail.isGlobal
695
+ )
696
+ .takeUntilBy(this._stopper)
697
+ .onValue((event) => {
698
+ this._createThreadSidebarIfNeeded();
699
+ let id = event.detail.id;
700
+ while (this._currentIds.has(id)) {
701
+ id = incrementName(id);
702
+ }
703
+ this._currentIds.add(id);
704
+
705
+ const appName = event.detail.appName;
706
+ this._orderManager.addItem({
707
+ groupId: event.detail.appId,
472
708
  id,
473
- appName,
709
+ orderHint: event.detail.orderHint,
710
+ value: {
711
+ id,
712
+ appName,
713
+ appId: event.detail.appId,
714
+ instanceId: event.detail.instanceId,
715
+ title: event.detail.title,
716
+ iconClass: event.detail.iconClass,
717
+ iconUrl: event.detail.iconUrl,
718
+ hideTitleBar: event.detail.hideTitleBar,
719
+ el: event.target,
720
+ },
721
+ });
722
+ this._renderThreadSidebar();
723
+
724
+ let threadIconArea = (this._threadIconArea =
725
+ companionSidebarIconContainerEl.querySelector(
726
+ '.sidebar_thread_iconArea'
727
+ ));
728
+ if (!threadIconArea) {
729
+ threadIconArea = this._threadIconArea =
730
+ document.createElement('div');
731
+ threadIconArea.className = idMap('sidebar_iconArea');
732
+ threadIconArea.classList.add('sidebar_thread_iconArea');
733
+ addCompanionThreadIconArea(
734
+ this._driver.getLogger(),
735
+ threadIconArea,
736
+ companionSidebarIconContainerEl
737
+ );
738
+ }
739
+
740
+ this._addButton(threadIconArea, event, false);
741
+ });
742
+
743
+ Kefir.fromEvents((document.body: any), 'inboxsdkUpdateSidebarPanel')
744
+ .filter(
745
+ (e) => e.detail.sidebarId === this._instanceId && !e.detail.isGlobal
746
+ )
747
+ .takeUntilBy(this._stopper)
748
+ .onValue((event) => {
749
+ const orderedItems = this._orderManager.getOrderedItems();
750
+ const index = findIndex(
751
+ orderedItems,
752
+ (x) => x.value.instanceId === event.detail.instanceId
753
+ );
754
+ if (index === -1)
755
+ throw new Error('should not happen: failed to find orderItem');
756
+ this._orderManager.updateItemValueByIndex(index, {
757
+ id: orderedItems[index].value.id,
474
758
  appId: event.detail.appId,
759
+ appName: event.detail.appName || event.detail.title,
475
760
  instanceId: event.detail.instanceId,
476
761
  title: event.detail.title,
477
762
  iconClass: event.detail.iconClass,
478
763
  iconUrl: event.detail.iconUrl,
479
764
  hideTitleBar: event.detail.hideTitleBar,
480
- el: event.target
765
+ el: event.target,
766
+ });
767
+ this._renderThreadSidebar();
768
+ });
769
+
770
+ Kefir.fromEvents((document.body: any), 'inboxsdkRemoveSidebarPanel')
771
+ .filter(
772
+ (e) => e.detail.sidebarId === this._instanceId && !e.detail.isGlobal
773
+ )
774
+ .takeUntilBy(this._stopper)
775
+ .onValue((event) => {
776
+ const orderedItems = this._orderManager.getOrderedItems();
777
+ const index = findIndex(
778
+ orderedItems,
779
+ (x) => x.value.instanceId === event.detail.instanceId
780
+ );
781
+ if (index === -1)
782
+ throw new Error('should not happen: failed to find orderItem');
783
+ this._currentIds.delete(orderedItems[index].id);
784
+ this._orderManager.removeItemByIndex(index);
785
+
786
+ this._renderThreadSidebar();
787
+ this._removeButton(
788
+ event,
789
+ this._threadButtonContainers,
790
+ this._threadIconArea
791
+ );
792
+ });
793
+
794
+ Kefir.fromEvents(
795
+ (document.body: any),
796
+ 'inboxsdkSidebarPanelScrollIntoView'
797
+ )
798
+ .filter(
799
+ (e) => e.detail.sidebarId === this._instanceId && !e.detail.isGlobal
800
+ )
801
+ .takeUntilBy(this._stopper)
802
+ .onValue((event) => {
803
+ if (this._threadSidebarComponent)
804
+ this._threadSidebarComponent.scrollPanelIntoView(
805
+ event.detail.instanceId
806
+ );
807
+ });
808
+
809
+ Kefir.fromEvents((document.body: any), 'inboxsdkSidebarPanelClose')
810
+ .filter(
811
+ (e) => e.detail.sidebarId === this._instanceId && !e.detail.isGlobal
812
+ )
813
+ .takeUntilBy(this._stopper)
814
+ .onValue((event) => {
815
+ if (this._threadSidebarComponent)
816
+ this._threadSidebarComponent.closePanel(event.detail.instanceId);
817
+ });
818
+
819
+ Kefir.fromEvents((document.body: any), 'inboxsdkSidebarPanelOpen')
820
+ .filter(
821
+ (e) => e.detail.sidebarId === this._instanceId && !e.detail.isGlobal
822
+ )
823
+ .takeUntilBy(this._stopper)
824
+ .onValue((e) => {
825
+ this._renderThreadSidebar().then((threadSidebarComponent) => {
826
+ const descriptor = this._instanceIdsToDescriptors.get(
827
+ e.detail.instanceId
828
+ );
829
+ if (!descriptor) return;
830
+
831
+ const buttonContainer = this._threadButtonContainers.get(
832
+ descriptor.appName
833
+ );
834
+ if (!buttonContainer) {
835
+ throw new Error('missing button container');
836
+ }
837
+ const activeButtonContainer = this._getActiveButtonContainer();
838
+ if (activeButtonContainer !== buttonContainer) {
839
+ querySelector(buttonContainer, 'button').click();
840
+ }
841
+ });
842
+ });
843
+ }
844
+
845
+ // global sidebar content panels
846
+ {
847
+ Kefir.fromEvents((document.body: any), 'inboxsdkNewSidebarPanel')
848
+ .filter(
849
+ (e) => e.detail.sidebarId === this._instanceId && e.detail.isGlobal
850
+ )
851
+ .takeUntilBy(this._stopper)
852
+ .onValue((event) => {
853
+ let id = event.detail.id;
854
+ while (this._currentIds.has(id)) {
855
+ id = incrementName(id);
481
856
  }
857
+ this._currentIds.add(id);
858
+
859
+ const appName = event.detail.appName;
860
+
861
+ let globalIconArea = (this._globalIconArea =
862
+ companionSidebarIconContainerEl.querySelector(
863
+ '.sidebar_global_iconArea'
864
+ ));
865
+ if (!globalIconArea) {
866
+ globalIconArea = this._globalIconArea =
867
+ document.createElement('div');
868
+ globalIconArea.className = idMap('sidebar_iconArea');
869
+ globalIconArea.classList.add('sidebar_global_iconArea');
870
+ addCompanionGlobalIconArea(
871
+ this._driver.getLogger(),
872
+ globalIconArea,
873
+ companionSidebarIconContainerEl
874
+ );
875
+ }
876
+
877
+ const sdkContentContainerEl = document.createElement('div');
878
+ sdkContentContainerEl.classList.add(
879
+ 'addon_sidebar',
880
+ idMap('app_sidebar_container'),
881
+ 'global_app_sidebar'
882
+ );
883
+ this._companionSidebarContentContainerEl.insertAdjacentElement(
884
+ 'afterbegin',
885
+ sdkContentContainerEl
886
+ );
887
+ this._contentContainers.set(appName, sdkContentContainerEl);
888
+
889
+ sdkContentContainerEl.appendChild(event.target);
890
+ sdkContentContainerEl.style.display = 'none';
891
+
892
+ this._addButton(globalIconArea, event, true);
482
893
  });
483
- this._renderThreadSidebar();
484
- let threadIconArea = this._threadIconArea = companionSidebarIconContainerEl.querySelector('.sidebar_thread_iconArea');
485
- if (!threadIconArea) {
486
- threadIconArea = this._threadIconArea = document.createElement('div');
487
- threadIconArea.className = (0, _idMap.default)('sidebar_iconArea');
488
- threadIconArea.classList.add('sidebar_thread_iconArea');
489
- (0, _addCompanionThreadIconArea.default)(this._driver.getLogger(), threadIconArea, companionSidebarIconContainerEl);
490
- }
491
- this._addButton(threadIconArea, event, false);
492
- });
493
- _kefir.default.fromEvents(document.body, 'inboxsdkUpdateSidebarPanel').filter(e => e.detail.sidebarId === this._instanceId && !e.detail.isGlobal).takeUntilBy(this._stopper).onValue(event => {
494
- const orderedItems = this._orderManager.getOrderedItems();
495
- const index = (0, _findIndex.default)(orderedItems, x => x.value.instanceId === event.detail.instanceId);
496
- if (index === -1) throw new Error('should not happen: failed to find orderItem');
497
- this._orderManager.updateItemValueByIndex(index, {
498
- id: orderedItems[index].value.id,
499
- appId: event.detail.appId,
500
- appName: event.detail.appName || event.detail.title,
501
- instanceId: event.detail.instanceId,
502
- title: event.detail.title,
503
- iconClass: event.detail.iconClass,
504
- iconUrl: event.detail.iconUrl,
505
- hideTitleBar: event.detail.hideTitleBar,
506
- el: event.target
894
+
895
+ Kefir.fromEvents((document.body: any), 'inboxsdkUpdateSidebarPanel')
896
+ .filter(
897
+ (e) => e.detail.sidebarId === this._instanceId && e.detail.isGlobal
898
+ )
899
+ .takeUntilBy(this._stopper)
900
+ .onValue((event) => {
901
+ const buttonContainer = this._globalButtonContainers.get(
902
+ event.detail.appName
903
+ );
904
+ if (!buttonContainer) return;
905
+
906
+ const iconClass = event.detail.iconClass || '';
907
+ const iconUrl = event.detail.iconUrl || event.detail.appIconUrl;
908
+
909
+ const imgElement = querySelector(buttonContainer, 'img');
910
+ imgElement.setAttribute('src', iconUrl);
911
+
912
+ const button = querySelector(buttonContainer, 'button');
913
+ button.setAttribute('class', `inboxsdk__button_icon ${iconClass}`);
507
914
  });
508
- this._renderThreadSidebar();
509
- });
510
- _kefir.default.fromEvents(document.body, 'inboxsdkRemoveSidebarPanel').filter(e => e.detail.sidebarId === this._instanceId && !e.detail.isGlobal).takeUntilBy(this._stopper).onValue(event => {
511
- const orderedItems = this._orderManager.getOrderedItems();
512
- const index = (0, _findIndex.default)(orderedItems, x => x.value.instanceId === event.detail.instanceId);
513
- if (index === -1) throw new Error('should not happen: failed to find orderItem');
514
- this._currentIds.delete(orderedItems[index].id);
515
- this._orderManager.removeItemByIndex(index);
516
- this._renderThreadSidebar();
517
- this._removeButton(event, this._threadButtonContainers, this._threadIconArea);
518
- });
519
- _kefir.default.fromEvents(document.body, 'inboxsdkSidebarPanelScrollIntoView').filter(e => e.detail.sidebarId === this._instanceId && !e.detail.isGlobal).takeUntilBy(this._stopper).onValue(event => {
520
- if (this._threadSidebarComponent) this._threadSidebarComponent.scrollPanelIntoView(event.detail.instanceId);
521
- });
522
- _kefir.default.fromEvents(document.body, 'inboxsdkSidebarPanelClose').filter(e => e.detail.sidebarId === this._instanceId && !e.detail.isGlobal).takeUntilBy(this._stopper).onValue(event => {
523
- if (this._threadSidebarComponent) this._threadSidebarComponent.closePanel(event.detail.instanceId);
524
- });
525
- _kefir.default.fromEvents(document.body, 'inboxsdkSidebarPanelOpen').filter(e => e.detail.sidebarId === this._instanceId && !e.detail.isGlobal).takeUntilBy(this._stopper).onValue(e => {
526
- this._renderThreadSidebar().then(threadSidebarComponent => {
527
- const descriptor = this._instanceIdsToDescriptors.get(e.detail.instanceId);
915
+
916
+ Kefir.fromEvents((document.body: any), 'inboxsdkRemoveSidebarPanel')
917
+ .filter(
918
+ (e) => e.detail.sidebarId === this._instanceId && e.detail.isGlobal
919
+ )
920
+ .takeUntilBy(this._stopper)
921
+ .onValue((event) => {
922
+ this._currentIds.delete(event.detail.id);
923
+ this._removeButton(
924
+ event,
925
+ this._globalButtonContainers,
926
+ this._globalIconArea
927
+ );
928
+ });
929
+
930
+ Kefir.fromEvents((document.body: any), 'inboxsdkSidebarPanelClose')
931
+ .filter(
932
+ (e) => e.detail.sidebarId === this._instanceId && e.detail.isGlobal
933
+ )
934
+ .takeUntilBy(this._stopper)
935
+ .onValue((event) => {
936
+ const descriptor = this._instanceIdsToDescriptors.get(
937
+ event.detail.instanceId
938
+ );
528
939
  if (!descriptor) return;
529
- const buttonContainer = this._threadButtonContainers.get(descriptor.appName);
530
- if (!buttonContainer) {
531
- throw new Error('missing button container');
532
- }
940
+
941
+ const buttonContainer = this._globalButtonContainers.get(
942
+ descriptor.appName
943
+ );
944
+ if (!buttonContainer) return;
945
+
533
946
  const activeButtonContainer = this._getActiveButtonContainer();
534
- if (activeButtonContainer !== buttonContainer) {
535
- (0, _querySelectorOrFail.default)(buttonContainer, 'button').click();
947
+ if (activeButtonContainer === buttonContainer) {
948
+ if (!this._closeButton) {
949
+ throw new Error('Expected this._closeButton');
950
+ }
951
+ this._closeButton(true);
536
952
  }
537
953
  });
538
- });
539
- }
540
954
 
541
- // global sidebar content panels
542
- {
543
- _kefir.default.fromEvents(document.body, 'inboxsdkNewSidebarPanel').filter(e => e.detail.sidebarId === this._instanceId && e.detail.isGlobal).takeUntilBy(this._stopper).onValue(event => {
544
- let id = event.detail.id;
545
- while (this._currentIds.has(id)) {
546
- id = (0, _incrementName.default)(id);
547
- }
548
- this._currentIds.add(id);
549
- const appName = event.detail.appName;
550
- let globalIconArea = this._globalIconArea = companionSidebarIconContainerEl.querySelector('.sidebar_global_iconArea');
551
- if (!globalIconArea) {
552
- globalIconArea = this._globalIconArea = document.createElement('div');
553
- globalIconArea.className = (0, _idMap.default)('sidebar_iconArea');
554
- globalIconArea.classList.add('sidebar_global_iconArea');
555
- (0, _addCompanionGlobalIconArea.default)(this._driver.getLogger(), globalIconArea, companionSidebarIconContainerEl);
556
- }
557
- const sdkContentContainerEl = document.createElement('div');
558
- sdkContentContainerEl.classList.add('addon_sidebar', (0, _idMap.default)('app_sidebar_container'), 'global_app_sidebar');
559
- this._companionSidebarContentContainerEl.insertAdjacentElement('afterbegin', sdkContentContainerEl);
560
- this._contentContainers.set(appName, sdkContentContainerEl);
561
- sdkContentContainerEl.appendChild(event.target);
562
- sdkContentContainerEl.style.display = 'none';
563
- this._addButton(globalIconArea, event, true);
564
- });
565
- _kefir.default.fromEvents(document.body, 'inboxsdkUpdateSidebarPanel').filter(e => e.detail.sidebarId === this._instanceId && e.detail.isGlobal).takeUntilBy(this._stopper).onValue(event => {
566
- const buttonContainer = this._globalButtonContainers.get(event.detail.appName);
567
- if (!buttonContainer) return;
568
- const iconClass = event.detail.iconClass || '';
569
- const iconUrl = event.detail.iconUrl || event.detail.appIconUrl;
570
- const imgElement = (0, _querySelectorOrFail.default)(buttonContainer, 'img');
571
- imgElement.setAttribute('src', iconUrl);
572
- const button = (0, _querySelectorOrFail.default)(buttonContainer, 'button');
573
- button.setAttribute('class', `inboxsdk__button_icon ${iconClass}`);
574
- });
575
- _kefir.default.fromEvents(document.body, 'inboxsdkRemoveSidebarPanel').filter(e => e.detail.sidebarId === this._instanceId && e.detail.isGlobal).takeUntilBy(this._stopper).onValue(event => {
576
- this._currentIds.delete(event.detail.id);
577
- this._removeButton(event, this._globalButtonContainers, this._globalIconArea);
578
- });
579
- _kefir.default.fromEvents(document.body, 'inboxsdkSidebarPanelClose').filter(e => e.detail.sidebarId === this._instanceId && e.detail.isGlobal).takeUntilBy(this._stopper).onValue(event => {
580
- const descriptor = this._instanceIdsToDescriptors.get(event.detail.instanceId);
581
- if (!descriptor) return;
582
- const buttonContainer = this._globalButtonContainers.get(descriptor.appName);
583
- if (!buttonContainer) return;
584
- const activeButtonContainer = this._getActiveButtonContainer();
585
- if (activeButtonContainer === buttonContainer) {
586
- if (!this._closeButton) {
587
- throw new Error('Expected this._closeButton');
955
+ Kefir.fromEvents((document.body: any), 'inboxsdkSidebarPanelOpen')
956
+ .filter(
957
+ (e) => e.detail.sidebarId === this._instanceId && e.detail.isGlobal
958
+ )
959
+ .takeUntilBy(this._stopper)
960
+ .onValue((event) => {
961
+ const descriptor = this._instanceIdsToDescriptors.get(
962
+ event.detail.instanceId
963
+ );
964
+ if (!descriptor) return;
965
+
966
+ const buttonContainer = this._globalButtonContainers.get(
967
+ descriptor.appName
968
+ );
969
+ if (!buttonContainer) return;
970
+
971
+ const activeButtonContainer = this._getActiveButtonContainer();
972
+ if (activeButtonContainer !== buttonContainer) {
973
+ querySelector(buttonContainer, 'button').click();
588
974
  }
589
- this._closeButton(true);
590
- }
591
- });
592
- _kefir.default.fromEvents(document.body, 'inboxsdkSidebarPanelOpen').filter(e => e.detail.sidebarId === this._instanceId && e.detail.isGlobal).takeUntilBy(this._stopper).onValue(event => {
593
- const descriptor = this._instanceIdsToDescriptors.get(event.detail.instanceId);
594
- if (!descriptor) return;
595
- const buttonContainer = this._globalButtonContainers.get(descriptor.appName);
596
- if (!buttonContainer) return;
597
- const activeButtonContainer = this._getActiveButtonContainer();
598
- if (activeButtonContainer !== buttonContainer) {
599
- (0, _querySelectorOrFail.default)(buttonContainer, 'button').click();
600
- }
601
- });
975
+ });
602
976
  }
603
977
 
604
978
  // instance id to descriptor management
605
979
  {
606
- _kefir.default.fromEvents(document.body, 'inboxsdkNewSidebarPanel').filter(e => e.detail.sidebarId === this._instanceId).takeUntilBy(this._stopper).onValue(event => {
607
- this._instanceIdsToDescriptors.set(event.detail.instanceId, event.detail);
608
- });
609
- _kefir.default.fromEvents(document.body, 'inboxsdkRemoveSidebarPanel').filter(e => e.detail.sidebarId === this._instanceId).takeUntilBy(this._stopper).onValue(event => {
610
- this._instanceIdsToDescriptors.delete(event.detail.instanceId);
611
- });
612
- _kefir.default.fromEvents(document.body, 'inboxsdkUpdateSidebarPanel').filter(e => e.detail.sidebarId === this._instanceId).takeUntilBy(this._stopper).onValue(event => {
613
- this._instanceIdsToDescriptors.set(event.detail.instanceId, event.detail);
614
- });
980
+ Kefir.fromEvents((document.body: any), 'inboxsdkNewSidebarPanel')
981
+ .filter((e) => e.detail.sidebarId === this._instanceId)
982
+ .takeUntilBy(this._stopper)
983
+ .onValue((event) => {
984
+ this._instanceIdsToDescriptors.set(
985
+ event.detail.instanceId,
986
+ event.detail
987
+ );
988
+ });
989
+
990
+ Kefir.fromEvents((document.body: any), 'inboxsdkRemoveSidebarPanel')
991
+ .filter((e) => e.detail.sidebarId === this._instanceId)
992
+ .takeUntilBy(this._stopper)
993
+ .onValue((event) => {
994
+ this._instanceIdsToDescriptors.delete(event.detail.instanceId);
995
+ });
996
+
997
+ Kefir.fromEvents((document.body: any), 'inboxsdkUpdateSidebarPanel')
998
+ .filter((e) => e.detail.sidebarId === this._instanceId)
999
+ .takeUntilBy(this._stopper)
1000
+ .onValue((event) => {
1001
+ this._instanceIdsToDescriptors.set(
1002
+ event.detail.instanceId,
1003
+ event.detail
1004
+ );
1005
+ });
615
1006
  }
616
1007
 
617
1008
  // at this point the companionSidebar has 2 children
@@ -623,20 +1014,35 @@ class GmailAppSidebarPrimary {
623
1014
  // or the thread add-on content element are visible
624
1015
  // if they are both display: '' or display: none then the native sidebar
625
1016
  // contents are not visible
626
- const globalAddOnContentContainer = this._companionSidebarContentContainerEl.children[0];
627
- const threadAddOnContentContainer = this._companionSidebarContentContainerEl.children[1];
628
- _kefir.default.merge([globalAddOnContentContainer, threadAddOnContentContainer].map(addonContentEl => (0, _makeMutationObserverChunkedStream.default)(addonContentEl, {
629
- attributes: true,
630
- attributeFilter: ['style']
631
- }))).filter(() => globalAddOnContentContainer.style.display !== threadAddOnContentContainer.style.display).takeUntilBy(this._stopper).onValue(() => {
632
- // TODO What is this block for? It closes the current section whenever
633
- // one of the Gmail addons bar elements changes?
634
- const activeButtonContainer = this._getActiveButtonContainer();
635
- if (activeButtonContainer) {
636
- (0, _querySelectorOrFail.default)(activeButtonContainer, 'button').click();
637
- }
638
- });
1017
+ const globalAddOnContentContainer =
1018
+ this._companionSidebarContentContainerEl.children[0];
1019
+ const threadAddOnContentContainer =
1020
+ this._companionSidebarContentContainerEl.children[1];
1021
+
1022
+ Kefir.merge(
1023
+ [globalAddOnContentContainer, threadAddOnContentContainer].map(
1024
+ (addonContentEl) =>
1025
+ makeMutationObserverChunkedStream(addonContentEl, {
1026
+ attributes: true,
1027
+ attributeFilter: ['style'],
1028
+ })
1029
+ )
1030
+ )
1031
+ .filter(
1032
+ () =>
1033
+ globalAddOnContentContainer.style.display !==
1034
+ threadAddOnContentContainer.style.display
1035
+ )
1036
+ .takeUntilBy(this._stopper)
1037
+ .onValue(() => {
1038
+ // TODO What is this block for? It closes the current section whenever
1039
+ // one of the Gmail addons bar elements changes?
1040
+ const activeButtonContainer = this._getActiveButtonContainer();
1041
+ if (activeButtonContainer) {
1042
+ querySelector(activeButtonContainer, 'button').click();
1043
+ }
1044
+ });
639
1045
  }
640
1046
  }
641
- var _default = (0, _ud.defn)(module, GmailAppSidebarPrimary);
642
- exports.default = _default;
1047
+
1048
+ export default defn(module, GmailAppSidebarPrimary);