@inboxsdk/core 0.2.28-alpha.3 → 0.2.28-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/inboxsdk.js +1 -1
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +5 -1
  4. package/src/build/exec.js +26 -0
  5. package/src/build/spawn.js +17 -0
  6. package/src/common/ajax.js +90 -0
  7. package/src/common/cachebust-url.js +10 -0
  8. package/src/common/censorHTMLstring.js +37 -0
  9. package/src/common/censorHTMLtree.js +28 -0
  10. package/src/common/censorJSONTree.js +15 -0
  11. package/src/common/connectivity-test.js +21 -0
  12. package/src/common/defer.js +11 -0
  13. package/src/common/find-parent.js +10 -0
  14. package/src/common/get-extension-id.js +7 -0
  15. package/src/common/get-or-fail.js +8 -0
  16. package/src/common/get-session-id.js +14 -0
  17. package/src/common/get-stack-trace.js +6 -0
  18. package/src/common/html-to-text.js +7 -0
  19. package/src/common/isElementVisible.js +6 -0
  20. package/src/common/load-script.js +127 -0
  21. package/src/common/log-error.js +191 -0
  22. package/src/common/quoted-split.js +18 -0
  23. package/src/common/rate-limit-queuer.js +57 -0
  24. package/src/common/rate-limit.js +14 -0
  25. package/src/common/version.js +6 -0
  26. package/src/inboxsdk-js/check-requirements.js +7 -3
  27. package/src/inboxsdk-js/header.js +1 -0
  28. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +5 -6
  29. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +4 -3
  30. package/src/inboxsdk-js/inboxsdk-REMOTE.js +3 -1
  31. package/src/inboxsdk-js/inboxsdk-TEST.js +4 -3
  32. package/src/inboxsdk-js/inboxsdk.js +33 -39
  33. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +15 -18
  34. package/src/inboxsdk-js/loading/platform-implementation-loader.js +27 -0
  35. package/src/injected-js/gmail/constants.js +2 -0
  36. package/src/injected-js/gmail/modify-suggestions.js +106 -0
  37. package/src/injected-js/gmail/modify-suggestions.test.js +8 -9
  38. package/src/injected-js/gmail/setup-gmail-interceptor.js +340 -579
  39. package/src/injected-js/gmail/setup-gmonkey-handler.js +49 -0
  40. package/src/injected-js/gmail/sync-compose-processor-20220909.js +298 -0
  41. package/src/injected-js/gmail/sync-compose-processor.js +55 -0
  42. package/src/injected-js/gmail/sync-compose-request-processor.js +110 -0
  43. package/src/injected-js/gmail/sync-compose-request-processor.test.js +39 -49
  44. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +20 -33
  45. package/src/injected-js/gmail/thread-identifier/index.js +57 -93
  46. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +22 -31
  47. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +12 -28
  48. package/src/injected-js/inbox/setupAjaxInterceptor.js +64 -121
  49. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +53 -66
  50. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +20 -36
  51. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
  52. package/src/injected-js/injected-logger.js +50 -0
  53. package/src/injected-js/main.js +11 -24
  54. package/src/injected-js/message-metadata-holder.js +52 -82
  55. package/src/injected-js/setup-data-exposer.js +89 -148
  56. package/src/injected-js/setup-error-silencer.js +21 -21
  57. package/src/injected-js/setup-event-reemitter.js +30 -22
  58. package/src/injected-js/setupCustomViewEventAssassin.js +90 -0
  59. package/src/injected-js/setupInboxCustomViewLinkFixer.js +24 -29
  60. package/src/injected-js/setupPushStateListener.js +18 -11
  61. package/src/injected-js/xhr-helper.js +62 -65
  62. package/src/injected-js/xhr-proxy-factory.js +195 -445
  63. package/src/injected-js/xhr-proxy-factory.test.js +824 -991
  64. package/src/platform-implementation-js/constants/nav-item-types.js +19 -0
  65. package/src/platform-implementation-js/constants/router.js +14 -9
  66. package/src/platform-implementation-js/constants/toolbars.js +8 -3
  67. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
  68. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +115 -136
  69. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +21 -0
  70. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +28 -0
  71. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +98 -0
  72. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +4 -0
  73. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +13 -14
  74. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +27 -48
  75. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +8 -0
  76. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +31 -42
  77. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +30 -40
  78. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +12 -0
  79. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +33 -0
  80. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +10 -18
  81. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +21 -28
  82. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +33 -45
  83. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +31 -49
  84. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +58 -65
  85. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +4 -0
  86. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +40 -124
  87. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +17 -22
  88. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +44 -0
  89. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +10 -11
  90. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +44 -80
  91. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +19 -26
  92. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +71 -147
  93. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +91 -148
  94. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +150 -166
  95. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +70 -120
  96. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +15 -15
  97. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +44 -67
  98. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +230 -379
  99. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +121 -307
  100. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +17 -24
  101. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +41 -49
  102. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +30 -40
  103. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +28 -60
  104. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +61 -133
  105. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +95 -0
  106. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +30 -42
  107. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +52 -46
  108. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +354 -694
  109. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +38 -0
  110. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +12 -0
  111. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +253 -0
  112. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +200 -0
  113. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +533 -0
  114. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +289 -0
  115. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +21 -0
  116. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +77 -93
  117. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +28 -0
  118. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +19 -0
  119. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +126 -0
  120. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +35 -82
  121. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +44 -94
  122. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +12 -19
  123. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +17 -29
  124. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +26 -26
  125. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +391 -797
  126. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +7 -9
  127. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +60 -109
  128. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +95 -135
  129. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +103 -211
  130. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +61 -61
  131. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +17 -17
  132. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +188 -541
  133. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +67 -135
  134. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +27 -49
  135. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +7 -13
  136. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +9 -22
  137. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +36 -63
  138. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +101 -0
  139. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +38 -113
  140. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +38 -0
  141. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +11 -16
  142. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +11 -17
  143. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +8 -11
  144. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +27 -47
  145. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +11 -24
  146. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +59 -111
  147. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +28 -0
  148. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +15 -14
  149. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +11 -17
  150. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +18 -24
  151. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +22 -0
  152. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +19 -23
  153. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +233 -0
  154. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +11 -19
  155. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +141 -376
  156. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +17 -28
  157. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +34 -70
  158. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +223 -0
  159. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +10 -17
  160. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +157 -0
  161. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +109 -0
  162. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +83 -137
  163. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +10 -19
  164. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +632 -1190
  165. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +5 -0
  166. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +29 -38
  167. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +327 -617
  168. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +759 -0
  169. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +26 -49
  170. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +188 -380
  171. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +104 -194
  172. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +84 -0
  173. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +382 -811
  174. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +34 -58
  175. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +330 -581
  176. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +123 -277
  177. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +15 -35
  178. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +216 -571
  179. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +152 -336
  180. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +87 -211
  181. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +33 -0
  182. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +325 -0
  183. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +58 -0
  184. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +55 -0
  185. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +10 -11
  186. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +96 -0
  187. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +30 -0
  188. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +10 -0
  189. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +20 -29
  190. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +22 -0
  191. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +41 -76
  192. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +45 -99
  193. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +76 -128
  194. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +128 -319
  195. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +45 -78
  196. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +8 -4
  197. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +36 -54
  198. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +35 -53
  199. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +13 -15
  200. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +15 -18
  201. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +14 -13
  202. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +14 -20
  203. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +14 -13
  204. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +35 -67
  205. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +16 -18
  206. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +68 -185
  207. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +28 -56
  208. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +12 -10
  209. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +16 -16
  210. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +24 -35
  211. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +37 -89
  212. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +56 -78
  213. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +26 -32
  214. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +52 -109
  215. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +7 -8
  216. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +16 -20
  217. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +15 -16
  218. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +75 -83
  219. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +530 -822
  220. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +48 -61
  221. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +9 -12
  222. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +12 -19
  223. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +24 -33
  224. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +201 -388
  225. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +249 -265
  226. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +84 -152
  227. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +55 -67
  228. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +43 -65
  229. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +31 -56
  230. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +191 -294
  231. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +32 -45
  232. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +21 -39
  233. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +153 -240
  234. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +75 -150
  235. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +20 -37
  236. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +60 -114
  237. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +47 -65
  238. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +41 -52
  239. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +27 -36
  240. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +52 -80
  241. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +465 -649
  242. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +37 -58
  243. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +14 -26
  244. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +118 -235
  245. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +10 -11
  246. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +28 -46
  247. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +131 -202
  248. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +40 -80
  249. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +35 -61
  250. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +124 -221
  251. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +125 -213
  252. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +104 -126
  253. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +36 -51
  254. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +158 -297
  255. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +21 -35
  256. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +24 -43
  257. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +39 -68
  258. package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +17 -0
  259. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +14 -19
  260. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +27 -35
  261. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +33 -0
  262. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +16 -22
  263. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +49 -0
  264. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
  265. package/src/platform-implementation-js/driver-common/gmailAjax.js +65 -0
  266. package/src/platform-implementation-js/driver-common/inboxAjax.js +12 -7
  267. package/src/platform-implementation-js/driver-common/render-custom-icon.js +16 -0
  268. package/src/platform-implementation-js/driver-common/requestGmailThread.js +19 -20
  269. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +197 -306
  270. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +113 -161
  271. package/src/platform-implementation-js/driver-common/update-icon.js +90 -0
  272. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +1 -114
  273. package/src/platform-implementation-js/driver-interfaces/driver.js +1 -131
  274. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +4 -48
  275. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +1 -29
  276. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +1 -32
  277. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +1 -11
  278. package/src/platform-implementation-js/lib/ErrorCollector.js +47 -0
  279. package/src/platform-implementation-js/lib/Membrane.js +22 -0
  280. package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +30 -0
  281. package/src/platform-implementation-js/lib/array-to-lifetimes.js +43 -41
  282. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +139 -155
  283. package/src/platform-implementation-js/lib/attemptWithRetries.js +16 -0
  284. package/src/platform-implementation-js/lib/common-page-communicator.js +137 -0
  285. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +19 -38
  286. package/src/platform-implementation-js/lib/css-selector-escape.js +7 -3
  287. package/src/platform-implementation-js/lib/delay-asap.js +12 -0
  288. package/src/platform-implementation-js/lib/delay-idle.js +16 -0
  289. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +36 -0
  290. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +8 -11
  291. package/src/platform-implementation-js/lib/dom/generic-button-view.js +39 -0
  292. package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +39 -0
  293. package/src/platform-implementation-js/lib/dom/get-selection.js +23 -52
  294. package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +38 -0
  295. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +69 -101
  296. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +8 -10
  297. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +12 -0
  298. package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +79 -0
  299. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +28 -0
  300. package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +15 -0
  301. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +15 -0
  302. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +5 -0
  303. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +15 -17
  304. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +39 -0
  305. package/src/platform-implementation-js/lib/dom/parentNodes.js +8 -0
  306. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +8 -11
  307. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +6 -0
  308. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +22 -0
  309. package/src/platform-implementation-js/lib/dom/set-css.js +7 -3
  310. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +9 -11
  311. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +32 -33
  312. package/src/platform-implementation-js/lib/dom/simulate-key.js +46 -0
  313. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +16 -0
  314. package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +7 -0
  315. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +25 -0
  316. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +23 -26
  317. package/src/platform-implementation-js/lib/fake-window-resize.js +5 -0
  318. package/src/platform-implementation-js/lib/from-event-target-capture.js +12 -0
  319. package/src/platform-implementation-js/lib/fromEventsWithOptions.js +10 -0
  320. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +86 -149
  321. package/src/platform-implementation-js/lib/handler-registry.js +67 -0
  322. package/src/platform-implementation-js/lib/idMap.js +45 -0
  323. package/src/platform-implementation-js/lib/imageRequest.js +8 -0
  324. package/src/platform-implementation-js/lib/incrementName.js +7 -0
  325. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +14 -0
  326. package/src/platform-implementation-js/lib/inject-script.js +33 -0
  327. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +42 -57
  328. package/src/platform-implementation-js/lib/is-valid-app-id.js +27 -0
  329. package/src/platform-implementation-js/lib/is-valid-email.js +14 -0
  330. package/src/platform-implementation-js/lib/isNotNil.js +5 -0
  331. package/src/platform-implementation-js/lib/isStreakAppId.js +11 -0
  332. package/src/platform-implementation-js/lib/logger.js +441 -0
  333. package/src/platform-implementation-js/lib/make-revocable-function.js +19 -21
  334. package/src/platform-implementation-js/lib/make-revocable-function.test.js +20 -22
  335. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +15 -17
  336. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +9 -18
  337. package/src/platform-implementation-js/lib/persistent-queue.js +107 -0
  338. package/src/platform-implementation-js/lib/populateRouteID.js +8 -9
  339. package/src/platform-implementation-js/lib/populateRouteID.test.js +20 -19
  340. package/src/platform-implementation-js/lib/react/ElementContainer.js +23 -20
  341. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +10 -9
  342. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +13 -20
  343. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +13 -18
  344. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +11 -17
  345. package/src/platform-implementation-js/lib/safe-event-emitter.js +17 -0
  346. package/src/platform-implementation-js/lib/shared-style.js +14 -13
  347. package/src/platform-implementation-js/lib/stopper-pool.js +41 -0
  348. package/src/platform-implementation-js/lib/stream-wait-for.js +30 -0
  349. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +18 -17
  350. package/src/platform-implementation-js/lib/toLiveSet.js +17 -15
  351. package/src/platform-implementation-js/lib/wait-for.js +28 -0
  352. package/src/platform-implementation-js/lib/waitForAsync.js +19 -0
  353. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +6 -5
  354. package/src/platform-implementation-js/main.js +9 -24
  355. package/src/platform-implementation-js/namespaces/app-menu.d.ts.map +1 -1
  356. package/src/platform-implementation-js/namespaces/app-menu.js +31 -0
  357. package/src/platform-implementation-js/namespaces/butter-bar.js +163 -0
  358. package/src/platform-implementation-js/namespaces/compose.js +37 -60
  359. package/src/platform-implementation-js/namespaces/conversations.js +52 -124
  360. package/src/platform-implementation-js/namespaces/global.js +27 -39
  361. package/src/platform-implementation-js/namespaces/keyboard.js +29 -33
  362. package/src/platform-implementation-js/namespaces/lists.js +25 -31
  363. package/src/platform-implementation-js/namespaces/modal.js +34 -28
  364. package/src/platform-implementation-js/namespaces/nav-menu.js +30 -45
  365. package/src/platform-implementation-js/namespaces/router.js +70 -137
  366. package/src/platform-implementation-js/namespaces/search.js +19 -17
  367. package/src/platform-implementation-js/namespaces/toolbars.js +71 -117
  368. package/src/platform-implementation-js/namespaces/user.js +36 -37
  369. package/src/platform-implementation-js/namespaces/widgets.js +54 -61
  370. package/src/platform-implementation-js/platform-implementation.js +98 -229
  371. package/src/platform-implementation-js/views/SimpleElementView.js +16 -0
  372. package/src/platform-implementation-js/views/app-menu-item-view.js +257 -0
  373. package/src/platform-implementation-js/views/app-toolbar-button-view.js +26 -47
  374. package/src/platform-implementation-js/views/collapsible-panel-view.js +222 -0
  375. package/src/platform-implementation-js/views/collapsible-section-view.js +66 -63
  376. package/src/platform-implementation-js/views/compose-button-view.js +45 -0
  377. package/src/platform-implementation-js/views/compose-view.js +312 -0
  378. package/src/platform-implementation-js/views/content-panel-view.js +28 -30
  379. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +21 -44
  380. package/src/platform-implementation-js/views/conversations/custom-message-view.js +44 -104
  381. package/src/platform-implementation-js/views/conversations/message-view.js +131 -202
  382. package/src/platform-implementation-js/views/conversations/thread-view.js +75 -127
  383. package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +14 -0
  384. package/src/platform-implementation-js/views/native-nav-item-view.js +32 -65
  385. package/src/platform-implementation-js/views/nav-item-view.js +51 -115
  386. package/src/platform-implementation-js/views/route-view/custom-route-view.js +25 -20
  387. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
  388. package/src/platform-implementation-js/views/route-view/list-route-view.js +30 -52
  389. package/src/platform-implementation-js/views/route-view/route-view.js +24 -35
  390. package/src/platform-implementation-js/views/section-view.js +60 -52
  391. package/src/platform-implementation-js/views/thread-row-view.js +49 -74
  392. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +39 -0
  393. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +98 -0
  394. package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +122 -0
  395. package/src/platform-implementation-js/widgets/drawer-view.js +29 -36
  396. package/src/platform-implementation-js/widgets/modal-view.js +39 -68
  397. package/src/platform-implementation-js/widgets/mole-view.js +22 -22
  398. package/src/platform-implementation-js/widgets/top-message-bar-view.js +13 -10
@@ -1,57 +1,47 @@
1
- /* @flow */
2
-
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 _findIndex = _interopRequireDefault(require("lodash/findIndex"));
10
+ var _asap = _interopRequireDefault(require("asap"));
11
+ var _ud = require("ud");
12
+ var _autoHtml = _interopRequireDefault(require("auto-html"));
13
+ var _kefir = _interopRequireDefault(require("kefir"));
14
+ var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
15
+ var _kefirBus = _interopRequireDefault(require("kefir-bus"));
16
+ var _react = _interopRequireDefault(require("react"));
17
+ var _reactDom = _interopRequireDefault(require("react-dom"));
18
+ var _findParent = _interopRequireDefault(require("../../../../common/find-parent"));
19
+ var _delayAsap = _interopRequireDefault(require("../../../lib/delay-asap"));
20
+ var _fromEventTargetCapture = _interopRequireDefault(require("../../../lib/from-event-target-capture"));
21
+ var _orderManager = _interopRequireDefault(require("order-manager"));
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 _AppSidebar = _interopRequireDefault(require("../../../driver-common/sidebar/AppSidebar"));
30
+ var _ContentPanelViewDriver = _interopRequireDefault(require("../../../driver-common/sidebar/ContentPanelViewDriver"));
31
+ var _gmailElementGetter = _interopRequireDefault(require("../gmail-element-getter"));
32
+ var _addIconArea = _interopRequireDefault(require("./gmail-thread-sidebar-view/add-icon-area"));
33
+ var _addToIconArea = _interopRequireDefault(require("./gmail-app-sidebar-view/primary/add-to-icon-area"));
3
34
  /*
4
35
  This is used for PRE MATERIAL GMAIL, when sidebar only existed on threads.
5
36
  If you're reading this in the future, do you remember a time when there wasn't a global sidebar?
6
37
  It was a strange world, can you believe who the President of the United States was?
7
38
 
8
39
  */
9
-
10
- import findIndex from 'lodash/findIndex';
11
- import asap from 'asap';
12
- import { defn } from 'ud';
13
- import autoHtml from 'auto-html';
14
- import Kefir from 'kefir';
15
- import kefirStopper from 'kefir-stopper';
16
- import kefirBus from 'kefir-bus';
17
- import React from 'react';
18
- import ReactDOM from 'react-dom';
19
- import findParent from '../../../../common/find-parent';
20
- import delayAsap from '../../../lib/delay-asap';
21
- import fromEventTargetCapture from '../../../lib/from-event-target-capture';
22
- import OrderManager from 'order-manager';
23
- import idMap from '../../../lib/idMap';
24
- import incrementName from '../../../lib/incrementName';
25
- import querySelector from '../../../lib/dom/querySelectorOrFail';
26
- import makeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
27
- import makeElementChildStream from '../../../lib/dom/make-element-child-stream';
28
- import { simulateClick } from '../../../lib/dom/simulate-mouse-event';
29
- import fakeWindowResize from '../../../lib/fake-window-resize';
30
- import type GmailDriver from '../gmail-driver';
31
-
32
- import AppSidebar from '../../../driver-common/sidebar/AppSidebar';
33
- import ContentPanelViewDriver from '../../../driver-common/sidebar/ContentPanelViewDriver';
34
- import GmailElementGetter from '../gmail-element-getter';
35
-
36
- import addIconArea from './gmail-thread-sidebar-view/add-icon-area';
37
- import addToIconArea from './gmail-app-sidebar-view/primary/add-to-icon-area';
38
-
39
40
  const ADD_ON_SIDEBAR_CONTENT_SELECTOR = '.J-KU-Jz';
40
41
  const ACTIVE_ADD_ON_ICON_SELECTOR = '.J-KU-KO';
41
-
42
- import type WidthManager from './gmail-thread-view/width-manager';
43
-
44
42
  class GmailAppSidebarView {
45
- _stopper = kefirStopper();
46
- _driver: GmailDriver;
47
- _instanceId: string;
48
-
49
- constructor(
50
- driver: GmailDriver,
51
- sidebarContainerEl?: ?HTMLElement,
52
- addonSidebarElement: ?HTMLElement,
53
- widthManager: ?WidthManager
54
- ) {
43
+ constructor(driver, sidebarContainerEl, addonSidebarElement, widthManager) {
44
+ (0, _defineProperty2.default)(this, "_stopper", (0, _kefirStopper.default)());
55
45
  this._driver = driver;
56
46
 
57
47
  // We need to be able to cooperate with other apps/extensions that are
@@ -67,53 +57,34 @@ class GmailAppSidebarView {
67
57
  if (instanceId != null) {
68
58
  this._instanceId = instanceId;
69
59
  } else {
70
- this._createElement(
71
- sidebarContainerEl,
72
- addonSidebarElement,
73
- widthManager
74
- );
60
+ this._createElement(sidebarContainerEl, addonSidebarElement, widthManager);
75
61
  }
76
62
  }
77
-
78
63
  destroy() {
79
64
  this._stopper.destroy();
80
65
  }
81
-
82
- getStopper(): Kefir.Observable<*> {
66
+ getStopper() {
83
67
  return this._stopper;
84
68
  }
85
69
 
86
70
  // This value controls whether the app sidebar should automatically open
87
71
  // itself when available when the chat sidebar isn't present. It's only set
88
72
  // if the user interacts with the app sidebar button.
89
- _getShouldAppSidebarOpen(): boolean {
90
- return (
91
- global.localStorage.getItem('inboxsdk__app_sidebar_should_open') !==
92
- 'false'
93
- );
73
+ _getShouldAppSidebarOpen() {
74
+ return global.localStorage.getItem('inboxsdk__app_sidebar_should_open') !== 'false';
94
75
  }
95
-
96
- _setShouldAppSidebarOpen(open: boolean) {
76
+ _setShouldAppSidebarOpen(open) {
97
77
  try {
98
- global.localStorage.setItem(
99
- 'inboxsdk__app_sidebar_should_open',
100
- String(open)
101
- );
78
+ global.localStorage.setItem('inboxsdk__app_sidebar_should_open', String(open));
102
79
  } catch (err) {
103
80
  console.error('error saving', err); //eslint-disable-line no-console
104
81
  }
105
82
  }
106
83
 
107
- _createElement(
108
- _sidebarContainerEl: ?HTMLElement,
109
- _addonSidebarContainerEl: ?HTMLElement,
110
- widthManager: ?WidthManager
111
- ) {
84
+ _createElement(_sidebarContainerEl, _addonSidebarContainerEl, widthManager) {
112
85
  let container, iconArea;
113
- let component: AppSidebar;
114
-
86
+ let component;
115
87
  this._instanceId = `${Date.now()}-${Math.random()}`;
116
-
117
88
  {
118
89
  const idElement = _addonSidebarContainerEl || _sidebarContainerEl;
119
90
  if (!idElement) throw new Error('should not happen');
@@ -122,237 +93,154 @@ class GmailAppSidebarView {
122
93
  idElement.removeAttribute('data-sdk-sidebar-instance-id');
123
94
  });
124
95
  }
125
-
126
96
  const el = document.createElement('div');
127
- el.className = idMap('app_sidebar_container');
128
-
129
- const buttonContainers: Map<string, HTMLElement> = new Map();
130
- let activatedWhileLoading: boolean = false;
131
-
97
+ el.className = (0, _idMap.default)('app_sidebar_container');
98
+ const buttonContainers = new Map();
99
+ let activatedWhileLoading = false;
132
100
  let contentContainer;
133
101
  let usedAddonsSidebar = false;
134
-
135
- const updateHighlightedAppIconBus = kefirBus();
102
+ const updateHighlightedAppIconBus = (0, _kefirBus.default)();
136
103
  this._stopper.onEnd(() => {
137
104
  updateHighlightedAppIconBus.end();
138
105
  });
139
-
140
106
  if (_addonSidebarContainerEl) {
141
- const mainContentBodyContainerElement =
142
- GmailElementGetter.getMainContentBodyContainerElement();
107
+ const mainContentBodyContainerElement = _gmailElementGetter.default.getMainContentBodyContainerElement();
143
108
  if (mainContentBodyContainerElement) {
144
109
  contentContainer = mainContentBodyContainerElement.parentElement;
145
110
  if (!contentContainer) throw new Error('should not happen');
146
111
  contentContainer.classList.add('container_app_sidebar_in_use');
147
- querySelector(
148
- _addonSidebarContainerEl,
149
- ADD_ON_SIDEBAR_CONTENT_SELECTOR
150
- ).insertAdjacentElement('beforebegin', el);
112
+ (0, _querySelectorOrFail.default)(_addonSidebarContainerEl, ADD_ON_SIDEBAR_CONTENT_SELECTOR).insertAdjacentElement('beforebegin', el);
151
113
 
152
114
  // See if the element is visible.
153
115
  // Give it some content temporarily to check if it becomes sized to show it.
154
116
  _addonSidebarContainerEl.classList.add('app_sidebar_visible');
155
- _addonSidebarContainerEl.classList.add(idMap('app_sidebar_in_use'));
117
+ _addonSidebarContainerEl.classList.add((0, _idMap.default)('app_sidebar_in_use'));
156
118
  contentContainer.classList.add('container_app_sidebar_visible');
157
-
158
119
  el.textContent = 'x';
159
120
  const elRect = el.getBoundingClientRect();
160
121
  el.textContent = '';
161
122
  // This gets re-added later once the panel has some content to show
162
123
  _addonSidebarContainerEl.classList.remove('app_sidebar_visible');
163
124
  contentContainer.classList.remove('container_app_sidebar_visible');
164
-
165
- const supportedScreenSize =
166
- window.innerWidth >= 1024 && window.innerHeight >= 600;
167
- if (
168
- !global._APP_SIDEBAR_TEST &&
169
- (elRect.width == 0 ||
170
- elRect.height == 0 ||
171
- (supportedScreenSize &&
172
- Math.floor(elRect.right) > Math.floor(window.innerWidth)))
173
- ) {
174
- this._driver
175
- .getLogger()
176
- .error(
177
- new Error(
178
- 'SDK sidebar inserted into add-ons sidebar was not visible'
179
- ),
180
- {
181
- rect: {
182
- // rect's properties aren't enumerable so we have to do this
183
- top: elRect.top,
184
- bottom: elRect.bottom,
185
- left: elRect.left,
186
- right: elRect.right,
187
- width: elRect.width,
188
- height: elRect.height,
189
- },
190
- window: {
191
- innerWidth: window.innerWidth,
192
- innerHeight: window.innerHeight,
193
- },
194
- }
195
- );
125
+ const supportedScreenSize = window.innerWidth >= 1024 && window.innerHeight >= 600;
126
+ if (!global._APP_SIDEBAR_TEST && (elRect.width == 0 || elRect.height == 0 || supportedScreenSize && Math.floor(elRect.right) > Math.floor(window.innerWidth))) {
127
+ this._driver.getLogger().error(new Error('SDK sidebar inserted into add-ons sidebar was not visible'), {
128
+ rect: {
129
+ // rect's properties aren't enumerable so we have to do this
130
+ top: elRect.top,
131
+ bottom: elRect.bottom,
132
+ left: elRect.left,
133
+ right: elRect.right,
134
+ width: elRect.width,
135
+ height: elRect.height
136
+ },
137
+ window: {
138
+ innerWidth: window.innerWidth,
139
+ innerHeight: window.innerHeight
140
+ }
141
+ });
196
142
  } else {
197
143
  usedAddonsSidebar = true;
198
144
  }
199
-
200
145
  if (!usedAddonsSidebar) {
201
- if (contentContainer)
202
- contentContainer.classList.remove('container_app_sidebar_in_use');
203
- _addonSidebarContainerEl.classList.remove(
204
- idMap('app_sidebar_in_use')
205
- );
146
+ if (contentContainer) contentContainer.classList.remove('container_app_sidebar_in_use');
147
+ _addonSidebarContainerEl.classList.remove((0, _idMap.default)('app_sidebar_in_use'));
206
148
  }
207
149
  }
208
150
  }
209
-
210
- const addonSidebarContainerEl = usedAddonsSidebar
211
- ? _addonSidebarContainerEl
212
- : null;
213
- const sidebarContainerEl = usedAddonsSidebar
214
- ? _addonSidebarContainerEl
215
- : _sidebarContainerEl;
151
+ const addonSidebarContainerEl = usedAddonsSidebar ? _addonSidebarContainerEl : null;
152
+ const sidebarContainerEl = usedAddonsSidebar ? _addonSidebarContainerEl : _sidebarContainerEl;
216
153
  if (!sidebarContainerEl) throw new Error('should not happen');
217
154
  if (!usedAddonsSidebar) {
218
155
  sidebarContainerEl.insertBefore(el, sidebarContainerEl.firstElementChild);
219
- sidebarContainerEl.classList.add(idMap('app_sidebar_in_use'));
156
+ sidebarContainerEl.classList.add((0, _idMap.default)('app_sidebar_in_use'));
220
157
  }
221
-
222
- if (
223
- !((document.body: any): HTMLElement).querySelector(
224
- '.' + idMap('app_sidebar_waiting_platform')
225
- )
226
- ) {
158
+ if (!document.body.querySelector('.' + (0, _idMap.default)('app_sidebar_waiting_platform'))) {
227
159
  const waitingPlatform = document.createElement('div');
228
- waitingPlatform.className = idMap('app_sidebar_waiting_platform');
229
- ((document.body: any): HTMLElement).appendChild(waitingPlatform);
160
+ waitingPlatform.className = (0, _idMap.default)('app_sidebar_waiting_platform');
161
+ document.body.appendChild(waitingPlatform);
230
162
  }
231
-
232
163
  if (addonSidebarContainerEl) {
233
164
  container = () => el;
234
165
  el.classList.add('addon_sidebar');
235
166
  } else {
236
- const containerEl = findParent(
237
- sidebarContainerEl,
238
- (el) => window.getComputedStyle(el).overflowY !== 'visible'
239
- );
167
+ const containerEl = (0, _findParent.default)(sidebarContainerEl, el => window.getComputedStyle(el).overflowY !== 'visible');
240
168
  container = containerEl ? () => containerEl : undefined;
241
169
  }
242
-
243
170
  const currentIds = new Set();
244
- const orderManager = new OrderManager({
171
+ const orderManager = new _orderManager.default({
245
172
  get() {
246
173
  try {
247
- return JSON.parse(
248
- global.localStorage.getItem('inboxsdk__sidebar_ordering') || 'null'
249
- );
174
+ return JSON.parse(global.localStorage.getItem('inboxsdk__sidebar_ordering') || 'null');
250
175
  } catch (err) {
251
176
  console.error('failed to read sidebar order data', err); //eslint-disable-line no-console
252
177
  }
253
178
  },
179
+
254
180
  set(data) {
255
181
  try {
256
- global.localStorage.setItem(
257
- 'inboxsdk__sidebar_ordering',
258
- JSON.stringify(data)
259
- );
182
+ global.localStorage.setItem('inboxsdk__sidebar_ordering', JSON.stringify(data));
260
183
  } catch (err) {
261
184
  console.error('failed to set sidebar order data', err); //eslint-disable-line no-console
262
185
  }
263
- },
186
+ }
264
187
  });
265
188
 
266
- updateHighlightedAppIconBus
267
- .bufferWithTimeOrCount(150, 100)
268
- .filter((events) => events.length > 0)
269
- .takeUntilBy(this._stopper)
270
- .onValue(() => {
271
- const elBoundingBox = el.getBoundingClientRect();
272
- const boundingTop = elBoundingBox.top + el.scrollTop;
273
- const boundingBottom = boundingTop + elBoundingBox.height;
274
-
275
- const titleBars = Array.from(
276
- el.querySelectorAll(
277
- `.${idMap('app_sidebar_content_panel')}.${idMap(
278
- 'expanded'
279
- )} .${idMap('app_sidebar_content_panel_top_line')}`
280
- )
281
- );
282
-
283
- const titleBar = titleBars.find((t) => {
284
- const tBoundingBox = t.getBoundingClientRect();
285
- return (
286
- tBoundingBox.bottom > boundingTop &&
287
- tBoundingBox.bottom < boundingBottom
288
- );
289
- });
290
-
291
- if (titleBar) {
292
- const instanceId = titleBar.getAttribute('data-instance-id');
293
- const appName = titleBar.getAttribute('data-app-name');
294
- if (!appName) return;
295
- const appButton = buttonContainers.get(appName);
296
- if (!appButton || !iconArea) return;
297
-
298
- const activeButtonContainer = iconArea.querySelector(
299
- '.sidebar_button_container_active'
300
- );
301
- if (activeButtonContainer) {
302
- activeButtonContainer.classList.remove(
303
- 'sidebar_button_container_active'
304
- );
305
- }
306
-
307
- appButton.classList.add('sidebar_button_container_active');
308
- }
189
+ updateHighlightedAppIconBus.bufferWithTimeOrCount(150, 100).filter(events => events.length > 0).takeUntilBy(this._stopper).onValue(() => {
190
+ const elBoundingBox = el.getBoundingClientRect();
191
+ const boundingTop = elBoundingBox.top + el.scrollTop;
192
+ const boundingBottom = boundingTop + elBoundingBox.height;
193
+ const titleBars = Array.from(el.querySelectorAll(`.${(0, _idMap.default)('app_sidebar_content_panel')}.${(0, _idMap.default)('expanded')} .${(0, _idMap.default)('app_sidebar_content_panel_top_line')}`));
194
+ const titleBar = titleBars.find(t => {
195
+ const tBoundingBox = t.getBoundingClientRect();
196
+ return tBoundingBox.bottom > boundingTop && tBoundingBox.bottom < boundingBottom;
309
197
  });
310
-
311
- const _appSidebarRefSetter = (threadSidebarComponent) => {
198
+ if (titleBar) {
199
+ const instanceId = titleBar.getAttribute('data-instance-id');
200
+ const appName = titleBar.getAttribute('data-app-name');
201
+ if (!appName) return;
202
+ const appButton = buttonContainers.get(appName);
203
+ if (!appButton || !iconArea) return;
204
+ const activeButtonContainer = iconArea.querySelector('.sidebar_button_container_active');
205
+ if (activeButtonContainer) {
206
+ activeButtonContainer.classList.remove('sidebar_button_container_active');
207
+ }
208
+ appButton.classList.add('sidebar_button_container_active');
209
+ }
210
+ });
211
+ const _appSidebarRefSetter = threadSidebarComponent => {
312
212
  if (threadSidebarComponent) {
313
213
  component = threadSidebarComponent;
314
214
  }
315
215
  };
316
-
317
216
  const render = () => {
318
- ReactDOM.render(
319
- <AppSidebar
320
- ref={_appSidebarRefSetter}
321
- panels={orderManager.getOrderedItems().map((x) => x.value)}
322
- onMoveEnd={(newList, movedItem, oldIndex, newIndex) => {
323
- orderManager.moveItem(oldIndex, newIndex);
324
- render();
325
- }}
326
- onExpandedToggle={() => {
327
- updateHighlightedAppIconBus.emit(null);
328
- }}
329
- container={container}
330
- />,
331
- el,
332
- () => {
217
+ _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_AppSidebar.default, {
218
+ ref: _appSidebarRefSetter,
219
+ panels: orderManager.getOrderedItems().map(x => x.value),
220
+ onMoveEnd: (newList, movedItem, oldIndex, newIndex) => {
221
+ orderManager.moveItem(oldIndex, newIndex);
222
+ render();
223
+ },
224
+ onExpandedToggle: () => {
333
225
  updateHighlightedAppIconBus.emit(null);
334
- }
335
- );
226
+ },
227
+ container: container
228
+ }), el, () => {
229
+ updateHighlightedAppIconBus.emit(null);
230
+ });
336
231
  };
337
232
  render();
338
-
339
- Kefir.fromEvents(window, 'storage')
340
- .filter((e) => e.key === 'inboxsdk__sidebar_ordering')
341
- .takeUntilBy(this._stopper)
342
- .onValue(() => {
343
- orderManager.reload();
344
- render();
345
- });
346
-
233
+ _kefir.default.fromEvents(window, 'storage').filter(e => e.key === 'inboxsdk__sidebar_ordering').takeUntilBy(this._stopper).onValue(() => {
234
+ orderManager.reload();
235
+ render();
236
+ });
347
237
  this._stopper.onValue(() => {
348
- ReactDOM.unmountComponentAtNode(el);
238
+ _reactDom.default.unmountComponentAtNode(el);
349
239
  el.remove();
350
- sidebarContainerEl.classList.remove(idMap('app_sidebar_in_use'));
240
+ sidebarContainerEl.classList.remove((0, _idMap.default)('app_sidebar_in_use'));
351
241
  sidebarContainerEl.classList.remove('app_sidebar_visible');
352
242
  if (iconArea) iconArea.remove();
353
-
354
- const mainContentBodyContainerElement =
355
- GmailElementGetter.getMainContentBodyContainerElement();
243
+ const mainContentBodyContainerElement = _gmailElementGetter.default.getMainContentBodyContainerElement();
356
244
  if (mainContentBodyContainerElement) {
357
245
  contentContainer = mainContentBodyContainerElement.parentElement;
358
246
  if (contentContainer) {
@@ -361,384 +249,245 @@ class GmailAppSidebarView {
361
249
  }
362
250
  }
363
251
  });
364
-
365
- Kefir.fromEvents((document.body: any), 'inboxsdkNewSidebarPanel')
366
- .filter((e) => e.detail.sidebarId === this._instanceId)
367
- .takeUntilBy(this._stopper)
368
- .onValue((event) => {
369
- let id = event.detail.id;
370
- while (currentIds.has(id)) {
371
- id = incrementName(id);
372
- }
373
- currentIds.add(id);
374
-
375
- const appName = event.detail.appName;
376
- orderManager.addItem({
377
- groupId: event.detail.appId,
252
+ _kefir.default.fromEvents(document.body, 'inboxsdkNewSidebarPanel').filter(e => e.detail.sidebarId === this._instanceId).takeUntilBy(this._stopper).onValue(event => {
253
+ let id = event.detail.id;
254
+ while (currentIds.has(id)) {
255
+ id = (0, _incrementName.default)(id);
256
+ }
257
+ currentIds.add(id);
258
+ const appName = event.detail.appName;
259
+ orderManager.addItem({
260
+ groupId: event.detail.appId,
261
+ id,
262
+ orderHint: event.detail.orderHint,
263
+ value: {
378
264
  id,
379
- orderHint: event.detail.orderHint,
380
- value: {
381
- id,
382
- appName,
383
- appId: event.detail.appId,
384
- instanceId: event.detail.instanceId,
385
- title: event.detail.title,
386
- iconClass: event.detail.iconClass,
387
- iconUrl: event.detail.iconUrl,
388
- hideTitleBar: event.detail.hideTitleBar,
389
- el: event.target,
390
- },
391
- });
392
- render();
393
-
394
- if (!addonSidebarContainerEl) return;
395
-
396
- iconArea = addonSidebarContainerEl.querySelector(
397
- '.' + idMap('sidebar_iconArea')
398
- );
399
- if (!iconArea) {
400
- iconArea = document.createElement('div');
401
- iconArea.className = idMap('sidebar_iconArea');
402
- addIconArea(iconArea, addonSidebarContainerEl, this._stopper);
265
+ appName,
266
+ appId: event.detail.appId,
267
+ instanceId: event.detail.instanceId,
268
+ title: event.detail.title,
269
+ iconClass: event.detail.iconClass,
270
+ iconUrl: event.detail.iconUrl,
271
+ hideTitleBar: event.detail.hideTitleBar,
272
+ el: event.target
403
273
  }
274
+ });
275
+ render();
276
+ if (!addonSidebarContainerEl) return;
277
+ iconArea = addonSidebarContainerEl.querySelector('.' + (0, _idMap.default)('sidebar_iconArea'));
278
+ if (!iconArea) {
279
+ iconArea = document.createElement('div');
280
+ iconArea.className = (0, _idMap.default)('sidebar_iconArea');
281
+ (0, _addIconArea.default)(iconArea, addonSidebarContainerEl, this._stopper);
282
+ }
404
283
 
405
- // we put adding the content panel icon in the iconArea in an asap so that we
406
- // get consistent ordering. The ordering of the icons is based on the position of the FIRST
407
- // panel with that app name. This means we need to wait for all the panels for a particular appName
408
- // to be added first, and then we can get the correct position
409
- asap(() => {
410
- if (!iconArea) throw new Error('should not happen');
411
- const instanceId = event.detail.instanceId;
412
- const appIconUrl = event.detail.appIconUrl;
413
-
414
- // If there's an existing button for the app, then just increment its
415
- // data-count attribute instead of adding a new button.
416
- const existingButtonContainer = buttonContainers.get(appName);
417
-
418
- let buttonContainer;
419
- if (existingButtonContainer) {
420
- const currentCount =
421
- Number(existingButtonContainer.getAttribute('data-count')) || 1;
422
- existingButtonContainer.setAttribute(
423
- 'data-count',
424
- String(currentCount + 1)
425
- );
426
- buttonContainer = existingButtonContainer;
427
- } else {
428
- buttonContainer = document.createElement('div');
429
- buttonContainer.className = idMap('sidebar_button_container');
430
- buttonContainer.setAttribute('data-app-name', appName);
431
- buttonContainer.setAttribute('data-count', String(1));
432
- buttonContainer.innerHTML = autoHtml`
284
+ // we put adding the content panel icon in the iconArea in an asap so that we
285
+ // get consistent ordering. The ordering of the icons is based on the position of the FIRST
286
+ // panel with that app name. This means we need to wait for all the panels for a particular appName
287
+ // to be added first, and then we can get the correct position
288
+ (0, _asap.default)(() => {
289
+ if (!iconArea) throw new Error('should not happen');
290
+ const instanceId = event.detail.instanceId;
291
+ const appIconUrl = event.detail.appIconUrl;
292
+
293
+ // If there's an existing button for the app, then just increment its
294
+ // data-count attribute instead of adding a new button.
295
+ const existingButtonContainer = buttonContainers.get(appName);
296
+ let buttonContainer;
297
+ if (existingButtonContainer) {
298
+ const currentCount = Number(existingButtonContainer.getAttribute('data-count')) || 1;
299
+ existingButtonContainer.setAttribute('data-count', String(currentCount + 1));
300
+ buttonContainer = existingButtonContainer;
301
+ } else {
302
+ buttonContainer = document.createElement('div');
303
+ buttonContainer.className = (0, _idMap.default)('sidebar_button_container');
304
+ buttonContainer.setAttribute('data-app-name', appName);
305
+ buttonContainer.setAttribute('data-count', String(1));
306
+ buttonContainer.innerHTML = (0, _autoHtml.default)`
433
307
  <button class="inboxsdk__button_icon" type="button" data-tooltip="${appName}">
434
308
  <img class="inboxsdk__button_iconImg" src="${appIconUrl}">
435
309
  </button>
436
310
  <div class="inboxsdk__button_selectedIndicator"></div>
437
311
  `;
438
-
439
- if (event.detail.primaryColor) {
440
- querySelector(
441
- buttonContainer,
442
- '.inboxsdk__button_selectedIndicator'
443
- ).style.backgroundColor = event.detail.primaryColor;
312
+ if (event.detail.primaryColor) {
313
+ (0, _querySelectorOrFail.default)(buttonContainer, '.inboxsdk__button_selectedIndicator').style.backgroundColor = event.detail.primaryColor;
314
+ }
315
+ buttonContainers.set(appName, buttonContainer);
316
+ (0, _querySelectorOrFail.default)(buttonContainer, 'button').addEventListener('click', event => {
317
+ event.stopPropagation();
318
+ const activeButtonContainer = iconArea ? iconArea.querySelector('.sidebar_button_container_active') : null;
319
+ if (activeButtonContainer) {
320
+ activeButtonContainer.classList.remove('sidebar_button_container_active');
444
321
  }
445
-
446
- buttonContainers.set(appName, buttonContainer);
447
-
448
- querySelector(buttonContainer, 'button').addEventListener(
449
- 'click',
450
- (event: MouseEvent) => {
451
- event.stopPropagation();
452
-
453
- const activeButtonContainer = iconArea
454
- ? iconArea.querySelector('.sidebar_button_container_active')
455
- : null;
456
- if (activeButtonContainer) {
457
- activeButtonContainer.classList.remove(
458
- 'sidebar_button_container_active'
459
- );
460
- }
461
-
462
- if (activeButtonContainer === buttonContainer) {
463
- if (addonSidebarContainerEl)
464
- addonSidebarContainerEl.classList.remove(
465
- 'app_sidebar_visible'
466
- );
467
- if (contentContainer)
468
- contentContainer.classList.remove(
469
- 'container_app_sidebar_visible'
470
- );
471
-
472
- this._setShouldAppSidebarOpen(false);
473
- } else {
474
- if (addonSidebarContainerEl)
475
- addonSidebarContainerEl.classList.add(
476
- 'app_sidebar_visible'
477
- );
478
- buttonContainer.classList.add(
479
- 'sidebar_button_container_active'
480
- );
481
- if (contentContainer)
482
- contentContainer.classList.add(
483
- 'container_app_sidebar_visible'
484
- );
485
-
486
- this._setShouldAppSidebarOpen(true);
487
-
488
- if (addonSidebarContainerEl) {
489
- // check and deactivate add-on sidebar
490
- const activeAddOnIcon =
491
- addonSidebarContainerEl.querySelector(
492
- ACTIVE_ADD_ON_ICON_SELECTOR
493
- );
494
- if (activeAddOnIcon) simulateClick(activeAddOnIcon);
495
-
496
- //fake resize to get gmail to fix any heights that are messed up
497
- fakeWindowResize();
498
-
499
- // if the tabList is still loading then handle the case where the user
500
- // clicks on an SDK icon to bring up an SDK app when Gmail thinks that it needs
501
- // to bring up an Add-On sidebar (since that was last visible from Gmail's perspective)
502
- // so we need to suppress Gmail bringing up their sidebar. This handles the flag of if we
503
- // need to suppress
504
- const nativeIconArea =
505
- addonSidebarContainerEl.firstElementChild;
506
- if (!nativeIconArea) return;
507
- const loadingHolderAsAny: any =
508
- nativeIconArea.firstElementChild;
509
- const loadingHolder = (loadingHolderAsAny: ?HTMLElement);
510
- if (!loadingHolder) return;
511
-
512
- if (loadingHolder.style.display !== 'none') {
513
- activatedWhileLoading = true;
514
- makeMutationObserverChunkedStream(loadingHolder, {
515
- attributes: true,
516
- attributeFilter: ['style'],
517
- })
518
- .toProperty(() => null)
519
- .map(() => loadingHolder.style.display === 'none')
520
- .filter(Boolean)
521
- .take(1)
522
- .delay(150)
523
- .takeUntilBy(this._stopper)
524
- .onValue(() => {
525
- activatedWhileLoading = false;
526
- });
527
- }
528
- }
529
-
530
- component.openPanel(instanceId);
531
- component.scrollPanelIntoView(instanceId, true);
532
- }
533
- },
534
- true
535
- );
536
-
537
- if (iconArea)
538
- addToIconArea(orderManager, appName, buttonContainer, iconArea);
539
-
540
- if (widthManager) widthManager.fixWidths();
541
-
542
- if (this._getShouldAppSidebarOpen()) {
543
- // if we last had an SDK sidebar open then bring up the SDK sidebar when the first
544
- // panel gets added
545
- const activeButtonContainer = iconArea.querySelector(
546
- '.sidebar_button_container_active'
547
- );
548
- if (!activeButtonContainer) {
549
- buttonContainer.classList.add(
550
- 'sidebar_button_container_active'
551
- );
552
-
553
- if (addonSidebarContainerEl)
554
- addonSidebarContainerEl.classList.add('app_sidebar_visible');
555
- if (contentContainer)
556
- contentContainer.classList.add(
557
- 'container_app_sidebar_visible'
558
- );
322
+ if (activeButtonContainer === buttonContainer) {
323
+ if (addonSidebarContainerEl) addonSidebarContainerEl.classList.remove('app_sidebar_visible');
324
+ if (contentContainer) contentContainer.classList.remove('container_app_sidebar_visible');
325
+ this._setShouldAppSidebarOpen(false);
326
+ } else {
327
+ if (addonSidebarContainerEl) addonSidebarContainerEl.classList.add('app_sidebar_visible');
328
+ buttonContainer.classList.add('sidebar_button_container_active');
329
+ if (contentContainer) contentContainer.classList.add('container_app_sidebar_visible');
330
+ this._setShouldAppSidebarOpen(true);
331
+ if (addonSidebarContainerEl) {
332
+ // check and deactivate add-on sidebar
333
+ const activeAddOnIcon = addonSidebarContainerEl.querySelector(ACTIVE_ADD_ON_ICON_SELECTOR);
334
+ if (activeAddOnIcon) (0, _simulateMouseEvent.simulateClick)(activeAddOnIcon);
559
335
 
560
336
  //fake resize to get gmail to fix any heights that are messed up
561
- fakeWindowResize();
337
+ (0, _fakeWindowResize.default)();
338
+
339
+ // if the tabList is still loading then handle the case where the user
340
+ // clicks on an SDK icon to bring up an SDK app when Gmail thinks that it needs
341
+ // to bring up an Add-On sidebar (since that was last visible from Gmail's perspective)
342
+ // so we need to suppress Gmail bringing up their sidebar. This handles the flag of if we
343
+ // need to suppress
344
+ const nativeIconArea = addonSidebarContainerEl.firstElementChild;
345
+ if (!nativeIconArea) return;
346
+ const loadingHolderAsAny = nativeIconArea.firstElementChild;
347
+ const loadingHolder = loadingHolderAsAny;
348
+ if (!loadingHolder) return;
349
+ if (loadingHolder.style.display !== 'none') {
350
+ activatedWhileLoading = true;
351
+ (0, _makeMutationObserverChunkedStream.default)(loadingHolder, {
352
+ attributes: true,
353
+ attributeFilter: ['style']
354
+ }).toProperty(() => null).map(() => loadingHolder.style.display === 'none').filter(Boolean).take(1).delay(150).takeUntilBy(this._stopper).onValue(() => {
355
+ activatedWhileLoading = false;
356
+ });
357
+ }
562
358
  }
359
+ component.openPanel(instanceId);
360
+ component.scrollPanelIntoView(instanceId, true);
361
+ }
362
+ }, true);
363
+ if (iconArea) (0, _addToIconArea.default)(orderManager, appName, buttonContainer, iconArea);
364
+ if (widthManager) widthManager.fixWidths();
365
+ if (this._getShouldAppSidebarOpen()) {
366
+ // if we last had an SDK sidebar open then bring up the SDK sidebar when the first
367
+ // panel gets added
368
+ const activeButtonContainer = iconArea.querySelector('.sidebar_button_container_active');
369
+ if (!activeButtonContainer) {
370
+ buttonContainer.classList.add('sidebar_button_container_active');
371
+ if (addonSidebarContainerEl) addonSidebarContainerEl.classList.add('app_sidebar_visible');
372
+ if (contentContainer) contentContainer.classList.add('container_app_sidebar_visible');
373
+
374
+ //fake resize to get gmail to fix any heights that are messed up
375
+ (0, _fakeWindowResize.default)();
563
376
  }
564
377
  }
565
- });
378
+ }
566
379
  });
567
-
568
- Kefir.fromEvents((document.body: any), 'inboxsdkUpdateSidebarPanel')
569
- .filter((e) => e.detail.sidebarId === this._instanceId)
570
- .takeUntilBy(this._stopper)
571
- .onValue((event) => {
572
- const orderedItems = orderManager.getOrderedItems();
573
- const index = findIndex(
574
- orderedItems,
575
- (x) => x.value.instanceId === event.detail.instanceId
576
- );
577
- if (index === -1)
578
- throw new Error('should not happen: failed to find orderItem');
579
- orderManager.updateItemValueByIndex(index, {
580
- id: orderedItems[index].value.id,
581
- appId: event.detail.appId,
582
- appName: event.detail.appName || event.detail.title,
583
- instanceId: event.detail.instanceId,
584
- title: event.detail.title,
585
- iconClass: event.detail.iconClass,
586
- iconUrl: event.detail.iconUrl,
587
- hideTitleBar: event.detail.hideTitleBar,
588
- el: event.target,
589
- });
590
- render();
380
+ });
381
+ _kefir.default.fromEvents(document.body, 'inboxsdkUpdateSidebarPanel').filter(e => e.detail.sidebarId === this._instanceId).takeUntilBy(this._stopper).onValue(event => {
382
+ const orderedItems = orderManager.getOrderedItems();
383
+ const index = (0, _findIndex.default)(orderedItems, x => x.value.instanceId === event.detail.instanceId);
384
+ if (index === -1) throw new Error('should not happen: failed to find orderItem');
385
+ orderManager.updateItemValueByIndex(index, {
386
+ id: orderedItems[index].value.id,
387
+ appId: event.detail.appId,
388
+ appName: event.detail.appName || event.detail.title,
389
+ instanceId: event.detail.instanceId,
390
+ title: event.detail.title,
391
+ iconClass: event.detail.iconClass,
392
+ iconUrl: event.detail.iconUrl,
393
+ hideTitleBar: event.detail.hideTitleBar,
394
+ el: event.target
591
395
  });
592
-
593
- Kefir.fromEvents((document.body: any), 'inboxsdkRemoveSidebarPanel')
594
- .filter((e) => e.detail.sidebarId === this._instanceId)
595
- .takeUntilBy(this._stopper)
596
- .onValue((event) => {
597
- const orderedItems = orderManager.getOrderedItems();
598
- const index = findIndex(
599
- orderedItems,
600
- (x) => x.value.instanceId === event.detail.instanceId
601
- );
602
- if (index === -1)
603
- throw new Error('should not happen: failed to find orderItem');
604
- currentIds.delete(orderedItems[index].id);
605
- orderManager.removeItemByIndex(index);
606
- if (orderManager.getOrderedItems().length === 0) {
607
- this.destroy();
608
- } else {
609
- render();
610
- }
611
-
612
- if (!addonSidebarContainerEl) return;
613
-
614
- iconArea = addonSidebarContainerEl.querySelector(
615
- '.' + idMap('sidebar_iconArea')
616
- );
617
- if (!iconArea) return;
618
-
619
- if (widthManager) widthManager.fixWidths();
620
-
621
- const appName = event.detail.appName;
622
-
623
- const container = buttonContainers.get(appName);
624
- if (container) {
625
- const currentCount = Number(container.getAttribute('data-count'));
626
- if (currentCount <= 1) {
627
- const activeButtonContainer = el.querySelector(
628
- '.sidebar_button_container_active'
629
- );
630
- container.remove();
631
- buttonContainers.delete(appName);
632
- if (container === activeButtonContainer) {
633
- if (addonSidebarContainerEl) {
634
- addonSidebarContainerEl.classList.remove('app_sidebar_visible');
635
- if (contentContainer)
636
- contentContainer.classList.remove(
637
- 'container_app_sidebar_visible'
638
- );
639
- }
640
-
641
- this._setShouldAppSidebarOpen(false);
396
+ render();
397
+ });
398
+ _kefir.default.fromEvents(document.body, 'inboxsdkRemoveSidebarPanel').filter(e => e.detail.sidebarId === this._instanceId).takeUntilBy(this._stopper).onValue(event => {
399
+ const orderedItems = orderManager.getOrderedItems();
400
+ const index = (0, _findIndex.default)(orderedItems, x => x.value.instanceId === event.detail.instanceId);
401
+ if (index === -1) throw new Error('should not happen: failed to find orderItem');
402
+ currentIds.delete(orderedItems[index].id);
403
+ orderManager.removeItemByIndex(index);
404
+ if (orderManager.getOrderedItems().length === 0) {
405
+ this.destroy();
406
+ } else {
407
+ render();
408
+ }
409
+ if (!addonSidebarContainerEl) return;
410
+ iconArea = addonSidebarContainerEl.querySelector('.' + (0, _idMap.default)('sidebar_iconArea'));
411
+ if (!iconArea) return;
412
+ if (widthManager) widthManager.fixWidths();
413
+ const appName = event.detail.appName;
414
+ const container = buttonContainers.get(appName);
415
+ if (container) {
416
+ const currentCount = Number(container.getAttribute('data-count'));
417
+ if (currentCount <= 1) {
418
+ const activeButtonContainer = el.querySelector('.sidebar_button_container_active');
419
+ container.remove();
420
+ buttonContainers.delete(appName);
421
+ if (container === activeButtonContainer) {
422
+ if (addonSidebarContainerEl) {
423
+ addonSidebarContainerEl.classList.remove('app_sidebar_visible');
424
+ if (contentContainer) contentContainer.classList.remove('container_app_sidebar_visible');
642
425
  }
643
- } else if (currentCount === 2) {
644
- container.removeAttribute('data-count');
645
- } else {
646
- container.setAttribute('data-count', String(currentCount - 1));
426
+ this._setShouldAppSidebarOpen(false);
647
427
  }
428
+ } else if (currentCount === 2) {
429
+ container.removeAttribute('data-count');
430
+ } else {
431
+ container.setAttribute('data-count', String(currentCount - 1));
648
432
  }
649
- });
650
-
651
- Kefir.fromEvents((document.body: any), 'inboxsdkSidebarPanelScrollIntoView')
652
- .takeUntilBy(this._stopper)
653
- .onValue((event) => {
654
- component.scrollPanelIntoView(event.detail.instanceId);
655
- });
656
-
657
- Kefir.fromEvents((document.body: any), 'inboxsdkSidebarPanelClose')
658
- .takeUntilBy(this._stopper)
659
- .onValue((event) => {
660
- component.closePanel(event.detail.instanceId);
661
- });
662
-
433
+ }
434
+ });
435
+ _kefir.default.fromEvents(document.body, 'inboxsdkSidebarPanelScrollIntoView').takeUntilBy(this._stopper).onValue(event => {
436
+ component.scrollPanelIntoView(event.detail.instanceId);
437
+ });
438
+ _kefir.default.fromEvents(document.body, 'inboxsdkSidebarPanelClose').takeUntilBy(this._stopper).onValue(event => {
439
+ component.closePanel(event.detail.instanceId);
440
+ });
663
441
  if (addonSidebarContainerEl) {
664
442
  // listen for add-on sidebar contents to become visible which can happen in 1 of two cases
665
443
  // 1. user clicks on an Add-Icon icon
666
444
  // 2. Gmail automatically opens an Add-on sidebar because it was last open in previous thread
667
- const addonSidebarContentContainerElement = querySelector(
668
- addonSidebarContainerEl,
669
- ADD_ON_SIDEBAR_CONTENT_SELECTOR
670
- );
671
- makeElementChildStream(addonSidebarContentContainerElement)
672
- .flatMap(({ el, removalStream }) =>
673
- makeMutationObserverChunkedStream(el, {
674
- attributes: true,
675
- attributeFilter: ['style'],
676
- })
677
- .toProperty(() => null)
678
- .map(() => el.style.display !== 'none')
679
- )
680
- .takeUntilBy(this._stopper)
681
- .onValue((isDisplayingGmailAddonSidebar) => {
682
- if (isDisplayingGmailAddonSidebar) {
683
- if (contentContainer)
684
- contentContainer.classList.add('container_addon_sidebar_visible');
685
-
686
- // we need to suppress this sidebar from loading
687
- if (activatedWhileLoading) {
688
- const activeAddOnIcon = addonSidebarContainerEl.querySelector(
689
- ACTIVE_ADD_ON_ICON_SELECTOR
690
- );
691
- if (activeAddOnIcon) simulateClick(activeAddOnIcon);
692
- return;
693
- }
694
-
695
- this._setShouldAppSidebarOpen(false);
696
-
697
- const activeButtonContainer = iconArea
698
- ? iconArea.querySelector('.sidebar_button_container_active')
699
- : null;
700
- if (activeButtonContainer) {
701
- addonSidebarContainerEl.classList.remove('app_sidebar_visible');
702
- activeButtonContainer.classList.remove(
703
- 'sidebar_button_container_active'
704
- );
705
- if (contentContainer)
706
- contentContainer.classList.remove(
707
- 'container_app_sidebar_visible'
708
- );
709
- }
710
- } else {
711
- if (contentContainer)
712
- contentContainer.classList.remove(
713
- 'container_addon_sidebar_visible'
714
- );
445
+ const addonSidebarContentContainerElement = (0, _querySelectorOrFail.default)(addonSidebarContainerEl, ADD_ON_SIDEBAR_CONTENT_SELECTOR);
446
+ (0, _makeElementChildStream.default)(addonSidebarContentContainerElement).flatMap(_ref => {
447
+ let {
448
+ el,
449
+ removalStream
450
+ } = _ref;
451
+ return (0, _makeMutationObserverChunkedStream.default)(el, {
452
+ attributes: true,
453
+ attributeFilter: ['style']
454
+ }).toProperty(() => null).map(() => el.style.display !== 'none');
455
+ }).takeUntilBy(this._stopper).onValue(isDisplayingGmailAddonSidebar => {
456
+ if (isDisplayingGmailAddonSidebar) {
457
+ if (contentContainer) contentContainer.classList.add('container_addon_sidebar_visible');
458
+
459
+ // we need to suppress this sidebar from loading
460
+ if (activatedWhileLoading) {
461
+ const activeAddOnIcon = addonSidebarContainerEl.querySelector(ACTIVE_ADD_ON_ICON_SELECTOR);
462
+ if (activeAddOnIcon) (0, _simulateMouseEvent.simulateClick)(activeAddOnIcon);
463
+ return;
715
464
  }
716
- });
465
+ this._setShouldAppSidebarOpen(false);
466
+ const activeButtonContainer = iconArea ? iconArea.querySelector('.sidebar_button_container_active') : null;
467
+ if (activeButtonContainer) {
468
+ addonSidebarContainerEl.classList.remove('app_sidebar_visible');
469
+ activeButtonContainer.classList.remove('sidebar_button_container_active');
470
+ if (contentContainer) contentContainer.classList.remove('container_app_sidebar_visible');
471
+ }
472
+ } else {
473
+ if (contentContainer) contentContainer.classList.remove('container_addon_sidebar_visible');
474
+ }
475
+ });
717
476
  }
718
-
719
477
  if (addonSidebarContainerEl) {
720
478
  //listen for scroll and update active icon if needed
721
- Kefir.fromEvents(el, 'scroll')
722
- .takeUntilBy(this._stopper)
723
- .onValue(() => {
724
- updateHighlightedAppIconBus.emit(null);
725
- });
479
+ _kefir.default.fromEvents(el, 'scroll').takeUntilBy(this._stopper).onValue(() => {
480
+ updateHighlightedAppIconBus.emit(null);
481
+ });
726
482
  }
727
483
  }
728
-
729
- addSidebarContentPanel(descriptor: Kefir.Observable<Object>) {
730
- const panel = new ContentPanelViewDriver(
731
- this._driver,
732
- descriptor,
733
- this._instanceId
734
- );
735
-
484
+ addSidebarContentPanel(descriptor) {
485
+ const panel = new _ContentPanelViewDriver.default(this._driver, descriptor, this._instanceId);
736
486
  this._stopper.takeUntilBy(panel.getStopper()).onValue(() => {
737
487
  panel.remove();
738
488
  });
739
-
740
489
  return panel;
741
490
  }
742
491
  }
743
-
744
- export default defn(module, GmailAppSidebarView);
492
+ var _default = (0, _ud.defn)(module, GmailAppSidebarView);
493
+ exports.default = _default;